Name: series-workflowq9pq7 Phase: Running StartedAt: 2026-07-15 15:29:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[0] Phase: Succeeded StartedAt: 2026-07-15 15:29:17 +0000 UTC FinishedAt: 2026-07-15 16:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 15:29:17 +0000 UTC FinishedAt: 2026-07-15 16:12:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AT803X_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AT803X_PHY" ], "series_id": "6bdc508e-755f-48aa-a204-4896376d7afc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "at803x_link_change_notify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUODAzWF9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24gaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWSBkcml2ZXIgdG8gdXNlIGBwaHlfZGV2aWNlX2hhc19yZXNldCgpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIGByZXNldF9ncGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYWxzbyBoYW5kbGUgYHJlc2V0X2N0cmxgLiBUaGUgUEhZIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAoZS5nLiwgc21zYzk1eHgpIG9yIGEgVVNCIE1ESU8gYnVzIChlLmcuLCBtZGlvLW12dXNiKSB0aGF0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgcmVzcG9uZHMgdG8gTURJTyByZWFkcyB3aXRoIHRoZSBBVDgwM1ggUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcbmluZGV4IGJhNGRjMDc3NTJiNjBiLi42ODcyZGJmNzc4NTYyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xuQEAgLTUzNyw3ICYjNDM7NTM3LDcgQEAgc3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogaW4gdGhlIEZJRk8uIEluIHN1Y2ggY2FzZXMsIHRoZSBGSUZPIGVudGVycyBhbiBlcnJvciBtb2RlIGl0XG4gXHQgKiBjYW5ub3QgcmVjb3ZlciBmcm9tIGJ5IHNvZnR3YXJlLlxuIFx0ICovXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHtcbiBcdFx0c3RydWN0IGF0ODAzeF9jb250ZXh0IGNvbnRleHQ7XG4gXG4gXHRcdGF0ODAzeF9jb250ZXh0X3NhdmUocGh5ZGV2LCBcdTAwMjZjb250ZXh0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvbGludXgvbWRpby5oXG5pbmRleCAzMDA4MDVlNjY1OTJkMC4uYTdkOWUzYWUzNjJhNTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZGlvLmhcbkBAIC04Niw2ICYjNDM7ODYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkICptZGlvZGV2X2dldF9kcnZkYXRhKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcbiBcdHJldHVybiBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpby1cdTAwM2VkZXYpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIG1kaW9kZXZfaGFzX3Jlc2V0KHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcbiYjNDM7e1xuJiM0MztcdHJldHVybiAobWRpby1cdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXHUwMDNlcmVzZXRfY3RybCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xuIGludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjIzMSw2ICYjNDM7MjIzMSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGh5X2RldmljZV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgdmFsdWUpXG4gXHRtZGlvX2RldmljZV9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbywgdmFsdWUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWRpb2Rldl9oYXNfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8pO1xuJiM0Mzt9XG4mIzQzO1xuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXHRcXFxuIFx0ZGV2X2VycihcdTAwMjZfcGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBmb3JtYXQsICMjYXJncylcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVDgwM1hfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYwppbmRleCBiYTRkYzA3NzUyYjYwYi4uNjg3MmRiZjc3ODU2MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jCkBAIC01MzcsNyAmIzQzOzUzNyw3IEBAIHN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiBpbiB0aGUgRklGTy4gSW4gc3VjaCBjYXNlcywgdGhlIEZJRk8gZW50ZXJzIGFuIGVycm9yIG1vZGUgaXQKIAkgKiBjYW5ub3QgcmVjb3ZlciBmcm9tIGJ5IHNvZnR3YXJlLgogCSAqLwotCWlmIChwaHlkZXYtJmd0O3N0YXRlID09IFBIWV9OT0xJTksgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O21kaW8ucmVzZXRfZ3BpbykgewomIzQzOwlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KSkgewogCQlzdHJ1Y3QgYXQ4MDN4X2NvbnRleHQgY29udGV4dDsKIAogCQlhdDgwM3hfY29udGV4dF9zYXZlKHBoeWRldiwgJmFtcDtjb250ZXh0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWRpby5oIGIvaW5jbHVkZS9saW51eC9tZGlvLmgKaW5kZXggMzAwODA1ZTY2NTkyZDAuLmE3ZDllM2FlMzYyYTUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21kaW8uaApAQCAtODYsNiAmIzQzOzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbWRpb2Rldl9nZXRfZHJ2ZGF0YShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pCiAJcmV0dXJuIGRldl9nZXRfZHJ2ZGF0YSgmYW1wO21kaW8tJmd0O2Rldik7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbWRpb2Rldl9oYXNfcmVzZXQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKQomIzQzO3sKJiM0MzsJcmV0dXJuIChtZGlvLSZndDtyZXNldF9ncGlvIHx8IG1kaW8tJmd0O3Jlc2V0X2N0cmwpOwomIzQzO30KJiM0MzsKIHZvaWQgbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpOwogc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpOwogaW50IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaAppbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMjIzMSw2ICYjNDM7MjIzMSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGh5X2RldmljZV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgdmFsdWUpCiAJbWRpb19kZXZpY2VfcmVzZXQoJmFtcDtwaHlkZXYtJmd0O21kaW8sIHZhbHVlKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBwaHlfZGV2aWNlX2hhc19yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJcmV0dXJuIG1kaW9kZXZfaGFzX3Jlc2V0KCZhbXA7cGh5ZGV2LSZndDttZGlvKTsKJiM0Mzt9CiYjNDM7CiAjZGVmaW5lIHBoeWRldl9lcnIoX3BoeWRldiwgZm9ybWF0LCBhcmdzLi4uKQlcCiAJZGV2X2VycigmYW1wO19waHlkZXYtJmd0O21kaW8uZGV2LCBmb3JtYXQsICMjYXJncykKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzczCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jYCwgd2hpY2gsIGZyb20gdGhlIG5hbWUsIGxvb2tzIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIEFUODAzWCBQSFkgZHJpdmVyLiBJdCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbWRpby5oYCBhbmQgYHBoeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdWJzdGl0dXRpbmcgYHBoeWRldi0mZ3Q7bWRpby5yZXNldF9ncGlvYCB3aXRoIGEgY2FsbCB0byBgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KWAuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBpbXByb3ZpbmcgdGhlIHJlc2V0IGhhbmRsaW5nIGxvZ2ljLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGEgc21hbGwgY2hhbmdlLCBidXQgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gdGhpcyBwYXJ0aWN1bGFyIFBIWSBkcml2ZXIuCgpUaGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBmdXp6ZWQ/IEdpdmVuIHRoYXQgUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgaG93IGxpa2VseSBpcyB0aGlzIHRvIGV2ZW4gKmJlKiBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhleSYjMzk7cmUgZ2VuZXJhbGx5IHRpZWQgdG8gdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gV2hpbGUgeW91ICpjb3VsZCogcG90ZW50aWFsbHkgcHJvYmUgdGhlbSB2aWEgTURJTyBidXMgZW11bGF0aW9uLCB0aGF0JiMzOTtzIG5vdCB0aGUgbm9ybS4gU28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHBhdGh3YXkgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyIHRvIGJlIHRlc3RlZC4KCkxldCYjMzk7cyBzZWXigKYgVGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdHVyZS4gQ291bGQgd2UgZnV6eiBgYXQ4MDN4LmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhpcyBjYWxsYmFjaz8gTXkgZ3V0IHNheXMgdGhhdCBpdCYjMzk7cyBnb2luZyB0byBiZSB0cmlja3kuIFN5emthbGxlciwgaW4gbXkgZXhwZXJpZW5jZSwgZG9lc24mIzM5O3QgdXN1YWxseSB0YXJnZXQgc3BlY2lmaWMgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB2aXJ0dWFsIE1ESU8gYnVzIG9yIHNvbWV0aGluZyBzaW1pbGFyIGF2YWlsYWJsZSBpbiB0aGUga2VybmVsLgoKSG9sZCBvbiwgaXMgdGhlcmUgYSB2aXJ0dWFsIE1ESU8gYnVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgY2hlY2sgZm9yIGBDT05GSUdfQVQ4MDNYX1BIWWAgdG8gc2VlIGlmIHRoYXQmIzM5O3MgZW5hYmxlZC4gVGhhdCBjb25maWd1cmF0aW9uIHdvdWxkIHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gRnJvbSB0aGVyZSBJJiMzOTtsbCBrbm93IGlmIHRoZXJlJiMzOTtzIGFueSBob3BlIGZvciB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9NDg1PXN0YXRpYyBpbnQgYXQ4MDN4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6NTMxOnN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDEtXHQuY29uZmlnX2luaXRcdFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTQyOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE0My1cdC5zZXRfd29sXHRcdD0gYXQ4MDN4X3NldF93b2wsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4MC1cdC5jb25maWdfaW5pdFx0XHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExODE6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTgyLVx0LnN1c3BlbmRcdFx0PSBhdDgwM3hfc3VzcGVuZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEFUODAzWCBQSFkgRHJpdmVyIGluIGEgVmlydHVhbCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBWTSBzZXR1cD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgQVQ4MDNYLiBVc3VhbGx5LCBQSFkgZHJpdmVycyBhcmUgbG9hZGVkIHdoZW4gYSBuZXR3b3JrIGRldmljZSByZWdpc3RlcnMgd2l0aCBhbiBNRElPIGJ1cy4gU28sIGhvdyBkbyBJIHJlcGxpY2F0ZSB0aGF0IHNjZW5hcmlvIHZpcnR1YWxseT8KCkhtbSwgSSByZWNhbGwgdGhlcmUgbWlnaHQgYmUgc29tZSBoZWxwZXIgZHJpdmVycyBmb3IgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHNpbXVsYXRlIGEgUEhZLiBJJiMzOTttIHRoaW5raW5nIG9mIHNvbWV0aGluZyBsaWtlIGBmaXhlZF9waHkuY2Agb3IgcGVyaGFwcyBhIG1vcmUgY29uZmlndXJhYmxlICYjMzQ7bW9jayYjMzQ7IE1ESU8gZHJpdmVyLiBJcyB0aGVyZSBhIHdheSBJIGNhbiByZWdpc3RlciBhcmJpdHJhcnkgUEhZcyB3aXRoaW4gYSBWTT8KCk5vdywgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgdXNlcnNwYWNlICpjYW4qIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgYnV0IGNhbiBpdCBhbHNvIGF0dGFjaCB0aGVtIHRvIGFuIGFyYml0cmFyeSBQSFk/IEkgbmVlZCBhIHdheSB0byBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBJIGJyaWVmbHkgY29uc2lkZXJlZCBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYCwgYnV0IHRob3NlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGFuZCB1c2VsZXNzIGhlcmUuCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBgbWRpby1tb2NrdXBgLCByaWdodD8gT3Igd2FzIGl0IGBtZGlvLWJjbS11bmltYWNgPyBObywgbmVpdGhlciBvZiB0aG9zZSBzZWVtIHF1aXRlIHJpZ2h0LiBJIGtlZXAgZHJhd2luZyBhIGJsYW5rLiBJdCYjMzk7cyB0aW1lIHRvIGRvIGEgZGVlcGVyIGRpdmUuIExldCBtZSBqdXN0IHNlYXJjaCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSB3aGF0IE1ESU8tcmVsYXRlZCBkcml2ZXJzIGFyZSBhdmFpbGFibGUgYW5kIGlmIGFueSBwcm92aWRlIGEgd2F5IHRvIHNpbXVsYXRlIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FkaW4uYyYjMzQ7LAogICAgJiMzNDthZGluMTEwMC5jJiMzNDssCiAgICAmIzM0O2Fpcl9hbjg4MDEuYyYjMzQ7LAogICAgJiMzNDthaXJfZW44ODExaC5jJiMzNDssCiAgICAmIzM0O2Fpcl9waHlfbGliLmMmIzM0OywKICAgICYjMzQ7YWlyX3BoeV9saWIuaCYjMzQ7LAogICAgJiMzNDthbWQuYyYjMzQ7LAogICAgJiMzNDthczIxeHh4LmMmIzM0OywKICAgICYjMzQ7YXg4ODc5NmIuYyYjMzQ7LAogICAgJiMzNDtheDg4Nzk2Yl9ydXN0LnJzJiMzNDssCiAgICAmIzM0O2JjbS1jeWdudXMuYyYjMzQ7LAogICAgJiMzNDtiY20tcGh5LWxpYi5jJiMzNDssCiAgICAmIzM0O2JjbS1waHktbGliLmgmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1wdHAuYyYjMzQ7LAogICAgJiMzNDtiY201NDE0MC5jJiMzNDssCiAgICAmIzM0O2JjbTYzeHguYyYjMzQ7LAogICAgJiMzNDtiY203eHh4LmMmIzM0OywKICAgICYjMzQ7YmNtODQ4ODEuYyYjMzQ7LAogICAgJiMzNDtiY204N3h4LmMmIzM0OywKICAgICYjMzQ7YnJvYWRjb20uYyYjMzQ7LAogICAgJiMzNDtjaWNhZGEuYyYjMzQ7LAogICAgJiMzNDtjb3J0aW5hLmMmIzM0OywKICAgICYjMzQ7ZGF2aWNvbS5jJiMzNDssCiAgICAmIzM0O2RwODM2NDAuYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDssCiAgICAmIzM0O2RwODM4MjIuYyYjMzQ7LAogICAgJiMzNDtkcDgzODQ4LmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg2Ny5jJiMzNDssCiAgICAmIzM0O2RwODM4NjkuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGM4MTEuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGQ1MTAuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGc3MjAuYyYjMzQ7LAogICAgJiMzNDtldDEwMTFjLmMmIzM0OywKICAgICYjMzQ7Zml4ZWRfcGh5LmMmIzM0OywKICAgICYjMzQ7aWNwbHVzLmMmIzM0OywKICAgICYjMzQ7aW50ZWwteHdheS5jJiMzNDssCiAgICAmIzM0O2xpbmttb2RlLmMmIzM0OywKICAgICYjMzQ7bHh0LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHEyeHh4LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHgyMjIyLmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwxMGcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW9wZW4tYWxsaWFuY2UuaCYjMzQ7LAogICAgJiMzNDttZGlvX2J1cy5jJiMzNDssCiAgICAmIzM0O21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZpY2UuYyYjMzQ7LAogICAgJiMzNDttZGlvX2RldnJlcy5jJiMzNDssCiAgICAmIzM0O21lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21pY3JlbC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Jkc19wdHAuaCYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDEuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDFzLmMmIzM0OywKICAgICYjMzQ7bWlpX3RpbWVzdGFtcGVyLmMmIzM0OywKICAgICYjMzQ7bW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7bXhsLTg2MTEwLmMmIzM0OywKICAgICYjMzQ7bXhsLWdweS5jJiMzNDssCiAgICAmIzM0O25hdGlvbmFsLmMmIzM0OywKICAgICYjMzQ7bmNuMjYwMDAuYyYjMzQ7LAogICAgJiMzNDtueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmgmIzM0OywKICAgICYjMzQ7bnhwLWNidHguYyYjMzQ7LAogICAgJiMzNDtueHAtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5oJiMzNDssCiAgICAmIzM0O3BoeS1jNDUuYyYjMzQ7LAogICAgJiMzNDtwaHktY2Fwcy5oJiMzNDssCiAgICAmIzM0O3BoeS1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGh5LmMmIzM0OywKICAgICYjMzQ7cGh5X2NhcHMuYyYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vycy5jJiMzNDssCiAgICAmIzM0O3BoeV9saW5rX3RvcG9sb2d5LmMmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2UuYyYjMzQ7LAogICAgJiMzNDtwaHlfcG9ydC5jJiMzNDssCiAgICAmIzM0O3BoeWxpYi1pbnRlcm5hbC5oJiMzNDssCiAgICAmIzM0O3BoeWxpYi5oJiMzNDssCiAgICAmIzM0O3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtxc2VtaS5jJiMzNDssCiAgICAmIzM0O3F0MjAyNS5ycyYjMzQ7LAogICAgJiMzNDtyb2NrY2hpcC5jJiMzNDssCiAgICAmIzM0O3NmcC1idXMuYyYjMzQ7LAogICAgJiMzNDtzZnAuYyYjMzQ7LAogICAgJiMzNDtzZnAuaCYjMzQ7LAogICAgJiMzNDtzbXNjLmMmIzM0OywKICAgICYjMzQ7c3RlMTBYcC5jJiMzNDssCiAgICAmIzM0O3N0dWJzLmMmIzM0OywKICAgICYjMzQ7c3dwaHkuYyYjMzQ7LAogICAgJiMzNDtzd3BoeS5oJiMzNDssCiAgICAmIzM0O3RlcmFuZXRpY3MuYyYjMzQ7LAogICAgJiMzNDt1UEQ2MDYyMC5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UuYyYjMzQ7LAogICAgJiMzNDt4aWxpbnhfZ21paTJyZ21paS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FxdWFudGlhJiMzNDssCiAgICAmIzM0O21lZGlhdGVrJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OywKICAgICYjMzQ7cWNvbSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTE3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhwbG9yaW5nIFZpcnR1YWwgUEhZIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byBjb25qdXJlIHVwIGEgUEhZIGRldmljZSB3aXRob3V0IGl0IGJlaW5nIHBoeXNpY2FsbHkgY29ubmVjdGVkLCB1c2luZyB0b29scyBsaWtlIG5ldGxpbmsgb3Igc3lzZnMuIFRoZSBzdGFuZGFyZCBhcHByb2FjaCBpcyB0aHJvdWdoIE1ESU8gYnVzZXMsIGFuZCBuYXR1cmFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbGl6aW5nIHRoaXMgZW50aXJlIHByb2Nlc3MuIENhbiBJIHNvbWVob3cgc2ltdWxhdGUgYW4gTURJTyBidXMgd2l0aGluIGEgVk0gZW52aXJvbm1lbnQ/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24uCgpNeSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGNlbnRyYWwgY29tcG9uZW50IGZvciBNRElPIGJ1cyBoYW5kbGluZy4gVGhlIGtleSB3b3VsZCBiZSBmaW5kaW5nIGEgdmlydHVhbCBNRElPIGJ1cyBkcml2ZXIgaWYgb25lIGV4aXN0cy4gTGV0JiMzOTtzIHNlZSBpZiBzb21ldGhpbmcgYXBwcm9wcmlhdGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIGJldCBJIGNhbiBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FjcGlfbWRpby5jJiMzNDssCiAgICAmIzM0O2Z3bm9kZV9tZGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1haXJvaGEuYyYjMzQ7LAogICAgJiMzNDttZGlvLWFzcGVlZC5jJiMzNDssCiAgICAmIzM0O21kaW8tYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20tdW5pbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1iaXRiYW5nLmMmIzM0OywKICAgICYjMzQ7bWRpby1jYXZpdW0uYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5oJiMzNDssCiAgICAmIzM0O21kaW8tZ3Bpby5jJiMzNDssCiAgICAmIzM0O21kaW8taGlzaS1mZW1hYy5jJiMzNDssCiAgICAmIzM0O21kaW8taTJjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pcHE0MDE5LmMmIzM0OywKICAgICYjMzQ7bWRpby1pcHE4MDY0LmMmIzM0OywKICAgICYjMzQ7bWRpby1tb3hhcnQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1zY2MtbWlpbS5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWJjbS1pcHJvYy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWJjbTYzNjguYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZzEyYS5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW1lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW1taW9yZWcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tdWx0aXBsZXhlci5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LmMmIzM0OywKICAgICYjMzQ7bWRpby1tdnVzYi5jJiMzNDssCiAgICAmIzM0O21kaW8tb2N0ZW9uLmMmIzM0OywKICAgICYjMzQ7bWRpby1waWM2NGhwc2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLXJlYWx0ZWstcnRsOTMwMC5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVnbWFwLmMmIzM0OywKICAgICYjMzQ7bWRpby1zdW40aS5jJiMzNDssCiAgICAmIzM0O21kaW8tdGh1bmRlci5jJiMzNDssCiAgICAmIzM0O21kaW8teGdlbmUuYyYjMzQ7LAogICAgJiMzNDtvZl9tZGlvLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgQ3JlYXRpb24gYW5kIFN5emthbGxlciYjMzk7cyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBNRElPIGJ1cyBkcml2ZXJzIGFuZCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJJiMzOTttIGF3YXJlIG9mIHRoZSBjb21tb24gaW1wbGVtZW50YXRpb25zOiBgbWRpby1ncGlvLmNgLCBgbWRpby1pMmMuY2AsIGFuZCBgbWRpby1iaXRiYW5nLmNgLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYmUgbGV2ZXJhZ2VkIHRvICpjcmVhdGUqIGFuIE1ESU8gYnVzPwoKTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBzeXprYWxsZXImIzM5O3MgZXhpc3RpbmcgY2FwYWJpbGl0aWVzLiBXZSYjMzk7dmUgZ290IHN5c3RlbSBjYWxscyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCB0aGF0IHNob3cgc3l6a2FsbGVyJiMzOTtzIHByb2ZpY2llbmN5IGluIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQga2VybmVsIHN1YnN5c3RlbXMuIE5vdyB0aGUgdGhvdWdodCBsYW5kcyBvbiBgbWRpby1tdnVzYi5jYCEgQSBVU0ItYmFzZWQgTURJTyBidXMuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2UgVVNCIGlzIGEgd2VsbC1kZWZpbmVkIGFuZCBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3Igc3l6a2FsbGVyLiBUaW1lIHRvIGNoZWNrIHRoYXQgc291cmNlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbXZ1c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MTU3NzU9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sXG5NQUlOVEFJTkVSUzoxNTc3NjpGOlx0ZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcbk1BSU5UQUlORVJTLTE1Nzc3LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MjA9b2JqLSQoQ09ORklHX01ESU9fTVNDQ19NSUlNKVx0XHQmIzQzOz0gbWRpby1tc2NjLW1paW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfTURJT19NVlVTQilcdFx0JiM0Mzs9IG1kaW8tbXZ1c2Iub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfTURJT19PQ1RFT04pXHRcdCYjNDM7PSBtZGlvLW9jdGVvbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW11bGF0aW5nIGEgTWFydmVsbCBVU0IgTURJTyBEZXZpY2Ugd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYG1kaW8tbXZ1c2JgIGlzIGluZGVlZCBhIFVTQiBNRElPIGJ1cyBkcml2ZXIuIEJ1dCB0aGVuIGl0IGhpdCBtZTogaWYgU3l6a2FsbGVyIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgaXQgKmRvZXMqLCBpdCBjYW4gdG90YWxseSBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UuIEFuZCBpZiB3ZSBjYW4gZW11bGF0ZSAqdGhhdCosIHdlJiMzOTt2ZSBnb3QgYW4gTURJTyBidXMgcmVnaXN0ZXJlZCwgcmlnaHQ/CgpUaGUga2V5IHJlYWxpemF0aW9uIGhlcmUgaXMgdGhhdCBvbmNlIHdlIGhhdmUgdGhhdCBNRElPIGJ1cywgd2UgY2FuIHRoZW4gZW11bGF0ZSAqYW55KiBQSFkgc2ltcGx5IGJ5IHJlc3BvbmRpbmcgY29ycmVjdGx5IHRvIE1ESU8gcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMhIFRoYXQmIzM5O3MgaXQhCgpBbmQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBgbWRpby1tdnVzYmAgdXNlcyBVU0IgVVJCcyB0byBoYW5kbGUgdGhlc2UgTURJTyByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzLiBTeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciBpcyBkZXNpZ25lZCB0byBpbnRlcmNlcHQgYW5kIG1hbmlwdWxhdGUgdGhlc2UgdmVyeSBVUkJzISBUaGlzIG1lYW5zIHdlIGNhbiBwcm92aWRlICphcmJpdHJhcnkqIHJlc3BvbnNlcywgZWZmZWN0aXZlbHkgZW11bGF0aW5nIGFueSBQSFksIGluY2x1ZGluZyB0aGUgYGF0ODAzeGAgUEhZIHRoYXQgaXMgdGhlIGN1cnJlbnQgYXJlYSBvZiBpbnRlcmVzdCEKCk5vdywgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGBtZGlvLW12dXNiLmNgIHRvIHNlZSBob3cgdGhhdCBNRElPIGJ1cyBpcyBhY3R1YWxseSBzZXQgdXAgd2l0aGluIHRoZSBkcml2ZXIuIEdvdHRhIGdldCB0aGUgZGV0YWlscyByaWdodCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcdDB4MTI4NlxuICAxMDpcdFxuICAxMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdnVzYl9tZGlvX3RhYmxlW10gPSB7XG4gIDEyOlx0XHR7IFVTQl9ERVZJQ0UoVVNCX01BUlZFTExfVklELCAweDFmYTQpIH0sXG4gIDEzOlx0XG4gIDE0Olx0XHR7fVxuICAxNTpcdH07XG4gIDE2Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG12dXNiX21kaW9fdGFibGUpO1xuICAxNzpcdFxuICAxODpcdGVudW0ge1xuICAxOTpcdFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcbiAgMjA6XHRcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXG4gIDIxOlx0XHRNVlVTQl9DTURfQUREUixcbiAgMjI6XHRcdE1WVVNCX0NNRF9WQUwsXG4gIDIzOlx0fTtcbiAgMjQ6XHRcbiAgMjU6XHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XG4gIDI2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgMjc6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICAyODpcdFxuICAyOTpcdFx0X19sZTE2IGJ1Zls0XTtcbiAgMzA6XHR9O1xuICAzMTpcdFxuICAzMjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnKVxuICAzMzpcdHtcbiAgMzQ6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYiA9IG1kaW8tXHUwMDNlcHJpdjtcbiAgMzU6XHRcdGludCBlcnIsIGFsZW47XG4gIDM2Olx0XG4gIDM3Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX0FERFJdID0gY3B1X3RvX2xlMTYoMHhhNDAwIHwgKGRldiBcdTAwM2NcdTAwM2MgNSkgfCByZWcpO1xuICAzODpcdFxuICAzOTpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcbiAgNDA6XHRcdFx0XHQgICBtdnVzYi1cdTAwM2VidWYsIDYsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQxOlx0XHRpZiAoZXJyKVxuICA0MjpcdFx0XHRyZXR1cm4gZXJyO1xuICA0MzpcdFxuICA0NDpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCA2KSxcbiAgNDU6XHRcdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQ2Olx0XHRpZiAoZXJyKVxuICA0NzpcdFx0XHRyZXR1cm4gZXJyO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0dXJuIGxlMTZfdG9fY3B1KG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiAgNTM6XHR7XG4gIDU0Olx0XHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVx1MDAzZXByaXY7XG4gIDU1Olx0XHRpbnQgYWxlbjtcbiAgNTY6XHRcbiAgNTc6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweDgwMDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG4gIDU4Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0gID0gY3B1X3RvX2xlMTYodmFsKTtcbiAgNTk6XHRcbiAgNjA6XHRcdHJldHVybiB1c2JfYnVsa19tc2cobXZ1c2ItXHUwMDNldWRldiwgdXNiX3NuZGJ1bGtwaXBlKG12dXNiLVx1MDAzZXVkZXYsIDIpLFxuICA2MTpcdFx0XHRcdCAgICBtdnVzYi1cdTAwM2VidWYsIDgsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDYyOlx0fVxuICA2MzpcdFxuICA2NDpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuICA2NTpcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gIDY2Olx0e1xuICA2NzpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldjtcbiAgNjg6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYjtcbiAgNjk6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICA3MDpcdFxuICA3MTpcdFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xuICA3MjpcdFx0aWYgKCFtZGlvKVxuICA3MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNzQ6XHRcbiAgNzU6XHRcdG12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuICA3NjpcdFx0bXZ1c2ItXHUwMDNlbWRpbyA9IG1kaW87XG4gIDc3Olx0XHRtdnVzYi1cdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuICA3ODpcdFxuICA3OTpcdFx0LyogUmV2ZXJzZWQgZnJvbSBVU0IgUENBUHMsIG5vIGlkZWEgd2hhdCB0aGVzZSBtZWFuLiAqL1xuICA4MDpcdFx0bXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcbiAgODE6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfUFJFQU1CTEUxXSA9IGNwdV90b19sZTE2KDB4MDAwMSk7XG4gIDgyOlx0XG4gIDgzOlx0XHRzbnByaW50ZihtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O212dXNiLSVzXCYjMzQ7LCBkZXZfbmFtZShkZXYpKTtcbiAgODQ6XHRcdG1kaW8tXHUwMDNlbmFtZSA9IG1kaW8tXHUwMDNlaWQ7XG4gIDg1Olx0XHRtZGlvLVx1MDAzZXBhcmVudCA9IGRldjtcbiAgODY6XHRcdG1kaW8tXHUwMDNlcmVhZCA9IG12dXNiX21kaW9fcmVhZDtcbiAgODc6XHRcdG1kaW8tXHUwMDNld3JpdGUgPSBtdnVzYl9tZGlvX3dyaXRlO1xuICA4ODpcdFxuICA4OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG12dXNiKTtcbiAgOTA6XHRcbiAgOTE6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cdTAwM2VvZl9ub2RlKTtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbXZ1c2JfbWRpb19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuICA5NzpcdFxuICA5ODpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG12dXNiLVx1MDAzZW1kaW8pO1xuICA5OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMxMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNRElPIEJ1cyBSZWdpc3RyYXRpb246IERlZXAgRGl2ZSoqCgpPa2F5LCBncmVhdCEgU28sIGBtZGlvLW12dXNiYCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCwgZXhhY3RseSB3aGF0IEkgd2FzIGhvcGluZyB0byBzZWUuIE5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIHRoZSBmYWN0IHRoYXQgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGlzIGJlaW5nIHVzZWQgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEhtbSwgdGhhdCBzdWdnZXN0cyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBhIGRldmljZSB0cmVlLCBleHBlY3RpbmcgYSBub2RlIHRvIGRlc2NyaWJlIHRoZSBhdHRhY2hlZCBQSFlzLiBUaGUgd2F5IEkgcmVhZCB0aGlzLCBpZiBhIGRldmljZSB0cmVlIG5vZGUgKmlzbiYjMzk7dCogcHJlc2VudCwgdGhlbiB0aGUgY29kZSBzaG91bGQgZ3JhY2VmdWxseSBmYWxsIGJhY2sgdG8gdGhlIGJhc2ljIGBtZGlvYnVzX3JlZ2lzdGVyYC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSBzaG91bGQgZGlnIGludG8gYG9mX21kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgaXMgaGFuZGxlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTgxIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q9MzQ4PU1ESU9cbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1My1cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVx0aWYgKHJldClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTAzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcdHJjID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODYtXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcdHJldHVybiBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVx1MDAzZW1paSwgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTg4OD1zdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTA5Nz1zdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0xNjA9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoxODc6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cdTAwM2VtaWlfYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjEyPXN0YXRpYyBpbnQgbml4Z2VfbWRpb19zZXR1cChzdHJ1Y3Qgbml4Z2VfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjEyMzE6XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYz03OTA9c3RhdGljIGludCBscGNfbWlpX2luaXQoc3RydWN0IG5ldGRhdGFfbG9jYWwgKnBsZGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmMtODIwLVx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHBsZGF0LVx1MDAzZXBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYzo4MjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHBsZGF0LVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjItXHRvZl9ub2RlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmM9OTI9aW50IGVtYWNfcGh5X2NvbmZpZyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZW1hY19hZGFwdGVyICphZHB0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmM6MTM4Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYy0xMzktXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MjM9c3RhdGljIGludCByYXZiX21kaW9faW5pdChzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjY1MS1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM6MjY1MjpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTI2NTMtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTM2Nz1zdGF0aWMgaW50IHJzd2l0Y2hfbWlpX3JlZ2lzdGVyKHN0cnVjdCByc3dpdGNoX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODYtXHRtZGlvX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocmRldi1cdTAwM2VucF9wb3J0LCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM6MTM4NzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODgtXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM9Nzc5PXN0YXRpYyBpbnQgcnRzbl9tZGlvX2FsbG9jKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtODE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6ODE4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy04MTktXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM9MzA5MT1zdGF0aWMgaW50IHNoX21kaW9faW5pdChzdHJ1Y3Qgc2hfZXRoX3ByaXZhdGUgKm1kcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jOjMxMzI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kcC1cdTAwM2VtaWlfYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk1OTpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBhcmVudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk2MC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jLTEyMDItXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jOjEyMDM6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jLTEyMDQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM9OTg4PXN0YXRpYyBpbnQgZW1hY19tZGlvX2luaXQoc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTAwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxMDA5Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTEwMTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTY1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjU1Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NTYtXHRpZiAoZXJyID09IC1FTk9ERVYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19tZGlvLmM9Nzk9dTMyIHNwbDJzd19tZGlvX2luaXQoc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYzoxMDY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jLTEwNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYz01Mzc9c3RhdGljIGludCBkYXZpbmNpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYzo2NDM6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRhdGEtXHUwMDNlYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmM9NjQ9aW50IHRlbWFjX21kaW9fc2V0dXAoc3RydWN0IHRlbWFjX2xvY2FsICpscCwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvbGxfdGVtYWNfbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmM6MTE3Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYy0xMTgtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYz0yODA9aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0zMDMtXHRcdGdvdG8gdW5yZWdpc3RlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MzA0Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWRpby5jLTMwNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jPTgwND1zdGF0aWMgaW50IHhlbWFjbGl0ZV9tZGlvX3NldHVwKHN0cnVjdCBuZXRfbG9jYWwgKmxwLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jLTg2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYzo4NjI6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRlLmMtODYzLVx0b2Zfbm9kZV9wdXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM9NTU4PXN0YXRpYyBpbnQgaXhwNHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGV0aF9yZWdzIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jOjU3MjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpb19idXMsIG1kaW9fYnVzX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtNTczLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM9MjAzPXN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjUwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI1MTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI1Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmM9MTQ2PXN0YXRpYyBpbnQgYXNwZWVkX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmMtMTc0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jOjE3NTpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jLTE3Ni1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYz0xMjI9c3RhdGljIGludCBpcHJvY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS1pcHJvYy5jLTE1My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYzoxNTQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYy0xNTUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jPTIzNz1zdGF0aWMgaW50IHVuaW1hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS11bmltYWMuYy0zMDEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jOjMwMjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jLTMwMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTE1Nz1zdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODU6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmM9NzI9c3RhdGljIGludCBoaXNpX2ZlbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taGlzaS1mZW1hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmM6MTA2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmMtMTA3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxNDAxOS5jPTMyNj1zdGF0aWMgaW50IGlwcTQwMTlfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmMtMzY5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYzozNzA6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxNDAxOS5jLTM3MS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jPTExMD1pcHE4MDY0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jLTE0MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmM6MTQyOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmMtMTQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTEwPXN0YXRpYyBpbnQgbW94YXJ0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmMtMTI4LVx0LyogU2V0dGluZyBQSFlfTUFDX0lOVEVSUlVQVCBoZXJlIGV2ZW4gaWYgaXQgaGFzIG5vIGVmZmVjdCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYzoxMjk6XHQgKiBvZl9tZGlvYnVzX3JlZ2lzdGVyKCkgc2V0cyB0aGVzZSBQSFlfUE9MTC5cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMzAtXHQgKiBJZGVhbGx5LCB0aGUgaW50ZXJydXB0IGZyb20gTUFDIGNvbnRyb2xsZXIgY291bGQgYmUgdXNlZCB0b1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM6MTQ1Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tc2NjLW1paW0uYz0yNzA9c3RhdGljIGludCBtc2NjX21paW1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1zY2MtbWlpbS5jOjMzMTpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYz0xMzk9aW50IG1kaW9fbXV4X2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYy0yMjQtXHRcdFx0Y2ItXHUwMDNlbWlpX2J1cy1cdTAwM2V3cml0ZV9jNDUgPSBtZGlvX211eF93cml0ZV9jNDU7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM6MjI1Olx0XHRyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihjYi1cdTAwM2VtaWlfYnVzLCBjaGlsZF9idXNfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmMtMjI2LVx0XHRpZiAocikge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jPTY0PXN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTkwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM6OTE6XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy05Mi19XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jPTE2PXN0YXRpYyBpbnQgb2N0ZW9uX21kaW9idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmMtNTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmM6NTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cy1cdTAwM2VtaWlfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1vY3Rlb24uYy01Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jPTExNz1zdGF0aWMgaW50IHBpYzY0aHBzY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jLTE2My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYzoxNjQ6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYy0xNjUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTUxMD1zdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NTpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYz05MD1zdGF0aWMgaW50IHN1bjRpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYy0xMjgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYzoxMjk6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXN1bjRpLmMtMTMwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jPTIyPXN0YXRpYyBpbnQgdGh1bmRlcl9tZGlvYnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jLTk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDA6XHRcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYy0xMDEtXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jOjEwMjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtvZl9tZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYz0zMjc9c3RhdGljIGludCB4Z2VuZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMzkyLVx0aWYgKGRldi1cdTAwM2VvZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzozOTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpb19idXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTM5NC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDQ9RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDUtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDctXHRcdFx0XHQgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTEtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1MjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjctXHRcdGlmIChvZl9tZGlvYnVzX2NoaWxkX2lzX3BoeShjaGlsZCkpXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoxNjg6XHRcdFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyX3BoeShtZGlvLCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNRElPIEJ1cyBSZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbi4gSXQgc2VlbXMgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGhhcyBhIGZhbGxiYWNrIG1lY2hhbmlzbS4gSWYgdGhlIGRldmljZSBub2RlLCByZXByZXNlbnRlZCBieSBgbnBgLCBpcyBOVUxMLCBpdCBuZWF0bHkgcmV2ZXJ0cyB0byBhIHNpbXBsZSBgbWRpb2J1c19yZWdpc3RlcmAgY2FsbC4gSW50ZXJlc3RpbmcuIEkmIzM5O20gc2VlaW5nIHRoaXMgYmVoYXZpb3IgaW4gYG1kaW8tbXZ1c2IuY2AsIHdoZXJlIHRoZSBjb2RlIGRpcmVjdGx5IGludm9rZXMgYG9mX21kaW9idXNfcmVnaXN0ZXJgIHdpdGggYGRldi0mZ3Q7b2Zfbm9kZWAuIE5vdywgYSBsaWdodGJ1bGIgd2VudCBvZmY6IGZvciB0aG9zZSBzeXprYWxsZXItY3JlYXRlZCBVU0IgZGV2aWNlcywgdGhhdCBgZGV2LSZndDtvZl9ub2RlYCBpcyBsaWtlbHkgTlVMTCB1bmxlc3Mgc29tZW9uZSYjMzk7cyBnb25lIHRocm91Z2ggdGhlIGVmZm9ydCBvZiBwcm92aWRpbmcgYSBEZXZpY2UgVHJlZSBvdmVybGF5LiBTbywgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBmYWxsYmFjayBpcyBwcm9iYWJseSBoYXBwZW5pbmcgaW4gdGhvc2Ugc2NlbmFyaW9zLiBUbyBjb25maXJtIG15IHRob3VnaHQgSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCBjb2RlLCB3aGljaCwgaWYgbWVtb3J5IHNlcnZlcywgc2hvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgZmFsbGJhY2sgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpcm0gbXkgcmVhc29uaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRpbnQgYWRkciwgcmM7XG4gMjAxOlx0XG4gMjAyOlx0XHRpZiAoIW5wKVxuIDIwMzpcdFx0XHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcbiAyMDQ6XHRcbiAyMDU6XHRcdC8qIERvIG5vdCBjb250aW51ZSBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCAqL1xuIDIwNjpcdFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcbiAyMDc6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMjA4Olx0XG4gMjA5Olx0XHQvKiBNYXNrIG91dCBhbGwgUEhZcyBmcm9tIGF1dG8gcHJvYmluZy4gIEluc3RlYWQgdGhlIFBIWXMgbGlzdGVkIGluXG4gMjEwOlx0XHQgKiB0aGUgZGV2aWNlIHRyZWUgYXJlIHBvcHVsYXRlZCBhZnRlciB0aGUgYnVzIGhhcyBiZWVuIHJlZ2lzdGVyZWQgKi9cbiAyMTE6XHRcdG1kaW8tXHUwMDNlcGh5X21hc2sgPSB+MDtcbiAyMTI6XHRcbiAyMTM6XHRcdGRldmljZV9zZXRfbm9kZShcdTAwMjZtZGlvLVx1MDAzZWRldiwgb2ZfZndub2RlX2hhbmRsZShucCkpO1xuIDIxNDpcdFxuIDIxNTpcdFx0LyogR2V0IGJ1cyBsZXZlbCBQSFkgcmVzZXQgR1BJTyBkZXRhaWxzICovXG4gMjE2Olx0XHRtZGlvLVx1MDAzZXJlc2V0X2RlbGF5X3VzID0gREVGQVVMVF9HUElPX1JFU0VUX0RFTEFZO1xuIDIxNzpcdFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O3Jlc2V0LWRlbGF5LXVzXCYjMzQ7LCBcdTAwMjZtZGlvLVx1MDAzZXJlc2V0X2RlbGF5X3VzKTtcbiAyMTg6XHRcdG1kaW8tXHUwMDNlcmVzZXRfcG9zdF9kZWxheV91cyA9IDA7XG4gMjE5Olx0XHRvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCYjMzQ7cmVzZXQtcG9zdC1kZWxheS11c1wmIzM0OywgXHUwMDI2bWRpby1cdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcbiAyMjA6XHRcbiAyMjE6XHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuIDIyMjpcdFx0cmMgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuIDIyMzpcdFx0aWYgKHJjKVxuIDIyNDpcdFx0XHRyZXR1cm4gcmM7XG4gMjI1Olx0XG4gMjI2Olx0XHQvKiBMb29wIG92ZXIgdGhlIGNoaWxkIG5vZGVzIGFuZCByZWdpc3RlciBhIHBoeV9kZXZpY2UgZm9yIGVhY2ggcGh5ICovXG4gMjI3Olx0XHRyYyA9IF9fb2ZfbWRpb2J1c19wYXJzZV9waHlzKG1kaW8sIG5wLCBcdTAwMjZzY2FucGh5cyk7XG4gMjI4Olx0XHRpZiAocmMpXG4gMjI5Olx0XHRcdGdvdG8gdW5yZWdpc3RlcjtcbiAyMzA6XHRcbiAyMzE6XHRcdGlmICghc2NhbnBoeXMpXG4gMjMyOlx0XHRcdHJldHVybiAwO1xuIDIzMzpcdFxuIDIzNDpcdFx0LyogYXV0byBzY2FuIGZvciBQSFlzIHdpdGggZW1wdHkgcmVnIHByb3BlcnR5ICovXG4gMjM1Olx0XHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHtcbiAyMzY6XHRcdFx0LyogU2tpcCBQSFlzIHdpdGggcmVnIHByb3BlcnR5IHNldCBvciBldGhlcm5ldC1waHktcGFja2FnZSBub2RlICovXG4gMjM3Olx0XHRcdGlmIChvZl9wcm9wZXJ0eV9wcmVzZW50KGNoaWxkLCBcJiMzNDtyZWdcJiMzNDspIHx8XG4gMjM4Olx0XHRcdCAgICBvZl9ub2RlX25hbWVfZXEoY2hpbGQsIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSlcbiAyMzk6XHRcdFx0XHRjb250aW51ZTtcbiAyNDA6XHRcbiAyNDE6XHRcdFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgUEhZX01BWF9BRERSOyBhZGRyJiM0MzsmIzQzOykge1xuIDI0MjpcdFx0XHRcdC8qIHNraXAgYWxyZWFkeSByZWdpc3RlcmVkIFBIWXMgKi9cbiAyNDM6XHRcdFx0XHRpZiAobWRpb2J1c19pc19yZWdpc3RlcmVkX2RldmljZShtZGlvLCBhZGRyKSlcbiAyNDQ6XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDI0NTpcdFxuIDI0NjpcdFx0XHRcdC8qIGJlIG5vaXN5IHRvIGVuY291cmFnZSBwZW9wbGUgdG8gc2V0IHJlZyBwcm9wZXJ0eSAqL1xuIDI0NzpcdFx0XHRcdGRldl9pbmZvKFx1MDAyNm1kaW8tXHUwMDNlZGV2LCBcJiMzNDtzY2FuIHBoeSAlcE9GbiBhdCBhZGRyZXNzICVpXFxuXCYjMzQ7LFxuIDI0ODpcdFx0XHRcdFx0IGNoaWxkLCBhZGRyKTtcbiAyNDk6XHRcbiAyNTA6XHRcdFx0XHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKSB7XG4gMjUxOlx0XHRcdFx0XHQvKiAtRU5PREVWIGlzIHRoZSByZXR1cm4gY29kZSB0aGF0IFBIWUxJQiBoYXNcbiAyNTI6XHRcdFx0XHRcdCAqIHN0YW5kYXJkaXplZCBvbiB0byBpbmRpY2F0ZSB0aGF0IGJ1c1xuIDI1MzpcdFx0XHRcdFx0ICogc2Nhbm5pbmcgc2hvdWxkIGNvbnRpbnVlLlxuIDI1NDpcdFx0XHRcdFx0ICovXG4gMjU1Olx0XHRcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcbiAyNTY6XHRcdFx0XHRcdGlmICghcmMpXG4gMjU3Olx0XHRcdFx0XHRcdGJyZWFrO1xuIDI1ODpcdFx0XHRcdFx0aWYgKHJjICE9IC1FTk9ERVYpXG4gMjU5Olx0XHRcdFx0XHRcdGdvdG8gcHV0X3VucmVnaXN0ZXI7XG4gMjYwOlx0XHRcdFx0fVxuIDI2MTpcdFx0XHR9XG4gMjYyOlx0XHR9XG4gMjYzOlx0XG4gMjY0Olx0XHRyZXR1cm4gMDtcbiAyNjU6XHRcbiAyNjY6XHRwdXRfdW5yZWdpc3RlcjpcbiAyNjc6XHRcdG9mX25vZGVfcHV0KGNoaWxkKTtcbiAyNjg6XHR1bnJlZ2lzdGVyOlxuIDI2OTpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG1kaW8pO1xuIDI3MDpcdFx0cmV0dXJuIHJjO1xuIDI3MTpcdH1cbiAyNzI6XHRFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XG4gMjczOlx0XG4gMjc0Olx0LyoqXG4gMjc1Olx0ICogb2ZfbWRpb19maW5kX2RldmljZSAtIEdpdmVuIGEgZGV2aWNlIHRyZWUgbm9kZSwgZmluZCB0aGUgbWRpb19kZXZpY2VcbiAyNzY6XHQgKiBAbnA6IHBvaW50ZXIgdG8gdGhlIG1kaW9fZGV2aWNlJiMzOTtzIGRldmljZSB0cmVlIG5vZGVcbiAyNzc6XHQgKlxuIDI3ODpcdCAqIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBtZGlvX2RldmljZSB3aXRoIHRoZSBlbWJlZGRlZFxuIDI3OTpcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4gMjgwOlx0ICogVGhlIGNhbGxlciBzaG91bGQgY2FsbCBwdXRfZGV2aWNlKCkgb24gdGhlIG1kaW9fZGV2aWNlIGFmdGVyIGl0cyB1c2VcbiAyODE6XHQgKi9cbiAyODI6XHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm9mX21kaW9fZmluZF9kZXZpY2Uoc3RydWN0IGRldmljZV9ub2RlICpucClcbiAyODM6XHR7XG4gMjg0Olx0XHRyZXR1cm4gZndub2RlX21kaW9fZmluZF9kZXZpY2Uob2ZfZndub2RlX2hhbmRsZShucCkpO1xuIDI4NTpcdH1cbiAyODY6XHRFWFBPUlRfU1lNQk9MKG9mX21kaW9fZmluZF9kZXZpY2UpO1xuIDI4NzpcdFxuIDI4ODpcdC8qKlxuIDI4OTpcdCAqIG9mX3BoeV9maW5kX2RldmljZSAtIEdpdmUgYSBQSFkgbm9kZSwgZmluZCB0aGUgcGh5X2RldmljZVxuIDI5MDpcdCAqIEBwaHlfbnA6IFBvaW50ZXIgdG8gdGhlIHBoeSYjMzk7cyBkZXZpY2UgdHJlZSBub2RlXG4gMjkxOlx0ICpcbiAyOTI6XHQgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGh5X2RldmljZSB3aXRoIHRoZSBlbWJlZGRlZFxuIDI5MzpcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4gMjk0Olx0ICovXG4gMjk1Olx0c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9ucClcbiAyOTY6XHR7XG4gMjk3Olx0XHRyZXR1cm4gZndub2RlX3BoeV9maW5kX2RldmljZShvZl9md25vZGVfaGFuZGxlKHBoeV9ucCkpO1xuIDI5ODpcdH1cbiAyOTk6XHRFWFBPUlRfU1lNQk9MKG9mX3BoeV9maW5kX2RldmljZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDYwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIE1ESU8gQnVzIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJIHNlZSBhIGNvbmRpdGlvbmFsOiBpZiBgbnBgIGlzIE5VTEwsIHdlIHRyaWdnZXIgYF9fbWRpb2J1c19yZWdpc3RlcmAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0ICpleGFjdGx5KiBoYXBwZW5zIHdpdGhpbiBgX19tZGlvYnVzX3JlZ2lzdGVyYD8gRG9lcyBpdCBoYXZlIHRoZSBzbWFydHMgdG8gYXV0b21hdGljYWxseSBwcm9iZSBmb3IgY29ubmVjdGVkIFBIWXM/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGhhbmRsZXMgdGhlIGRpc2NvdmVyeSBwcm9jZXNzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHdoaWNoIEkgYmVsaWV2ZSBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyB1bmZvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYz0zMj1pbnQgX19hY3BpX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cdG1kaW8tXHUwMDNlcGh5X21hc2sgPSBHRU5NQVNLKDMxLCAwKTtcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XHRyZXQgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MTk1PWludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjAyLVx0aWYgKCFucClcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcdFx0cmV0dXJuIF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoyMjI6XHRyYyA9IF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTUzOS0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQxLSAqIEBidXM6IHRhcmdldCBtaWlfYnVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0NjogKiAgIG1kaW9idXNfcmVnaXN0ZXIoKSByYXRoZXIgdGhhbiBfX21kaW9idXNfcmVnaXN0ZXIoKSB1bmxlc3MgdGhleVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ3LSAqICAgbmVlZCB0byBwYXNzIGEgc3BlY2lmaWMgb3duZXIgbW9kdWxlLiBNRElPIGRldmljZXMgd2hpY2ggYXJlIG5vdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU1MzppbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjYtfVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg2LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XHRyZXQgPSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvd25lcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYy04OC1cdGlmIChyZXQpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTQ0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBtaWlfYnVzICptZGlvYnVzX2FsbG9jKHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC00NDYtXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ0NzppbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ0OS1cdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xuaW5jbHVkZS9saW51eC9waHkuaDo0NTA6I2RlZmluZSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cykgX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgVEhJU19NT0RVTEUpXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzOTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jYCBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIHRoZSBgX19tZGlvYnVzX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY3J1Y2lhbCBmdW5jdGlvbiB3b3Jrcy4gVGhpcyBpcyB3aGVyZSB0aGUgTURJTyBidXMgcmVnaXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgZ2V0IG91ciBQSFlzIHRhbGtpbmcgdG8gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzIG9mIHRoYXQgcHJvY2VzcywgZXNwZWNpYWxseSBob3cgdGhlIGRyaXZlciBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhbmQgaG9va2VkIGludG8gdGhlIGtlcm5lbC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGhvdyB0aGUgYnVzIGl0c2VsZiBpcyBzZXQgdXAsIGhvdyBpdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgdHJlZSwgYW5kIHVsdGltYXRlbHksIGhvdyBQSFkgZHJpdmVycyBhcmUgbGlua2VkIHRvIHRoaXMgcmVnaXN0ZXJlZCBidXMuIE9rYXksIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdCAqIF9fbWRpb2J1c19yZWdpc3RlciAtIGJyaW5nIHVwIGFsbCB0aGUgUEhZcyBvbiBhIGdpdmVuIGJ1cyBhbmQgYXR0YWNoIHRoZW0gdG8gYnVzXG4gNTQxOlx0ICogQGJ1czogdGFyZ2V0IG1paV9idXNcbiA1NDI6XHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcbiA1NDM6XHQgKlxuIDU0NDpcdCAqIERlc2NyaXB0aW9uOiBDYWxsZWQgYnkgYSBidXMgZHJpdmVyIHRvIGJyaW5nIHVwIGFsbCB0aGUgUEhZc1xuIDU0NTpcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcbiA1NDY6XHQgKiAgIG1kaW9idXNfcmVnaXN0ZXIoKSByYXRoZXIgdGhhbiBfX21kaW9idXNfcmVnaXN0ZXIoKSB1bmxlc3MgdGhleVxuIDU0NzpcdCAqICAgbmVlZCB0byBwYXNzIGEgc3BlY2lmaWMgb3duZXIgbW9kdWxlLiBNRElPIGRldmljZXMgd2hpY2ggYXJlIG5vdFxuIDU0ODpcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXG4gNTQ5Olx0ICogICB0byBiZSBleHBsaWNpdGx5IGxpc3RlZCBpbiBEVCBhbmQgaW5zdGFudGlhdGVkIGJ5IG9mX21kaW9idXNfcmVnaXN0ZXIoKS5cbiA1NTA6XHQgKlxuIDU1MTpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFx1MDAzYyAwIG9uIGVycm9yLlxuIDU1MjpcdCAqL1xuIDU1MzpcdGludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4gNTU0Olx0e1xuIDU1NTpcdFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2O1xuIDU1NjpcdFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2Q7XG4gNTU3Olx0XHRib29sIHByZXZlbnRfYzQ1X3NjYW47XG4gNTU4Olx0XHRpbnQgaSwgZXJyO1xuIDU1OTpcdFxuIDU2MDpcdFx0aWYgKCFidXMgfHwgIWJ1cy1cdTAwM2VuYW1lKVxuIDU2MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NjI6XHRcbiA1NjM6XHRcdC8qIEFuIGFjY2VzcyBtZXRob2QgYWx3YXlzIG5lZWRzIGJvdGggcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyAqL1xuIDU2NDpcdFx0aWYgKCEhYnVzLVx1MDAzZXJlYWQgIT0gISFidXMtXHUwMDNld3JpdGUgfHwgISFidXMtXHUwMDNlcmVhZF9jNDUgIT0gISFidXMtXHUwMDNld3JpdGVfYzQ1KVxuIDU2NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NjY6XHRcbiA1Njc6XHRcdC8qIEF0IGxlYXN0IG9uZSBtZXRob2QgaXMgbWFuZGF0b3J5ICovXG4gNTY4Olx0XHRpZiAoIWJ1cy1cdTAwM2VyZWFkIFx1MDAyNlx1MDAyNiAhYnVzLVx1MDAzZXJlYWRfYzQ1KVxuIDU2OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NzA6XHRcbiA1NzE6XHRcdGlmIChidXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBidXMtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUpXG4gNTcyOlx0XHRcdGZ3bm9kZV9zZXRfZmxhZyhcdTAwMjZidXMtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUtXHUwMDNlZndub2RlLFxuIDU3MzpcdFx0XHRcdFx0RldOT0RFX0ZMQUdfTkVFRFNfQ0hJTERfQk9VTkRfT05fQUREKTtcbiA1NzQ6XHRcbiA1NzU6XHRcdFdBUk4oYnVzLVx1MDAzZXN0YXRlICE9IE1ESU9CVVNfQUxMT0NBVEVEIFx1MDAyNlx1MDAyNlxuIDU3NjpcdFx0ICAgICBidXMtXHUwMDNlc3RhdGUgIT0gTURJT0JVU19VTlJFR0lTVEVSRUQsXG4gNTc3Olx0XHQgICAgIFwmIzM0OyVzOiBub3QgaW4gQUxMT0NBVEVEIG9yIFVOUkVHSVNURVJFRCBzdGF0ZVxcblwmIzM0OywgYnVzLVx1MDAzZWlkKTtcbiA1Nzg6XHRcbiA1Nzk6XHRcdGJ1cy1cdTAwM2Vvd25lciA9IG93bmVyO1xuIDU4MDpcdFx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuIDU4MTpcdFx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuIDU4MjpcdFx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuIDU4MzpcdFx0ZGV2X3NldF9uYW1lKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwmIzM0OyVzXCYjMzQ7LCBidXMtXHUwMDNlaWQpO1xuIDU4NDpcdFxuIDU4NTpcdFx0LyogSWYgdGhlIGJ1cyBzdGF0ZSBpcyBhbGxvY2F0ZWQsIHdlJiMzOTtyZSByZWdpc3RlcmluZyBhIGZyZXNoIGJ1c1xuIDU4NjpcdFx0ICogdGhhdCBtYXkgaGF2ZSBhIGZ3bm9kZSBhc3NvY2lhdGVkIHdpdGggaXQuIEdyYWIgYSByZWZlcmVuY2VcbiA1ODc6XHRcdCAqIHRvIHRoZSBmd25vZGUuIFRoaXMgd2lsbCBiZSBkcm9wcGVkIHdoZW4gdGhlIGJ1cyBpcyByZWxlYXNlZC5cbiA1ODg6XHRcdCAqIElmIHRoZSBidXMgd2FzIHNldCB0byB1bnJlZ2lzdGVyZWQsIGl0IG1lYW5zIHRoYXQgdGhlIGJ1cyB3YXNcbiA1ODk6XHRcdCAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCwgYW5kIHdlJiMzOTt2ZSBhbHJlYWR5IGdyYWJiZWQgYSByZWZlcmVuY2UuXG4gNTkwOlx0XHQgKi9cbiA1OTE6XHRcdGlmIChidXMtXHUwMDNlc3RhdGUgPT0gTURJT0JVU19BTExPQ0FURUQpXG4gNTkyOlx0XHRcdGZ3bm9kZV9oYW5kbGVfZ2V0KGRldl9md25vZGUoXHUwMDI2YnVzLVx1MDAzZWRldikpO1xuIDU5MzpcdFxuIDU5NDpcdFx0LyogV2UgbmVlZCB0byBzZXQgc3RhdGUgdG8gTURJT0JVU19VTlJFR0lTVEVSRUQgdG8gY29ycmVjdGx5IHJlbGVhc2VcbiA1OTU6XHRcdCAqIHRoZSBkZXZpY2UgaW4gbWRpb2J1c19mcmVlKClcbiA1OTY6XHRcdCAqXG4gNTk3Olx0XHQgKiBTdGF0ZSB3aWxsIGJlIHVwZGF0ZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvbiBpbiBjYXNlIG9mIHN1Y2Nlc3NcbiA1OTg6XHRcdCAqL1xuIDU5OTpcdFx0YnVzLVx1MDAzZXN0YXRlID0gTURJT0JVU19VTlJFR0lTVEVSRUQ7XG4gNjAwOlx0XG4gNjAxOlx0XHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gNjAyOlx0XHRpZiAoZXJyKSB7XG4gNjAzOlx0XHRcdHByX2VycihcJiMzNDttaWlfYnVzICVzIGZhaWxlZCB0byByZWdpc3RlclxcblwmIzM0OywgYnVzLVx1MDAzZWlkKTtcbiA2MDQ6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjA1Olx0XHR9XG4gNjA2Olx0XG4gNjA3Olx0XHRtdXRleF9pbml0KFx1MDAyNmJ1cy1cdTAwM2VtZGlvX2xvY2spO1xuIDYwODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDYwOTpcdFxuIDYxMDpcdFx0LyogYXNzZXJ0IGJ1cyBsZXZlbCBQSFkgR1BJTyByZXNldCAqL1xuIDYxMTpcdFx0Z3Bpb2QgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZidXMtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OywgR1BJT0RfT1VUX0hJR0gpO1xuIDYxMjpcdFx0aWYgKElTX0VSUihncGlvZCkpIHtcbiA2MTM6XHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShcdTAwMjZidXMtXHUwMDNlZGV2LCBQVFJfRVJSKGdwaW9kKSxcbiA2MTQ6XHRcdFx0XHRcdCAgICBcJiMzNDttaWlfYnVzICVzIGNvdWxkbiYjMzk7dCBnZXQgcmVzZXQgR1BJT1xcblwmIzM0OyxcbiA2MTU6XHRcdFx0XHRcdCAgICBidXMtXHUwMDNlaWQpO1xuIDYxNjpcdFx0XHRkZXZpY2VfZGVsKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIDYxNzpcdFx0XHRyZXR1cm4gZXJyO1xuIDYxODpcdFx0fSBlbHNlXHRpZiAoZ3Bpb2QpIHtcbiA2MTk6XHRcdFx0YnVzLVx1MDAzZXJlc2V0X2dwaW9kID0gZ3Bpb2Q7XG4gNjIwOlx0XHRcdGZzbGVlcChidXMtXHUwMDNlcmVzZXRfZGVsYXlfdXMpO1xuIDYyMTpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZ3Bpb2QsIDApO1xuIDYyMjpcdFx0XHRpZiAoYnVzLVx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMgXHUwMDNlIDApXG4gNjIzOlx0XHRcdFx0ZnNsZWVwKGJ1cy1cdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcbiA2MjQ6XHRcdH1cbiA2MjU6XHRcbiA2MjY6XHRcdGlmIChidXMtXHUwMDNlcmVzZXQpIHtcbiA2Mjc6XHRcdFx0ZXJyID0gYnVzLVx1MDAzZXJlc2V0KGJ1cyk7XG4gNjI4Olx0XHRcdGlmIChlcnIpXG4gNjI5Olx0XHRcdFx0Z290byBlcnJvcl9yZXNldF9ncGlvZDtcbiA2MzA6XHRcdH1cbiA2MzE6XHRcbiA2MzI6XHRcdGlmIChidXMtXHUwMDNlcmVhZCkge1xuIDYzMzpcdFx0XHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xuIDYzNDpcdFx0XHRpZiAoZXJyKVxuIDYzNTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4gNjM2Olx0XHR9XG4gNjM3Olx0XG4gNjM4Olx0XHRwcmV2ZW50X2M0NV9zY2FuID0gbWRpb2J1c19wcmV2ZW50X2M0NV9zY2FuKGJ1cyk7XG4gNjM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTURJTyBCdXMgU2NhbioqCgpSaWdodCwgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBoYXMgYmVlbiBpbnZva2VkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgdGhpcyBpcyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgdGhlIGN1cnJlbnQgZGV2aWNlIHRyZWUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgQzIyIGNsYXVzZSBoYXMgYmVlbiB0cmlnZ2VyZWQgYXMgYW50aWNpcGF0ZWQuIEkmIzM5O20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgY2FsbC4gV2hhdCYjMzk7cyB0aGUgdGFyZ2V0IGhhcmR3YXJlPyBXaGF0IHBlcmlwaGVyYWxzIGFyZSBjb25maWd1cmVkIG9uIHRoaXMgTURJTyBidXM/IElzIHRoaXMgYSBzdGFuZGFyZCBvcGVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyB0aGF0IHRyaWdnZXJlZCBhbiB1bnVzdWFsIHNjYW4/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIGxvb2sgZm9yIGFueSB1bmZvcmVzZWVuIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHR7XG4gNDYxOlx0XHRyZXR1cm4gbWRpb2J1c19zY2FuKGJ1cywgYWRkciwgZmFsc2UpO1xuIDQ2MjpcdH1cbiA0NjM6XHRFWFBPUlRfU1lNQk9MKG1kaW9idXNfc2Nhbl9jMjIpO1xuIDQ2NDpcdFxuIDQ2NTpcdC8qKlxuIDQ2NjpcdCAqIG1kaW9idXNfc2Nhbl9jNDUgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDNDUgTURJTyBkZXZpY2VzLlxuIDQ2NzpcdCAqIEBidXM6IG1paV9idXMgdG8gc2NhblxuIDQ2ODpcdCAqIEBhZGRyOiBhZGRyZXNzIG9uIGJ1cyB0byBzY2FuXG4gNDY5Olx0ICpcbiA0NzA6XHQgKiBUaGlzIGZ1bmN0aW9uIHNjYW5zIG9uZSBhZGRyZXNzIG9uIHRoZSBNRElPIGJ1cywgbG9va2luZyBmb3JcbiA0NzE6XHQgKiBkZXZpY2VzIHdoaWNoIGNhbiBiZSBpZGVudGlmaWVkIHVzaW5nIGEgdmVuZG9yL3Byb2R1Y3QgSUQgaW5cbiA0NzI6XHQgKiByZWdpc3RlcnMgMiBhbmQgMy4gTm90IGFsbCBNRElPIGRldmljZXMgaGF2ZSBzdWNoIHJlZ2lzdGVycywgYnV0XG4gNDczOlx0ICogUEhZIGRldmljZXMgdHlwaWNhbGx5IGRvLiBIZW5jZSB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW55dGhpbmdcbiA0NzQ6XHQgKiBmb3VuZCBpcyBhIFBIWSwgb3IgY2FuIGJlIHRyZWF0ZWQgYXMgYSBQSFkuIE90aGVyIE1ESU8gZGV2aWNlcyxcbiA0NzU6XHQgKiBzdWNoIGFzIHN3aXRjaGVzLCB3aWxsIHByb2JhYmx5IG5vdCBiZSBmb3VuZCBkdXJpbmcgdGhlIHNjYW4uXG4gNDc2Olx0ICovXG4gNDc3Olx0c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuIDQ3ODpcdHtcbiA0Nzk6XHRcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIDQ4MzpcdHtcbiA0ODQ6XHRcdGludCBpO1xuIDQ4NTpcdFxuIDQ4NjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX01BWF9BRERSOyBpJiM0MzsmIzQzOykge1xuIDQ4NzpcdFx0XHRpZiAoKGJ1cy1cdTAwM2VwaHlfbWFzayBcdTAwMjYgQklUKGkpKSA9PSAwKSB7XG4gNDg4Olx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiA0ODk6XHRcbiA0OTA6XHRcdFx0XHRwaHlkZXYgPSBtZGlvYnVzX3NjYW5fYzIyKGJ1cywgaSk7XG4gNDkxOlx0XHRcdFx0aWYgKElTX0VSUihwaHlkZXYpIFx1MDAyNlx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxuIDQ5MjpcdFx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcbiA0OTM6XHRcdFx0fVxuIDQ5NDpcdFx0fVxuIDQ5NTpcdFx0cmV0dXJuIDA7XG4gNDk2Olx0fVxuIDQ5NzpcdFxuIDQ5ODpcdHN0YXRpYyBpbnQgbWRpb2J1c19zY2FuX2J1c19jNDUoc3RydWN0IG1paV9idXMgKmJ1cylcbiA0OTk6XHR7XG4gNTAwOlx0XHRpbnQgaTtcbiA1MDE6XHRcbiA1MDI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBIWV9NQVhfQUREUjsgaSYjNDM7JiM0MzspIHtcbiA1MDM6XHRcdFx0aWYgKChidXMtXHUwMDNlcGh5X21hc2sgXHUwMDI2IEJJVChpKSkgPT0gMCkge1xuIDUwNDpcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gNTA1Olx0XG4gNTA2Olx0XHRcdFx0LyogRG9uJiMzOTt0IHNjYW4gQzQ1IGlmIHdlIGFscmVhZHkgaGF2ZSBhIEMyMiBkZXZpY2UgKi9cbiA1MDc6XHRcdFx0XHRpZiAoYnVzLVx1MDAzZW1kaW9fbWFwW2ldKVxuIDUwODpcdFx0XHRcdFx0Y29udGludWU7XG4gNTA5Olx0XG4gNTEwOlx0XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2M0NShidXMsIGkpO1xuIDUxMTpcdFx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbiA1MTI6XHRcdFx0XHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4gNTEzOlx0XHRcdH1cbiA1MTQ6XHRcdH1cbiA1MTU6XHRcdHJldHVybiAwO1xuIDUxNjpcdH1cbiA1MTc6XHRcbiA1MTg6XHQvKiBUaGVyZSBhcmUgc29tZSBDMjIgUEhZcyB3aGljaCBkbyBiYWQgdGhpbmdzIHdoZW4gd2hlcmUgaXMgYSBDNDVcbiA1MTk6XHQgKiB0cmFuc2FjdGlvbiBvbiB0aGUgYnVzLCBsaWtlIGFjY2VwdGluZyBhIHJlYWQgdGhlbXNlbHZlcywgYW5kXG4gNTIwOlx0ICogc3RvbXBpbmcgb3ZlciB0aGUgdHJ1ZSBkZXZpY2VzIHJlcGx5LCB0byBwZXJmb3JtaW5nIGEgd3JpdGUgdG9cbiA1MjE6XHQgKiB0aGVtc2VsdmVzIHdoaWNoIHdhcyBpbnRlbmRlZCBmb3IgYW5vdGhlciBkZXZpY2UuIE5vdyB0aGF0IEMyMlxuIDUyMjpcdCAqIGRldmljZXMgaGF2ZSBiZWVuIGZvdW5kLCBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGJhZCBmb3IgQzQ1LCBhbmQgaWYgd2VcbiA1MjM6XHQgKiBzaG91bGQgc2tpcCB0aGUgQzQ1IHNjYW4uXG4gNTI0Olx0ICovXG4gNTI1Olx0c3RhdGljIGJvb2wgbWRpb2J1c19wcmV2ZW50X2M0NV9zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMpXG4gNTI2Olx0e1xuIDUyNzpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiA1Mjg6XHRcbiA1Mjk6XHRcdG1kaW9idXNfZm9yX2VhY2hfcGh5KGJ1cywgcGh5ZGV2KSB7XG4gNTMwOlx0XHRcdHUzMiBvdWkgPSBwaHlkZXYtXHUwMDNlcGh5X2lkIFx1MDAzZVx1MDAzZSAxMDtcbiA1MzE6XHRcbiA1MzI6XHRcdFx0aWYgKG91aSA9PSBNSUNSRUxfT1VJKVxuIDUzMzpcdFx0XHRcdHJldHVybiB0cnVlO1xuIDUzNDpcdFx0fVxuIDUzNTpcdFxuIDUzNjpcdFx0cmV0dXJuIGZhbHNlO1xuIDUzNzpcdH1cbiA1Mzg6XHRcbiA1Mzk6XHQvKipcbiA1NDA6XHQgKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xuIDU0MTpcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXG4gNTQyOlx0ICogQG93bmVyOiBtb2R1bGUgY29udGFpbmluZyBidXMgYWNjZXNzb3IgZnVuY3Rpb25zXG4gNTQzOlx0ICpcbiA1NDQ6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcbiA1NDU6XHQgKiAgIG9uIGEgZ2l2ZW4gYnVzLCBhbmQgYXR0YWNoIHRoZW0gdG8gdGhlIGJ1cy4gRHJpdmVycyBzaG91bGQgdXNlXG4gNTQ2Olx0ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcbiA1NDc6XHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcbiA1NDg6XHQgKiAgIFBIWXMgd2lsbCBub3QgYmUgYnJvdWdodCB1cCBieSB0aGlzIGZ1bmN0aW9uLiBUaGV5IGFyZSBleHBlY3RlZFxuIDU0OTpcdCAqICAgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQgaW4gRFQgYW5kIGluc3RhbnRpYXRlZCBieSBvZl9tZGlvYnVzX3JlZ2lzdGVyKCkuXG4gNTUwOlx0ICpcbiA1NTE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBcdTAwM2MgMCBvbiBlcnJvci5cbiA1NTI6XHQgKi9cbiA1NTM6XHRpbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuIDU1NDpcdHtcbiA1NTU6XHRcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcbiA1NTY6XHRcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xuIDU1NzpcdFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xuIDU1ODpcdFx0aW50IGksIGVycjtcbiA1NTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMTYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgU2Nhbm5pbmcgYW5kIFN5emthbGxlciBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBmdW5jdGlvbiBjYWxsLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBjYWxsaW5nIGBtZGlvYnVzX3NjYW5fYzIyYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhpcyBpcyBob3cgdGhlIE1ESU8gYnVzIGdldHMgc2Nhbm5lZCwgcmVhZGluZyBQSFkgSUQgcmVnaXN0ZXJzIHRvIGRpc2NvdmVyIHdoYXQmIzM5O3MgY29ubmVjdGVkLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGNhbiBwbGF5IGEgcm9sZSBoZXJlLCBzcGVjaWZpY2FsbHkgd2hlbiBpdCYjMzk7cyBlbXVsYXRpbmcgdGhhdCBgbWRpby1tdnVzYmAgZHJpdmVyLiBJZiB3ZSBjYW4gbWFuaXB1bGF0ZSBzeXprYWxsZXIgdG8gcmVzcG9uZCB0byBNRElPIHJlYWQgb3BlcmF0aW9ucy4uLndlIGNhbiBlc3NlbnRpYWxseSB0cmljayB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQmIzM5O3MgdGFsa2luZyB0byBhbiBBVDgwM1ggUEhZISBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgUEhZIElEIGlzLiBBaCB5ZXMsIEkgcmVtZW1iZXIgdGhhdCBpdCYjMzk7cyBgMHgwMDRkZDA3MmAsIG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlIHRvIHRoYXQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBJRC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lEX01BVENIX0VYQUNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9OTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhczIxeHh4X2RyaXZlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk1Mi1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1MzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxWFhYKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU0LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjF4eHhcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NTctXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1ODpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExSkIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTFKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NjktXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk3MDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExUEIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTcxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTFQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODEtXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk4MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDEwUEIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTgzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTMtXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk5NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDEwSkIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTk1LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDA1LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDA2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDA3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEyMTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE3LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDE4Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTBKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI5LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDMwOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTBQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDMxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDQxLVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDQyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTFKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUzLVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDU0Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDU1LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEyMTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY1LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDY2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTFQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9OTc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFzaXhfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy05OC17XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzo5OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQSksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDAtXHQubmFtZVx0XHQ9IFwmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTA3LX0sIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwODpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQyksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDktXHQubmFtZVx0XHQ9IFwmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9MTIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgYXNpeF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEyNDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BU0lYX0FYODg3NzJBKSB9LFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6MTI1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTSVhfQVg4ODc3MkMpIH0sXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMjYtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfQVNJWF9BWDg4Nzk2QikgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgaWNwbHVzX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pY3BsdXMuYy02MzAtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChJUDEwMDFfUEhZX0lEKSB9LFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jOjYzMTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQMTAxQV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmMtNjMyLVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDczPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDc0LVx0e1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNDc1Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ3Ni1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZWRpYVRlayBNVDc5ODEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ5MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCksXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0OTMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVkaWFUZWsgTVQ3OTg4IFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1MDgtXHR7XG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTEwLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Fpcm9oYSBBTjc1ODEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTUyMS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUyMjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MyksXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1MjMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7QWlyb2hhIEFONzU4MyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzODpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzOTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU0MDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU0MTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MykgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU0Mi1cdHsgfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYz05OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX2dlcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMC1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMDE6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc1MzApLFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMTQtXHR7XG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM6MTE1Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMTYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVkaWFUZWsgTVQ3NTMxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM9MTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX2dlcGh5X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jOjEzMzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzUzMCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc1MzEpIH0sXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmMtMTM1LVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jPTE4Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWVzb25fZ3hsX3BoeVtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE4OC1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZXNvbi1neGwuYzoxODk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAxODE0NDAwKSxcbmRyaXZlcnMvbmV0L3BoeS9tZXNvbi1neGwuYy0xOTAtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVzb24gR1hMIEludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVzb24tZ3hsLmMtMjAyLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjIwMzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDE4MDMzMDEpLFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwNC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZXNvbiBHMTJBIEludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTUzNz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTM4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Mzk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU0MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkIxXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTQ4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU1MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkMxXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTU4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NTk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMiksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkMyXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Njk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZEMCksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkQwXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTgxLVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTgzLVx0XHQubmFtZSAgICAgICAgICAgICAgID0gXCYjMzQ7TEFOODY1WCBSZXYuQjAvQjEgSW50ZXJuYWwgUGh5XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU5ODpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1OTk6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAwOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWQzIpIH0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjYwMTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkQwKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo2MDI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy02MDMtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2My1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDY0Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NS1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MTEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3Mi1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDczOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3NC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MjEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5Mi1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDkzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMiksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5NC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MjIgMTAwIE1lZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDAtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwMTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDItXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTMxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMTQtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExNTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE2LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1lUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTMyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMy1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1lUODgyMSAyLjVHYnBzIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzE1Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1vdG9yY29tbV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU5Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYwOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMikgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYyOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE2NC1cdHsgLyogc2VudGluZWwgKi8gfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjgwNy17XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyODA4Olx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTZYKSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4MDktXHQubmFtZVx0XHQ9IFwmIzM0O01pY3Jvc2VtaSBHRSBWU0M4NTZYIFN5bmNFXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4OTgte1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6Mjg5OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU3NSksXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTAwLVx0Lm5hbWVcdFx0PSBcJiMzNDtNaWNyb3NlbWkgR0UgVlNDODU3NSBTeW5jRVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTI3LXtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjI5Mjg6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1ZTQzg1ODIpLFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjkyOS1cdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9zZW1pIEdFIFZTQzg1ODIgU3luY0VcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk1Ni17XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTU3Olx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTg0KSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI5NTgtXHQubmFtZVx0XHQ9IFwmIzM0O01pY3Jvc2VtaSBHRSBWU0M4NTg0IFN5bmNFXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz05MzY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG14bF9waHlfZHJ2c1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzNy1cdHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5Mzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTApLFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzOS1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O01YTDg2MTEwIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NTI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTEpLFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1My1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O01YTDg2MTExIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jPTk3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG14bF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTApIH0sXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM6OTczOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSB9LFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk3NC1cdHsgIH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTExNS1cdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDM1ICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTE2Olx0UEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzVfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExMTctXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwMzVcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1MS1cdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzMyAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE1MjpcdFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTUzLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzM1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTc1LVx0LyogUXVhbGNvbW0gQXRoZXJvcyBBUjgwMzIgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNzY6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzMl9QSFlfSUQpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE3Ny1cdC5uYW1lXHRcdFx0PSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSODAzMlwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTkwLVx0LyogQVRIRVJPUyBBUjkzMzEgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExOTE6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIOTMzMV9QSFlfSUQpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE5Mi1cdC5uYW1lXHRcdFx0PSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBidWlsdC1pbiBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIwNS19LCB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjA2Olx0UEhZX0lEX01BVENIX0VYQUNUKElQUTUwMThfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMDctXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBJUFE1MDE4IGludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjE5LVx0LyogUXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjIwOlx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTk1NjFfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMjEtXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxIGJ1aWx0LWluIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMjM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgYXRoZXJvc190YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMzktXHR7IEFUSDgwMzBfUEhZX0lELCBBVDgwMzBfUEhZX0lEX01BU0sgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDA6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDE6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMyX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDM1X1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDM6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg5MzMxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChJUFE1MDE4X1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDU6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E5NTYxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyNDYtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NzkxPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDd4X2RyaXZlcnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03OTItXHR7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NzkzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTc5NC1cdFx0Lm5hbWUgICAgICAgICAgID0gXCYjMzQ7UXVhbGNvbW0gUUNBODA3MlwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODE1LVx0e1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjgxNjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDc1KSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MTctXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O1F1YWxjb21tIFFDQTgwNzVcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwN3hfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODQ3Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODQ4Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzUpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODQ5LVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQ4LVx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIFFDQTgwODFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgzLVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jPTIxMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODN4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjE1LVx0LyogUUNBODMzNyAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjIxNjpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MzM3X1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjE3LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgODMzNyBpbnRlcm5hbCBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIyOS1cdC8qIFFDQTgzMjctQSBmcm9tIHN3aXRjaCBRQ0E4MzI3LUFMMUEgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzA6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19BX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjMxLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgODMyNy1BIGludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ0LVx0LyogUUNBODMyNy1CIGZyb20gc3dpdGNoIFFDQTgzMjctQkwxQSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0NTpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MzI3X0JfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNDYtXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyA4MzI3LUIgaW50ZXJuYWwgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0yNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4M3h4X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMzdfUEhZX0lEKSB9LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI2NDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjY1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19CX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNjYtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNjg4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2ODktXHR7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNjkwOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDAwODIwMSksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNjkxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMDFDUCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNjk0LVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5NTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4MTYpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5Ni1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjAxRiBGYXN0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3MTItXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzEzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzE0LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMTEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIwLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjcyMTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5MTIpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcyMi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExQiBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3MzEtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzMyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMyksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMTFDIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjczOS1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI3NDA6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE0KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3NDEtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIxMUROIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc0OC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI3NDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE1KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3NTAtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIxMUUgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzYxLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc2MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5MTYpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2My1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExRiBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3ODAtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzgxOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyMTFGVkRfUEhZSUQpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc4Mi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExRi1WRCBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzUtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyODM2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzgzOCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yODM3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjYtQ0cgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjg1MC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTE6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjODQ4KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTItXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIyNkItQ0dfUlRMODIyMUItQ0cgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjkzNy1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5Mzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTM5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTEtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTUyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjY2FkMCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTUzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk2NC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NjU6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTYxKSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODM2NlJCIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk3Ny1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5Nzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYjAwKSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NzktXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMOTAwMEFBX1JUTDkwMDBBTiBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkwLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5MTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NDIpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk5Mi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTk4LVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5OTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NjApLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwMC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MzY2UyBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MTEzMD1zdHJ1Y3QgcGh5X2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xNTg2LVxuaW5jbHVkZS9saW51eC9waHkuaDoxNTg3OiNkZWZpbmUgUEhZX0lEX01BVENIX0VYQUNUKGlkKSAucGh5X2lkID0gKGlkKSwgLnBoeV9pZF9tYXNrID0gUEhZX0lEX01BVENIX0VYVEFDVF9NQVNLXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1ODgtI2RlZmluZSBQSFlfSURfTUFUQ0hfTU9ERUwoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfTU9ERUxfTUFTS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODc0OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIFBIWSBJRHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWUgQVQ4MDNYIFBIWSBJRHMuIExldCYjMzk7cyBzZWUsIHdlJiMzOTt2ZSBnb3QgYEFUSDgwMzFfUEhZX0lEYCwgYEFUSDgwMzJfUEhZX0lEYCwgYEFUSDgwMzVfUEhZX0lEYCwgYEFUSDkzMzFfUEhZX0lEYCwgYElQUTUwMThfUEhZX0lEYCwgYW5kIGBRQ0E5NTYxX1BIWV9JRGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBsaXN0IGZvciB3b3JraW5nIHdpdGggQVQ4MDNYIGRldmljZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBBVEg4MDM1X1BIWV9JRGAgcmlnaHQgbm93LiBOZWVkIHRvIGNoZWNrIHdoYXQgdGhhdCBzcGVjaWZpYyBpZGVudGlmaWVyIGFjdHVhbGx5IHJlcHJlc2VudHMuIEdvdHRhIGtub3cgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBBVEg4MDM1X1BIWV9JRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05NC0jZGVmaW5lIEFUSDgwMzJfUEhZX0lEXHRcdFx0XHQweDAwNGRkMDIzXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo5NTojZGVmaW5lIEFUSDgwMzVfUEhZX0lEXHRcdFx0XHQweDAwNGRkMDcyXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05Ni0jZGVmaW5lIEFUODAzMF9QSFlfSURfTUFTS1x0XHRcdDB4ZmZmZmZmZWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNjQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYXQ4MDN4IFBIWSBEcml2ZXIgdmlhIFVTQioqCgpPa2F5LCBzbyBpZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIHRoYXQgaWRlbnRpZmllcyBhcyBgbWRpby1tdnVzYmAgKFZJRCAweDEyODYsIFBJRCAweDFmYTQpIGFuZCByZXR1cm5zIHNwZWNpZmljIHZhbHVlcyDigJMgYDB4MDA0ZGAgYW5kIGAweGQwNzJgIOKAkyBpbiByZXNwb25zZSB0byBNRElPIHJlYWRzIGZyb20gcmVnaXN0ZXJzIDIgYW5kIDMsIHJlc3BlY3RpdmVseSwgdGhlbiB0aGUgYGF0ODAzeGAgZHJpdmVyIHdpbGwgZ2V0IHByb2JlZC4gTWFrZXMgc2Vuc2U7IGBtZGlvLW12dXNiYCBpbnRlcmFjdHMgd2l0aCB0aGUgTURJTyBidXMgKnZpYSogVVNCLgoKTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBxdWlja2x5IGdsYW5jaW5nIGF0IGBtdnVzYl9tZGlvX3JlYWRgIGluIGBtZGlvLW12dXNiLmNgOgoKYGBgYwpzdGF0aWMgaW50IG12dXNiX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZykKewoJc3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby0mZ3Q7cHJpdjsKCWludCBlcnIsIGFsZW47CgoJbXZ1c2ItJmd0O2J1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2ICZsdDsmbHQ7IDUpIHwgcmVnKTsKCgllcnIgPSB1c2JfYnVsa19tc2cobXZ1c2ItJmd0O3VkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi0mZ3Q7dWRldiwgMiksCgkJCSAgIG12dXNiLSZndDtidWYsIDYsICZhbXA7YWxlbiwgMTAwKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCgllcnIgPSB1c2JfYnVsa19tc2cobXZ1c2ItJmd0O3VkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi0mZ3Q7dWRldiwgNiksCgkJCSAgICZhbXA7bXZ1c2ItJmd0O2J1ZltNVlVTQl9DTURfVkFMXSwgMiwgJmFtcDthbGVuLCAxMDApOwoJaWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCXJldHVybiBsZTE2X3RvX2NwdShtdnVzYi0mZ3Q7YnVmW01WVVNCX0NNRF9WQUxdKTsKfQpgYGAKClllcCwgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjcmFmdGluZyB0aG9zZSBidWxrIG1lc3NhZ2UgcmVzcG9uc2VzLiBUaGlzIG1lYW5zIHRoZSBgYXQ4MDN4YCBQSFkgZHJpdmVyIGlzIGRlZmluaXRlbHkgd2l0aGluIHJlYWNoIGFuZCBmdXp6YWJsZSEKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4KCmBgYGMKLQlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5ZGV2LSZndDttZGlvLnJlc2V0X2dwaW8pIHsKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7c3RhdGUgPT0gUEhZX05PTElOSyAmYW1wOyZhbXA7IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHsKYGBgCgpJbnRlcmVzdGluZy4gSXQgcmVwbGFjZXMgYHBoeWRldi0mZ3Q7bWRpby5yZXNldF9ncGlvYCB3aXRoIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gQW5kIHRoYXQgZnVuY3Rpb24gY2hlY2tzIGZvciBgbWRpby0mZ3Q7cmVzZXRfZ3BpbyB8fCBtZGlvLSZndDtyZXNldF9jdHJsYC4gU28gdGhlIGNvbmRpdGlvbiBpcyBub3cgdHJ1ZSBpZiAqZWl0aGVyKiBgcmVzZXRfZ3Bpb2Agb3IgYHJlc2V0X2N0cmxgIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCBmdXp6YWJsZSBpbiBhIG1lYW5pbmdmdWwgd2F5PwoKWWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgbG9naWMgd2l0aGluIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YC4gIFdoYXQgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM/IFdlJiMzOTtsbCBuZWVkIGBDT05GSUdfQVQ4MDNYX1BIWWAsIG9idmlvdXNseS4gIFRvIGdldCB0aGVyZSB0aHJvdWdoIFVTQiwgd2UgYWxzbyBuZWVkIGBDT05GSUdfTURJT19NVlVTQmAsIGBDT05GSUdfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ09ORklHX1BIWUxJQmAuIFRpbWUgdG8gY29uZmlybSB0aGF0IGBBVDgwM1hfUEhZYCBpcyBhdmFpbGFibGUgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUODAzWF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0yPWNvbmZpZyBRQ09NX05FVF9QSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjU6Y29uZmlnIEFUODAzWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEFUODAzWF9QSFkgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgUXVhbGNvbW0gUEhZIGRyaXZlcnMsIHNvIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYC4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQVQ4MDNYX1BIWWAuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgc3VzcGVjdCB0aGVyZSBtYXkgYmUgYSBjYXNjYWRlIG9mIGRlcGVuZGVuY2llcywgcGVyaGFwcyBpbnZvbHZpbmcgb3RoZXIgUEhZIG9wdGlvbnMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBvciBldmVuIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgdGhlc2UgcmVsYXRpb25zaGlwcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBlaXRoZXIgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uLCBkZWJ1ZyBhbiBpc3N1ZSwgb3IgcGVyaGFwcyBsb29rIGF0IGVuYWJsaW5nIGl0IGlmIGl0JiMzOTtzIG5vdCBhbHJlYWR5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuLi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBvdGhlciBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQVQ4MDNYX1BIWVxuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1wmIzM0O1xuICAgNzpcdFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuICAgODpcdFx0ZGVwZW5kcyBvbiBSRUdVTEFUT1JcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBBUjgwMzAsIEFSODAzMSwgQVI4MDMzLCBBUjgwMzUsIElQUTUwMTggbW9kZWxcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgUUNBODNYWF9QSFlcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXCYjMzQ7XG4gIDE0Olx0XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgUUNBODMzNyhJbnRlcm5hbCBxY2E4ayBQSFkpIG1vZGVsXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFFDQTgwOFhfUEhZXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyNDAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaGluZ2VzIG9uIHRoZSBgUkVHVUxBVE9SYC4gVGhhdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHByb3Blcmx5LCBhbmQgdG8gZG8gdGhhdCwgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGFjdGl2YXRlIGBDT05GSUdfQVQ4MDNYX1BIWWAgYW5kIGBDT05GSUdfTURJT19NVlVTQmAuIE5vdywgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ESU9fTVZVU0JgIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBpdHMgcmVxdWlyZW1lbnRzIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgc3VjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1ESU9fTVZVU0ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTEwNj1jb25maWcgTURJT19JMkNcbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTE1LVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjExNjpjb25maWcgTURJT19NVlVTQlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgVVNCIHRvIE1ESU8gQWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyB0aGUgTURJT19NVlVTQiBLY29uZmlnIEVudHJ5KioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE1ESU9fTVZVU0JgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIG9wZW4gdXAgYGRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIE1ESU8gZHJpdmVyLCBwcmVzdW1hYmx5IHRoZSBNYXJ2ZWxsIFVTQiBNRElPLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSBvbiBvdGhlciBjb21wb25lbnRzLCBhbmQgaG93IGl0IGlzIGxvZ2ljYWxseSBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBuZXR3b3JrIHN1YnN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgYEtjb25maWdgIHN0cnVjdHVyZSBpcyBrZXkgdG8gZWZmaWNpZW50IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGxhdGVyIG9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgaGVscCB0ZXh0IC0gZG9lcyBpdCBwcm92aWRlIGNvbnRleHQgb3Igd2FybmluZ3M/CiogICBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGRyaXZlcnMsIGxpa2UgVVNCIHN1YnN5c3RlbSBkcml2ZXJzIG9yIHBhcnRpY3VsYXIgUEhZIGRyaXZlcnM/CiogICBDb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIG9yIG90aGVyIGZlYXR1cmVzPwoqICAgRGVmYXVsdCBzZXR0aW5ncywgaWYgYW55LCBhbmQgd2h5IHRob3NlIGRlZmF1bHRzIHdlcmUgY2hvc2VuLgoqICAgQW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgTURJTyBkcml2ZXJzIC0gYXJlIHRoZXJlIGNvbmZsaWN0cyBvciBvdmVybGFwcGluZyBmdW5jdGlvbmFsaXRpZXM/CgpFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIGhvdyBgTURJT19NVlVTQmAgZml0cyBpbnRvIHRoZSB3aG9sZSBwaWN0dXJlLCBzbyB0aGF0IEkgY2FuIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XHQgIFN1cHBvcnQgSTJDIGJhc2VkIFBIWXMuICBUaGlzIHByb3ZpZGVzIGEgTURJTyBidXMgYnJpZGdlZFxuIDExMTpcdFx0ICB0byBJMkMgdG8gYWxsb3cgUEhZcyBjb25uZWN0ZWQgaW4gSTJDIG1vZGUgdG8gYmUgYWNjZXNzZWRcbiAxMTI6XHRcdCAgdXNpbmcgdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIGxpYnJhcnkgbW9kZS5cbiAxMTU6XHRcbiAxMTY6XHRjb25maWcgTURJT19NVlVTQlxuIDExNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBVU0IgdG8gTURJTyBBZGFwdGVyXCYjMzQ7XG4gMTE4Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDExOTpcdFx0aGVscFxuIDEyMDpcdFx0ICBBIFVTQiB0byBNRElPIGNvbnZlcnRlciBwcmVzZW50IG9uIGRldmVsb3BtZW50IGJvYXJkcyBmb3JcbiAxMjE6XHRcdCAgTWFydmVsbCYjMzk7cyBMaW5rIFN0cmVldCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMuXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIE1ESU9fTVNDQ19NSUlNXG4gMTI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgTUlJTSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuIDEyNTpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAxMjY6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDEyNzpcdFx0aGVscFxuIDEyODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTUlJTSAoTURJTykgaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTI5Olx0XHQgIHN3aXRjaGVzIG9mIHRoZSBNaWNyb3NlbWkgU29DczsgaXQgaXMgcmVjb21tZW5kZWQgdG8gc3dpdGNoIG9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTY4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSBgTURJT19NVlVTQmAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCwgd2hpY2ggaXNuJiMzOTt0IGVudGlyZWx5IHN1cnByaXNpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEFyZSB0aGVyZSBvdGhlciBlbnRyeSBwb2ludHMgYmVzaWRlcyB0aGUgb2J2aW91cz8gUmlnaHQsIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyBjbGVhcmx5IHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgbmV0d29yayBsaW5rIHN0YXRlIGNoYW5nZXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBwaHlfc3RhdGVfbWFjaGluZWAsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHkuY2AsIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgUEhZIHN0YXRlIGFuZCBjYWxscyBgcGh5ZGV2LSZndDtkcnYtJmd0O2xpbmtfY2hhbmdlX25vdGlmeShwaHlkZXYpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQmIzM5O3MgdHJhY2UgaXQgYmFjayBmcm9tIGBwaHlfc3RhdGVfbWFjaGluZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTk2MD1zdGF0aWMgaW50IGFxY3MxMDlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTk2OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6OTcwOnN0YXRpYyB2b2lkIGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtOTcxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyMzUtXHQuZ2V0X3N0YXRzXHQ9IGFxcjEwN19nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyMzY6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTIzNy1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjItXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTVjX2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTI2MzpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY0LVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI4OS1cdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExMV9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTA6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI5MS1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTYtXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzE3Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTgtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzUyLVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzUzOlx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNTQtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzc4LVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzc5Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzODAtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzk5LVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDAwOlx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MDEtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIwLVx0LmdldF9zdGF0cyAgICAgID0gYXFyMTA3X2dldF9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQyMTpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIyLVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0Ni1cdC5nZXRfc3RhdHMgICAgICA9IGFxcjEwN19nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0NDc6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0OC1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NzMtXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc0Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NzUtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTAwLVx0LmdldF9mZWF0dXJlc1x0PSBhcXIxMTVjX2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTUwMTpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTAyLVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUyNy1cdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExNWNfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTI4Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MjktXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTUzLVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTU0Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTUtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9NDg9c3RhdGljIGludCBhc2l4X2F4ODg3NzJhX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODUtXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzo4NjpzdGF0aWMgdm9pZCBhc2l4X2F4ODg3NzJhX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jPTk3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhc2l4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNS1cdC5zb2Z0X3Jlc2V0XHQ9IGFzaXhfc29mdF9yZXNldCxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwNjpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYXNpeF9heDg4NzcyYV9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDctfSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTg4PSAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtOTEtXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo5MjogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05My0gICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEyMjU9c3RhdGljIHZvaWQgYmNtNTR4eF9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMjMyLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTIzMzpzdGF0aWMgdm9pZCBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM9MTQ2Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYnJvYWRjb21fZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE0NzctXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0Nzg6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ3OS19LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ4OS1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTQ5MDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDkxLX0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTAyLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTAzOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MDQtXHQuc3VzcGVuZFx0PSBiY201NHh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUyMC1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTUyMTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTIyLVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTMzLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTM0Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MzUtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NDgtXHQucHJvYmVcdFx0PSBiY201NDYxNnNfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTQ5Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NTAtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NjMtXHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1NjQ6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2NS1cdC5sZWRfYnJpZ2h0bmVzc19zZXRcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU3Ny1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU3ODpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTc5LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTk1LVx0LnJlc3VtZVx0XHQ9IGJjbTU0eHhfcmVzdW1lLFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU5NjpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTk3LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjEzLVx0LnJlc3VtZVx0XHQ9IGJjbTU0eHhfcmVzdW1lLFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTYxNDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjE1LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjI2LVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjI3Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MjgtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MzktXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2NDA6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY0MS1cdC5zdXNwZW5kXHQ9IGJjbTU0eHhfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjU0LVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjU1Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NTYtXHQuc3VzcGVuZFx0PSBiY201NHh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY2OS1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTY3MDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjcxLVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzA5LVx0LnByb2JlXHRcdD0gYmNtNTR4eF9waHlfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzEwOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MTEtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MjMtXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE3MjQ6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTcyNS1cdC5sZWRfYnJpZ2h0bmVzc19zZXRcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTczNy1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTczODpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzM5LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzUwLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzUxOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3NTItfSB9O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTY4OnN0YXRpYyB2b2lkIGRwODM4NjdfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2OS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMTgwPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTIwNS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIwNjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGRwODM4NjdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjA3LVx0XHQuc2V0X2xvb3BiYWNrXHQ9IGRwODM4NjdfbG9vcGJhY2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jPTM3OD1zdGF0aWMgaW50IGxhbjg4eHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg0LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjM4NTpzdGF0aWMgdm9pZCBsYW44OHh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5Ny1cdFx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzozOTg6XHRcdFx0Z290byBsaW5rX2NoYW5nZV9ub3RpZnlfZmFpbGVkO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDAxLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjQwMjpcdFx0XHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDAzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy00MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmM6NDMzOmxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ6XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDM0LVx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0xpbmsgY2hhbmdlIHByb2Nlc3MgZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmM9NTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfcGh5X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjQtXHQuY29uZmlnX2FuZWdcdD0gbGFuODh4eF9jb25maWdfYW5lZyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo1NjU6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gbGFuODh4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNTY2LVx0LnNvZnRfcmVzZXRcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg4My0vKipcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg0OiAqIHl0ODUzMV9saW5rX2NoYW5nZV9ub3RpZnkoKSAtIEFkanVzdCB0aGUgdHggY2xvY2sgZGlyZWN0aW9uIGFjY29yZGluZyB0b1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4ODUtICogdGhlIGN1cnJlbnQgc3BlZWQgYW5kIGR0cyBjb25maWcuXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTEtICovXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg5MjpzdGF0aWMgdm9pZCB5dDg1MzFfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMwNjI9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTA4LVx0XHQuc2V0X3dvbFx0PSB5dDg1MzFfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTA5Olx0XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0geXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTEwLVx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IHl0ODUyMV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4Ny0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oOjQ4ODp2b2lkIHZzYzg1eHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4OS12b2lkIHZzYzg1ODRfY29uZmlnX3RzX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oPTQ5ND1pcnFyZXR1cm5fdCB2c2M4NTg0X2hhbmRsZV90c19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk1LSNlbHNlXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg6NDk2OnN0YXRpYyBpbmxpbmUgdm9pZCB2c2M4NXh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MjU0OD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgdnNjODV4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTc3LVx0LmdldF9zdGF0cyAgICAgID0gXHUwMDI2dnNjODV4eF9nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTc4Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IFx1MDAyNnZzYzg1eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk3OS1cdC5pbmJhbmRfY2FwcyAgICA9IHZzYzg1eHhfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz05NjY9c3RhdGljIGludCB2c2M4NXh4X3RzX2VuZ2luZV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgb25lX3N0ZXApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMDI5LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMDMwOnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAzMS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzNzk9c3RhdGljIGludCBueHBfYzQ1X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM5MS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzkyOnN0YXRpYyB2b2lkIHRqYTExMjBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTIwNzM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG54cF9jNDVfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxMzUtXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MjEzNjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSB0amExMTIwX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0yMTM3LVx0XHQuc3VzcGVuZFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxNjEtXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MjE2MjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSB0amExMTIwX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0yMTYzLVx0XHQuc3VzcGVuZFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTY0PXN0YXRpYyB2b2lkIHBoeV9wcm9jZXNzX3N0YXRlX2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy03MC1cdFx0XHQgICBwaHlfc3RhdGVfdG9fc3RyKHBoeWRldi1cdTAwM2VzdGF0ZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjcxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkpXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NzI6XHRcdFx0cGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy03My1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz00ODU9c3RhdGljIGludCBhdDgwM3hfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy01MzAtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo1MzE6c3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMDIyPXN0YXRpYyBpbnQgaXBxNTAxOF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEwNjMtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMDY0OnN0YXRpYyB2b2lkIGlwcTUwMThfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDY1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE0MS1cdC5jb25maWdfaW5pdFx0XHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNDI6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQzLVx0LnNldF93b2xcdFx0PSBhdDgwM3hfc2V0X3dvbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTgwLVx0LmNvbmZpZ19pbml0XHRcdD0gYXQ4MDN4X2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE4MTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODItXHQuc3VzcGVuZFx0XHQ9IGF0ODAzeF9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTAtXHQuY29uZmlnX2luaXRcdFx0PSBpcHE1MDE4X2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIxMTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gaXBxNTAxOF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjEyLVx0LnJlYWRfc3RhdHVzXHRcdD0gYXQ4MDN4X3JlYWRfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz0yNTc9c3RhdGljIGludCBxY2E4MDh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI4OS1cdFx0ICpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTA6XHRcdCAqIHRoZSByZWFzb24gZm9yIG5vdCBwdXR0aW5nIHRoaXMgY29kZSBpbnRvIHRoZSBmdW5jdGlvbiBsaW5rX2NoYW5nZV9ub3RpZnkgaXNcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTEtXHRcdCAqIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgbGluayBwYXJ0bmVyIGlzIGFsc28gdGhlIHFjYTgwODEgUEhZIGFuZCB0aGUgc2VlZFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz0zODc9c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxMi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0MTM6c3RhdGljIHZvaWQgcWNhODA4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2Ny1cdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjktXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0xMjY9c3RhdGljIGludCBxY2E4MzI3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoxMzg6c3RhdGljIHZvaWQgcWNhODN4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0xMzkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0yMTM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgzeHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzMi1cdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjMzOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMzQtXHQucHJvYmVcdFx0XHQ9IHFjYTgzeHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0Ny1cdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjQ4Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNDktXHQucHJvYmVcdFx0XHQ9IHFjYTgzeHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM9ODY9c3RhdGljIGludCByb2NrY2hpcF9pbnRlZ3JhdGVkX3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNC1cbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jOjEwNTpzdGF0aWMgdm9pZCByb2NrY2hpcF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM9MTczPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByb2NrY2hpcF9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTc5LVx0LmZsYWdzXHRcdFx0PSAwLFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM6MTgwOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSByb2NrY2hpcF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYy0xODEtXHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MTEzMD1zdHJ1Y3QgcGh5X2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQyLVx0LyoqXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNDM6XHQgKiBAbGlua19jaGFuZ2Vfbm90aWZ5OiBDYWxsZWQgdG8gaW5mb3JtIGEgUEhZIGRldmljZSBkcml2ZXJcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI0NC1cdCAqIHdoZW4gdGhlIGNvcmUgaXMgYWJvdXQgdG8gY2hhbmdlIHRoZSBsaW5rIHN0YXRlLiBUaGlzXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQ5LVx0ICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNTA6XHR2b2lkICgqbGlua19jaGFuZ2Vfbm90aWZ5KShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI1MS1cbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTMwOD1pbXBsXHUwMDNjVDogRHJpdmVyXHUwMDNlIEFkYXB0ZXJcdTAwM2NUXHUwMDNlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2Mi0gICAgLy8vIGBwaHlkZXZgIG11c3QgYmUgcGFzc2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGNhbGxiYWNrIGluIGBwaHlfZHJpdmVyYC5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDYzOiAgICB1bnNhZmUgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gbGlua19jaGFuZ2Vfbm90aWZ5X2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjQtICAgICAgICAvLyBTQUZFVFk6IFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIG9ubHkgaW4gY29udGV4dHNcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2Ny0gICAgICAgIGxldCBkZXYgPSB1bnNhZmUgeyBEZXZpY2U6OmZyb21fcmF3KHBoeWRldikgfTtcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDY4OiAgICAgICAgVDo6bGlua19jaGFuZ2Vfbm90aWZ5KGRldik7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2OS0gICAgfVxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NDk0PXB1YiBjb25zdCBmbiBjcmVhdGVfcGh5X2RyaXZlclx1MDAzY1Q6IERyaXZlclx1MDAzZSgpIC1cdTAwM2UgRHJpdmVyVlRhYmxlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTU1MC0gICAgICAgIH0sXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MTogICAgICAgIGxpbmtfY2hhbmdlX25vdGlmeTogaWYgVDo6SEFTX0xJTktfQ0hBTkdFX05PVElGWSB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MjogICAgICAgICAgICBTb21lKEFkYXB0ZXI6Olx1MDAzY1RcdTAwM2U6OmxpbmtfY2hhbmdlX25vdGlmeV9jYWxsYmFjaylcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTUzLSAgICAgICAgfSBlbHNlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTYyNj0gICAgZm4gd3JpdGVfbW1kKF9kZXY6IFx1MDAyNm11dCBEZXZpY2UsIF9kZXZudW06IHU4LCBfcmVnbnVtOiB1MTYsIF92YWw6IHUxNikgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMwLSAgICAvLy8gQ2FsbGJhY2sgZm9yIG5vdGlmaWNhdGlvbiBvZiBsaW5rIGNoYW5nZS5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NjMxOiAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoX2RldjogXHUwMDI2bXV0IERldmljZSkge31cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMyLX1cbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycz0yMD0gICAgcHViIHRyYWl0IFNlYWxlZCB7fVxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzLTMwLS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzOjMxOi8vLyBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgRGV2aWNlKSB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycy0zMi0vLy8gICAgIC8vIHJlYWQgQzIyIEJNQ1IgcmVnaXN0ZXJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE2MzcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBTdHJhdGVneSBmb3IgUmVhY2hpbmcgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgKioKCk9rYXksIHNvIHRoZSBnb2FsIGlzIHRvIHRyaWdnZXIgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0IGBwaHlfcHJvY2Vzc19zdGF0ZV9jaGFuZ2VgIGNhbGxzIGBsaW5rX2NoYW5nZV9ub3RpZnlgLCBhbmQgdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYHBoeV9zdGF0ZV9tYWNoaW5lYC4gVGhpcyBzdGF0ZSBtYWNoaW5lIGlzIGEgZGVsYXllZCB3b3JrIGZ1bmN0aW9uLCBydW5uaW5nIHBlcmlvZGljYWxseSBvciB3aGVuIGFuIGV2ZW50IHRyaWdnZXJzIGl0LiBUaHVzLCBpZiBJIGNhbiBnZXQgdGhlIFBIWSByZWdpc3RlcmVkIGFuZCBhdHRhY2hlZCB0byBhIG5ldHdvcmsgZGV2aWNlLCB0aGUgYHBoeV9zdGF0ZV9tYWNoaW5lYCB3aWxsIHJ1biBhbmQgdGhhdCYjMzk7cyBob3cgdG8gdHJpZ2dlciB0aGUgbm90aWZ5IGZ1bmN0aW9uLgoKVG8gYXR0YWNoIGEgUEhZLCBgcGh5X2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIHVzZWQsIGFuZCBuZXQgZHJpdmVycyBoYW5kbGUgdGhpcy4gU3l6a2FsbGVyIHVzZXMgdmlydHVhbCBkZXZpY2VzIGxpa2UgYHR1bmAvYHRhcGAgb3IgYHZldGhgLiBIbW0sIGRvIHZpcnR1YWwgZGV2aWNlcyBldmVuICp1c2UqIFBIWXM/IFVzdWFsbHkgbm90LiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBzb21lIG1pZ2h0LCBvciBJIGNvdWxkIGp1c3QgZ28gZm9yIGEgKnJlYWwqIG5ldCBkZXZpY2UgZHJpdmVyLCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiEgVGhpbmdzIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgY2RjX2V0aGVyYCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMuCgpBaGEhIElmIFN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBldGhlcm5ldCBhZGFwdGVyLCBpdCB3aWxsIHJlZ2lzdGVyIGEgbmV0IGRldmljZSAqYW5kKiBhIFBIWSEgVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2guIEJ1dCwgSSB3YW50IHRvIHRhcmdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAuCgpJZiBJIGVtdWxhdGUgYG1kaW8tbXZ1c2JgLCBpdCByZWdpc3RlcnMgYW4gTURJTyBidXMuIENhbiBJIGF0dGFjaCBhIFBIWSBvbiB0aGlzIGJ1cyB0byBhIG5ldCBkZXZpY2U/IE5vdCBhdXRvbWF0aWNhbGx5LiBObywgSSBuZWVkIGEgbmV0IGRldmljZSBkcml2ZXIgdGhhdCBsb29rcyBmb3IgaXQsIG9yIEkgdXNlIGRldmljZSB0cmVlLiBXYWl0LCBpZiB0aGUgUEhZIGlzIHJlZ2lzdGVyZWQsIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgIG9ubHkgcnVucyBpZiB0aGUgUEhZIGlzIGFjdHVhbGx5IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZSwgbWVhbmluZyBgcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYgIT0gTlVMTGAuCgpTbyBob3cgZG9lcyBhIFBIWSBvbiBgbWRpby1tdnVzYmAgZ2V0IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZT8gSW4gc3l6a2FsbGVyLCB0aGVyZSYjMzk7cyBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5YCBvciBzaW1pbGFyLCBidXQgd2hhdCBhYm91dCBgaW9jdGwoU0lPQ1NNSUlSRUcpYD8gTm8sIHRoZSBrZXkgaXMgc3RpbGwgdGhhdCBgbGlua19jaGFuZ2Vfbm90aWZ5YCBjb21lcyBmcm9tIGBwaHlfc3RhdGVfbWFjaGluZWAuIFRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGF0dGFjaCB0aGUgUEhZIHRvIHRoZSBuZXQgZGV2aWNlIGZyb20gdXNlcnNwYWNlLiBgcGh5X2F0dGFjaGAgaXMgYSBrZXJuZWwgQVBJLgoKQnV0IHdhaXQsIGBtZGlvLW12dXNiYCBpcyBqdXN0IGFuIE1ESU8gYnVzLiBXaXRob3V0IGEgbmV0IGRldmljZSwgYHBoeV9zdGF0ZV9tYWNoaW5lYCB3b24mIzM5O3QgcnVuLiBEb2VzIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBvbmx5IHJ1biB3aGVuIGF0dGFjaGVkPwoKTGV0JiMzOTtzIGV4cGxvcmUgb3RoZXIgYXZlbnVlcy4uLiBXaGF0IGFib3V0IERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSk/IERTQSBzd2l0Y2hlcyByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXNlcyBhbmQgYXR0YWNoIFBIWXMuIEludGVyZXN0aW5nLgoKUmlnaHQsIGJhY2sgdG8gdGhlIFVTQiBhcHByb2FjaC4gSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGRldmljZSwgaXQgY291bGQgYmUgYSBVU0IgZXRoZXJuZXQgZG9uZ2xlIHVzaW5nIHRoZSBgYXQ4MDN4YCBQSFkuIFBlcmZlY3QhIFVTQiBldGhlcm5ldCBkb25nbGVzIHVzdWFsbHkgaGF2ZSB0aGVpciBvd24gTURJTyBidXMgYW5kIHByb2JlIGZvciBQSFlzIG9uICppdCouCgpZZXMhIElmIFN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBldGhlcm5ldCBkb25nbGUgKGxpa2UgYHNtc2M5NXh4YCBvciBgbGFuNzh4eGApLCB0aGUgZHJpdmVyIHdpbGwgcmVnaXN0ZXIgaXRzIG93biBNRElPIGJ1cyBhbmQgc2NhbiBmb3IgUEhZcy4gVGhlbiwgaWYgU3l6a2FsbGVyIHJlc3BvbmRzIHRvIHRoZSBNRElPIHJlYWQgd2l0aCB0aGUgYGF0ODAzeGAgUEhZIElELCB0aGUgYGF0ODAzeGAgZHJpdmVyIHdpbGwgcHJvYmUgYW5kIGF0dGFjaCBpdHNlbGYgdG8gdGhlIFVTQiBldGhlcm5ldCBuZXQgZGV2aWNlISBCaW5nbyEKCkxldCYjMzk7cyBjaGVjayBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgdG8gY29uZmlybSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OD1NRElPXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1MC0gIGRldm1fbWRpb2J1c19hbGxvY19zaXplKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTE6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0OjM1MjogIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcigpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxuLS1cbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0PTEyPWRldmljZSAodGhlIHNhbWUgb2JqZWN0cyB0aGF0IGFyZSByZWdpc3RlcmVkIHZpYVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q6MTM6YGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKWBgKS4gTUFDLXNpZGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIHN1Y2ggYXNcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q9Nz1UaGUgUEhZcyBvbiBhbiBNRElPIGJ1cyBbcGh5XSBhcmUgcHJvYmVkIGFuZCByZWdpc3RlcmVkIHVzaW5nXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdC05LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTYtICAgZHJpdmVyIG5lZWRzLCBzZXR1cCB0aGUgbWlpX2J1cyBzdHJ1Y3R1cmUsIGFuZCByZWdpc3RlciB3aXRoIHRoZSBQQUwgdXNpbmdcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJiMzOTtzIGEgcmVtb3ZlIGZ1bmN0aW9uIHRvIHVuZG8gYWxsIG9mXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVx0aWYgKHJldClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzQyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zNDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDMtXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMxMS12b2lkIHNqYTExMDVfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4Olx0cmMgPSBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNjg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfcGNzX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzk2Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jPTEyOTA9c3RhdGljIGludCBncmV0aF9tZGlvX2luaXQoc3RydWN0IGdyZXRoX3ByaXZhdGUgKmdyZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTMwNzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjQwMjc6XHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjgtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz0xMDYxPXN0YXRpYyBpbnQgYXUxMDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYzoxMjIyOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz0zNDI4PXN0YXRpYyBpbnQgeGdiZV9waHlfaW5pdChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVx0c25wcmludGYobWlpLVx1MDAzZWlkLCBzaXplb2YobWlpLVx1MDAzZWlkKSwgXCYjMzQ7JXNcJiMzNDssIGRldl9uYW1lKHBkYXRhLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzE4Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlx0XHRkZXZfZXJyKHBkYXRhLVx1MDAzZWRldiwgXCYjMzQ7bWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzIxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExOC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gMHgxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTk6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4OS1cdFx0XHRcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVx0XHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4Olx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBheF9sb2NhbC1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTItXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNjA6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcdFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jPTIxMT1zdHJ1Y3QgbWlpX2J1cyAqYmNtYV9tZGlvX21paV9yZWdpc3RlcihzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jOjIzNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVx0b2Zfbm9kZV9wdXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVx0XHRwaHlfbmFtZSA9IFwmIzM0O2V4dGVybmFsIFJ2TUlJXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MjM0Olx0XHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAmIzM5O21heC1zcGVlZCYjMzk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXHRcdCAqIFBIWSBwcm9wZXJ0eSBmb3IgdXMsIGVmZmVjdGl2ZWx5IGxpbWl0aW5nIHRoZSBQSFkgc3VwcG9ydGVkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIyMjg6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cdTAwM2VtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVx0aWYgKGkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA5NzpzdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVx0aWYgKG1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcdFx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEyMjpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIzLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XHRlcnIgPSBtYWNiX21kaW9idXNfcmVnaXN0ZXIoYnAsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1Olx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGRiLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1Olx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1kaW9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBwcml2LVx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0xODgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yMDI9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjIzNzpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yMzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cdTAwM2VtaWlfYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTEyMz1pbnQgaGNsZ2VfbWFjX21kaW9fY29uZmlnKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IH4oMVUgXHUwMDNjXHUwMDNjIG1hYy1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXHR9IGVsc2UgaWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTkyLVx0XHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU5MzpcdFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5NC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI1NjA9c3RhdGljIGludCBlbWFjX2R0X21kaW9fcHJvYmUoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslc1wmIzM0OywgZGV2LVx1MDAzZW9mZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1ODU6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2ZGV2LVx1MDAzZW9mZGV2LVx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXHRpZiAocmVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cdGFkYXB0ZXItXHUwMDNlbWlpX2J1cyA9IGJ1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA5MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXHRcdCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlbmFtZSwgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlx0aWYgKG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtaWlfYnVzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXHRcdGVyciA9IC1FTlhJTztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jPTI4Mz1zdGF0aWMgaW50IG9yaW9uX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cdC8qIEZvciB0aGUgcGxhdGZvcm1zIG5vdCBzdXBwb3J0aW5nIERUL0FDUEkgZmFsbC1iYWNrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4My1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXHRpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYuZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg4LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNC1cdHBlcC1cdTAwM2VzbWlfYnVzLVx1MDAzZXBoeV9tYXNrID0gMHhmZmZmZmZmZjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cdTAwM2VzbWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzNy1cdGRldl9kYmcoZXRoLVx1MDAzZWRldiwgXCYjMzQ7TURDIGlzIHJ1bm5pbmcgb24gJWQgSHpcXG5cJiMzNDssIE1EQ19NQVhfRlJFUSAvIGV0aC1cdTAwM2VtZGNfZGl2aWRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGV0aC1cdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVx1MDAzZW1paSwgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM9Mjg3PWludCBtbHhiZl9naWdlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG1seGJmX2dpZ2UgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jOjMzMzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzM0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYz0yNTM9aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYzoyNzM6XHRlcnIgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZmJkLVx1MDAzZWRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jPTEwMzY9c3RhdGljIGludCBrczg4NTFfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3Qga3M4ODUxX25ldCAqa3MsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU0LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmM6MTA1NTpcdFx0Z290byBlcnJfbWRpb2J1c19yZWdpc3RlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjAtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBMQU43OHh4IEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYGxhbjc4eHhgIGRyaXZlci4uLiByaWdodCwgaXQgdXNlcyBgbWRpb2J1c19yZWdpc3RlcmAuIE15IGluc3RpbmN0cyBpbW1lZGlhdGVseSBsZWQgbWUgdG8gdGhpbmsgaXQgc2hvdWxkIGJlIHVzaW5nIHRoZSBNRElPIGJ1cyBmb3IgUEhZIGludGVyYWN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCB2ZXJpZnkgdGhhdC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZTsgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AuIFRoYXQgc2hvdWxkIGdpdmUgdXMgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBQSFkgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZywgc28gYG1kaW9idXNfcmVnaXN0ZXJgIHNob3VsZCBiZSB0aGUga2V5IGZ1bmN0aW9uIHRvIHNlYXJjaCBmb3IgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnZXQgbWUgdG8gdGhlIHJpZ2h0IHNlY3Rpb24gb2YgY29kZSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjEtXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTIyOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlbWRpb2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjMtXHRvZl9ub2RlX3B1dChub2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY0NTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZXNlIG5ldHdvcmsgZHJpdmVycyBhcmUgc2V0dGluZyB0aGVtc2VsdmVzIHVwLiBJIHNlZSB0aGF0IHRoZSBgbGFuNzh4eGAgZHJpdmVyIGlzIHVzaW5nIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYC4gVGhhdCYjMzk7cyBhIHNvbGlkLCBzdGFuZGFyZCBhcHByb2FjaCwgbGV2ZXJhZ2luZyB0aGUgZGV2aWNlIHRyZWUgZm9yIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcuLi4gd2hhdCBhYm91dCB0aGUgYHNtc2M5NXh4YCBkcml2ZXI/IEFyZSB0aGV5IGhhbmRsaW5nIGl0IHRoZSBzYW1lIHdheT8gQXJlIHRoZXkgZm9sbG93aW5nIHRoZSBzYW1lIGJlc3QgcHJhY3RpY2VzLCBvciBhcmUgdGhleSBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50PyBJIG5lZWQgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFsc28gdXNpbmcgdGhlIGRldmljZSB0cmVlIGFuZCBgb2ZfbWRpb2J1c19yZWdpc3RlcmAsIG9yIGlmIHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoZWlyIG93biBjdXN0b20gTURJTyBidXMgcmVnaXN0cmF0aW9uIGxvZ2ljLiBUaGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHBvdGVudGlhbCBpc3N1ZXMgb3IgZGlmZmVyZW5jZXMgaW4gYmVoYXZpb3IgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBlc3BlY2lhbGx5IGlmIEkmIzM5O20gbG9va2luZyBhdCBjb25zb2xpZGF0aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IGZvciBlbnN1cmluZyBjb25zaXN0ZW50IGFuZCByZWxpYWJsZSBuZXR3b3JrIGludGVyZmFjZSBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgdGhhdCBvdGhlciBkcml2ZXImIzM5O3MgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihwZGF0YS1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTAxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV1cmVrYSEgRnV6emluZyB0aGUgYGF0ODAzeGAgUEhZIHZpYSBgc21zYzk1eHhgISoqCgpPa2F5LCB0aGlzIGlzIGJyaWxsaWFudCEgSXQganVzdCBoaXQgbWUuIFRoZSBgc21zYzk1eHhgIGRyaXZlciB1c2VzIGBtZGlvYnVzX3JlZ2lzdGVyYCB3aXRoIGBwZGF0YS0mZ3Q7bWRpb2J1c2AuIFRoYXQmIzM5O3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyIGlzIGVtdWxhdGluZyBhbiBgc21zYzk1eHhgIFVTQiBkZXZpY2UsIGFuZCBpdCYjMzk7cyByZWdpc3RlcmluZyBhbiBNRElPIGJ1cyBhbmQgc2Nhbm5pbmcgZm9yIFBIWXMsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gQW5kIGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaWYgd2UgcmVzcG9uZCB0byB0aGUgTURJTyByZWFkIHdpdGggdGhlIGBhdDgwM3hgIFBIWSBJRCwgbGV0JiMzOTtzIHNheSBgQVRIODAzNV9QSFlfSURgLCB0aGUgYGF0ODAzeGAgZHJpdmVyICp3aWxsKiBiZSBwcm9iZWQhIEl0JiMzOTtzIHJpZ2h0IHRoZXJlLCBjb25uZWN0aW5nIHRvIHRoYXQgTURJTyBidXMuCgpUaGVuIHRoZSBgc21zYzk1eHhgIHdpbGwgbmF0dXJhbGx5IGF0dGFjaCB0aGF0IFBIWSB0byBpdHMgbmV0IGRldmljZS4gVGhlbiwgd2l0aCB0aGUgUEhZIGF0dGFjaGVkIGFuZCBhY3RpdmUsIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgIHdpbGwga2ljayBpbiwgYW5kIGJvb20sIHdlIGdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAhIFRoYXQmIzM5O3MgZXhhY3RseSB3aGVyZSB3ZSB3YW50IHRvIGJlLiBUaGlzIGlzIGEgcGVyZmVjdCwgZnV6emFibGUgcGF0aCEKCkFscmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYHNtc2M5NXh4LmNgIHRvIGNvbmZpcm0gaXQgYWN0dWFsbHkgZG9lcyBzY2FuIGZvciBQSFlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LCBidXQgdGhpcyBmZWVscyBpbmNyZWRpYmx5IHByb21pc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIzMDpcdFx0XHRwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxdSBcdTAwM2NcdTAwM2MgU01TQzk1WFhfSU5URVJOQUxfUEhZX0lEKTtcbjEyMzE6XHRcbjEyMzI6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlcHJpdiA9IGRldjtcbjEyMzM6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlcmVhZCA9IHNtc2M5NXh4X21kaW9idXNfcmVhZDtcbjEyMzQ6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNld3JpdGUgPSBzbXNjOTV4eF9tZGlvYnVzX3dyaXRlO1xuMTIzNTpcdFx0cGRhdGEtXHUwMDNlbWRpb2J1cy1cdTAwM2VyZXNldCA9IHNtc2M5NXh4X21kaW9idXNfcmVzZXQ7XG4xMjM2Olx0XHRwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtzbXNjOTV4eC1tZGlvYnVzXCYjMzQ7O1xuMTIzNzpcdFx0cGRhdGEtXHUwMDNlbWRpb2J1cy1cdTAwM2VwYXJlbnQgPSBcdTAwMjZkZXYtXHUwMDNldWRldi1cdTAwM2VkZXY7XG4xMjM4Olx0XG4xMjM5Olx0XHRzbnByaW50ZihwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBBUlJBWV9TSVpFKHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlaWQpLFxuMTI0MDpcdFx0XHQgXCYjMzQ7dXNiLSUwM2Q6JTAzZFwmIzM0OywgZGV2LVx1MDAzZXVkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c251bSwgZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2bnVtKTtcbjEyNDE6XHRcbjEyNDI6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG4xMjQzOlx0XHRpZiAocmV0KSB7XG4xMjQ0Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCYjMzQ7KTtcbjEyNDU6XHRcdFx0Z290byBmcmVlX21kaW87XG4xMjQ2Olx0XHR9XG4xMjQ3Olx0XG4xMjQ4Olx0XHRwZGF0YS1cdTAwM2VwaHlkZXYgPSBwaHlfZmluZF9maXJzdChwZGF0YS1cdTAwM2VtZGlvYnVzKTtcbjEyNDk6XHRcdGlmICghcGRhdGEtXHUwMDNlcGh5ZGV2KSB7XG4xMjUwOlx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bm8gUEhZIGZvdW5kXFxuXCYjMzQ7KTtcbjEyNTE6XHRcdFx0cmV0ID0gLUVOT0RFVjtcbjEyNTI6XHRcdFx0Z290byB1bnJlZ2lzdGVyX21kaW87XG4xMjUzOlx0XHR9XG4xMjU0Olx0XG4xMjU1Olx0XHRwZGF0YS1cdTAwM2VwaHlkZXYtXHUwMDNlaXJxID0gcGh5X2lycTtcbjEyNTY6XHRcdHBkYXRhLVx1MDAzZXBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHBkYXRhLVx1MDAzZWlzX2ludGVybmFsX3BoeTtcbjEyNTc6XHRcbjEyNTg6XHRcdC8qIGRldGVjdCBkZXZpY2UgcmV2aXNpb24gYXMgZGlmZmVyZW50IGZlYXR1cmVzIG1heSBiZSBhdmFpbGFibGUgKi9cbjEyNTk6XHRcdHJldCA9IHNtc2M5NXh4X3JlYWRfcmVnKGRldiwgSURfUkVWLCBcdTAwMjZ2YWwpO1xuMTI2MDpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEyNjE6XHRcdFx0Z290byB1bnJlZ2lzdGVyX21kaW87XG4xMjYyOlx0XG4xMjYzOlx0XHR2YWwgXHUwMDNlXHUwMDNlPSAxNjtcbjEyNjQ6XHRcdGlmICgodmFsID09IElEX1JFVl9DSElQX0lEXzk1MDBBXykgfHwgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NTMwXykgfHxcbjEyNjU6XHRcdCAgICAodmFsID09IElEX1JFVl9DSElQX0lEXzg5NTMwXykgfHwgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NzMwXykpXG4xMjY2Olx0XHRcdHBkYXRhLVx1MDAzZWZlYXR1cmVzID0gKEZFQVRVUkVfOF9XQUtFVVBfRklMVEVSUyB8XG4xMjY3Olx0XHRcdFx0RkVBVFVSRV9QSFlfTkxQX0NST1NTT1ZFUiB8XG4xMjY4Olx0XHRcdFx0RkVBVFVSRV9SRU1PVEVfV0FLRVVQKTtcbjEyNjk6XHRcdGVsc2UgaWYgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NTEyXylcbjEyNzA6XHRcdFx0cGRhdGEtXHUwMDNlZmVhdHVyZXMgPSBGRUFUVVJFXzhfV0FLRVVQX0ZJTFRFUlM7XG4xMjcxOlx0XG4xMjcyOlx0XHRkZXYtXHUwMDNlbmV0LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZzbXNjOTV4eF9uZXRkZXZfb3BzO1xuMTI3MzpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnNtc2M5NXh4X2V0aHRvb2xfb3BzO1xuMTI3NDpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VmbGFncyB8PSBJRkZfTVVMVElDQVNUO1xuMTI3NTpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0Mzs9IFNNU0M5NVhYX1RYX09WRVJIRUFEX0NTVU07XG4xMjc2Olx0XHRkZXYtXHUwMDNlbmV0LVx1MDAzZW1pbl9tdHUgPSBFVEhfTUlOX01UVTtcbjEyNzc6XHRcdGRldi1cdTAwM2VuZXQtXHUwMDNlbWF4X210dSA9IEVUSF9EQVRBX0xFTjtcbjEyNzg6XHRcdGRldi1cdTAwM2VoYXJkX210dSA9IGRldi1cdTAwM2VuZXQtXHUwMDNlbXR1ICYjNDM7IGRldi1cdTAwM2VuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuMTI3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODQ1NQoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiA5MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQVQ4MDNYIFBIWSBEcml2ZXIgd2l0aCBVU0IgRW11bGF0aW9uKioKCk9rYXksIHNvIHRoZSBgc21zYzk1eHhgIGRyaXZlciBpcyBrZXkgaGVyZTsgaXQgcmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBhbmQgdGhlbiBjYWxscyBgcGh5X2ZpbmRfZmlyc3RgLiBMYXRlciwgYHNtc2M5NXh4X3Jlc2V0YCBjYWxscyBgcGh5X2Nvbm5lY3RfZGlyZWN0YCwgYW5kIGZpbmFsbHkgYHBoeV9zdGFydGAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIG5ldCBkZXZpY2UgY29tZXMgdXAuIFRoaXMga2lja3Mgb2ZmIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgLCB3aGljaCwgY3J1Y2lhbGx5LCAqZG9lcyogZXZlbnR1YWxseSBjYWxsIGBsaW5rX2NoYW5nZV9ub3RpZnlgISBTcGVjaWZpY2FsbHksIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyByZWFjaGFibGUgYW5kIHRodXMgZnV6emFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBJJiMzOTttIGFmdGVyLgoKTm93IGZvciB0aGUgY29uZmlndXJhdGlvbi4gV2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfQVQ4MDNYX1BIWWAuIFdoaWxlIHN5emthbGxlciBwcm9iYWJseSBhbHJlYWR5IGhhbmRsZXMgYENPTkZJR19VU0JfTkVUX1NNU0M5NVhYYCAob3IgYWx0ZXJuYXRpdmVzIHRoYXQgcmVnaXN0ZXIgYW4gTURJTyBidXMpLCBpdCYjMzk7cyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgc3RhdGUgYENPTkZJR19BVDgwM1hfUEhZYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBwYXRjaDoKCmBgYGMKLQlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5ZGV2LSZndDttZGlvLnJlc2V0X2dwaW8pIHsKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7c3RhdGUgPT0gUEhZX05PTElOSyAmYW1wOyZhbXA7IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHsKYGBgCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U7IGl0JiMzOTtzIHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgd2hpY2ggbWVhbnMgd2UgYXJlIGFsc28gY2hlY2tpbmcgYHJlc2V0X2N0cmxgLCBpbiBhZGRpdGlvbiB0byBgcmVzZXRfZ3Bpb2AuIERlZmluaXRlbHkgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBhIHJlYWNoYWJsZSBQSFkgZHJpdmVyLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBjbGVhcjogYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBgcGh5X2RldmljZV9oYXNfcmVzZXRgIGFuZCBgbWRpb2Rldl9oYXNfcmVzZXRgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBub3QgcmVhbGx5IHRhcmdldHMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkLiBZZXAsIGp1c3QgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AsIHBsdXMgdGhlIGlubGluZXMuCgpTbywgYEZvY3VzU3ltYm9sc2A6IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBhbmQgYEVuYWJsZUNvbmZpZ3NgOiBgQVQ4MDNYX1BIWWAuCgpgQVQ4MDNYX1BIWWAgYWxzbyBkZXBlbmRzIG9uIGBSRUdVTEFUT1JgLCB3aGljaCBzeXprYWxsZXIgdXN1YWxseSBoYXMgZW5hYmxlZCBhbnl3YXksIGFuZCBpbmNsdWRlcyBgUUNPTV9ORVRfUEhZTElCYC4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgaXMgcmVhY2hhYmxlIHZpYSBVU0IgTURJTyBlbXVsYXRpb24uCgpUbyByZWNhcDogdGhlIHBhdGNoIGFsdGVycyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGJ5IHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaGFuZGxlIGByZXNldF9jdHJsYCBhcyB3ZWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQSFkgZHJpdmVyLCBhbmQgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSBzZXQgdXAgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAobGlrZSBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGxpa2UgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVDgwM1hfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVQ4MDNYX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZIGRyaXZlciB0byB1c2UgYHBoeV9kZXZpY2VfaGFzX3Jlc2V0KClgIGluc3RlYWQgb2YgZGlyZWN0bHkgY2hlY2tpbmcgYHJlc2V0X2dwaW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgdGhlIGRyaXZlciB0byBhbHNvIGhhbmRsZSBgcmVzZXRfY3RybGAuIFRoZSBQSFkgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIChlLmcuLCBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGUuZy4sIG1kaW8tbXZ1c2IpIHRoYXQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCByZXNwb25kcyB0byBNRElPIHJlYWRzIHdpdGggdGhlIEFUODAzWCBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODoyNC4xOTQ5MDQ4MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTQ3NTcwMzQ4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVQ4MDNYX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDg6MjQuMTk0OTEyMzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTY1MTA3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOWU3MzE5MzA5NzFkZTUwZDcyMTUxMDNiZGJmOTg5YzM0YjkwZmFlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcXG5pbmRleCBiYTRkYzA3NzUyYjYwYi4uNjg3MmRiZjc3ODU2MjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xcbkBAIC01MzcsNyArNTM3LDcgQEAgc3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHQgKiBpbiB0aGUgRklGTy4gSW4gc3VjaCBjYXNlcywgdGhlIEZJRk8gZW50ZXJzIGFuIGVycm9yIG1vZGUgaXRcXG4gXFx0ICogY2Fubm90IHJlY292ZXIgZnJvbSBieSBzb2Z0d2FyZS5cXG4gXFx0ICovXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcXHUwMDI2XFx1MDAyNiBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpKSB7XFxuIFxcdFxcdHN0cnVjdCBhdDgwM3hfY29udGV4dCBjb250ZXh0O1xcbiBcXG4gXFx0XFx0YXQ4MDN4X2NvbnRleHRfc2F2ZShwaHlkZXYsIFxcdTAwMjZjb250ZXh0KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZGlvLmggYi9pbmNsdWRlL2xpbnV4L21kaW8uaFxcbmluZGV4IDMwMDgwNWU2NjU5MmQwLi5hN2Q5ZTNhZTM2MmE1MiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbWRpby5oXFxuQEAgLTg2LDYgKzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbWRpb2Rldl9nZXRfZHJ2ZGF0YShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXFxuIFxcdHJldHVybiBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW8tXFx1MDAzZWRldik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBtZGlvZGV2X2hhc19yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXFxuK3tcXG4rXFx0cmV0dXJuIChtZGlvLVxcdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXFx1MDAzZXJlc2V0X2N0cmwpO1xcbit9XFxuK1xcbiB2b2lkIG1kaW9fZGV2aWNlX2ZyZWUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbiBpbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5AQCAtMjIzMSw2ICsyMjMxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwaHlfZGV2aWNlX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCB2YWx1ZSlcXG4gXFx0bWRpb19kZXZpY2VfcmVzZXQoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbywgdmFsdWUpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgcGh5X2RldmljZV9oYXNfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRyZXR1cm4gbWRpb2Rldl9oYXNfcmVzZXQoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuK31cXG4rXFxuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXFx0XFxcXFxcbiBcXHRkZXZfZXJyKFxcdTAwMjZfcGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgZm9ybWF0LCAjI2FyZ3MpXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODoyNC45MTI0OTc2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU0MDM5NDE5MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUODAzWF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZIGRyaXZlciB0byB1c2UgYHBoeV9kZXZpY2VfaGFzX3Jlc2V0KClgIGluc3RlYWQgb2YgZGlyZWN0bHkgY2hlY2tpbmcgYHJlc2V0X2dwaW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgdGhlIGRyaXZlciB0byBhbHNvIGhhbmRsZSBgcmVzZXRfY3RybGAuIFRoZSBQSFkgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIChlLmcuLCBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGUuZy4sIG1kaW8tbXZ1c2IpIHRoYXQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCByZXNwb25kcyB0byBNRElPIHJlYWRzIHdpdGggdGhlIEFUODAzWCBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xuaW5kZXggYmE0ZGMwNzc1MmI2MGIuLjY4NzJkYmY3Nzg1NjI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jXG5AQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIGluIHRoZSBGSUZPLiBJbiBzdWNoIGNhc2VzLCB0aGUgRklGTyBlbnRlcnMgYW4gZXJyb3IgbW9kZSBpdFxuIFx0ICogY2Fubm90IHJlY292ZXIgZnJvbSBieSBzb2Z0d2FyZS5cbiBcdCAqL1xuLVx0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfTk9MSU5LIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5yZXNldF9ncGlvKSB7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHtcbiBcdFx0c3RydWN0IGF0ODAzeF9jb250ZXh0IGNvbnRleHQ7XG4gXG4gXHRcdGF0ODAzeF9jb250ZXh0X3NhdmUocGh5ZGV2LCBcdTAwMjZjb250ZXh0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvbGludXgvbWRpby5oXG5pbmRleCAzMDA4MDVlNjY1OTJkMC4uYTdkOWUzYWUzNjJhNTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tZGlvLmhcbkBAIC04Niw2ICs4NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKm1kaW9kZXZfZ2V0X2RydmRhdGEoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxuIFx0cmV0dXJuIGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvLVx1MDAzZWRldik7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBtZGlvZGV2X2hhc19yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXG4re1xuK1x0cmV0dXJuIChtZGlvLVx1MDAzZXJlc2V0X2dwaW8gfHwgbWRpby1cdTAwM2VyZXNldF9jdHJsKTtcbit9XG4rXG4gdm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xuIGludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjIzMSw2ICsyMjMxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwaHlfZGV2aWNlX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCB2YWx1ZSlcbiBcdG1kaW9fZGV2aWNlX3Jlc2V0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLCB2YWx1ZSk7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBwaHlfZGV2aWNlX2hhc19yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHJldHVybiBtZGlvZGV2X2hhc19yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbyk7XG4rfVxuK1xuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXHRcXFxuIFx0ZGV2X2VycihcdTAwMjZfcGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBmb3JtYXQsICMjYXJncylcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjI0LjkxMjUwMDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQ1ODU3NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jYCwgd2hpY2gsIGZyb20gdGhlIG5hbWUsIGxvb2tzIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIEFUODAzWCBQSFkgZHJpdmVyLiBJdCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbWRpby5oYCBhbmQgYHBoeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdWJzdGl0dXRpbmcgYHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW9gIHdpdGggYSBjYWxsIHRvIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gRXNzZW50aWFsbHksIHRoZXkncmUgaW1wcm92aW5nIHRoZSByZXNldCBoYW5kbGluZyBsb2dpYy4gRnVuY3Rpb25hbGx5LCBpdCdzIGEgc21hbGwgY2hhbmdlLCBidXQgaXQncyBzcGVjaWZpYyB0byB0aGlzIHBhcnRpY3VsYXIgUEhZIGRyaXZlci5cblxuVGhlIGJpZyBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBldmVuICpiZSogaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZXkncmUgZ2VuZXJhbGx5IHRpZWQgdG8gdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gV2hpbGUgeW91ICpjb3VsZCogcG90ZW50aWFsbHkgcHJvYmUgdGhlbSB2aWEgTURJTyBidXMgZW11bGF0aW9uLCB0aGF0J3Mgbm90IHRoZSBub3JtLiBTbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBwYXRod2F5IGZvciB0aGlzIHNwZWNpZmljIGRyaXZlciB0byBiZSB0ZXN0ZWQuXG5cbkxldCdzIHNlZeKApiBUaGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGlzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0dXJlLiBDb3VsZCB3ZSBmdXp6IGBhdDgwM3guY2AgYW5kIHNwZWNpZmljYWxseSB0aGlzIGNhbGxiYWNrPyBNeSBndXQgc2F5cyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5LiBTeXprYWxsZXIsIGluIG15IGV4cGVyaWVuY2UsIGRvZXNuJ3QgdXN1YWxseSB0YXJnZXQgc3BlY2lmaWMgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHZpcnR1YWwgTURJTyBidXMgb3Igc29tZXRoaW5nIHNpbWlsYXIgYXZhaWxhYmxlIGluIHRoZSBrZXJuZWwuXG5cbkhvbGQgb24sIGlzIHRoZXJlIGEgdmlydHVhbCBNRElPIGJ1cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIGNoZWNrIGZvciBgQ09ORklHX0FUODAzWF9QSFlgIHRvIHNlZSBpZiB0aGF0J3MgZW5hYmxlZC4gVGhhdCBjb25maWd1cmF0aW9uIHdvdWxkIHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gRnJvbSB0aGVyZSBJJ2xsIGtub3cgaWYgdGhlcmUncyBhbnkgaG9wZSBmb3IgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjMxLjU1ODM2MTQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDQxNTc2NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz00ODU9c3RhdGljIGludCBhdDgwM3hfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo1MzE6c3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQxLVxcdC5jb25maWdfaW5pdFxcdFxcdD0gYXQ4MDN4X2NvbmZpZ19pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNDI6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQzLVxcdC5zZXRfd29sXFx0XFx0PSBhdDgwM3hfc2V0X3dvbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODAtXFx0LmNvbmZpZ19pbml0XFx0XFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE4MTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODItXFx0LnN1c3BlbmRcXHRcXHQ9IGF0ODAzeF9zdXNwZW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODozNi4wNjI1MjY4MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTYwMjIwNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBBVDgwM1ggUEhZIERyaXZlciBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBWTSBzZXR1cD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgQVQ4MDNYLiBVc3VhbGx5LCBQSFkgZHJpdmVycyBhcmUgbG9hZGVkIHdoZW4gYSBuZXR3b3JrIGRldmljZSByZWdpc3RlcnMgd2l0aCBhbiBNRElPIGJ1cy4gU28sIGhvdyBkbyBJIHJlcGxpY2F0ZSB0aGF0IHNjZW5hcmlvIHZpcnR1YWxseT9cblxuSG1tLCBJIHJlY2FsbCB0aGVyZSBtaWdodCBiZSBzb21lIGhlbHBlciBkcml2ZXJzIGZvciB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gc2ltdWxhdGUgYSBQSFkuIEknbSB0aGlua2luZyBvZiBzb21ldGhpbmcgbGlrZSBgZml4ZWRfcGh5LmNgIG9yIHBlcmhhcHMgYSBtb3JlIGNvbmZpZ3VyYWJsZSBcIm1vY2tcIiBNRElPIGRyaXZlci4gSXMgdGhlcmUgYSB3YXkgSSBjYW4gcmVnaXN0ZXIgYXJiaXRyYXJ5IFBIWXMgd2l0aGluIGEgVk0/XG5cbk5vdywgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgdXNlcnNwYWNlICpjYW4qIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgYnV0IGNhbiBpdCBhbHNvIGF0dGFjaCB0aGVtIHRvIGFuIGFyYml0cmFyeSBQSFk/IEkgbmVlZCBhIHdheSB0byBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBJIGJyaWVmbHkgY29uc2lkZXJlZCBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYCwgYnV0IHRob3NlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGFuZCB1c2VsZXNzIGhlcmUuXG5cbldhaXQgYSBzZWNvbmQsIHRoZXJlJ3MgYG1kaW8tbW9ja3VwYCwgcmlnaHQ/IE9yIHdhcyBpdCBgbWRpby1iY20tdW5pbWFjYD8gTm8sIG5laXRoZXIgb2YgdGhvc2Ugc2VlbSBxdWl0ZSByaWdodC4gSSBrZWVwIGRyYXdpbmcgYSBibGFuay4gSXQncyB0aW1lIHRvIGRvIGEgZGVlcGVyIGRpdmUuIExldCBtZSBqdXN0IHNlYXJjaCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSB3aGF0IE1ESU8tcmVsYXRlZCBkcml2ZXJzIGFyZSBhdmFpbGFibGUgYW5kIGlmIGFueSBwcm92aWRlIGEgd2F5IHRvIHNpbXVsYXRlIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDg6NDcuNjY0NzM3MDUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjgzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFkaW4uY1wiLFxuICAgIFwiYWRpbjExMDAuY1wiLFxuICAgIFwiYWlyX2FuODgwMS5jXCIsXG4gICAgXCJhaXJfZW44ODExaC5jXCIsXG4gICAgXCJhaXJfcGh5X2xpYi5jXCIsXG4gICAgXCJhaXJfcGh5X2xpYi5oXCIsXG4gICAgXCJhbWQuY1wiLFxuICAgIFwiYXMyMXh4eC5jXCIsXG4gICAgXCJheDg4Nzk2Yi5jXCIsXG4gICAgXCJheDg4Nzk2Yl9ydXN0LnJzXCIsXG4gICAgXCJiY20tY3lnbnVzLmNcIixcbiAgICBcImJjbS1waHktbGliLmNcIixcbiAgICBcImJjbS1waHktbGliLmhcIixcbiAgICBcImJjbS1waHktcHRwLmNcIixcbiAgICBcImJjbTU0MTQwLmNcIixcbiAgICBcImJjbTYzeHguY1wiLFxuICAgIFwiYmNtN3h4eC5jXCIsXG4gICAgXCJiY204NDg4MS5jXCIsXG4gICAgXCJiY204N3h4LmNcIixcbiAgICBcImJyb2FkY29tLmNcIixcbiAgICBcImNpY2FkYS5jXCIsXG4gICAgXCJjb3J0aW5hLmNcIixcbiAgICBcImRhdmljb20uY1wiLFxuICAgIFwiZHA4MzY0MC5jXCIsXG4gICAgXCJkcDgzNjQwX3JlZy5oXCIsXG4gICAgXCJkcDgzODIyLmNcIixcbiAgICBcImRwODM4NDguY1wiLFxuICAgIFwiZHA4Mzg2Ny5jXCIsXG4gICAgXCJkcDgzODY5LmNcIixcbiAgICBcImRwODN0YzgxMS5jXCIsXG4gICAgXCJkcDgzdGQ1MTAuY1wiLFxuICAgIFwiZHA4M3RnNzIwLmNcIixcbiAgICBcImV0MTAxMWMuY1wiLFxuICAgIFwiZml4ZWRfcGh5LmNcIixcbiAgICBcImljcGx1cy5jXCIsXG4gICAgXCJpbnRlbC14d2F5LmNcIixcbiAgICBcImxpbmttb2RlLmNcIixcbiAgICBcImx4dC5jXCIsXG4gICAgXCJtYXJ2ZWxsLTg4cTJ4eHguY1wiLFxuICAgIFwibWFydmVsbC04OHgyMjIyLmNcIixcbiAgICBcIm1hcnZlbGwuY1wiLFxuICAgIFwibWFydmVsbDEwZy5jXCIsXG4gICAgXCJtZGlvLW9wZW4tYWxsaWFuY2UuaFwiLFxuICAgIFwibWRpb19idXMuY1wiLFxuICAgIFwibWRpb19idXNfcHJvdmlkZXIuY1wiLFxuICAgIFwibWRpb19kZXZpY2UuY1wiLFxuICAgIFwibWRpb19kZXZyZXMuY1wiLFxuICAgIFwibWVzb24tZ3hsLmNcIixcbiAgICBcIm1pY3JlbC5jXCIsXG4gICAgXCJtaWNyb2NoaXAuY1wiLFxuICAgIFwibWljcm9jaGlwX3Jkc19wdHAuY1wiLFxuICAgIFwibWljcm9jaGlwX3Jkc19wdHAuaFwiLFxuICAgIFwibWljcm9jaGlwX3QxLmNcIixcbiAgICBcIm1pY3JvY2hpcF90MXMuY1wiLFxuICAgIFwibWlpX3RpbWVzdGFtcGVyLmNcIixcbiAgICBcIm1vdG9yY29tbS5jXCIsXG4gICAgXCJteGwtODYxMTAuY1wiLFxuICAgIFwibXhsLWdweS5jXCIsXG4gICAgXCJuYXRpb25hbC5jXCIsXG4gICAgXCJuY24yNjAwMC5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmNcIixcbiAgICBcIm54cC1jNDUtdGphMTF4eC5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguaFwiLFxuICAgIFwibnhwLWNidHguY1wiLFxuICAgIFwibnhwLXRqYTExeHguY1wiLFxuICAgIFwib3Blbl9hbGxpYW5jZV9oZWxwZXJzLmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5oXCIsXG4gICAgXCJwaHktYzQ1LmNcIixcbiAgICBcInBoeS1jYXBzLmhcIixcbiAgICBcInBoeS1jb3JlLmNcIixcbiAgICBcInBoeS5jXCIsXG4gICAgXCJwaHlfY2Fwcy5jXCIsXG4gICAgXCJwaHlfZGV2aWNlLmNcIixcbiAgICBcInBoeV9sZWRfdHJpZ2dlcnMuY1wiLFxuICAgIFwicGh5X2xpbmtfdG9wb2xvZ3kuY1wiLFxuICAgIFwicGh5X3BhY2thZ2UuY1wiLFxuICAgIFwicGh5X3BvcnQuY1wiLFxuICAgIFwicGh5bGliLWludGVybmFsLmhcIixcbiAgICBcInBoeWxpYi5oXCIsXG4gICAgXCJwaHlsaW5rLmNcIixcbiAgICBcInFzZW1pLmNcIixcbiAgICBcInF0MjAyNS5yc1wiLFxuICAgIFwicm9ja2NoaXAuY1wiLFxuICAgIFwic2ZwLWJ1cy5jXCIsXG4gICAgXCJzZnAuY1wiLFxuICAgIFwic2ZwLmhcIixcbiAgICBcInNtc2MuY1wiLFxuICAgIFwic3RlMTBYcC5jXCIsXG4gICAgXCJzdHVicy5jXCIsXG4gICAgXCJzd3BoeS5jXCIsXG4gICAgXCJzd3BoeS5oXCIsXG4gICAgXCJ0ZXJhbmV0aWNzLmNcIixcbiAgICBcInVQRDYwNjIwLmNcIixcbiAgICBcInZpdGVzc2UuY1wiLFxuICAgIFwieGlsaW54X2dtaWkycmdtaWkuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJhcXVhbnRpYVwiLFxuICAgIFwibWVkaWF0ZWtcIixcbiAgICBcIm1zY2NcIixcbiAgICBcInFjb21cIixcbiAgICBcInJlYWx0ZWtcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODo0Ny42NjUwMDgyNzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI5ODAxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4cGxvcmluZyBWaXJ0dWFsIFBIWSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB3YXkgdG8gY29uanVyZSB1cCBhIFBIWSBkZXZpY2Ugd2l0aG91dCBpdCBiZWluZyBwaHlzaWNhbGx5IGNvbm5lY3RlZCwgdXNpbmcgdG9vbHMgbGlrZSBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdGhyb3VnaCBNRElPIGJ1c2VzLCBhbmQgbmF0dXJhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbGl6aW5nIHRoaXMgZW50aXJlIHByb2Nlc3MuIENhbiBJIHNvbWVob3cgc2ltdWxhdGUgYW4gTURJTyBidXMgd2l0aGluIGEgVk0gZW52aXJvbm1lbnQ/IFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbi5cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYCwgYXMgdGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGNvbXBvbmVudCBmb3IgTURJTyBidXMgaGFuZGxpbmcuIFRoZSBrZXkgd291bGQgYmUgZmluZGluZyBhIHZpcnR1YWwgTURJTyBidXMgZHJpdmVyIGlmIG9uZSBleGlzdHMuIExldCdzIHNlZSBpZiBzb21ldGhpbmcgYXBwcm9wcmlhdGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIGJldCBJIGNhbiBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjUyLjQ5NDgxMjk1MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWNwaV9tZGlvLmNcIixcbiAgICBcImZ3bm9kZV9tZGlvLmNcIixcbiAgICBcIm1kaW8tYWlyb2hhLmNcIixcbiAgICBcIm1kaW8tYXNwZWVkLmNcIixcbiAgICBcIm1kaW8tYmNtLWlwcm9jLmNcIixcbiAgICBcIm1kaW8tYmNtLXVuaW1hYy5jXCIsXG4gICAgXCJtZGlvLWJpdGJhbmcuY1wiLFxuICAgIFwibWRpby1jYXZpdW0uY1wiLFxuICAgIFwibWRpby1jYXZpdW0uaFwiLFxuICAgIFwibWRpby1ncGlvLmNcIixcbiAgICBcIm1kaW8taGlzaS1mZW1hYy5jXCIsXG4gICAgXCJtZGlvLWkyYy5jXCIsXG4gICAgXCJtZGlvLWlwcTQwMTkuY1wiLFxuICAgIFwibWRpby1pcHE4MDY0LmNcIixcbiAgICBcIm1kaW8tbW94YXJ0LmNcIixcbiAgICBcIm1kaW8tbXNjYy1taWltLmNcIixcbiAgICBcIm1kaW8tbXV4LWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLW11eC1iY202MzY4LmNcIixcbiAgICBcIm1kaW8tbXV4LWdwaW8uY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZzEyYS5jXCIsXG4gICAgXCJtZGlvLW11eC1tZXNvbi1neGwuY1wiLFxuICAgIFwibWRpby1tdXgtbW1pb3JlZy5jXCIsXG4gICAgXCJtZGlvLW11eC1tdWx0aXBsZXhlci5jXCIsXG4gICAgXCJtZGlvLW11eC5jXCIsXG4gICAgXCJtZGlvLW12dXNiLmNcIixcbiAgICBcIm1kaW8tb2N0ZW9uLmNcIixcbiAgICBcIm1kaW8tcGljNjRocHNjLmNcIixcbiAgICBcIm1kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgICBcIm1kaW8tcmVnbWFwLmNcIixcbiAgICBcIm1kaW8tc3VuNGkuY1wiLFxuICAgIFwibWRpby10aHVuZGVyLmNcIixcbiAgICBcIm1kaW8teGdlbmUuY1wiLFxuICAgIFwib2ZfbWRpby5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjUyLjQ5NDkzNDA5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODY0NzkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBCdXMgQ3JlYXRpb24gYW5kIFN5emthbGxlcidzIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBNRElPIGJ1cyBkcml2ZXJzIGFuZCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJJ20gYXdhcmUgb2YgdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnM6IGBtZGlvLWdwaW8uY2AsIGBtZGlvLWkyYy5jYCwgYW5kIGBtZGlvLWJpdGJhbmcuY2AuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlciBiZSBsZXZlcmFnZWQgdG8gKmNyZWF0ZSogYW4gTURJTyBidXM/XG5cbk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gc3l6a2FsbGVyJ3MgZXhpc3RpbmcgY2FwYWJpbGl0aWVzLiBXZSd2ZSBnb3Qgc3lzdGVtIGNhbGxzIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgIHRoYXQgc2hvdyBzeXprYWxsZXIncyBwcm9maWNpZW5jeSBpbiBkZWFsaW5nIHdpdGggZGlmZmVyZW50IGtlcm5lbCBzdWJzeXN0ZW1zLiBOb3cgdGhlIHRob3VnaHQgbGFuZHMgb24gYG1kaW8tbXZ1c2IuY2AhIEEgVVNCLWJhc2VkIE1ESU8gYnVzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2UgVVNCIGlzIGEgd2VsbC1kZWZpbmVkIGFuZCBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3Igc3l6a2FsbGVyLiBUaW1lIHRvIGNoZWNrIHRoYXQgc291cmNlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjU2Ljc4MTQxNjAyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNTUwMDMyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLW12dXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTE1Nzc1PUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWxcXG5NQUlOVEFJTkVSUzoxNTc3NjpGOlxcdGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jXFxuTUFJTlRBSU5FUlMtMTU3NzctXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlPTIwPW9iai0kKENPTkZJR19NRElPX01TQ0NfTUlJTSlcXHRcXHQrPSBtZGlvLW1zY2MtbWlpbS5vXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfTURJT19NVlVTQilcXHRcXHQrPSBtZGlvLW12dXNiLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19NRElPX09DVEVPTilcXHRcXHQrPSBtZGlvLW9jdGVvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjAxLjAwNjkyNDU0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzg0NDY0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyBhIE1hcnZlbGwgVVNCIE1ESU8gRGV2aWNlIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYG1kaW8tbXZ1c2JgIGlzIGluZGVlZCBhIFVTQiBNRElPIGJ1cyBkcml2ZXIuIEJ1dCB0aGVuIGl0IGhpdCBtZTogaWYgU3l6a2FsbGVyIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgaXQgKmRvZXMqLCBpdCBjYW4gdG90YWxseSBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UuIEFuZCBpZiB3ZSBjYW4gZW11bGF0ZSAqdGhhdCosIHdlJ3ZlIGdvdCBhbiBNRElPIGJ1cyByZWdpc3RlcmVkLCByaWdodD9cblxuVGhlIGtleSByZWFsaXphdGlvbiBoZXJlIGlzIHRoYXQgb25jZSB3ZSBoYXZlIHRoYXQgTURJTyBidXMsIHdlIGNhbiB0aGVuIGVtdWxhdGUgKmFueSogUEhZIHNpbXBseSBieSByZXNwb25kaW5nIGNvcnJlY3RseSB0byBNRElPIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzISBUaGF0J3MgaXQhXG5cbkFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogYG1kaW8tbXZ1c2JgIHVzZXMgVVNCIFVSQnMgdG8gaGFuZGxlIHRoZXNlIE1ESU8gcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy4gU3l6a2FsbGVyJ3MgVVNCIGZ1enplciBpcyBkZXNpZ25lZCB0byBpbnRlcmNlcHQgYW5kIG1hbmlwdWxhdGUgdGhlc2UgdmVyeSBVUkJzISBUaGlzIG1lYW5zIHdlIGNhbiBwcm92aWRlICphcmJpdHJhcnkqIHJlc3BvbnNlcywgZWZmZWN0aXZlbHkgZW11bGF0aW5nIGFueSBQSFksIGluY2x1ZGluZyB0aGUgYGF0ODAzeGAgUEhZIHRoYXQgaXMgdGhlIGN1cnJlbnQgYXJlYSBvZiBpbnRlcmVzdCFcblxuTm93LCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgbGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgYG1kaW8tbXZ1c2IuY2AgdG8gc2VlIGhvdyB0aGF0IE1ESU8gYnVzIGlzIGFjdHVhbGx5IHNldCB1cCB3aXRoaW4gdGhlIGRyaXZlci4gR290dGEgZ2V0IHRoZSBkZXRhaWxzIHJpZ2h0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjA1Ljc5MTM5MjExMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcXHQweDEyODZcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG12dXNiX21kaW9fdGFibGVbXSA9IHtcXG4gIDEyOlxcdFxcdHsgVVNCX0RFVklDRShVU0JfTUFSVkVMTF9WSUQsIDB4MWZhNCkgfSxcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0e31cXG4gIDE1OlxcdH07XFxuICAxNjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXZ1c2JfbWRpb190YWJsZSk7XFxuICAxNzpcXHRcXG4gIDE4OlxcdGVudW0ge1xcbiAgMTk6XFx0XFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcXG4gIDIwOlxcdFxcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXFxuICAyMTpcXHRcXHRNVlVTQl9DTURfQUREUixcXG4gIDIyOlxcdFxcdE1WVVNCX0NNRF9WQUwsXFxuICAyMzpcXHR9O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDI3OlxcdFxcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRfX2xlMTYgYnVmWzRdO1xcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW8sIGludCBkZXYsIGludCByZWcpXFxuICAzMzpcXHR7XFxuICAzNDpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVxcdTAwM2Vwcml2O1xcbiAgMzU6XFx0XFx0aW50IGVyciwgYWxlbjtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFxcdTAwM2NcXHUwMDNjIDUpIHwgcmVnKTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNDA6XFx0XFx0XFx0XFx0ICAgbXZ1c2ItXFx1MDAzZWJ1ZiwgNiwgXFx1MDAyNmFsZW4sIDEwMCk7XFxuICA0MTpcXHRcXHRpZiAoZXJyKVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDYpLFxcbiAgNDU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNDY6XFx0XFx0aWYgKGVycilcXG4gIDQ3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldHVybiBsZTE2X3RvX2NwdShtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbiAgNTM6XFx0e1xcbiAgNTQ6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDU1OlxcdFxcdGludCBhbGVuO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9BRERSXSA9IGNwdV90b19sZTE2KDB4ODAwMCB8IChkZXYgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWcpO1xcbiAgNTg6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSAgPSBjcHVfdG9fbGUxNih2YWwpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHRyZXR1cm4gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNjE6XFx0XFx0XFx0XFx0ICAgIG12dXNiLVxcdTAwM2VidWYsIDgsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0XFxuICA2NDpcXHRzdGF0aWMgaW50IG12dXNiX21kaW9fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4gIDY1OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXY7XFxuICA2ODpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2I7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xcbiAgNzI6XFx0XFx0aWYgKCFtZGlvKVxcbiAgNzM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdG12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDc2OlxcdFxcdG12dXNiLVxcdTAwM2VtZGlvID0gbWRpbztcXG4gIDc3OlxcdFxcdG12dXNiLVxcdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQvKiBSZXZlcnNlZCBmcm9tIFVTQiBQQ0FQcywgbm8gaWRlYSB3aGF0IHRoZXNlIG1lYW4uICovXFxuICA4MDpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcXG4gIDgxOlxcdFxcdG12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1BSRUFNQkxFMV0gPSBjcHVfdG9fbGUxNigweDAwMDEpO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRzbnByaW50ZihtZGlvLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwibXZ1c2ItJXNcXFwiLCBkZXZfbmFtZShkZXYpKTtcXG4gIDg0OlxcdFxcdG1kaW8tXFx1MDAzZW5hbWUgPSBtZGlvLVxcdTAwM2VpZDtcXG4gIDg1OlxcdFxcdG1kaW8tXFx1MDAzZXBhcmVudCA9IGRldjtcXG4gIDg2OlxcdFxcdG1kaW8tXFx1MDAzZXJlYWQgPSBtdnVzYl9tZGlvX3JlYWQ7XFxuICA4NzpcXHRcXHRtZGlvLVxcdTAwM2V3cml0ZSA9IG12dXNiX21kaW9fd3JpdGU7XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtdnVzYik7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyB2b2lkIG12dXNiX21kaW9fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobXZ1c2ItXFx1MDAzZW1kaW8pO1xcbiAgOTk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTowNS43OTE1MzI0NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMjcwMTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIEJ1cyBSZWdpc3RyYXRpb246IERlZXAgRGl2ZSoqXG5cbk9rYXksIGdyZWF0ISBTbywgYG1kaW8tbXZ1c2JgIHN1Y2Nlc3NmdWxseSByZWdpc3RlcnMgYW4gTURJTyBidXMuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQsIGV4YWN0bHkgd2hhdCBJIHdhcyBob3BpbmcgdG8gc2VlLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIHRoZSBmYWN0IHRoYXQgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGlzIGJlaW5nIHVzZWQgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEhtbSwgdGhhdCBzdWdnZXN0cyBpdCdzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIGEgZGV2aWNlIHRyZWUsIGV4cGVjdGluZyBhIG5vZGUgdG8gZGVzY3JpYmUgdGhlIGF0dGFjaGVkIFBIWXMuIFRoZSB3YXkgSSByZWFkIHRoaXMsIGlmIGEgZGV2aWNlIHRyZWUgbm9kZSAqaXNuJ3QqIHByZXNlbnQsIHRoZW4gdGhlIGNvZGUgc2hvdWxkIGdyYWNlZnVsbHkgZmFsbCBiYWNrIHRvIHRoZSBiYXNpYyBgbWRpb2J1c19yZWdpc3RlcmAuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSBzaG91bGQgZGlnIGludG8gYG9mX21kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgaXMgaGFuZGxlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjExLjEyNDIzNjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjY3MTU3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfbWRpb2J1c19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU4MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OD1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cXHRpZiAocmV0KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzkyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODM0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg4OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4OS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE3OS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcXHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjU4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdHhfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyODg6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjE0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI2PXl0OTIxeF9tYnVzX2V4dF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04ODg9c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcXHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDk3PXN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVxcdGlmIChtZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcXHRcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1OlxcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWRpb2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTEyMTI9c3RhdGljIGludCBuaXhnZV9tZGlvX3NldHVwKHN0cnVjdCBuaXhnZV9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTIzMTpcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYz03OTA9c3RhdGljIGludCBscGNfbWlpX2luaXQoc3RydWN0IG5ldGRhdGFfbG9jYWwgKnBsZGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjAtXFx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHBsZGF0LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jOjgyMTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHBsZGF0LVxcdTAwM2VtaWlfYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMi1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYz05Mj1pbnQgZW1hY19waHlfY29uZmlnKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX2FkYXB0ZXIgKmFkcHQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYzoxMzg6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLXBoeS5jLTEzOS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MjM9c3RhdGljIGludCByYXZiX21kaW9faW5pdChzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjUxLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjI2NTI6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjUzLVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jPTEzNjc9c3RhdGljIGludCByc3dpdGNoX21paV9yZWdpc3RlcihzdHJ1Y3QgcnN3aXRjaF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODYtXFx0bWRpb19ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHJkZXYtXFx1MDAzZW5wX3BvcnQsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYzoxMzg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYy0xMzg4LVxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYz03Nzk9c3RhdGljIGludCBydHNuX21kaW9fYWxsb2Moc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzo4MTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtODE5LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jPTMwOTE9c3RhdGljIGludCBzaF9tZGlvX2luaXQoc3RydWN0IHNoX2V0aF9wcml2YXRlICptZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9zaF9ldGguYzozMTMyOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRwLVxcdTAwM2VtaWlfYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmMtMzEzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTU5OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwYXJlbnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTYwLVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwMi1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYzoxMjAzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjA0LVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTk4OD1zdGF0aWMgaW50IGVtYWNfbWRpb19pbml0KHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTAwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTAwOTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWksIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTEwMTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjU1OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTY1Ni1cXHRpZiAoZXJyID09IC1FTk9ERVYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYz03OT11MzIgc3BsMnN3X21kaW9faW5pdChzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jOjEwNjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYy0xMDctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9tZGlvLmM9NTM3PXN0YXRpYyBpbnQgZGF2aW5jaV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9tZGlvLmM6NjQzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGF0YS1cXHUwMDNlYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfbWRpby5jLTY0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYz02ND1pbnQgdGVtYWNfbWRpb19zZXR1cChzdHJ1Y3QgdGVtYWNfbG9jYWwgKmxwLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYy0xMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYzoxMTc6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmMtMTE4LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM9MjgwPWludCBheGllbmV0X21kaW9fc2V0dXAoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0zMDMtXFx0XFx0Z290byB1bnJlZ2lzdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MzA0OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmMtMzA1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRlLmM9ODA0PXN0YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fc2V0dXAoc3RydWN0IG5ldF9sb2NhbCAqbHAsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYy04NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jOjg2MjpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jLTg2My1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jPTU1OD1zdGF0aWMgaW50IGl4cDR4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBldGhfcmVncyBfX2lvbWVtICpyZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy01NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzo1NzI6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtNTczLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM9MjAzPXN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYy0yNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI1MTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI1Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmM9MTQ2PXN0YXRpYyBpbnQgYXNwZWVkX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1hc3BlZWQuYy0xNzQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jOjE3NTpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jLTE3Ni1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYz0xMjI9c3RhdGljIGludCBpcHJvY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLWlwcm9jLmMtMTUzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYzoxNTQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYy0xNTUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jPTIzNz1zdGF0aWMgaW50IHVuaW1hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jLTMwMS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jOjMwMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFjLmMtMzAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTU3PXN0YXRpYyBpbnQgbWRpb19ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4NTpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYz03Mj1zdGF0aWMgaW50IGhpc2lfZmVtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYzoxMDY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taGlzaS1mZW1hYy5jLTEwNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYz0zMjY9c3RhdGljIGludCBpcHE0MDE5X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmMtMzY5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmM6MzcwOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYy0zNzEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTgwNjQuYz0xMTA9aXBxODA2NF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jLTE0MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jOjE0MjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmMtMTQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTEwPXN0YXRpYyBpbnQgbW94YXJ0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMjgtXFx0LyogU2V0dGluZyBQSFlfTUFDX0lOVEVSUlVQVCBoZXJlIGV2ZW4gaWYgaXQgaGFzIG5vIGVmZmVjdCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM6MTI5OlxcdCAqIG9mX21kaW9idXNfcmVnaXN0ZXIoKSBzZXRzIHRoZXNlIFBIWV9QT0xMLlxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMzAtXFx0ICogSWRlYWxseSwgdGhlIGludGVycnVwdCBmcm9tIE1BQyBjb250cm9sbGVyIGNvdWxkIGJlIHVzZWQgdG9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jOjE0NTpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmM9MjcwPXN0YXRpYyBpbnQgbXNjY19taWltX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tc2NjLW1paW0uYzozMzE6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM9MTM5PWludCBtZGlvX211eF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYy0yMjQtXFx0XFx0XFx0Y2ItXFx1MDAzZW1paV9idXMtXFx1MDAzZXdyaXRlX2M0NSA9IG1kaW9fbXV4X3dyaXRlX2M0NTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM6MjI1OlxcdFxcdHIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGNiLVxcdTAwM2VtaWlfYnVzLCBjaGlsZF9idXNfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC5jLTIyNi1cXHRcXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM9NjQ9c3RhdGljIGludCBtdnVzYl9tZGlvX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy05MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYzo5MTpcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1vY3Rlb24uYz0xNj1zdGF0aWMgaW50IG9jdGVvbl9tZGlvYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmMtNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jOjUxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLVxcdTAwM2VtaWlfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jLTUyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcGljNjRocHNjLmM9MTE3PXN0YXRpYyBpbnQgcGljNjRocHNjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYy0xNjMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jOjE2NDpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcGljNjRocHNjLmMtMTY1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYz01MTA9c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDU6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYz05MD1zdGF0aWMgaW50IHN1bjRpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1zdW40aS5jLTEyOC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYzoxMjk6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYy0xMzAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jPTIyPXN0YXRpYyBpbnQgdGh1bmRlcl9tZGlvYnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtOTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDA6XFx0XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtMTAxLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwib2ZfbWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MzI3PXN0YXRpYyBpbnQgeGdlbmVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMzkyLVxcdGlmIChkZXYtXFx1MDAzZW9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzozOTM6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0zOTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ0PUVYUE9SVF9TWU1CT0wob2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTUxLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjUyOnN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE2Ny1cXHRcXHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE2ODpcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjE1Ljk1MDk1ODYxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzgwNDAxNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTURJTyBCdXMgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTURJTyBidXMgcmVnaXN0cmF0aW9uLiBJdCBzZWVtcyBgb2ZfbWRpb2J1c19yZWdpc3RlcmAgaGFzIGEgZmFsbGJhY2sgbWVjaGFuaXNtLiBJZiB0aGUgZGV2aWNlIG5vZGUsIHJlcHJlc2VudGVkIGJ5IGBucGAsIGlzIE5VTEwsIGl0IG5lYXRseSByZXZlcnRzIHRvIGEgc2ltcGxlIGBtZGlvYnVzX3JlZ2lzdGVyYCBjYWxsLiBJbnRlcmVzdGluZy4gSSdtIHNlZWluZyB0aGlzIGJlaGF2aW9yIGluIGBtZGlvLW12dXNiLmNgLCB3aGVyZSB0aGUgY29kZSBkaXJlY3RseSBpbnZva2VzIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCB3aXRoIGBkZXYtXHUwMDNlb2Zfbm9kZWAuIE5vdywgYSBsaWdodGJ1bGIgd2VudCBvZmY6IGZvciB0aG9zZSBzeXprYWxsZXItY3JlYXRlZCBVU0IgZGV2aWNlcywgdGhhdCBgZGV2LVx1MDAzZW9mX25vZGVgIGlzIGxpa2VseSBOVUxMIHVubGVzcyBzb21lb25lJ3MgZ29uZSB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgcHJvdmlkaW5nIGEgRGV2aWNlIFRyZWUgb3ZlcmxheS4gU28sIHRoaXMgY29uZmlybXMgdGhhdCB0aGUgZmFsbGJhY2sgaXMgcHJvYmFibHkgaGFwcGVuaW5nIGluIHRob3NlIHNjZW5hcmlvcy4gVG8gY29uZmlybSBteSB0aG91Z2h0IEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCBjb2RlLCB3aGljaCwgaWYgbWVtb3J5IHNlcnZlcywgc2hvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgZmFsbGJhY2sgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpcm0gbXkgcmVhc29uaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTA3NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOToyNS43MzEzNjI0NDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0aW50IGFkZHIsIHJjO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRpZiAoIW5wKVxcbiAyMDM6XFx0XFx0XFx0cmV0dXJuIF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdC8qIERvIG5vdCBjb250aW51ZSBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCAqL1xcbiAyMDY6XFx0XFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcXG4gMjA3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiAyMDg6XFx0XFxuIDIwOTpcXHRcXHQvKiBNYXNrIG91dCBhbGwgUEhZcyBmcm9tIGF1dG8gcHJvYmluZy4gIEluc3RlYWQgdGhlIFBIWXMgbGlzdGVkIGluXFxuIDIxMDpcXHRcXHQgKiB0aGUgZGV2aWNlIHRyZWUgYXJlIHBvcHVsYXRlZCBhZnRlciB0aGUgYnVzIGhhcyBiZWVuIHJlZ2lzdGVyZWQgKi9cXG4gMjExOlxcdFxcdG1kaW8tXFx1MDAzZXBoeV9tYXNrID0gfjA7XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGRldmljZV9zZXRfbm9kZShcXHUwMDI2bWRpby1cXHUwMDNlZGV2LCBvZl9md25vZGVfaGFuZGxlKG5wKSk7XFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdC8qIEdldCBidXMgbGV2ZWwgUEhZIHJlc2V0IEdQSU8gZGV0YWlscyAqL1xcbiAyMTY6XFx0XFx0bWRpby1cXHUwMDNlcmVzZXRfZGVsYXlfdXMgPSBERUZBVUxUX0dQSU9fUkVTRVRfREVMQVk7XFxuIDIxNzpcXHRcXHRvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInJlc2V0LWRlbGF5LXVzXFxcIiwgXFx1MDAyNm1kaW8tXFx1MDAzZXJlc2V0X2RlbGF5X3VzKTtcXG4gMjE4OlxcdFxcdG1kaW8tXFx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMgPSAwO1xcbiAyMTk6XFx0XFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZXNldC1wb3N0LWRlbGF5LXVzXFxcIiwgXFx1MDAyNm1kaW8tXFx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMpO1xcbiAyMjA6XFx0XFxuIDIyMTpcXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG4gMjIyOlxcdFxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG4gMjIzOlxcdFxcdGlmIChyYylcXG4gMjI0OlxcdFxcdFxcdHJldHVybiByYztcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0LyogTG9vcCBvdmVyIHRoZSBjaGlsZCBub2RlcyBhbmQgcmVnaXN0ZXIgYSBwaHlfZGV2aWNlIGZvciBlYWNoIHBoeSAqL1xcbiAyMjc6XFx0XFx0cmMgPSBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhtZGlvLCBucCwgXFx1MDAyNnNjYW5waHlzKTtcXG4gMjI4OlxcdFxcdGlmIChyYylcXG4gMjI5OlxcdFxcdFxcdGdvdG8gdW5yZWdpc3RlcjtcXG4gMjMwOlxcdFxcbiAyMzE6XFx0XFx0aWYgKCFzY2FucGh5cylcXG4gMjMyOlxcdFxcdFxcdHJldHVybiAwO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHQvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi9cXG4gMjM1OlxcdFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xcbiAyMzY6XFx0XFx0XFx0LyogU2tpcCBQSFlzIHdpdGggcmVnIHByb3BlcnR5IHNldCBvciBldGhlcm5ldC1waHktcGFja2FnZSBub2RlICovXFxuIDIzNzpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChjaGlsZCwgXFxcInJlZ1xcXCIpIHx8XFxuIDIzODpcXHRcXHRcXHQgICAgb2Zfbm9kZV9uYW1lX2VxKGNoaWxkLCBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSlcXG4gMjM5OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAyNDA6XFx0XFxuIDI0MTpcXHRcXHRcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgUEhZX01BWF9BRERSOyBhZGRyKyspIHtcXG4gMjQyOlxcdFxcdFxcdFxcdC8qIHNraXAgYWxyZWFkeSByZWdpc3RlcmVkIFBIWXMgKi9cXG4gMjQzOlxcdFxcdFxcdFxcdGlmIChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKG1kaW8sIGFkZHIpKVxcbiAyNDQ6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdFxcdFxcdC8qIGJlIG5vaXN5IHRvIGVuY291cmFnZSBwZW9wbGUgdG8gc2V0IHJlZyBwcm9wZXJ0eSAqL1xcbiAyNDc6XFx0XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNm1kaW8tXFx1MDAzZWRldiwgXFxcInNjYW4gcGh5ICVwT0ZuIGF0IGFkZHJlc3MgJWlcXFxcblxcXCIsXFxuIDI0ODpcXHRcXHRcXHRcXHRcXHQgY2hpbGQsIGFkZHIpO1xcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRcXHRcXHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKSB7XFxuIDI1MTpcXHRcXHRcXHRcXHRcXHQvKiAtRU5PREVWIGlzIHRoZSByZXR1cm4gY29kZSB0aGF0IFBIWUxJQiBoYXNcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdCAqIHN0YW5kYXJkaXplZCBvbiB0byBpbmRpY2F0ZSB0aGF0IGJ1c1xcbiAyNTM6XFx0XFx0XFx0XFx0XFx0ICogc2Nhbm5pbmcgc2hvdWxkIGNvbnRpbnVlLlxcbiAyNTQ6XFx0XFx0XFx0XFx0XFx0ICovXFxuIDI1NTpcXHRcXHRcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcXG4gMjU2OlxcdFxcdFxcdFxcdFxcdGlmICghcmMpXFxuIDI1NzpcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMjU4OlxcdFxcdFxcdFxcdFxcdGlmIChyYyAhPSAtRU5PREVWKVxcbiAyNTk6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBwdXRfdW5yZWdpc3RlcjtcXG4gMjYwOlxcdFxcdFxcdFxcdH1cXG4gMjYxOlxcdFxcdFxcdH1cXG4gMjYyOlxcdFxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0cmV0dXJuIDA7XFxuIDI2NTpcXHRcXG4gMjY2OlxcdHB1dF91bnJlZ2lzdGVyOlxcbiAyNjc6XFx0XFx0b2Zfbm9kZV9wdXQoY2hpbGQpO1xcbiAyNjg6XFx0dW5yZWdpc3RlcjpcXG4gMjY5OlxcdFxcdG1kaW9idXNfdW5yZWdpc3RlcihtZGlvKTtcXG4gMjcwOlxcdFxcdHJldHVybiByYztcXG4gMjcxOlxcdH1cXG4gMjcyOlxcdEVYUE9SVF9TWU1CT0woX19vZl9tZGlvYnVzX3JlZ2lzdGVyKTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0LyoqXFxuIDI3NTpcXHQgKiBvZl9tZGlvX2ZpbmRfZGV2aWNlIC0gR2l2ZW4gYSBkZXZpY2UgdHJlZSBub2RlLCBmaW5kIHRoZSBtZGlvX2RldmljZVxcbiAyNzY6XFx0ICogQG5wOiBwb2ludGVyIHRvIHRoZSBtZGlvX2RldmljZSdzIGRldmljZSB0cmVlIG5vZGVcXG4gMjc3OlxcdCAqXFxuIDI3ODpcXHQgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbWRpb19kZXZpY2Ugd2l0aCB0aGUgZW1iZWRkZWRcXG4gMjc5OlxcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXFxuIDI4MDpcXHQgKiBUaGUgY2FsbGVyIHNob3VsZCBjYWxsIHB1dF9kZXZpY2UoKSBvbiB0aGUgbWRpb19kZXZpY2UgYWZ0ZXIgaXRzIHVzZVxcbiAyODE6XFx0ICovXFxuIDI4MjpcXHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm9mX21kaW9fZmluZF9kZXZpY2Uoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gMjgzOlxcdHtcXG4gMjg0OlxcdFxcdHJldHVybiBmd25vZGVfbWRpb19maW5kX2RldmljZShvZl9md25vZGVfaGFuZGxlKG5wKSk7XFxuIDI4NTpcXHR9XFxuIDI4NjpcXHRFWFBPUlRfU1lNQk9MKG9mX21kaW9fZmluZF9kZXZpY2UpO1xcbiAyODc6XFx0XFxuIDI4ODpcXHQvKipcXG4gMjg5OlxcdCAqIG9mX3BoeV9maW5kX2RldmljZSAtIEdpdmUgYSBQSFkgbm9kZSwgZmluZCB0aGUgcGh5X2RldmljZVxcbiAyOTA6XFx0ICogQHBoeV9ucDogUG9pbnRlciB0byB0aGUgcGh5J3MgZGV2aWNlIHRyZWUgbm9kZVxcbiAyOTE6XFx0ICpcXG4gMjkyOlxcdCAqIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBwaHlfZGV2aWNlIHdpdGggdGhlIGVtYmVkZGVkXFxuIDI5MzpcXHQgKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbiAyOTQ6XFx0ICovXFxuIDI5NTpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25wKVxcbiAyOTY6XFx0e1xcbiAyOTc6XFx0XFx0cmV0dXJuIGZ3bm9kZV9waHlfZmluZF9kZXZpY2Uob2ZfZndub2RlX2hhbmRsZShwaHlfbnApKTtcXG4gMjk4OlxcdH1cXG4gMjk5OlxcdEVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6MjUuNzMxNTE1NjI0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzcwNzg2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIE1ESU8gQnVzIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYSBjb25kaXRpb25hbDogaWYgYG5wYCBpcyBOVUxMLCB3ZSB0cmlnZ2VyIGBfX21kaW9idXNfcmVnaXN0ZXJgLiBSaWdodCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0ICpleGFjdGx5KiBoYXBwZW5zIHdpdGhpbiBgX19tZGlvYnVzX3JlZ2lzdGVyYD8gRG9lcyBpdCBoYXZlIHRoZSBzbWFydHMgdG8gYXV0b21hdGljYWxseSBwcm9iZSBmb3IgY29ubmVjdGVkIFBIWXM/IFRoYXQncyB3aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJIG5lZWQgdG8ga25vdyBob3cgaXQgaGFuZGxlcyB0aGUgZGlzY292ZXJ5IHByb2Nlc3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIE1ESU8gYnVzIGl0c2VsZiwgd2hpY2ggSSBiZWxpZXZlIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBzaG91bGQgYmUuIExldCdzIHNlZSBob3cgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyB1bmZvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA2MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6MzAuNjY4NTk3NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDU5NzEwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cXHRtZGlvLVxcdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDApO1xcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jLTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xOTU9aW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cXHRpZiAoIW5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcXHRcXHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NDctICogICBuZWVkIHRvIHBhc3MgYSBzcGVjaWZpYyBvd25lciBtb2R1bGUuIE1ESU8gZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTUzOmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2Ni19XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1paV9idXMgKm1kaW9idXNfYWxsb2Modm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDQ3OmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ1MDojZGVmaW5lIG1kaW9idXNfcmVnaXN0ZXIoYnVzKSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTozNS4zNzQ1NzY5ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIzNjc2Nzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYF9fbWRpb2J1c19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNydWNpYWwgZnVuY3Rpb24gd29ya3MuIFRoaXMgaXMgd2hlcmUgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBoYXBwZW5zLCByaWdodD8gSXQncyB0aGUgY29yZSBvZiBob3cgd2UgZ2V0IG91ciBQSFlzIHRhbGtpbmcgdG8gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzIG9mIHRoYXQgcHJvY2VzcywgZXNwZWNpYWxseSBob3cgdGhlIGRyaXZlciBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhbmQgaG9va2VkIGludG8gdGhlIGtlcm5lbC4gSSdtIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBidXMgaXRzZWxmIGlzIHNldCB1cCwgaG93IGl0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSB0cmVlLCBhbmQgdWx0aW1hdGVseSwgaG93IFBIWSBkcml2ZXJzIGFyZSBsaW5rZWQgdG8gdGhpcyByZWdpc3RlcmVkIGJ1cy4gT2theSwgbGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0Mzk3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NDEuNjExMzQ4NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDA6XFx0ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcXG4gNTQxOlxcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXFxuIDU0MjpcXHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcXG4gNTQzOlxcdCAqXFxuIDU0NDpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcXG4gNTQ1OlxcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG4gNTQ2OlxcdCAqICAgbWRpb2J1c19yZWdpc3RlcigpIHJhdGhlciB0aGFuIF9fbWRpb2J1c19yZWdpc3RlcigpIHVubGVzcyB0aGV5XFxuIDU0NzpcXHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gNTQ4OlxcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXFxuIDU0OTpcXHQgKiAgIHRvIGJlIGV4cGxpY2l0bHkgbGlzdGVkIGluIERUIGFuZCBpbnN0YW50aWF0ZWQgYnkgb2ZfbWRpb2J1c19yZWdpc3RlcigpLlxcbiA1NTA6XFx0ICpcXG4gNTUxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFxcdTAwM2MgMCBvbiBlcnJvci5cXG4gNTUyOlxcdCAqL1xcbiA1NTM6XFx0aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4gNTU0OlxcdHtcXG4gNTU1OlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNTU2OlxcdFxcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xcbiA1NTc6XFx0XFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xcbiA1NTg6XFx0XFx0aW50IGksIGVycjtcXG4gNTU5OlxcdFxcbiA1NjA6XFx0XFx0aWYgKCFidXMgfHwgIWJ1cy1cXHUwMDNlbmFtZSlcXG4gNTYxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NjI6XFx0XFxuIDU2MzpcXHRcXHQvKiBBbiBhY2Nlc3MgbWV0aG9kIGFsd2F5cyBuZWVkcyBib3RoIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgKi9cXG4gNTY0OlxcdFxcdGlmICghIWJ1cy1cXHUwMDNlcmVhZCAhPSAhIWJ1cy1cXHUwMDNld3JpdGUgfHwgISFidXMtXFx1MDAzZXJlYWRfYzQ1ICE9ICEhYnVzLVxcdTAwM2V3cml0ZV9jNDUpXFxuIDU2NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0LyogQXQgbGVhc3Qgb25lIG1ldGhvZCBpcyBtYW5kYXRvcnkgKi9cXG4gNTY4OlxcdFxcdGlmICghYnVzLVxcdTAwM2VyZWFkIFxcdTAwMjZcXHUwMDI2ICFidXMtXFx1MDAzZXJlYWRfYzQ1KVxcbiA1Njk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU3MDpcXHRcXG4gNTcxOlxcdFxcdGlmIChidXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSlcXG4gNTcyOlxcdFxcdFxcdGZ3bm9kZV9zZXRfZmxhZyhcXHUwMDI2YnVzLVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUtXFx1MDAzZWZ3bm9kZSxcXG4gNTczOlxcdFxcdFxcdFxcdFxcdEZXTk9ERV9GTEFHX05FRURTX0NISUxEX0JPVU5EX09OX0FERCk7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdFdBUk4oYnVzLVxcdTAwM2VzdGF0ZSAhPSBNRElPQlVTX0FMTE9DQVRFRCBcXHUwMDI2XFx1MDAyNlxcbiA1NzY6XFx0XFx0ICAgICBidXMtXFx1MDAzZXN0YXRlICE9IE1ESU9CVVNfVU5SRUdJU1RFUkVELFxcbiA1Nzc6XFx0XFx0ICAgICBcXFwiJXM6IG5vdCBpbiBBTExPQ0FURUQgb3IgVU5SRUdJU1RFUkVEIHN0YXRlXFxcXG5cXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0YnVzLVxcdTAwM2Vvd25lciA9IG93bmVyO1xcbiA1ODA6XFx0XFx0YnVzLVxcdTAwM2VkZXYucGFyZW50ID0gYnVzLVxcdTAwM2VwYXJlbnQ7XFxuIDU4MTpcXHRcXHRidXMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZtZGlvX2J1c19jbGFzcztcXG4gNTgyOlxcdFxcdGJ1cy1cXHUwMDNlZGV2Lmdyb3VwcyA9IE5VTEw7XFxuIDU4MzpcXHRcXHRkZXZfc2V0X25hbWUoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNTg0OlxcdFxcbiA1ODU6XFx0XFx0LyogSWYgdGhlIGJ1cyBzdGF0ZSBpcyBhbGxvY2F0ZWQsIHdlJ3JlIHJlZ2lzdGVyaW5nIGEgZnJlc2ggYnVzXFxuIDU4NjpcXHRcXHQgKiB0aGF0IG1heSBoYXZlIGEgZndub2RlIGFzc29jaWF0ZWQgd2l0aCBpdC4gR3JhYiBhIHJlZmVyZW5jZVxcbiA1ODc6XFx0XFx0ICogdG8gdGhlIGZ3bm9kZS4gVGhpcyB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgYnVzIGlzIHJlbGVhc2VkLlxcbiA1ODg6XFx0XFx0ICogSWYgdGhlIGJ1cyB3YXMgc2V0IHRvIHVucmVnaXN0ZXJlZCwgaXQgbWVhbnMgdGhhdCB0aGUgYnVzIHdhc1xcbiA1ODk6XFx0XFx0ICogcHJldmlvdXNseSByZWdpc3RlcmVkLCBhbmQgd2UndmUgYWxyZWFkeSBncmFiYmVkIGEgcmVmZXJlbmNlLlxcbiA1OTA6XFx0XFx0ICovXFxuIDU5MTpcXHRcXHRpZiAoYnVzLVxcdTAwM2VzdGF0ZSA9PSBNRElPQlVTX0FMTE9DQVRFRClcXG4gNTkyOlxcdFxcdFxcdGZ3bm9kZV9oYW5kbGVfZ2V0KGRldl9md25vZGUoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KSk7XFxuIDU5MzpcXHRcXG4gNTk0OlxcdFxcdC8qIFdlIG5lZWQgdG8gc2V0IHN0YXRlIHRvIE1ESU9CVVNfVU5SRUdJU1RFUkVEIHRvIGNvcnJlY3RseSByZWxlYXNlXFxuIDU5NTpcXHRcXHQgKiB0aGUgZGV2aWNlIGluIG1kaW9idXNfZnJlZSgpXFxuIDU5NjpcXHRcXHQgKlxcbiA1OTc6XFx0XFx0ICogU3RhdGUgd2lsbCBiZSB1cGRhdGVkIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24gaW4gY2FzZSBvZiBzdWNjZXNzXFxuIDU5ODpcXHRcXHQgKi9cXG4gNTk5OlxcdFxcdGJ1cy1cXHUwMDNlc3RhdGUgPSBNRElPQlVTX1VOUkVHSVNURVJFRDtcXG4gNjAwOlxcdFxcbiA2MDE6XFx0XFx0ZXJyID0gZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZidXMtXFx1MDAzZWRldik7XFxuIDYwMjpcXHRcXHRpZiAoZXJyKSB7XFxuIDYwMzpcXHRcXHRcXHRwcl9lcnIoXFxcIm1paV9idXMgJXMgZmFpbGVkIHRvIHJlZ2lzdGVyXFxcXG5cXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNjA0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2MDU6XFx0XFx0fVxcbiA2MDY6XFx0XFxuIDYwNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuIDYwODpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZidXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0LyogYXNzZXJ0IGJ1cyBsZXZlbCBQSFkgR1BJTyByZXNldCAqL1xcbiA2MTE6XFx0XFx0Z3Bpb2QgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcXHUwMDI2YnVzLVxcdTAwM2VkZXYsIFxcXCJyZXNldFxcXCIsIEdQSU9EX09VVF9ISUdIKTtcXG4gNjEyOlxcdFxcdGlmIChJU19FUlIoZ3Bpb2QpKSB7XFxuIDYxMzpcXHRcXHRcXHRlcnIgPSBkZXZfZXJyX3Byb2JlKFxcdTAwMjZidXMtXFx1MDAzZWRldiwgUFRSX0VSUihncGlvZCksXFxuIDYxNDpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIm1paV9idXMgJXMgY291bGRuJ3QgZ2V0IHJlc2V0IEdQSU9cXFxcblxcXCIsXFxuIDYxNTpcXHRcXHRcXHRcXHRcXHQgICAgYnVzLVxcdTAwM2VpZCk7XFxuIDYxNjpcXHRcXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZidXMtXFx1MDAzZWRldik7XFxuIDYxNzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2MTg6XFx0XFx0fSBlbHNlXFx0aWYgKGdwaW9kKSB7XFxuIDYxOTpcXHRcXHRcXHRidXMtXFx1MDAzZXJlc2V0X2dwaW9kID0gZ3Bpb2Q7XFxuIDYyMDpcXHRcXHRcXHRmc2xlZXAoYnVzLVxcdTAwM2VyZXNldF9kZWxheV91cyk7XFxuIDYyMTpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZ3Bpb2QsIDApO1xcbiA2MjI6XFx0XFx0XFx0aWYgKGJ1cy1cXHUwMDNlcmVzZXRfcG9zdF9kZWxheV91cyBcXHUwMDNlIDApXFxuIDYyMzpcXHRcXHRcXHRcXHRmc2xlZXAoYnVzLVxcdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcXG4gNjI0OlxcdFxcdH1cXG4gNjI1OlxcdFxcbiA2MjY6XFx0XFx0aWYgKGJ1cy1cXHUwMDNlcmVzZXQpIHtcXG4gNjI3OlxcdFxcdFxcdGVyciA9IGJ1cy1cXHUwMDNlcmVzZXQoYnVzKTtcXG4gNjI4OlxcdFxcdFxcdGlmIChlcnIpXFxuIDYyOTpcXHRcXHRcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X2dwaW9kO1xcbiA2MzA6XFx0XFx0fVxcbiA2MzE6XFx0XFxuIDYzMjpcXHRcXHRpZiAoYnVzLVxcdTAwM2VyZWFkKSB7XFxuIDYzMzpcXHRcXHRcXHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xcbiA2MzQ6XFx0XFx0XFx0aWYgKGVycilcXG4gNjM1OlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDYzNjpcXHRcXHR9XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdHByZXZlbnRfYzQ1X3NjYW4gPSBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oYnVzKTtcXG4gNjM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo0MS42MTE0OTQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjI2MzgzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1ESU8gQnVzIFNjYW4qKlxuXG5SaWdodCwgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBoYXMgYmVlbiBpbnZva2VkLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciB0aGlzIGlzIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0ncyBhcmNoaXRlY3R1cmUgYW5kIHRoZSBjdXJyZW50IGRldmljZSB0cmVlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgQzIyIGNsYXVzZSBoYXMgYmVlbiB0cmlnZ2VyZWQgYXMgYW50aWNpcGF0ZWQuIEknbSBpbW1lZGlhdGVseSBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjYWxsLiBXaGF0J3MgdGhlIHRhcmdldCBoYXJkd2FyZT8gV2hhdCBwZXJpcGhlcmFscyBhcmUgY29uZmlndXJlZCBvbiB0aGlzIE1ESU8gYnVzPyBJcyB0aGlzIGEgc3RhbmRhcmQgb3BlcmF0aW9uLCBvciBpcyB0aGVyZSBzb21ldGhpbmcgdGhhdCB0cmlnZ2VyZWQgYW4gdW51c3VhbCBzY2FuPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBiZWhhdmlvciBvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjI3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NDYuODc0MTM3MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NjA6XFx0e1xcbiA0NjE6XFx0XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcXG4gNDYyOlxcdH1cXG4gNDYzOlxcdEVYUE9SVF9TWU1CT0wobWRpb2J1c19zY2FuX2MyMik7XFxuIDQ2NDpcXHRcXG4gNDY1OlxcdC8qKlxcbiA0NjY6XFx0ICogbWRpb2J1c19zY2FuX2M0NSAtIHNjYW4gb25lIGFkZHJlc3Mgb24gYSBidXMgZm9yIEM0NSBNRElPIGRldmljZXMuXFxuIDQ2NzpcXHQgKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4gNDY4OlxcdCAqIEBhZGRyOiBhZGRyZXNzIG9uIGJ1cyB0byBzY2FuXFxuIDQ2OTpcXHQgKlxcbiA0NzA6XFx0ICogVGhpcyBmdW5jdGlvbiBzY2FucyBvbmUgYWRkcmVzcyBvbiB0aGUgTURJTyBidXMsIGxvb2tpbmcgZm9yXFxuIDQ3MTpcXHQgKiBkZXZpY2VzIHdoaWNoIGNhbiBiZSBpZGVudGlmaWVkIHVzaW5nIGEgdmVuZG9yL3Byb2R1Y3QgSUQgaW5cXG4gNDcyOlxcdCAqIHJlZ2lzdGVycyAyIGFuZCAzLiBOb3QgYWxsIE1ESU8gZGV2aWNlcyBoYXZlIHN1Y2ggcmVnaXN0ZXJzLCBidXRcXG4gNDczOlxcdCAqIFBIWSBkZXZpY2VzIHR5cGljYWxseSBkby4gSGVuY2UgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFueXRoaW5nXFxuIDQ3NDpcXHQgKiBmb3VuZCBpcyBhIFBIWSwgb3IgY2FuIGJlIHRyZWF0ZWQgYXMgYSBQSFkuIE90aGVyIE1ESU8gZGV2aWNlcyxcXG4gNDc1OlxcdCAqIHN1Y2ggYXMgc3dpdGNoZXMsIHdpbGwgcHJvYmFibHkgbm90IGJlIGZvdW5kIGR1cmluZyB0aGUgc2Nhbi5cXG4gNDc2OlxcdCAqL1xcbiA0Nzc6XFx0c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbiA0Nzg6XFx0e1xcbiA0Nzk6XFx0XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIHRydWUpO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0XFxuIDQ4MjpcXHRzdGF0aWMgaW50IG1kaW9idXNfc2Nhbl9idXNfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIDQ4MzpcXHR7XFxuIDQ4NDpcXHRcXHRpbnQgaTtcXG4gNDg1OlxcdFxcbiA0ODY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKSB7XFxuIDQ4NzpcXHRcXHRcXHRpZiAoKGJ1cy1cXHUwMDNlcGh5X21hc2sgXFx1MDAyNiBCSVQoaSkpID09IDApIHtcXG4gNDg4OlxcdFxcdFxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jMjIoYnVzLCBpKTtcXG4gNDkxOlxcdFxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbiA0OTI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4gNDkzOlxcdFxcdFxcdH1cXG4gNDk0OlxcdFxcdH1cXG4gNDk1OlxcdFxcdHJldHVybiAwO1xcbiA0OTY6XFx0fVxcbiA0OTc6XFx0XFxuIDQ5ODpcXHRzdGF0aWMgaW50IG1kaW9idXNfc2Nhbl9idXNfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIDQ5OTpcXHR7XFxuIDUwMDpcXHRcXHRpbnQgaTtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKSB7XFxuIDUwMzpcXHRcXHRcXHRpZiAoKGJ1cy1cXHUwMDNlcGh5X21hc2sgXFx1MDAyNiBCSVQoaSkpID09IDApIHtcXG4gNTA0OlxcdFxcdFxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDUwNTpcXHRcXG4gNTA2OlxcdFxcdFxcdFxcdC8qIERvbid0IHNjYW4gQzQ1IGlmIHdlIGFscmVhZHkgaGF2ZSBhIEMyMiBkZXZpY2UgKi9cXG4gNTA3OlxcdFxcdFxcdFxcdGlmIChidXMtXFx1MDAzZW1kaW9fbWFwW2ldKVxcbiA1MDg6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwOTpcXHRcXG4gNTEwOlxcdFxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jNDUoYnVzLCBpKTtcXG4gNTExOlxcdFxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbiA1MTI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4gNTEzOlxcdFxcdFxcdH1cXG4gNTE0OlxcdFxcdH1cXG4gNTE1OlxcdFxcdHJldHVybiAwO1xcbiA1MTY6XFx0fVxcbiA1MTc6XFx0XFxuIDUxODpcXHQvKiBUaGVyZSBhcmUgc29tZSBDMjIgUEhZcyB3aGljaCBkbyBiYWQgdGhpbmdzIHdoZW4gd2hlcmUgaXMgYSBDNDVcXG4gNTE5OlxcdCAqIHRyYW5zYWN0aW9uIG9uIHRoZSBidXMsIGxpa2UgYWNjZXB0aW5nIGEgcmVhZCB0aGVtc2VsdmVzLCBhbmRcXG4gNTIwOlxcdCAqIHN0b21waW5nIG92ZXIgdGhlIHRydWUgZGV2aWNlcyByZXBseSwgdG8gcGVyZm9ybWluZyBhIHdyaXRlIHRvXFxuIDUyMTpcXHQgKiB0aGVtc2VsdmVzIHdoaWNoIHdhcyBpbnRlbmRlZCBmb3IgYW5vdGhlciBkZXZpY2UuIE5vdyB0aGF0IEMyMlxcbiA1MjI6XFx0ICogZGV2aWNlcyBoYXZlIGJlZW4gZm91bmQsIHNlZSBpZiBhbnkgb2YgdGhlbSBhcmUgYmFkIGZvciBDNDUsIGFuZCBpZiB3ZVxcbiA1MjM6XFx0ICogc2hvdWxkIHNraXAgdGhlIEM0NSBzY2FuLlxcbiA1MjQ6XFx0ICovXFxuIDUyNTpcXHRzdGF0aWMgYm9vbCBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cylcXG4gNTI2OlxcdHtcXG4gNTI3OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDUyODpcXHRcXG4gNTI5OlxcdFxcdG1kaW9idXNfZm9yX2VhY2hfcGh5KGJ1cywgcGh5ZGV2KSB7XFxuIDUzMDpcXHRcXHRcXHR1MzIgb3VpID0gcGh5ZGV2LVxcdTAwM2VwaHlfaWQgXFx1MDAzZVxcdTAwM2UgMTA7XFxuIDUzMTpcXHRcXG4gNTMyOlxcdFxcdFxcdGlmIChvdWkgPT0gTUlDUkVMX09VSSlcXG4gNTMzOlxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiA1MzQ6XFx0XFx0fVxcbiA1MzU6XFx0XFxuIDUzNjpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDUzNzpcXHR9XFxuIDUzODpcXHRcXG4gNTM5OlxcdC8qKlxcbiA1NDA6XFx0ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcXG4gNTQxOlxcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXFxuIDU0MjpcXHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcXG4gNTQzOlxcdCAqXFxuIDU0NDpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcXG4gNTQ1OlxcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG4gNTQ2OlxcdCAqICAgbWRpb2J1c19yZWdpc3RlcigpIHJhdGhlciB0aGFuIF9fbWRpb2J1c19yZWdpc3RlcigpIHVubGVzcyB0aGV5XFxuIDU0NzpcXHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gNTQ4OlxcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXFxuIDU0OTpcXHQgKiAgIHRvIGJlIGV4cGxpY2l0bHkgbGlzdGVkIGluIERUIGFuZCBpbnN0YW50aWF0ZWQgYnkgb2ZfbWRpb2J1c19yZWdpc3RlcigpLlxcbiA1NTA6XFx0ICpcXG4gNTUxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFxcdTAwM2MgMCBvbiBlcnJvci5cXG4gNTUyOlxcdCAqL1xcbiA1NTM6XFx0aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4gNTU0OlxcdHtcXG4gNTU1OlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNTU2OlxcdFxcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xcbiA1NTc6XFx0XFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xcbiA1NTg6XFx0XFx0aW50IGksIGVycjtcXG4gNTU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo0Ni44NzQzMDc3MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzI0MTk3NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIFNjYW5uaW5nIGFuZCBTeXprYWxsZXIgRW11bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWRpb2J1c19zY2FuX2J1c19jMjJgIGZ1bmN0aW9uIGNhbGwuIEl0J3MgZXNzZW50aWFsbHkgY2FsbGluZyBgbWRpb2J1c19zY2FuX2MyMmAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgaXMgaG93IHRoZSBNRElPIGJ1cyBnZXRzIHNjYW5uZWQsIHJlYWRpbmcgUEhZIElEIHJlZ2lzdGVycyB0byBkaXNjb3ZlciB3aGF0J3MgY29ubmVjdGVkLiBOb3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBjYW4gcGxheSBhIHJvbGUgaGVyZSwgc3BlY2lmaWNhbGx5IHdoZW4gaXQncyBlbXVsYXRpbmcgdGhhdCBgbWRpby1tdnVzYmAgZHJpdmVyLiBJZiB3ZSBjYW4gbWFuaXB1bGF0ZSBzeXprYWxsZXIgdG8gcmVzcG9uZCB0byBNRElPIHJlYWQgb3BlcmF0aW9ucy4uLndlIGNhbiBlc3NlbnRpYWxseSB0cmljayB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQncyB0YWxraW5nIHRvIGFuIEFUODAzWCBQSFkhIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIFBIWSBJRCBpcy4gQWggeWVzLCBJIHJlbWVtYmVyIHRoYXQgaXQncyBgMHgwMDRkZDA3MmAsIG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlIHRvIHRoYXQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBJRC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxMTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo1MS4xOTg1MDkxMjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTA2NDUyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lEX01BVENIX0VYQUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9OTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhczIxeHh4X2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTUyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTUzOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMVhYWCksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NTQtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxeHh4XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU3LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1ODpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEwMTFKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU5LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTAxMUpCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2OS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5NzA6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExUEIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk3MS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjEwMTFQQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTgyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTAxMFBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxMDEwUEIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTkzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk5NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEwMTBKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTk1LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTAxMEpCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDUtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAwNjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBQQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwNy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjEyMTBQQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE3LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMTg6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxNTEwSkIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMTktXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxNTEwSkIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAyOS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDMwOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTUxMFBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDMxLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTUxMFBCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA0MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA0My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjE1MTFKQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNTQ6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMjEwSkIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNTUtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxMjEwSkIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA2NS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDY2OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTUxMVBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY3LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTUxMVBCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz05Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXNpeF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy05OC17XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6OTk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BU0lYX0FYODg3NzJBKSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDAtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJBc2l4IEVsZWN0cm9uaWNzIEFYODg3NzJBXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNy19LCB7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6MTA4OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQyksXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTA5LVxcdC5uYW1lXFx0XFx0PSBcXFwiQXNpeCBFbGVjdHJvbmljcyBBWDg4NzcyQ1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz0xMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBhc2l4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEyNDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQSkgfSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzoxMjU6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTSVhfQVg4ODc3MkMpIH0sXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTI2LVxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9BU0lYX0FYODg3OTZCKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jPTYyOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGljcGx1c190YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pY3BsdXMuYy02MzAtXFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoSVAxMDAxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmM6NjMxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQMTAxQV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jLTYzMi1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM9MTQ3Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NzQtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ3NTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NzYtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNZWRpYVRlayBNVDc5ODEgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5MS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNDkyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpLFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lZGlhVGVrIE1UNzk4OCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTA4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MDk6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTEwLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWlyb2hhIEFONzU4MSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTIxLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MjI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MyksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTIzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWlyb2hhIEFONzU4MyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1Mzg6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzOTpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTQwOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDE6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU0Mi1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYz05OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX2dlcGh5X2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMDAtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMDE6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzUzMCksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMi1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lZGlhVGVrIE1UNzUzMCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTExNC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jOjExNTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmMtMTE2LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWVkaWFUZWsgTVQ3NTMxIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM9MTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX2dlcGh5X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzQ6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMzUtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVzb24tZ3hsLmM9MTg3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtZXNvbl9neGxfcGh5W10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE4OC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjE4OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMTgxNDQwMCksXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE5MC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lc29uIEdYTCBJbnRlcm5hbCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwMi1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjIwMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMTgwMzMwMSksXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwNC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lc29uIEcxMkEgSW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTM3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTM4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUzOTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTQwLVxcdFxcdC5uYW1lICAgICAgICAgICAgICAgPSBcXFwiTEFOODY3WCBSZXYuQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NDgtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTQ5OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NTAtXFx0XFx0Lm5hbWUgICAgICAgICAgICAgICA9IFxcXCJMQU44NjdYIFJldi5DMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU1OC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NTk6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMyKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2MC1cXHRcXHQubmFtZSAgICAgICAgICAgICAgID0gXFxcIkxBTjg2N1ggUmV2LkMyXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU2OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWRDApLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTcwLVxcdFxcdC5uYW1lICAgICAgICAgICAgICAgPSBcXFwiTEFOODY3WCBSZXYuRDBcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTgyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4My1cXHRcXHQubmFtZSAgICAgICAgICAgICAgID0gXFxcIkxBTjg2NVggUmV2LkIwL0IxIEludGVybmFsIFBoeVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTU5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHRibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTk4OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTk5OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAwOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMyKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkQwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAyOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjVYX1JFVkIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy02MDMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjMtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDY0OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTExKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUxMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDcyLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3MzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzQtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MjEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5Mi1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwOTM6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDk0LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTIyIDEwMCBNZWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAwLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwMTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MzEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNi1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMzI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTMzLVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiWVQ4ODIxIDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMTU3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbW90b3Jjb21tX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTk6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIyKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE2NC1cXHR7IC8qIHNlbnRpbmVsICovIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yODA3LXtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyODA4OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU2WCksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjgwOS1cXHQubmFtZVxcdFxcdD0gXFxcIk1pY3Jvc2VtaSBHRSBWU0M4NTZYIFN5bmNFXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4OTgte1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjI4OTk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTc1KSxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTAwLVxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9zZW1pIEdFIFZTQzg1NzUgU3luY0VcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjkyNy17XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjkyODpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1ZTQzg1ODIpLFxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI5MjktXFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb3NlbWkgR0UgVlNDODU4MiBTeW5jRVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTU2LXtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTU3OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU4NCksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk1OC1cXHQubmFtZVxcdFxcdD0gXFxcIk1pY3Jvc2VtaSBHRSBWU0M4NTg0IFN5bmNFXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz05MzY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG14bF9waHlfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy05MzctXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5Mzg6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9NWEw4NjExMCksXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzOS1cXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIk1YTDg2MTEwIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1MS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjk1MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSxcXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtOTUzLVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiTVhMODYxMTEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM9OTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXhsX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTEwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy05NzQtXFx0eyAgfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTExNS1cXHQvKiBRdWFsY29tbSBBdGhlcm9zIEFSODAzNSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExMTY6XFx0UEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzVfUEhZX0lEKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTE3LVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwMzVcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1MS1cXHQvKiBRdWFsY29tbSBBdGhlcm9zIEFSODAzMS9BUjgwMzMgKi9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTUyOlxcdFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1My1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzM1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTc1LVxcdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDMyICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE3NjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzMl9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNzctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSODAzMlxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTkwLVxcdC8qIEFUSEVST1MgQVI5MzMxICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE5MTpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIOTMzMV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExOTItXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBidWlsdC1pbiBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIwNS19LCB7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIwNjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoSVBRNTAxOF9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMDctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIElQUTUwMTggaW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTktXFx0LyogUXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIyMDpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBOTU2MV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMjEtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQTk1NjEgYnVpbHQtaW4gUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTEyMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBhdGhlcm9zX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMzktXFx0eyBBVEg4MDMwX1BIWV9JRCwgQVQ4MDMwX1BIWV9JRF9NQVNLIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTI0MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjQxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzJfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzNV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTI0MzpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg5MzMxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjQ0OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQUTUwMThfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDU6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBOTU2MV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTI0Ni1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03OTItXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo3OTM6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDcyKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzk0LVxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJRdWFsY29tbSBRQ0E4MDcyXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MTUtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MTY6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDc1KSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODE3LVxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJRdWFsY29tbSBRQ0E4MDc1XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz04NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4MDd4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4NDc6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjg0ODpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUUNBODA3NSkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODQ5LVxcdHsgfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXFx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NDk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTgwODFfUEhZX0lEKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUXVhbGNvbW0gUUNBODA4MVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9NjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODA4eF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgwODFfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4M3h4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIxNS1cXHQvKiBRQ0E4MzM3ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjIxNjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMzN19QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMTctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIDgzMzcgaW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMjktXFx0LyogUUNBODMyNy1BIGZyb20gc3dpdGNoIFFDQTgzMjctQUwxQSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzA6XFx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMzEtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIDgzMjctQSBpbnRlcm5hbCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0NC1cXHQvKiBRQ0E4MzI3LUIgZnJvbSBzd2l0Y2ggUUNBODMyNy1CTDFBICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0NTpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19CX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0Ni1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIEF0aGVyb3MgODMyNy1CIGludGVybmFsIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODN4eF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjYzOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMzdfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyNjQ6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19BX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjY1OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQl9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI2Ni1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI2ODg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2ODktXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI2OTA6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjAxQ1AgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5NC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5NTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzgxNiksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5Ni1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMDFGIEZhc3QgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcxMi1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjcxMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcxNC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIwLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzIxOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTEyKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIyLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMxLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzMyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTEzKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzM5LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzQwOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE0KSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzQxLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUROIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc0OC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc0OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxNSksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc1MC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTFFIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2MS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc2MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxNiksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTFGIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc4MC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc4MTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyMTFGVkRfUEhZSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3ODItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjExRi1WRCBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzUtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4MzY6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4MzgpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzctXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI2LUNHIDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTAtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTE6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4NDgpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI2Qi1DR19SVEw4MjIxQi1DRyAyLjVHYnBzIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTM3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTM4OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjkzOS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJlYWx0ZWsgU0ZQIFBIWSBNb2RlXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTEtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NTI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI0IDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjQtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NjU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjYtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MzY2UkIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTc3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTc4OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYjAwKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTc5LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMOTAwMEFBX1JUTDkwMDBBTiBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkwLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTkxOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTQyKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkyLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk5OC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk2MCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwMC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgzNjZTIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTMwPXN0cnVjdCBwaHlfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTU4Ni1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1ODc6I2RlZmluZSBQSFlfSURfTUFUQ0hfRVhBQ1QoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfRVhUQUNUX01BU0tcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1ODgtI2RlZmluZSBQSFlfSURfTUFUQ0hfTU9ERUwoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfTU9ERUxfTUFTS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo1NS43MDkxNjEyOTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwMTMyNDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgUEhZIElEcyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWUgQVQ4MDNYIFBIWSBJRHMuIExldCdzIHNlZSwgd2UndmUgZ290IGBBVEg4MDMxX1BIWV9JRGAsIGBBVEg4MDMyX1BIWV9JRGAsIGBBVEg4MDM1X1BIWV9JRGAsIGBBVEg5MzMxX1BIWV9JRGAsIGBJUFE1MDE4X1BIWV9JRGAsIGFuZCBgUUNBOTU2MV9QSFlfSURgLiBTZWVtcyBsaWtlIGEgc3RhbmRhcmQgbGlzdCBmb3Igd29ya2luZyB3aXRoIEFUODAzWCBkZXZpY2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBBVEg4MDM1X1BIWV9JRGAgcmlnaHQgbm93LiBOZWVkIHRvIGNoZWNrIHdoYXQgdGhhdCBzcGVjaWZpYyBpZGVudGlmaWVyIGFjdHVhbGx5IHJlcHJlc2VudHMuIEdvdHRhIGtub3cgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NzQ5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NTkuNjEwNDg4NzUzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgyODY1ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBBVEg4MDM1X1BIWV9JRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05NC0jZGVmaW5lIEFUSDgwMzJfUEhZX0lEXFx0XFx0XFx0XFx0MHgwMDRkZDAyM1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjk1OiNkZWZpbmUgQVRIODAzNV9QSFlfSURcXHRcXHRcXHRcXHQweDAwNGRkMDcyXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtOTYtI2RlZmluZSBBVDgwMzBfUEhZX0lEX01BU0tcXHRcXHRcXHQweGZmZmZmZmVmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjAzLjk5MzM2MTk1MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI1OTEwOTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBhdDgwM3ggUEhZIERyaXZlciB2aWEgVVNCKipcblxuT2theSwgc28gaWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSB0aGF0IGlkZW50aWZpZXMgYXMgYG1kaW8tbXZ1c2JgIChWSUQgMHgxMjg2LCBQSUQgMHgxZmE0KSBhbmQgcmV0dXJucyBzcGVjaWZpYyB2YWx1ZXMg4oCTIGAweDAwNGRgIGFuZCBgMHhkMDcyYCDigJMgaW4gcmVzcG9uc2UgdG8gTURJTyByZWFkcyBmcm9tIHJlZ2lzdGVycyAyIGFuZCAzLCByZXNwZWN0aXZlbHksIHRoZW4gdGhlIGBhdDgwM3hgIGRyaXZlciB3aWxsIGdldCBwcm9iZWQuIE1ha2VzIHNlbnNlOyBgbWRpby1tdnVzYmAgaW50ZXJhY3RzIHdpdGggdGhlIE1ESU8gYnVzICp2aWEqIFVTQi5cblxuTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBxdWlja2x5IGdsYW5jaW5nIGF0IGBtdnVzYl9tZGlvX3JlYWRgIGluIGBtZGlvLW12dXNiLmNgOlxuXG5gYGBjXG5zdGF0aWMgaW50IG12dXNiX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZylcbntcblx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuXHRpbnQgZXJyLCBhbGVuO1xuXG5cdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG5cblx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcblx0XHRcdCAgIG12dXNiLVx1MDAzZWJ1ZiwgNiwgXHUwMDI2YWxlbiwgMTAwKTtcblx0aWYgKGVycilcblx0XHRyZXR1cm4gZXJyO1xuXG5cdGVyciA9IHVzYl9idWxrX21zZyhtdnVzYi1cdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXHUwMDNldWRldiwgNiksXG5cdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG5cdGlmIChlcnIpXG5cdFx0cmV0dXJuIGVycjtcblxuXHRyZXR1cm4gbGUxNl90b19jcHUobXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcbn1cbmBgYFxuXG5ZZXAsIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjcmFmdGluZyB0aG9zZSBidWxrIG1lc3NhZ2UgcmVzcG9uc2VzLiBUaGlzIG1lYW5zIHRoZSBgYXQ4MDN4YCBQSFkgZHJpdmVyIGlzIGRlZmluaXRlbHkgd2l0aGluIHJlYWNoIGFuZCBmdXp6YWJsZSFcblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcbi1cdGlmIChwaHlkZXYtXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZW1kaW8ucmVzZXRfZ3Bpbykge1xuK1x0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfTk9MSU5LIFx1MDAyNlx1MDAyNiBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpKSB7XG5gYGBcblxuSW50ZXJlc3RpbmcuIEl0IHJlcGxhY2VzIGBwaHlkZXYtXHUwMDNlbWRpby5yZXNldF9ncGlvYCB3aXRoIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gQW5kIHRoYXQgZnVuY3Rpb24gY2hlY2tzIGZvciBgbWRpby1cdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXHUwMDNlcmVzZXRfY3RybGAuIFNvIHRoZSBjb25kaXRpb24gaXMgbm93IHRydWUgaWYgKmVpdGhlciogYHJlc2V0X2dwaW9gIG9yIGByZXNldF9jdHJsYCBpcyBwcmVzZW50LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgZnV6emFibGUgaW4gYSBtZWFuaW5nZnVsIHdheT9cblxuWWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgbG9naWMgd2l0aGluIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YC4gIFdoYXQgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM/IFdlJ2xsIG5lZWQgYENPTkZJR19BVDgwM1hfUEhZYCwgb2J2aW91c2x5LiAgVG8gZ2V0IHRoZXJlIHRocm91Z2ggVVNCLCB3ZSBhbHNvIG5lZWQgYENPTkZJR19NRElPX01WVVNCYCwgYENPTkZJR19VU0JgLCBhbmQgb2YgY291cnNlIGBDT05GSUdfUEhZTElCYC4gVGltZSB0byBjb25maXJtIHRoYXQgYEFUODAzWF9QSFlgIGlzIGF2YWlsYWJsZSBpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE2NCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDoxNC4yNTI0NzQyNDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTM5MDcxMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUODAzWF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0yPWNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjU6Y29uZmlnIEFUODAzWF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjE4LjQ0NjM5MjIwOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjM0ODQ3NjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBBVDgwM1hfUEhZIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBQSFkgZHJpdmVycywgc28gYGRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdgLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBBVDgwM1hfUEhZYC4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBzdXNwZWN0IHRoZXJlIG1heSBiZSBhIGNhc2NhZGUgb2YgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIGludm9sdmluZyBvdGhlciBQSFkgb3B0aW9ucywgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MsIG9yIGV2ZW4gc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyIGZlYXR1cmVzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHRoZXNlIHJlbGF0aW9uc2hpcHMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGdvYWwgaXMgdG8gZWl0aGVyIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiwgZGVidWcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgbG9vayBhdCBlbmFibGluZyBpdCBpZiBpdCdzIG5vdCBhbHJlYWR5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBvdGhlciBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDozNC43OTQ4NzIzNzVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBBVDgwM1hfUEhZXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1xcXCJcXG4gICA3OlxcdFxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQVI4MDMwLCBBUjgwMzEsIEFSODAzMywgQVI4MDM1LCBJUFE1MDE4IG1vZGVsXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBRQ0E4M1hYX1BIWVxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbiAgMTQ6XFx0XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIGludGVybmFsIFFDQTgzMzcoSW50ZXJuYWwgcWNhOGsgUEhZKSBtb2RlbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgUUNBODA4WF9QSFlcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjM0Ljc5NDk5NDU4NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA2Mzk1MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVndWxhdG9yeSBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyB0aGUgc2l0dWF0aW9uIGhpbmdlcyBvbiB0aGUgYFJFR1VMQVRPUmAuIFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHByb3Blcmx5LCBhbmQgdG8gZG8gdGhhdCwgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGFjdGl2YXRlIGBDT05GSUdfQVQ4MDNYX1BIWWAgYW5kIGBDT05GSUdfTURJT19NVlVTQmAuIE5vdywgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ESU9fTVZVU0JgIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBpdHMgcmVxdWlyZW1lbnRzIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgc3VjY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNDAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjQwLjEwMTM5MjgyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODYyMjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTURJT19NVlVTQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTA2PWNvbmZpZyBNRElPX0kyQ1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTE2OmNvbmZpZyBNRElPX01WVVNCXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBVU0IgdG8gTURJTyBBZGFwdGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDo0NC40ODAwMjA1NDFaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExOTQ4ODA1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkV4YW1pbmluZyB0aGUgTURJT19NVlVTQiBLY29uZmlnIEVudHJ5KipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgTURJT19NVlVTQmAuIE15IGZpcnN0IG1vdmUgaXMgdG8gb3BlbiB1cCBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlciwgcHJlc3VtYWJseSB0aGUgTWFydmVsbCBVU0IgTURJTy4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgbW9kdWxlIGlzIGVuYWJsZWQsIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhcmUgb24gb3RoZXIgY29tcG9uZW50cywgYW5kIGhvdyBpdCBpcyBsb2dpY2FsbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgbmV0d29yayBzdWJzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIGBLY29uZmlnYCBzdHJ1Y3R1cmUgaXMga2V5IHRvIGVmZmljaWVudCBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBsYXRlciBvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIFRoZSBoZWxwIHRleHQgLSBkb2VzIGl0IHByb3ZpZGUgY29udGV4dCBvciB3YXJuaW5ncz9cbiogICBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGRyaXZlcnMsIGxpa2UgVVNCIHN1YnN5c3RlbSBkcml2ZXJzIG9yIHBhcnRpY3VsYXIgUEhZIGRyaXZlcnM/XG4qICAgQ29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gcHJvY2Vzc29yIGFyY2hpdGVjdHVyZSBvciBvdGhlciBmZWF0dXJlcz9cbiogICBEZWZhdWx0IHNldHRpbmdzLCBpZiBhbnksIGFuZCB3aHkgdGhvc2UgZGVmYXVsdHMgd2VyZSBjaG9zZW4uXG4qICAgQW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgTURJTyBkcml2ZXJzIC0gYXJlIHRoZXJlIGNvbmZsaWN0cyBvciBvdmVybGFwcGluZyBmdW5jdGlvbmFsaXRpZXM/XG5cbkVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBob3cgYE1ESU9fTVZVU0JgIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZSwgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMToxNS42NzQ5MDQ2ODdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBTdXBwb3J0IEkyQyBiYXNlZCBQSFlzLiAgVGhpcyBwcm92aWRlcyBhIE1ESU8gYnVzIGJyaWRnZWRcXG4gMTExOlxcdFxcdCAgdG8gSTJDIHRvIGFsbG93IFBIWXMgY29ubmVjdGVkIGluIEkyQyBtb2RlIHRvIGJlIGFjY2Vzc2VkXFxuIDExMjpcXHRcXHQgIHVzaW5nIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS5cXG4gMTEzOlxcdFxcbiAxMTQ6XFx0XFx0ICBUaGlzIGlzIGxpYnJhcnkgbW9kZS5cXG4gMTE1OlxcdFxcbiAxMTY6XFx0Y29uZmlnIE1ESU9fTVZVU0JcXG4gMTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFVTQiB0byBNRElPIEFkYXB0ZXJcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAxMTk6XFx0XFx0aGVscFxcbiAxMjA6XFx0XFx0ICBBIFVTQiB0byBNRElPIGNvbnZlcnRlciBwcmVzZW50IG9uIGRldmVsb3BtZW50IGJvYXJkcyBmb3JcXG4gMTIxOlxcdFxcdCAgTWFydmVsbCdzIExpbmsgU3RyZWV0IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcy5cXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE1ESU9fTVNDQ19NSUlNXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIE1JSU0gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAxMjY6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuIDEyNzpcXHRcXHRoZWxwXFxuIDEyODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNSUlNIChNRElPKSBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIG5ldHdvcmtcXG4gMTI5OlxcdFxcdCAgc3dpdGNoZXMgb2YgdGhlIE1pY3Jvc2VtaSBTb0NzOyBpdCBpcyByZWNvbW1lbmRlZCB0byBzd2l0Y2ggb25cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTE6MTUuNjc1MTAxMDA3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODgzMzE1OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYE1ESU9fTVZVU0JgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAsIHdoaWNoIGlzbid0IGVudGlyZWx5IHN1cnByaXNpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEFyZSB0aGVyZSBvdGhlciBlbnRyeSBwb2ludHMgYmVzaWRlcyB0aGUgb2J2aW91cz8gUmlnaHQsIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyBjbGVhcmx5IHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgbmV0d29yayBsaW5rIHN0YXRlIGNoYW5nZXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBwaHlfc3RhdGVfbWFjaGluZWAsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHkuY2AsIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgUEhZIHN0YXRlIGFuZCBjYWxscyBgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkocGh5ZGV2KWAuIFRoYXQncyB0aGUga2V5LiBMZXQncyB0cmFjZSBpdCBiYWNrIGZyb20gYHBoeV9zdGF0ZV9tYWNoaW5lYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxNjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMTozMC41NTg0MjE0ODVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg2MjE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlua19jaGFuZ2Vfbm90aWZ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9OTYwPXN0YXRpYyBpbnQgYXFjczEwOV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy05NjktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo5NzA6c3RhdGljIHZvaWQgYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtOTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MTE4MT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXFyX2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjM1LVxcdC5nZXRfc3RhdHNcXHQ9IGFxcjEwN19nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjM2OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTIzNy1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjItXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjYzOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI2NC1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyODktXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTExX2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjkxLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMxNi1cXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTMxNzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTgtXFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzUyLVxcdC5nZXRfc3RhdHNcXHQ9IGFxcjEwN19nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzUzOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTM1NC1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNzgtXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNzk6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzgwLVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzOTktXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MDA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDAxLVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjAtXFx0LmdldF9zdGF0cyAgICAgID0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MjE6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIyLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0Ni1cXHQuZ2V0X3N0YXRzICAgICAgPSBhcXIxMDdfZ2V0X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQ0NzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NDgtXFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDczLVxcdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExMV9nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc0OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3NS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MDAtXFx0LmdldF9mZWF0dXJlc1xcdD0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTAxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwMi1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MjctXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTI4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUyOS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTMtXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE1NTQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTU1LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jPTQ4PXN0YXRpYyBpbnQgYXNpeF9heDg4NzcyYV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODUtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6ODY6c3RhdGljIHZvaWQgYXNpeF9heDg4NzcyYV9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy04Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz05Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXNpeF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNS1cXHQuc29mdF9yZXNldFxcdD0gYXNpeF9zb2Z0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwNjpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhc2l4X2F4ODg3NzJhX2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDctfSwge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9ODg9ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtOTEtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6OTI6ICAgIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05My0gICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM9MTIyNT1zdGF0aWMgdm9pZCBiY201NHh4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzMi1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMjMzOnN0YXRpYyB2b2lkIGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xNDY2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBicm9hZGNvbV9kcml2ZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDc3LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0Nzg6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ3OS19LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDg5LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0OTA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ5MS19LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTAyLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1MDM6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUwNC1cXHQuc3VzcGVuZFxcdD0gYmNtNTR4eF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUyMC1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTIxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MjItXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTMzLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1MzQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUzNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NDgtXFx0LnByb2JlXFx0XFx0PSBiY201NDYxNnNfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU0OTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTUwLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2My1cXHQucmVzdW1lXFx0XFx0PSBnZW5waHlfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1NjQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2NS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NzctXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU3ODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTc5LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU5NS1cXHQucmVzdW1lXFx0XFx0PSBiY201NHh4X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTk2OlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1OTctXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjEzLVxcdC5yZXN1bWVcXHRcXHQ9IGJjbTU0eHhfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2MTQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTYxNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MjYtXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTYyNzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjI4LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTYzOS1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjQwOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NDEtXFx0LnN1c3BlbmRcXHQ9IGJjbTU0eHhfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NTQtXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTY1NTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjU2LVxcdC5zdXNwZW5kXFx0PSBiY201NHh4X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjY5LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2NzA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY3MS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MDktXFx0LnByb2JlXFx0XFx0PSBiY201NHh4X3BoeV9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzEwOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MTEtXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzIzLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE3MjQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTcyNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MzctXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTczODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzM5LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTc1MC1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzUxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3NTItfSB9O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz05MzU9c3RhdGljIGludCBkcDgzODY3X3BoeV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NjctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5Njg6c3RhdGljIHZvaWQgZHA4Mzg2N19saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTExODA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjA2OlxcdFxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBkcDgzODY3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMDctXFx0XFx0LnNldF9sb29wYmFja1xcdD0gZHA4Mzg2N19sb29wYmFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYz0zNzg9c3RhdGljIGludCBsYW44OHh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzozODU6c3RhdGljIHZvaWQgbGFuODh4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy0zOTctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjM5ODpcXHRcXHRcXHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy00MDEtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjQwMjpcXHRcXHRcXHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTQwMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDMyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo0MzM6bGlua19jaGFuZ2Vfbm90aWZ5X2ZhaWxlZDpcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDM0LVxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiTGluayBjaGFuZ2UgcHJvY2VzcyBmYWlsZWQgJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jPTU0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3BoeV9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjQtXFx0LmNvbmZpZ19hbmVnXFx0PSBsYW44OHh4X2NvbmZpZ19hbmVnLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo1NjU6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGxhbjg4eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjYtXFx0LnNvZnRfcmVzZXRcXHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODgzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg0OiAqIHl0ODUzMV9saW5rX2NoYW5nZV9ub3RpZnkoKSAtIEFkanVzdCB0aGUgdHggY2xvY2sgZGlyZWN0aW9uIGFjY29yZGluZyB0b1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODg1LSAqIHRoZSBjdXJyZW50IHNwZWVkIGFuZCBkdHMgY29uZmlnLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTEtICovXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4OTI6c3RhdGljIHZvaWQgeXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTA4LVxcdFxcdC5zZXRfd29sXFx0PSB5dDg1MzFfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwOTpcXHRcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0geXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExMC1cXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IHl0ODUyMV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oPTQ4Mj1zdGF0aWMgaW5saW5lIHZvaWQgdnNjODU4NF9jb25maWdfbWFjc2VjX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaC00ODctI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg6NDg4OnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4OS12b2lkIHZzYzg1ODRfY29uZmlnX3RzX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg9NDk0PWlycXJldHVybl90IHZzYzg1ODRfaGFuZGxlX3RzX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk1LSNlbHNlXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oOjQ5NjpzdGF0aWMgaW5saW5lIHZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTc3LVxcdC5nZXRfc3RhdHMgICAgICA9IFxcdTAwMjZ2c2M4NXh4X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTc4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBcXHUwMDI2dnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk3OS1cXHQuaW5iYW5kX2NhcHMgICAgPSB2c2M4NXh4X2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz05NjY9c3RhdGljIGludCB2c2M4NXh4X3RzX2VuZ2luZV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgb25lX3N0ZXApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMjktXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMDMwOnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzNzk9c3RhdGljIGludCBueHBfYzQ1X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzkyOnN0YXRpYyB2b2lkIHRqYTExMjBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTIwNzM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG54cF9jNDVfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMjEzNS1cXHRcXHQucmVhZF9zdGF0dXNcXHRcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjIxMzY6XFx0XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gdGphMTEyMF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxMzctXFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMjE2MS1cXHRcXHQucmVhZF9zdGF0dXNcXHRcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjIxNjI6XFx0XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gdGphMTEyMF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxNjMtXFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9NjQ9c3RhdGljIHZvaWQgcGh5X3Byb2Nlc3Nfc3RhdGVfY2hhbmdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNzAtXFx0XFx0XFx0ICAgcGh5X3N0YXRlX3RvX3N0cihwaHlkZXYtXFx1MDAzZXN0YXRlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjcxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGlua19jaGFuZ2Vfbm90aWZ5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo3MjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGlua19jaGFuZ2Vfbm90aWZ5KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTczLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTQ4NT1zdGF0aWMgaW50IGF0ODAzeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMwLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjUzMTpzdGF0aWMgdm9pZCBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTEwMjI9c3RhdGljIGludCBpcHE1MDE4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDYzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEwNjQ6c3RhdGljIHZvaWQgaXBxNTAxOF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTExMTM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGF0ODAzeF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDEtXFx0LmNvbmZpZ19pbml0XFx0XFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE0MjpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDMtXFx0LnNldF93b2xcXHRcXHQ9IGF0ODAzeF9zZXRfd29sLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4MC1cXHQuY29uZmlnX2luaXRcXHRcXHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTgxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4Mi1cXHQuc3VzcGVuZFxcdFxcdD0gYXQ4MDN4X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjEwLVxcdC5jb25maWdfaW5pdFxcdFxcdD0gaXBxNTAxOF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjExOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGlwcTUwMThfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTItXFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBhdDgwM3hfcmVhZF9zdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9MjU3PXN0YXRpYyBpbnQgcWNhODA4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI4OS1cXHRcXHQgKlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTA6XFx0XFx0ICogdGhlIHJlYXNvbiBmb3Igbm90IHB1dHRpbmcgdGhpcyBjb2RlIGludG8gdGhlIGZ1bmN0aW9uIGxpbmtfY2hhbmdlX25vdGlmeSBpc1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTEtXFx0XFx0ICogdGhlIGNvcm5lciBjYXNlIHdoZXJlIHRoZSBsaW5rIHBhcnRuZXIgaXMgYWxzbyB0aGUgcWNhODA4MSBQSFkgYW5kIHRoZSBzZWVkXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9Mzg3PXN0YXRpYyBpbnQgcWNhODA4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxMi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDEzOnN0YXRpYyB2b2lkIHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9NjQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDh4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2Ny1cXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzXFx0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjktXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gcWNhODA4eF9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MTI2PXN0YXRpYyBpbnQgcWNhODMyN19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MTM4OnN0YXRpYyB2b2lkIHFjYTgzeHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4M3h4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzMi1cXHQvKiBQSFlfR0JJVF9GRUFUVVJFUyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzM6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gcWNhODN4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzNC1cXHQucHJvYmVcXHRcXHRcXHQ9IHFjYTgzeHhfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ3LVxcdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0ODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ5LVxcdC5wcm9iZVxcdFxcdFxcdD0gcWNhODN4eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jPTg2PXN0YXRpYyBpbnQgcm9ja2NoaXBfaW50ZWdyYXRlZF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNC1cXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYzoxMDU6c3RhdGljIHZvaWQgcm9ja2NoaXBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jPTE3Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcm9ja2NoaXBfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTc5LVxcdC5mbGFnc1xcdFxcdFxcdD0gMCxcXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYzoxODA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gcm9ja2NoaXBfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTE4MS1cXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExMzA9c3RydWN0IHBoeV9kcml2ZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQyLVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTI0MzpcXHQgKiBAbGlua19jaGFuZ2Vfbm90aWZ5OiBDYWxsZWQgdG8gaW5mb3JtIGEgUEhZIGRldmljZSBkcml2ZXJcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEyNDQtXFx0ICogd2hlbiB0aGUgY29yZSBpcyBhYm91dCB0byBjaGFuZ2UgdGhlIGxpbmsgc3RhdGUuIFRoaXNcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI0OS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNTA6XFx0dm9pZCAoKmxpbmtfY2hhbmdlX25vdGlmeSkoc3RydWN0IHBoeV9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9waHkuaC0xMjUxLVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjItICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo0NjM6ICAgIHVuc2FmZSBleHRlcm4gXFxcIkNcXFwiIGZuIGxpbmtfY2hhbmdlX25vdGlmeV9jYWxsYmFjayhwaHlkZXY6ICptdXQgYmluZGluZ3M6OnBoeV9kZXZpY2UpIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2NC0gICAgICAgIC8vIFNBRkVUWTogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgb25seSBpbiBjb250ZXh0c1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjctICAgICAgICBsZXQgZGV2ID0gdW5zYWZlIHsgRGV2aWNlOjpmcm9tX3JhdyhwaHlkZXYpIH07XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo0Njg6ICAgICAgICBUOjpsaW5rX2NoYW5nZV9ub3RpZnkoZGV2KTtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2OS0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz00OTQ9cHViIGNvbnN0IGZuIGNyZWF0ZV9waHlfZHJpdmVyXFx1MDAzY1Q6IERyaXZlclxcdTAwM2UoKSAtXFx1MDAzZSBEcml2ZXJWVGFibGUge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01NTAtICAgICAgICB9LFxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NTUxOiAgICAgICAgbGlua19jaGFuZ2Vfbm90aWZ5OiBpZiBUOjpIQVNfTElOS19DSEFOR0VfTk9USUZZIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MjogICAgICAgICAgICBTb21lKEFkYXB0ZXI6OlxcdTAwM2NUXFx1MDAzZTo6bGlua19jaGFuZ2Vfbm90aWZ5X2NhbGxiYWNrKVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTUzLSAgICAgICAgfSBlbHNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NjI2PSAgICBmbiB3cml0ZV9tbWQoX2RldjogXFx1MDAyNm11dCBEZXZpY2UsIF9kZXZudW06IHU4LCBfcmVnbnVtOiB1MTYsIF92YWw6IHUxNikgLVxcdTAwM2UgUmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMwLSAgICAvLy8gQ2FsbGJhY2sgZm9yIG5vdGlmaWNhdGlvbiBvZiBsaW5rIGNoYW5nZS5cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjYzMTogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSB7fVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMyLX1cXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzPTIwPSAgICBwdWIgdHJhaXQgU2VhbGVkIHt9XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycy0zMC0vLy8gYGBgaWdub3JlXFxucnVzdC9rZXJuZWwvbmV0L3BoeS9yZWcucnM6MzE6Ly8vIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS9yZWcucnMtMzItLy8vICAgICAvLyByZWFkIEMyMiBCTUNSIHJlZ2lzdGVyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjExOjM2Ljc3NzA0OTQ1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTYyODI1NTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFN0cmF0ZWd5IGZvciBSZWFjaGluZyBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhhdCBgcGh5X3Byb2Nlc3Nfc3RhdGVfY2hhbmdlYCBjYWxscyBgbGlua19jaGFuZ2Vfbm90aWZ5YCwgYW5kIHRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGBwaHlfc3RhdGVfbWFjaGluZWAuIFRoaXMgc3RhdGUgbWFjaGluZSBpcyBhIGRlbGF5ZWQgd29yayBmdW5jdGlvbiwgcnVubmluZyBwZXJpb2RpY2FsbHkgb3Igd2hlbiBhbiBldmVudCB0cmlnZ2VycyBpdC4gVGh1cywgaWYgSSBjYW4gZ2V0IHRoZSBQSFkgcmVnaXN0ZXJlZCBhbmQgYXR0YWNoZWQgdG8gYSBuZXR3b3JrIGRldmljZSwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgd2lsbCBydW4gYW5kIHRoYXQncyBob3cgdG8gdHJpZ2dlciB0aGUgbm90aWZ5IGZ1bmN0aW9uLlxuXG5UbyBhdHRhY2ggYSBQSFksIGBwaHlfY29ubmVjdGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgdXNlZCwgYW5kIG5ldCBkcml2ZXJzIGhhbmRsZSB0aGlzLiBTeXprYWxsZXIgdXNlcyB2aXJ0dWFsIGRldmljZXMgbGlrZSBgdHVuYC9gdGFwYCBvciBgdmV0aGAuIEhtbSwgZG8gdmlydHVhbCBkZXZpY2VzIGV2ZW4gKnVzZSogUEhZcz8gVXN1YWxseSBub3QuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHNvbWUgbWlnaHQsIG9yIEkgY291bGQganVzdCBnbyBmb3IgYSAqcmVhbCogbmV0IGRldmljZSBkcml2ZXIsIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCISBUaGluZ3MgbGlrZSBgc21zYzk1eHhgLCBgYXNpeGAsIG9yIGBjZGNfZXRoZXJgIFVTQiBldGhlcm5ldCBhZGFwdGVycy5cblxuQWhhISBJZiBTeXprYWxsZXIgZW11bGF0ZXMgYSBVU0IgZXRoZXJuZXQgYWRhcHRlciwgaXQgd2lsbCByZWdpc3RlciBhIG5ldCBkZXZpY2UgKmFuZCogYSBQSFkhIFRoYXQncyBhIGdvb2QgYXBwcm9hY2guIEJ1dCwgSSB3YW50IHRvIHRhcmdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAuXG5cbklmIEkgZW11bGF0ZSBgbWRpby1tdnVzYmAsIGl0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cy4gQ2FuIEkgYXR0YWNoIGEgUEhZIG9uIHRoaXMgYnVzIHRvIGEgbmV0IGRldmljZT8gTm90IGF1dG9tYXRpY2FsbHkuIE5vLCBJIG5lZWQgYSBuZXQgZGV2aWNlIGRyaXZlciB0aGF0IGxvb2tzIGZvciBpdCwgb3IgSSB1c2UgZGV2aWNlIHRyZWUuIFdhaXQsIGlmIHRoZSBQSFkgaXMgcmVnaXN0ZXJlZCwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgb25seSBydW5zIGlmIHRoZSBQSFkgaXMgYWN0dWFsbHkgYXR0YWNoZWQgdG8gYSBuZXQgZGV2aWNlLCBtZWFuaW5nIGBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ICE9IE5VTExgLlxuXG5TbyBob3cgZG9lcyBhIFBIWSBvbiBgbWRpby1tdnVzYmAgZ2V0IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZT8gSW4gc3l6a2FsbGVyLCB0aGVyZSdzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIG9yIHNpbWlsYXIsIGJ1dCB3aGF0IGFib3V0IGBpb2N0bChTSU9DU01JSVJFRylgPyBObywgdGhlIGtleSBpcyBzdGlsbCB0aGF0IGBsaW5rX2NoYW5nZV9ub3RpZnlgIGNvbWVzIGZyb20gYHBoeV9zdGF0ZV9tYWNoaW5lYC4gVGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gYXR0YWNoIHRoZSBQSFkgdG8gdGhlIG5ldCBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UuIGBwaHlfYXR0YWNoYCBpcyBhIGtlcm5lbCBBUEkuXG5cbkJ1dCB3YWl0LCBgbWRpby1tdnVzYmAgaXMganVzdCBhbiBNRElPIGJ1cy4gV2l0aG91dCBhIG5ldCBkZXZpY2UsIGBwaHlfc3RhdGVfbWFjaGluZWAgd29uJ3QgcnVuLiBEb2VzIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBvbmx5IHJ1biB3aGVuIGF0dGFjaGVkP1xuXG5MZXQncyBleHBsb3JlIG90aGVyIGF2ZW51ZXMuLi4gV2hhdCBhYm91dCBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpPyBEU0Egc3dpdGNoZXMgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzZXMgYW5kIGF0dGFjaCBQSFlzLiBJbnRlcmVzdGluZy5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIFVTQiBhcHByb2FjaC4gSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGRldmljZSwgaXQgY291bGQgYmUgYSBVU0IgZXRoZXJuZXQgZG9uZ2xlIHVzaW5nIHRoZSBgYXQ4MDN4YCBQSFkuIFBlcmZlY3QhIFVTQiBldGhlcm5ldCBkb25nbGVzIHVzdWFsbHkgaGF2ZSB0aGVpciBvd24gTURJTyBidXMgYW5kIHByb2JlIGZvciBQSFlzIG9uICppdCouXG5cblllcyEgSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGV0aGVybmV0IGRvbmdsZSAobGlrZSBgc21zYzk1eHhgIG9yIGBsYW43OHh4YCksIHRoZSBkcml2ZXIgd2lsbCByZWdpc3RlciBpdHMgb3duIE1ESU8gYnVzIGFuZCBzY2FuIGZvciBQSFlzLiBUaGVuLCBpZiBTeXprYWxsZXIgcmVzcG9uZHMgdG8gdGhlIE1ESU8gcmVhZCB3aXRoIHRoZSBgYXQ4MDN4YCBQSFkgSUQsIHRoZSBgYXQ4MDN4YCBkcml2ZXIgd2lsbCBwcm9iZSBhbmQgYXR0YWNoIGl0c2VsZiB0byB0aGUgVVNCIGV0aGVybmV0IG5ldCBkZXZpY2UhIEJpbmdvIVxuXG5MZXQncyBjaGVjayBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgdG8gY29uZmlybSFcblxuXG4iLCJJbnB1dFRva2VucyI6NTE2MzcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTE6NTguNDA1MzA4ODRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjIwOTQzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDg9TURJT1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1MC0gIGRldm1fbWRpb2J1c19hbGxvY19zaXplKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUxOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q9MTI9ZGV2aWNlICh0aGUgc2FtZSBvYmplY3RzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgdmlhXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q6MTM6YGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKWBgKS4gTUFDLXNpZGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIHN1Y2ggYXNcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q9Nz1UaGUgUEhZcyBvbiBhbiBNRElPIGJ1cyBbcGh5XSBhcmUgcHJvYmVkIGFuZCByZWdpc3RlcmVkIHVzaW5nXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0LTktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTYtICAgZHJpdmVyIG5lZWRzLCBzZXR1cCB0aGUgbWlpX2J1cyBzdHJ1Y3R1cmUsIGFuZCByZWdpc3RlciB3aXRoIHRoZSBQQUwgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSdzIGEgcmVtb3ZlIGZ1bmN0aW9uIHRvIHVuZG8gYWxsIG9mXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTMyLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMjE9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozNDI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzk0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9Njg1PXN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjc1NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzE9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MDc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jPTEyOTA9c3RhdGljIGludCBncmV0aF9tZGlvX2luaXQoc3RydWN0IGdyZXRoX3ByaXZhdGUgKmdyZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTMwNzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjQwMjc6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjgtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz0xMDYxPXN0YXRpYyBpbnQgYXUxMDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYzoxMjIyOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz0zNDI4PXN0YXRpYyBpbnQgeGdiZV9waHlfaW5pdChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXFx0c25wcmludGYobWlpLVxcdTAwM2VpZCwgc2l6ZW9mKG1paS1cXHUwMDNlaWQpLCBcXFwiJXNcXFwiLCBkZXZfbmFtZShwZGF0YS1cXHUwMDNlZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzE4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcXHRcXHRkZXZfZXJyKHBkYXRhLVxcdTAwM2VkZXYsIFxcXCJtZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzIxLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExOC1cXHRtZGlvX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTk6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4OS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cXHRcXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVxcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4OlxcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcXHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgYXhfbG9jYWwtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTItXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNjA6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jPTIxMT1zdHJ1Y3QgbWlpX2J1cyAqYmNtYV9tZGlvX21paV9yZWdpc3RlcihzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jOjIzNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXFx0b2Zfbm9kZV9wdXQobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cXHRcXHRwaHlfbmFtZSA9IFxcXCJleHRlcm5hbCBSdk1JSVxcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MjM0OlxcdFxcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICdtYXgtc3BlZWQnXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVxcdFxcdCAqIFBIWSBwcm9wZXJ0eSBmb3IgdXMsIGVmZmVjdGl2ZWx5IGxpbWl0aW5nIHRoZSBQSFkgc3VwcG9ydGVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIyMjg6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XFx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXFx1MDAzZW1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVxcdGlmIChpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA5NzpzdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVxcdGlmIChtZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcXHRcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEyMjpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcXHRlcnIgPSBtYWNiX21kaW9idXNfcmVnaXN0ZXIoYnAsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBkYi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1OlxcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWRpb2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTIwMj1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MjM3OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVxcdTAwM2VtaWlfYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXFx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTEyMz1pbnQgaGNsZ2VfbWFjX21kaW9fY29uZmlnKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cXHRtZGlvX2J1cy1cXHUwMDNlcGh5X21hc2sgPSB+KDFVIFxcdTAwM2NcXHUwMDNjIG1hYy1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cXHR9IGVsc2UgaWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTkyLVxcdFxcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU5MzpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5NC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI1NjA9c3RhdGljIGludCBlbWFjX2R0X21kaW9fcHJvYmUoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVxcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzXFxcIiwgZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1ODU6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cXHRpZiAocmVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXFx0YWRhcHRlci1cXHUwMDNlbWlpX2J1cyA9IGJ1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5OlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVxcdFxcdCBwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VuYW1lLCBwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XFx0aWYgKG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWlpX2J1cykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cXHRcXHRlcnIgPSAtRU5YSU87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jPTI4Mz1zdGF0aWMgaW50IG9yaW9uX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVxcdC8qIEZvciB0aGUgcGxhdGZvcm1zIG5vdCBzdXBwb3J0aW5nIERUL0FDUEkgZmFsbC1iYWNrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XFx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4My1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cXHRpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5md25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg4LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNC1cXHRwZXAtXFx1MDAzZXNtaV9idXMtXFx1MDAzZXBoeV9tYXNrID0gMHhmZmZmZmZmZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVxcdTAwM2VzbWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzNy1cXHRkZXZfZGJnKGV0aC1cXHUwMDNlZGV2LCBcXFwiTURDIGlzIHJ1bm5pbmcgb24gJWQgSHpcXFxcblxcXCIsIE1EQ19NQVhfRlJFUSAvIGV0aC1cXHUwMDNlbWRjX2RpdmlkZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGV0aC1cXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXFx1MDAzZW1paSwgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM9Mjg3PWludCBtbHhiZl9naWdlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG1seGJmX2dpZ2UgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jOjMzMzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzM0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYz0yNTM9aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYzoyNzM6XFx0ZXJyID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGZiZC1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jPTEwMzY9c3RhdGljIGludCBrczg4NTFfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3Qga3M4ODUxX25ldCAqa3MsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTQtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTU6XFx0XFx0Z290byBlcnJfbWRpb2J1c19yZWdpc3RlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjAtXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEyOjAyLjcyNzQxMzU3OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE4ODUxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIExBTjc4eHggRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBsYW43OHh4YCBkcml2ZXIuLi4gcmlnaHQsIGl0IHVzZXMgYG1kaW9idXNfcmVnaXN0ZXJgLiBNeSBpbnN0aW5jdHMgaW1tZWRpYXRlbHkgbGVkIG1lIHRvIHRoaW5rIGl0IHNob3VsZCBiZSB1c2luZyB0aGUgTURJTyBidXMgZm9yIFBIWSBpbnRlcmFjdGlvbi4gTGV0J3MgZGlnIGluIGFuZCB2ZXJpZnkgdGhhdC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZTsgc3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkncmUgaGFuZGxpbmcgUEhZIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcsIHNvIGBtZGlvYnVzX3JlZ2lzdGVyYCBzaG91bGQgYmUgdGhlIGtleSBmdW5jdGlvbiB0byBzZWFyY2ggZm9yIGluIHRoYXQgZmlsZS4gVGhhdCBzaG91bGQgZ2V0IG1lIHRvIHRoZSByaWdodCBzZWN0aW9uIG9mIGNvZGUgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjowNi4wNDYyNzAzMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODMwMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXFx1MDAzZW1kaW9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTI6MDYuNTA0MTA3OThaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1NjI0NTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBuZXR3b3JrIGRyaXZlcnMgYXJlIHNldHRpbmcgdGhlbXNlbHZlcyB1cC4gSSBzZWUgdGhhdCB0aGUgYGxhbjc4eHhgIGRyaXZlciBpcyB1c2luZyBgb2ZfbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQncyBhIHNvbGlkLCBzdGFuZGFyZCBhcHByb2FjaCwgbGV2ZXJhZ2luZyB0aGUgZGV2aWNlIHRyZWUgZm9yIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZy4uLiB3aGF0IGFib3V0IHRoZSBgc21zYzk1eHhgIGRyaXZlcj8gQXJlIHRoZXkgaGFuZGxpbmcgaXQgdGhlIHNhbWUgd2F5PyBBcmUgdGhleSBmb2xsb3dpbmcgdGhlIHNhbWUgYmVzdCBwcmFjdGljZXMsIG9yIGFyZSB0aGV5IGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQ/IEkgbmVlZCB0byBzZWUgaWYgdGhleSdyZSBhbHNvIHVzaW5nIHRoZSBkZXZpY2UgdHJlZSBhbmQgYG9mX21kaW9idXNfcmVnaXN0ZXJgLCBvciBpZiB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZWlyIG93biBjdXN0b20gTURJTyBidXMgcmVnaXN0cmF0aW9uIGxvZ2ljLiBUaGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHBvdGVudGlhbCBpc3N1ZXMgb3IgZGlmZmVyZW5jZXMgaW4gYmVoYXZpb3IgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBlc3BlY2lhbGx5IGlmIEknbSBsb29raW5nIGF0IGNvbnNvbGlkYXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgZm9yIGVuc3VyaW5nIGNvbnNpc3RlbnQgYW5kIHJlbGlhYmxlIG5ldHdvcmsgaW50ZXJmYWNlIGJlaGF2aW9yLiBMZXQncyBzZWUuLi4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgdGhhdCBvdGhlciBkcml2ZXIncyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY0NTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoxMS4xNjAzNTc0NDNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjQ2NzU0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoxMy43MjUwNDM5NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNjUxNDA3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXVyZWthISBGdXp6aW5nIHRoZSBgYXQ4MDN4YCBQSFkgdmlhIGBzbXNjOTV4eGAhKipcblxuT2theSwgdGhpcyBpcyBicmlsbGlhbnQhIEl0IGp1c3QgaGl0IG1lLiBUaGUgYHNtc2M5NXh4YCBkcml2ZXIgdXNlcyBgbWRpb2J1c19yZWdpc3RlcmAgd2l0aCBgcGRhdGEtXHUwMDNlbWRpb2J1c2AuIFRoYXQncyB0aGUga2V5ISBJZiBzeXprYWxsZXIgaXMgZW11bGF0aW5nIGFuIGBzbXNjOTV4eGAgVVNCIGRldmljZSwgYW5kIGl0J3MgcmVnaXN0ZXJpbmcgYW4gTURJTyBidXMgYW5kIHNjYW5uaW5nIGZvciBQSFlzLCB3ZSdyZSBpbiBidXNpbmVzcy4gQW5kIGhlcmUncyB0aGUga2lja2VyOiBpZiB3ZSByZXNwb25kIHRvIHRoZSBNRElPIHJlYWQgd2l0aCB0aGUgYGF0ODAzeGAgUEhZIElELCBsZXQncyBzYXkgYEFUSDgwMzVfUEhZX0lEYCwgdGhlIGBhdDgwM3hgIGRyaXZlciAqd2lsbCogYmUgcHJvYmVkISBJdCdzIHJpZ2h0IHRoZXJlLCBjb25uZWN0aW5nIHRvIHRoYXQgTURJTyBidXMuXG5cblRoZW4gdGhlIGBzbXNjOTV4eGAgd2lsbCBuYXR1cmFsbHkgYXR0YWNoIHRoYXQgUEhZIHRvIGl0cyBuZXQgZGV2aWNlLiBUaGVuLCB3aXRoIHRoZSBQSFkgYXR0YWNoZWQgYW5kIGFjdGl2ZSwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgd2lsbCBraWNrIGluLCBhbmQgYm9vbSwgd2UgZ2V0IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCEgVGhhdCdzIGV4YWN0bHkgd2hlcmUgd2Ugd2FudCB0byBiZS4gVGhpcyBpcyBhIHBlcmZlY3QsIGZ1enphYmxlIHBhdGghXG5cbkFscmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgc21zYzk1eHguY2AgdG8gY29uZmlybSBpdCBhY3R1YWxseSBkb2VzIHNjYW4gZm9yIFBIWXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QsIGJ1dCB0aGlzIGZlZWxzIGluY3JlZGlibHkgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjkwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoyNi4wOTAxODkyMDlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzA6XFx0XFx0XFx0cGRhdGEtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxdSBcXHUwMDNjXFx1MDAzYyBTTVNDOTVYWF9JTlRFUk5BTF9QSFlfSUQpO1xcbjEyMzE6XFx0XFxuMTIzMjpcXHRcXHRwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlcHJpdiA9IGRldjtcXG4xMjMzOlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZWFkID0gc21zYzk1eHhfbWRpb2J1c19yZWFkO1xcbjEyMzQ6XFx0XFx0cGRhdGEtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXdyaXRlID0gc21zYzk1eHhfbWRpb2J1c193cml0ZTtcXG4xMjM1OlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZXNldCA9IHNtc2M5NXh4X21kaW9idXNfcmVzZXQ7XFxuMTIzNjpcXHRcXHRwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJzbXNjOTV4eC1tZGlvYnVzXFxcIjtcXG4xMjM3OlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VwYXJlbnQgPSBcXHUwMDI2ZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXY7XFxuMTIzODpcXHRcXG4xMjM5OlxcdFxcdHNucHJpbnRmKHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVJSQVlfU0laRShwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlaWQpLFxcbjEyNDA6XFx0XFx0XFx0IFxcXCJ1c2ItJTAzZDolMDNkXFxcIiwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbjEyNDE6XFx0XFxuMTI0MjpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG4xMjQzOlxcdFxcdGlmIChyZXQpIHtcXG4xMjQ0OlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgcmVnaXN0ZXIgTURJTyBidXNcXFxcblxcXCIpO1xcbjEyNDU6XFx0XFx0XFx0Z290byBmcmVlX21kaW87XFxuMTI0NjpcXHRcXHR9XFxuMTI0NzpcXHRcXG4xMjQ4OlxcdFxcdHBkYXRhLVxcdTAwM2VwaHlkZXYgPSBwaHlfZmluZF9maXJzdChwZGF0YS1cXHUwMDNlbWRpb2J1cyk7XFxuMTI0OTpcXHRcXHRpZiAoIXBkYXRhLVxcdTAwM2VwaHlkZXYpIHtcXG4xMjUwOlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJubyBQSFkgZm91bmRcXFxcblxcXCIpO1xcbjEyNTE6XFx0XFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4xMjUyOlxcdFxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9tZGlvO1xcbjEyNTM6XFx0XFx0fVxcbjEyNTQ6XFx0XFxuMTI1NTpcXHRcXHRwZGF0YS1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlfaXJxO1xcbjEyNTY6XFx0XFx0cGRhdGEtXFx1MDAzZXBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSBwZGF0YS1cXHUwMDNlaXNfaW50ZXJuYWxfcGh5O1xcbjEyNTc6XFx0XFxuMTI1ODpcXHRcXHQvKiBkZXRlY3QgZGV2aWNlIHJldmlzaW9uIGFzIGRpZmZlcmVudCBmZWF0dXJlcyBtYXkgYmUgYXZhaWxhYmxlICovXFxuMTI1OTpcXHRcXHRyZXQgPSBzbXNjOTV4eF9yZWFkX3JlZyhkZXYsIElEX1JFViwgXFx1MDAyNnZhbCk7XFxuMTI2MDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMjYxOlxcdFxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9tZGlvO1xcbjEyNjI6XFx0XFxuMTI2MzpcXHRcXHR2YWwgXFx1MDAzZVxcdTAwM2U9IDE2O1xcbjEyNjQ6XFx0XFx0aWYgKCh2YWwgPT0gSURfUkVWX0NISVBfSURfOTUwMEFfKSB8fCAodmFsID09IElEX1JFVl9DSElQX0lEXzk1MzBfKSB8fFxcbjEyNjU6XFx0XFx0ICAgICh2YWwgPT0gSURfUkVWX0NISVBfSURfODk1MzBfKSB8fCAodmFsID09IElEX1JFVl9DSElQX0lEXzk3MzBfKSlcXG4xMjY2OlxcdFxcdFxcdHBkYXRhLVxcdTAwM2VmZWF0dXJlcyA9IChGRUFUVVJFXzhfV0FLRVVQX0ZJTFRFUlMgfFxcbjEyNjc6XFx0XFx0XFx0XFx0RkVBVFVSRV9QSFlfTkxQX0NST1NTT1ZFUiB8XFxuMTI2ODpcXHRcXHRcXHRcXHRGRUFUVVJFX1JFTU9URV9XQUtFVVApO1xcbjEyNjk6XFx0XFx0ZWxzZSBpZiAodmFsID09IElEX1JFVl9DSElQX0lEXzk1MTJfKVxcbjEyNzA6XFx0XFx0XFx0cGRhdGEtXFx1MDAzZWZlYXR1cmVzID0gRkVBVFVSRV84X1dBS0VVUF9GSUxURVJTO1xcbjEyNzE6XFx0XFxuMTI3MjpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZzbXNjOTV4eF9uZXRkZXZfb3BzO1xcbjEyNzM6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnNtc2M5NXh4X2V0aHRvb2xfb3BzO1xcbjEyNzQ6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWZsYWdzIHw9IElGRl9NVUxUSUNBU1Q7XFxuMTI3NTpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuICs9IFNNU0M5NVhYX1RYX09WRVJIRUFEX0NTVU07XFxuMTI3NjpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlbWluX210dSA9IEVUSF9NSU5fTVRVO1xcbjEyNzc6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW1heF9tdHUgPSBFVEhfREFUQV9MRU47XFxuMTI3ODpcXHRcXHRkZXYtXFx1MDAzZWhhcmRfbXR1ID0gZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW10dSArIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTI6MjYuMDkwNDEzNzA5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjUwNTgyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEFUODAzWCBQSFkgRHJpdmVyIHdpdGggVVNCIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgc21zYzk1eHhgIGRyaXZlciBpcyBrZXkgaGVyZTsgaXQgcmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBhbmQgdGhlbiBjYWxscyBgcGh5X2ZpbmRfZmlyc3RgLiBMYXRlciwgYHNtc2M5NXh4X3Jlc2V0YCBjYWxscyBgcGh5X2Nvbm5lY3RfZGlyZWN0YCwgYW5kIGZpbmFsbHkgYHBoeV9zdGFydGAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIG5ldCBkZXZpY2UgY29tZXMgdXAuIFRoaXMga2lja3Mgb2ZmIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgLCB3aGljaCwgY3J1Y2lhbGx5LCAqZG9lcyogZXZlbnR1YWxseSBjYWxsIGBsaW5rX2NoYW5nZV9ub3RpZnlgISBTcGVjaWZpY2FsbHksIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyByZWFjaGFibGUgYW5kIHRodXMgZnV6emFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBJJ20gYWZ0ZXIuXG5cbk5vdyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uIFdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0FUODAzWF9QSFlgLiBXaGlsZSBzeXprYWxsZXIgcHJvYmFibHkgYWxyZWFkeSBoYW5kbGVzIGBDT05GSUdfVVNCX05FVF9TTVNDOTVYWGAgKG9yIGFsdGVybmF0aXZlcyB0aGF0IHJlZ2lzdGVyIGFuIE1ESU8gYnVzKSwgaXQncyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgc3RhdGUgYENPTkZJR19BVDgwM1hfUEhZYC4gSSdsbCBkb3VibGUgY2hlY2sgdGhlIHBhdGNoOlxuXG5gYGBjXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcbitcdGlmIChwaHlkZXYtXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcdTAwMjZcdTAwMjYgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KSkge1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyB1c2luZyBgcGh5X2RldmljZV9oYXNfcmVzZXRgIHdoaWNoIG1lYW5zIHdlIGFyZSBhbHNvIGNoZWNraW5nIGByZXNldF9jdHJsYCwgaW4gYWRkaXRpb24gdG8gYHJlc2V0X2dwaW9gLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYSByZWFjaGFibGUgUEhZIGRyaXZlci5cblxuVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBjbGVhcjogYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBgcGh5X2RldmljZV9oYXNfcmVzZXRgIGFuZCBgbWRpb2Rldl9oYXNfcmVzZXRgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBub3QgcmVhbGx5IHRhcmdldHMuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgdGhlICpvbmx5KiBmdW5jdGlvbiBtb2RpZmllZC4gWWVwLCBqdXN0IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNgLCBwbHVzIHRoZSBpbmxpbmVzLlxuXG5TbywgYEZvY3VzU3ltYm9sc2A6IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBhbmQgYEVuYWJsZUNvbmZpZ3NgOiBgQVQ4MDNYX1BIWWAuXG5cbmBBVDgwM1hfUEhZYCBhbHNvIGRlcGVuZHMgb24gYFJFR1VMQVRPUmAsIHdoaWNoIHN5emthbGxlciB1c3VhbGx5IGhhcyBlbmFibGVkIGFueXdheSwgYW5kIGluY2x1ZGVzIGBRQ09NX05FVF9QSFlMSUJgLiBJJ3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGlzIHJlYWNoYWJsZSB2aWEgVVNCIE1ESU8gZW11bGF0aW9uLlxuXG5UbyByZWNhcDogdGhlIHBhdGNoIGFsdGVycyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGJ5IHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaGFuZGxlIGByZXNldF9jdHJsYCBhcyB3ZWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQSFkgZHJpdmVyLCBhbmQgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSBzZXQgdXAgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAobGlrZSBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGxpa2UgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDU1LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEyOjM4Ljc0MDk5OTEzNFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg5ODA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVQ4MDNYX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVDgwM1hfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24gaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWSBkcml2ZXIgdG8gdXNlIGBwaHlfZGV2aWNlX2hhc19yZXNldCgpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIGByZXNldF9ncGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYWxzbyBoYW5kbGUgYHJlc2V0X2N0cmxgLiBUaGUgUEhZIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAoZS5nLiwgc21zYzk1eHgpIG9yIGEgVVNCIE1ESU8gYnVzIChlLmcuLCBtZGlvLW12dXNiKSB0aGF0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgcmVzcG9uZHMgdG8gTURJTyByZWFkcyB3aXRoIHRoZSBBVDgwM1ggUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 15:29:17 +0000 UTC FinishedAt: 2026-07-15 16:12:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AT803X_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AT803X_PHY" ], "series_id": "6bdc508e-755f-48aa-a204-4896376d7afc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "at803x_link_change_notify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUODAzWF9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24gaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWSBkcml2ZXIgdG8gdXNlIGBwaHlfZGV2aWNlX2hhc19yZXNldCgpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIGByZXNldF9ncGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYWxzbyBoYW5kbGUgYHJlc2V0X2N0cmxgLiBUaGUgUEhZIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAoZS5nLiwgc21zYzk1eHgpIG9yIGEgVVNCIE1ESU8gYnVzIChlLmcuLCBtZGlvLW12dXNiKSB0aGF0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgcmVzcG9uZHMgdG8gTURJTyByZWFkcyB3aXRoIHRoZSBBVDgwM1ggUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcbmluZGV4IGJhNGRjMDc3NTJiNjBiLi42ODcyZGJmNzc4NTYyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xuQEAgLTUzNyw3ICYjNDM7NTM3LDcgQEAgc3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0ICogaW4gdGhlIEZJRk8uIEluIHN1Y2ggY2FzZXMsIHRoZSBGSUZPIGVudGVycyBhbiBlcnJvciBtb2RlIGl0XG4gXHQgKiBjYW5ub3QgcmVjb3ZlciBmcm9tIGJ5IHNvZnR3YXJlLlxuIFx0ICovXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHtcbiBcdFx0c3RydWN0IGF0ODAzeF9jb250ZXh0IGNvbnRleHQ7XG4gXG4gXHRcdGF0ODAzeF9jb250ZXh0X3NhdmUocGh5ZGV2LCBcdTAwMjZjb250ZXh0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvbGludXgvbWRpby5oXG5pbmRleCAzMDA4MDVlNjY1OTJkMC4uYTdkOWUzYWUzNjJhNTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZGlvLmhcbkBAIC04Niw2ICYjNDM7ODYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkICptZGlvZGV2X2dldF9kcnZkYXRhKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcbiBcdHJldHVybiBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpby1cdTAwM2VkZXYpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIG1kaW9kZXZfaGFzX3Jlc2V0KHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcbiYjNDM7e1xuJiM0MztcdHJldHVybiAobWRpby1cdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXHUwMDNlcmVzZXRfY3RybCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xuIGludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjIzMSw2ICYjNDM7MjIzMSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGh5X2RldmljZV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgdmFsdWUpXG4gXHRtZGlvX2RldmljZV9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbywgdmFsdWUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWRpb2Rldl9oYXNfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8pO1xuJiM0Mzt9XG4mIzQzO1xuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXHRcXFxuIFx0ZGV2X2VycihcdTAwMjZfcGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBmb3JtYXQsICMjYXJncylcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVDgwM1hfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYwppbmRleCBiYTRkYzA3NzUyYjYwYi4uNjg3MmRiZjc3ODU2MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jCkBAIC01MzcsNyAmIzQzOzUzNyw3IEBAIHN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiBpbiB0aGUgRklGTy4gSW4gc3VjaCBjYXNlcywgdGhlIEZJRk8gZW50ZXJzIGFuIGVycm9yIG1vZGUgaXQKIAkgKiBjYW5ub3QgcmVjb3ZlciBmcm9tIGJ5IHNvZnR3YXJlLgogCSAqLwotCWlmIChwaHlkZXYtJmd0O3N0YXRlID09IFBIWV9OT0xJTksgJmFtcDsmYW1wOyBwaHlkZXYtJmd0O21kaW8ucmVzZXRfZ3BpbykgewomIzQzOwlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KSkgewogCQlzdHJ1Y3QgYXQ4MDN4X2NvbnRleHQgY29udGV4dDsKIAogCQlhdDgwM3hfY29udGV4dF9zYXZlKHBoeWRldiwgJmFtcDtjb250ZXh0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWRpby5oIGIvaW5jbHVkZS9saW51eC9tZGlvLmgKaW5kZXggMzAwODA1ZTY2NTkyZDAuLmE3ZDllM2FlMzYyYTUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21kaW8uaApAQCAtODYsNiAmIzQzOzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbWRpb2Rldl9nZXRfZHJ2ZGF0YShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pCiAJcmV0dXJuIGRldl9nZXRfZHJ2ZGF0YSgmYW1wO21kaW8tJmd0O2Rldik7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbWRpb2Rldl9oYXNfcmVzZXQoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKQomIzQzO3sKJiM0MzsJcmV0dXJuIChtZGlvLSZndDtyZXNldF9ncGlvIHx8IG1kaW8tJmd0O3Jlc2V0X2N0cmwpOwomIzQzO30KJiM0MzsKIHZvaWQgbWRpb19kZXZpY2VfZnJlZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpOwogc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpOwogaW50IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaAppbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHkuaApAQCAtMjIzMSw2ICYjNDM7MjIzMSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGh5X2RldmljZV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgdmFsdWUpCiAJbWRpb19kZXZpY2VfcmVzZXQoJmFtcDtwaHlkZXYtJmd0O21kaW8sIHZhbHVlKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBwaHlfZGV2aWNlX2hhc19yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJcmV0dXJuIG1kaW9kZXZfaGFzX3Jlc2V0KCZhbXA7cGh5ZGV2LSZndDttZGlvKTsKJiM0Mzt9CiYjNDM7CiAjZGVmaW5lIHBoeWRldl9lcnIoX3BoeWRldiwgZm9ybWF0LCBhcmdzLi4uKQlcCiAJZGV2X2VycigmYW1wO19waHlkZXYtJmd0O21kaW8uZGV2LCBmb3JtYXQsICMjYXJncykKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzczCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jYCwgd2hpY2gsIGZyb20gdGhlIG5hbWUsIGxvb2tzIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIEFUODAzWCBQSFkgZHJpdmVyLiBJdCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbWRpby5oYCBhbmQgYHBoeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdWJzdGl0dXRpbmcgYHBoeWRldi0mZ3Q7bWRpby5yZXNldF9ncGlvYCB3aXRoIGEgY2FsbCB0byBgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KWAuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBpbXByb3ZpbmcgdGhlIHJlc2V0IGhhbmRsaW5nIGxvZ2ljLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGEgc21hbGwgY2hhbmdlLCBidXQgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gdGhpcyBwYXJ0aWN1bGFyIFBIWSBkcml2ZXIuCgpUaGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBmdXp6ZWQ/IEdpdmVuIHRoYXQgUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgaG93IGxpa2VseSBpcyB0aGlzIHRvIGV2ZW4gKmJlKiBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhleSYjMzk7cmUgZ2VuZXJhbGx5IHRpZWQgdG8gdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gV2hpbGUgeW91ICpjb3VsZCogcG90ZW50aWFsbHkgcHJvYmUgdGhlbSB2aWEgTURJTyBidXMgZW11bGF0aW9uLCB0aGF0JiMzOTtzIG5vdCB0aGUgbm9ybS4gU28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHBhdGh3YXkgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyIHRvIGJlIHRlc3RlZC4KCkxldCYjMzk7cyBzZWXigKYgVGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdHVyZS4gQ291bGQgd2UgZnV6eiBgYXQ4MDN4LmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhpcyBjYWxsYmFjaz8gTXkgZ3V0IHNheXMgdGhhdCBpdCYjMzk7cyBnb2luZyB0byBiZSB0cmlja3kuIFN5emthbGxlciwgaW4gbXkgZXhwZXJpZW5jZSwgZG9lc24mIzM5O3QgdXN1YWxseSB0YXJnZXQgc3BlY2lmaWMgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiB2aXJ0dWFsIE1ESU8gYnVzIG9yIHNvbWV0aGluZyBzaW1pbGFyIGF2YWlsYWJsZSBpbiB0aGUga2VybmVsLgoKSG9sZCBvbiwgaXMgdGhlcmUgYSB2aXJ0dWFsIE1ESU8gYnVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgY2hlY2sgZm9yIGBDT05GSUdfQVQ4MDNYX1BIWWAgdG8gc2VlIGlmIHRoYXQmIzM5O3MgZW5hYmxlZC4gVGhhdCBjb25maWd1cmF0aW9uIHdvdWxkIHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gRnJvbSB0aGVyZSBJJiMzOTtsbCBrbm93IGlmIHRoZXJlJiMzOTtzIGFueSBob3BlIGZvciB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9NDg1PXN0YXRpYyBpbnQgYXQ4MDN4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMwLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6NTMxOnN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDEtXHQuY29uZmlnX2luaXRcdFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTQyOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE0My1cdC5zZXRfd29sXHRcdD0gYXQ4MDN4X3NldF93b2wsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4MC1cdC5jb25maWdfaW5pdFx0XHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExODE6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTgyLVx0LnN1c3BlbmRcdFx0PSBhdDgwM3hfc3VzcGVuZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEFUODAzWCBQSFkgRHJpdmVyIGluIGEgVmlydHVhbCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBWTSBzZXR1cD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgQVQ4MDNYLiBVc3VhbGx5LCBQSFkgZHJpdmVycyBhcmUgbG9hZGVkIHdoZW4gYSBuZXR3b3JrIGRldmljZSByZWdpc3RlcnMgd2l0aCBhbiBNRElPIGJ1cy4gU28sIGhvdyBkbyBJIHJlcGxpY2F0ZSB0aGF0IHNjZW5hcmlvIHZpcnR1YWxseT8KCkhtbSwgSSByZWNhbGwgdGhlcmUgbWlnaHQgYmUgc29tZSBoZWxwZXIgZHJpdmVycyBmb3IgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHNpbXVsYXRlIGEgUEhZLiBJJiMzOTttIHRoaW5raW5nIG9mIHNvbWV0aGluZyBsaWtlIGBmaXhlZF9waHkuY2Agb3IgcGVyaGFwcyBhIG1vcmUgY29uZmlndXJhYmxlICYjMzQ7bW9jayYjMzQ7IE1ESU8gZHJpdmVyLiBJcyB0aGVyZSBhIHdheSBJIGNhbiByZWdpc3RlciBhcmJpdHJhcnkgUEhZcyB3aXRoaW4gYSBWTT8KCk5vdywgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgdXNlcnNwYWNlICpjYW4qIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgYnV0IGNhbiBpdCBhbHNvIGF0dGFjaCB0aGVtIHRvIGFuIGFyYml0cmFyeSBQSFk/IEkgbmVlZCBhIHdheSB0byBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBJIGJyaWVmbHkgY29uc2lkZXJlZCBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYCwgYnV0IHRob3NlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGFuZCB1c2VsZXNzIGhlcmUuCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBgbWRpby1tb2NrdXBgLCByaWdodD8gT3Igd2FzIGl0IGBtZGlvLWJjbS11bmltYWNgPyBObywgbmVpdGhlciBvZiB0aG9zZSBzZWVtIHF1aXRlIHJpZ2h0LiBJIGtlZXAgZHJhd2luZyBhIGJsYW5rLiBJdCYjMzk7cyB0aW1lIHRvIGRvIGEgZGVlcGVyIGRpdmUuIExldCBtZSBqdXN0IHNlYXJjaCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSB3aGF0IE1ESU8tcmVsYXRlZCBkcml2ZXJzIGFyZSBhdmFpbGFibGUgYW5kIGlmIGFueSBwcm92aWRlIGEgd2F5IHRvIHNpbXVsYXRlIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FkaW4uYyYjMzQ7LAogICAgJiMzNDthZGluMTEwMC5jJiMzNDssCiAgICAmIzM0O2Fpcl9hbjg4MDEuYyYjMzQ7LAogICAgJiMzNDthaXJfZW44ODExaC5jJiMzNDssCiAgICAmIzM0O2Fpcl9waHlfbGliLmMmIzM0OywKICAgICYjMzQ7YWlyX3BoeV9saWIuaCYjMzQ7LAogICAgJiMzNDthbWQuYyYjMzQ7LAogICAgJiMzNDthczIxeHh4LmMmIzM0OywKICAgICYjMzQ7YXg4ODc5NmIuYyYjMzQ7LAogICAgJiMzNDtheDg4Nzk2Yl9ydXN0LnJzJiMzNDssCiAgICAmIzM0O2JjbS1jeWdudXMuYyYjMzQ7LAogICAgJiMzNDtiY20tcGh5LWxpYi5jJiMzNDssCiAgICAmIzM0O2JjbS1waHktbGliLmgmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1wdHAuYyYjMzQ7LAogICAgJiMzNDtiY201NDE0MC5jJiMzNDssCiAgICAmIzM0O2JjbTYzeHguYyYjMzQ7LAogICAgJiMzNDtiY203eHh4LmMmIzM0OywKICAgICYjMzQ7YmNtODQ4ODEuYyYjMzQ7LAogICAgJiMzNDtiY204N3h4LmMmIzM0OywKICAgICYjMzQ7YnJvYWRjb20uYyYjMzQ7LAogICAgJiMzNDtjaWNhZGEuYyYjMzQ7LAogICAgJiMzNDtjb3J0aW5hLmMmIzM0OywKICAgICYjMzQ7ZGF2aWNvbS5jJiMzNDssCiAgICAmIzM0O2RwODM2NDAuYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDssCiAgICAmIzM0O2RwODM4MjIuYyYjMzQ7LAogICAgJiMzNDtkcDgzODQ4LmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg2Ny5jJiMzNDssCiAgICAmIzM0O2RwODM4NjkuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGM4MTEuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGQ1MTAuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGc3MjAuYyYjMzQ7LAogICAgJiMzNDtldDEwMTFjLmMmIzM0OywKICAgICYjMzQ7Zml4ZWRfcGh5LmMmIzM0OywKICAgICYjMzQ7aWNwbHVzLmMmIzM0OywKICAgICYjMzQ7aW50ZWwteHdheS5jJiMzNDssCiAgICAmIzM0O2xpbmttb2RlLmMmIzM0OywKICAgICYjMzQ7bHh0LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHEyeHh4LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHgyMjIyLmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwxMGcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW9wZW4tYWxsaWFuY2UuaCYjMzQ7LAogICAgJiMzNDttZGlvX2J1cy5jJiMzNDssCiAgICAmIzM0O21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZpY2UuYyYjMzQ7LAogICAgJiMzNDttZGlvX2RldnJlcy5jJiMzNDssCiAgICAmIzM0O21lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21pY3JlbC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Jkc19wdHAuaCYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDEuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDFzLmMmIzM0OywKICAgICYjMzQ7bWlpX3RpbWVzdGFtcGVyLmMmIzM0OywKICAgICYjMzQ7bW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7bXhsLTg2MTEwLmMmIzM0OywKICAgICYjMzQ7bXhsLWdweS5jJiMzNDssCiAgICAmIzM0O25hdGlvbmFsLmMmIzM0OywKICAgICYjMzQ7bmNuMjYwMDAuYyYjMzQ7LAogICAgJiMzNDtueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmgmIzM0OywKICAgICYjMzQ7bnhwLWNidHguYyYjMzQ7LAogICAgJiMzNDtueHAtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5oJiMzNDssCiAgICAmIzM0O3BoeS1jNDUuYyYjMzQ7LAogICAgJiMzNDtwaHktY2Fwcy5oJiMzNDssCiAgICAmIzM0O3BoeS1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGh5LmMmIzM0OywKICAgICYjMzQ7cGh5X2NhcHMuYyYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vycy5jJiMzNDssCiAgICAmIzM0O3BoeV9saW5rX3RvcG9sb2d5LmMmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2UuYyYjMzQ7LAogICAgJiMzNDtwaHlfcG9ydC5jJiMzNDssCiAgICAmIzM0O3BoeWxpYi1pbnRlcm5hbC5oJiMzNDssCiAgICAmIzM0O3BoeWxpYi5oJiMzNDssCiAgICAmIzM0O3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtxc2VtaS5jJiMzNDssCiAgICAmIzM0O3F0MjAyNS5ycyYjMzQ7LAogICAgJiMzNDtyb2NrY2hpcC5jJiMzNDssCiAgICAmIzM0O3NmcC1idXMuYyYjMzQ7LAogICAgJiMzNDtzZnAuYyYjMzQ7LAogICAgJiMzNDtzZnAuaCYjMzQ7LAogICAgJiMzNDtzbXNjLmMmIzM0OywKICAgICYjMzQ7c3RlMTBYcC5jJiMzNDssCiAgICAmIzM0O3N0dWJzLmMmIzM0OywKICAgICYjMzQ7c3dwaHkuYyYjMzQ7LAogICAgJiMzNDtzd3BoeS5oJiMzNDssCiAgICAmIzM0O3RlcmFuZXRpY3MuYyYjMzQ7LAogICAgJiMzNDt1UEQ2MDYyMC5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UuYyYjMzQ7LAogICAgJiMzNDt4aWxpbnhfZ21paTJyZ21paS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FxdWFudGlhJiMzNDssCiAgICAmIzM0O21lZGlhdGVrJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OywKICAgICYjMzQ7cWNvbSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTE3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhwbG9yaW5nIFZpcnR1YWwgUEhZIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byBjb25qdXJlIHVwIGEgUEhZIGRldmljZSB3aXRob3V0IGl0IGJlaW5nIHBoeXNpY2FsbHkgY29ubmVjdGVkLCB1c2luZyB0b29scyBsaWtlIG5ldGxpbmsgb3Igc3lzZnMuIFRoZSBzdGFuZGFyZCBhcHByb2FjaCBpcyB0aHJvdWdoIE1ESU8gYnVzZXMsIGFuZCBuYXR1cmFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbGl6aW5nIHRoaXMgZW50aXJlIHByb2Nlc3MuIENhbiBJIHNvbWVob3cgc2ltdWxhdGUgYW4gTURJTyBidXMgd2l0aGluIGEgVk0gZW52aXJvbm1lbnQ/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24uCgpNeSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgLCBhcyB0aGF0IHNlZW1zIGxpa2UgdGhlIGNlbnRyYWwgY29tcG9uZW50IGZvciBNRElPIGJ1cyBoYW5kbGluZy4gVGhlIGtleSB3b3VsZCBiZSBmaW5kaW5nIGEgdmlydHVhbCBNRElPIGJ1cyBkcml2ZXIgaWYgb25lIGV4aXN0cy4gTGV0JiMzOTtzIHNlZSBpZiBzb21ldGhpbmcgYXBwcm9wcmlhdGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIGJldCBJIGNhbiBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FjcGlfbWRpby5jJiMzNDssCiAgICAmIzM0O2Z3bm9kZV9tZGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1haXJvaGEuYyYjMzQ7LAogICAgJiMzNDttZGlvLWFzcGVlZC5jJiMzNDssCiAgICAmIzM0O21kaW8tYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20tdW5pbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1iaXRiYW5nLmMmIzM0OywKICAgICYjMzQ7bWRpby1jYXZpdW0uYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5oJiMzNDssCiAgICAmIzM0O21kaW8tZ3Bpby5jJiMzNDssCiAgICAmIzM0O21kaW8taGlzaS1mZW1hYy5jJiMzNDssCiAgICAmIzM0O21kaW8taTJjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pcHE0MDE5LmMmIzM0OywKICAgICYjMzQ7bWRpby1pcHE4MDY0LmMmIzM0OywKICAgICYjMzQ7bWRpby1tb3hhcnQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1zY2MtbWlpbS5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWJjbS1pcHJvYy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWJjbTYzNjguYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZzEyYS5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW1lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW1taW9yZWcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tdWx0aXBsZXhlci5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LmMmIzM0OywKICAgICYjMzQ7bWRpby1tdnVzYi5jJiMzNDssCiAgICAmIzM0O21kaW8tb2N0ZW9uLmMmIzM0OywKICAgICYjMzQ7bWRpby1waWM2NGhwc2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLXJlYWx0ZWstcnRsOTMwMC5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVnbWFwLmMmIzM0OywKICAgICYjMzQ7bWRpby1zdW40aS5jJiMzNDssCiAgICAmIzM0O21kaW8tdGh1bmRlci5jJiMzNDssCiAgICAmIzM0O21kaW8teGdlbmUuYyYjMzQ7LAogICAgJiMzNDtvZl9tZGlvLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgQ3JlYXRpb24gYW5kIFN5emthbGxlciYjMzk7cyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBNRElPIGJ1cyBkcml2ZXJzIGFuZCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJJiMzOTttIGF3YXJlIG9mIHRoZSBjb21tb24gaW1wbGVtZW50YXRpb25zOiBgbWRpby1ncGlvLmNgLCBgbWRpby1pMmMuY2AsIGFuZCBgbWRpby1iaXRiYW5nLmNgLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYmUgbGV2ZXJhZ2VkIHRvICpjcmVhdGUqIGFuIE1ESU8gYnVzPwoKTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBzeXprYWxsZXImIzM5O3MgZXhpc3RpbmcgY2FwYWJpbGl0aWVzLiBXZSYjMzk7dmUgZ290IHN5c3RlbSBjYWxscyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCB0aGF0IHNob3cgc3l6a2FsbGVyJiMzOTtzIHByb2ZpY2llbmN5IGluIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQga2VybmVsIHN1YnN5c3RlbXMuIE5vdyB0aGUgdGhvdWdodCBsYW5kcyBvbiBgbWRpby1tdnVzYi5jYCEgQSBVU0ItYmFzZWQgTURJTyBidXMuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2UgVVNCIGlzIGEgd2VsbC1kZWZpbmVkIGFuZCBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3Igc3l6a2FsbGVyLiBUaW1lIHRvIGNoZWNrIHRoYXQgc291cmNlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbXZ1c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9MTU3NzU9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sXG5NQUlOVEFJTkVSUzoxNTc3NjpGOlx0ZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcbk1BSU5UQUlORVJTLTE1Nzc3LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MjA9b2JqLSQoQ09ORklHX01ESU9fTVNDQ19NSUlNKVx0XHQmIzQzOz0gbWRpby1tc2NjLW1paW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfTURJT19NVlVTQilcdFx0JiM0Mzs9IG1kaW8tbXZ1c2Iub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfTURJT19PQ1RFT04pXHRcdCYjNDM7PSBtZGlvLW9jdGVvbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW11bGF0aW5nIGEgTWFydmVsbCBVU0IgTURJTyBEZXZpY2Ugd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYG1kaW8tbXZ1c2JgIGlzIGluZGVlZCBhIFVTQiBNRElPIGJ1cyBkcml2ZXIuIEJ1dCB0aGVuIGl0IGhpdCBtZTogaWYgU3l6a2FsbGVyIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgaXQgKmRvZXMqLCBpdCBjYW4gdG90YWxseSBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UuIEFuZCBpZiB3ZSBjYW4gZW11bGF0ZSAqdGhhdCosIHdlJiMzOTt2ZSBnb3QgYW4gTURJTyBidXMgcmVnaXN0ZXJlZCwgcmlnaHQ/CgpUaGUga2V5IHJlYWxpemF0aW9uIGhlcmUgaXMgdGhhdCBvbmNlIHdlIGhhdmUgdGhhdCBNRElPIGJ1cywgd2UgY2FuIHRoZW4gZW11bGF0ZSAqYW55KiBQSFkgc2ltcGx5IGJ5IHJlc3BvbmRpbmcgY29ycmVjdGx5IHRvIE1ESU8gcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMhIFRoYXQmIzM5O3MgaXQhCgpBbmQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBgbWRpby1tdnVzYmAgdXNlcyBVU0IgVVJCcyB0byBoYW5kbGUgdGhlc2UgTURJTyByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzLiBTeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciBpcyBkZXNpZ25lZCB0byBpbnRlcmNlcHQgYW5kIG1hbmlwdWxhdGUgdGhlc2UgdmVyeSBVUkJzISBUaGlzIG1lYW5zIHdlIGNhbiBwcm92aWRlICphcmJpdHJhcnkqIHJlc3BvbnNlcywgZWZmZWN0aXZlbHkgZW11bGF0aW5nIGFueSBQSFksIGluY2x1ZGluZyB0aGUgYGF0ODAzeGAgUEhZIHRoYXQgaXMgdGhlIGN1cnJlbnQgYXJlYSBvZiBpbnRlcmVzdCEKCk5vdywgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGBtZGlvLW12dXNiLmNgIHRvIHNlZSBob3cgdGhhdCBNRElPIGJ1cyBpcyBhY3R1YWxseSBzZXQgdXAgd2l0aGluIHRoZSBkcml2ZXIuIEdvdHRhIGdldCB0aGUgZGV0YWlscyByaWdodCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcdDB4MTI4NlxuICAxMDpcdFxuICAxMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdnVzYl9tZGlvX3RhYmxlW10gPSB7XG4gIDEyOlx0XHR7IFVTQl9ERVZJQ0UoVVNCX01BUlZFTExfVklELCAweDFmYTQpIH0sXG4gIDEzOlx0XG4gIDE0Olx0XHR7fVxuICAxNTpcdH07XG4gIDE2Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG12dXNiX21kaW9fdGFibGUpO1xuICAxNzpcdFxuICAxODpcdGVudW0ge1xuICAxOTpcdFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcbiAgMjA6XHRcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXG4gIDIxOlx0XHRNVlVTQl9DTURfQUREUixcbiAgMjI6XHRcdE1WVVNCX0NNRF9WQUwsXG4gIDIzOlx0fTtcbiAgMjQ6XHRcbiAgMjU6XHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XG4gIDI2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgMjc6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICAyODpcdFxuICAyOTpcdFx0X19sZTE2IGJ1Zls0XTtcbiAgMzA6XHR9O1xuICAzMTpcdFxuICAzMjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnKVxuICAzMzpcdHtcbiAgMzQ6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYiA9IG1kaW8tXHUwMDNlcHJpdjtcbiAgMzU6XHRcdGludCBlcnIsIGFsZW47XG4gIDM2Olx0XG4gIDM3Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX0FERFJdID0gY3B1X3RvX2xlMTYoMHhhNDAwIHwgKGRldiBcdTAwM2NcdTAwM2MgNSkgfCByZWcpO1xuICAzODpcdFxuICAzOTpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcbiAgNDA6XHRcdFx0XHQgICBtdnVzYi1cdTAwM2VidWYsIDYsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQxOlx0XHRpZiAoZXJyKVxuICA0MjpcdFx0XHRyZXR1cm4gZXJyO1xuICA0MzpcdFxuICA0NDpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCA2KSxcbiAgNDU6XHRcdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQ2Olx0XHRpZiAoZXJyKVxuICA0NzpcdFx0XHRyZXR1cm4gZXJyO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0dXJuIGxlMTZfdG9fY3B1KG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiAgNTM6XHR7XG4gIDU0Olx0XHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVx1MDAzZXByaXY7XG4gIDU1Olx0XHRpbnQgYWxlbjtcbiAgNTY6XHRcbiAgNTc6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweDgwMDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG4gIDU4Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0gID0gY3B1X3RvX2xlMTYodmFsKTtcbiAgNTk6XHRcbiAgNjA6XHRcdHJldHVybiB1c2JfYnVsa19tc2cobXZ1c2ItXHUwMDNldWRldiwgdXNiX3NuZGJ1bGtwaXBlKG12dXNiLVx1MDAzZXVkZXYsIDIpLFxuICA2MTpcdFx0XHRcdCAgICBtdnVzYi1cdTAwM2VidWYsIDgsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDYyOlx0fVxuICA2MzpcdFxuICA2NDpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuICA2NTpcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gIDY2Olx0e1xuICA2NzpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldjtcbiAgNjg6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYjtcbiAgNjk6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICA3MDpcdFxuICA3MTpcdFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xuICA3MjpcdFx0aWYgKCFtZGlvKVxuICA3MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNzQ6XHRcbiAgNzU6XHRcdG12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuICA3NjpcdFx0bXZ1c2ItXHUwMDNlbWRpbyA9IG1kaW87XG4gIDc3Olx0XHRtdnVzYi1cdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuICA3ODpcdFxuICA3OTpcdFx0LyogUmV2ZXJzZWQgZnJvbSBVU0IgUENBUHMsIG5vIGlkZWEgd2hhdCB0aGVzZSBtZWFuLiAqL1xuICA4MDpcdFx0bXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcbiAgODE6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfUFJFQU1CTEUxXSA9IGNwdV90b19sZTE2KDB4MDAwMSk7XG4gIDgyOlx0XG4gIDgzOlx0XHRzbnByaW50ZihtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O212dXNiLSVzXCYjMzQ7LCBkZXZfbmFtZShkZXYpKTtcbiAgODQ6XHRcdG1kaW8tXHUwMDNlbmFtZSA9IG1kaW8tXHUwMDNlaWQ7XG4gIDg1Olx0XHRtZGlvLVx1MDAzZXBhcmVudCA9IGRldjtcbiAgODY6XHRcdG1kaW8tXHUwMDNlcmVhZCA9IG12dXNiX21kaW9fcmVhZDtcbiAgODc6XHRcdG1kaW8tXHUwMDNld3JpdGUgPSBtdnVzYl9tZGlvX3dyaXRlO1xuICA4ODpcdFxuICA4OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG12dXNiKTtcbiAgOTA6XHRcbiAgOTE6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cdTAwM2VvZl9ub2RlKTtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbXZ1c2JfbWRpb19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuICA5NzpcdFxuICA5ODpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG12dXNiLVx1MDAzZW1kaW8pO1xuICA5OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMxMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNRElPIEJ1cyBSZWdpc3RyYXRpb246IERlZXAgRGl2ZSoqCgpPa2F5LCBncmVhdCEgU28sIGBtZGlvLW12dXNiYCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCwgZXhhY3RseSB3aGF0IEkgd2FzIGhvcGluZyB0byBzZWUuIE5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIHRoZSBmYWN0IHRoYXQgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGlzIGJlaW5nIHVzZWQgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEhtbSwgdGhhdCBzdWdnZXN0cyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBhIGRldmljZSB0cmVlLCBleHBlY3RpbmcgYSBub2RlIHRvIGRlc2NyaWJlIHRoZSBhdHRhY2hlZCBQSFlzLiBUaGUgd2F5IEkgcmVhZCB0aGlzLCBpZiBhIGRldmljZSB0cmVlIG5vZGUgKmlzbiYjMzk7dCogcHJlc2VudCwgdGhlbiB0aGUgY29kZSBzaG91bGQgZ3JhY2VmdWxseSBmYWxsIGJhY2sgdG8gdGhlIGJhc2ljIGBtZGlvYnVzX3JlZ2lzdGVyYC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSBzaG91bGQgZGlnIGludG8gYG9mX21kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgaXMgaGFuZGxlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTgxIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q9MzQ4PU1ESU9cbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1My1cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVx0aWYgKHJldClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTAzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcdHJjID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODYtXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcdHJldHVybiBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTQtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MjY9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc0NDpcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVx1MDAzZW1paSwgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTktXHRpZiAocmV0ICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTg4OD1zdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTA5Nz1zdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDQtXHRpZiAobWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTE5Olx0XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNDIzPXN0YXRpYyBpbnQgdHNuZXBfbWRpb19pbml0KHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI0NTU6XHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWRpb2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIHByaXYtXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzEtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYz0zNj1zdGF0aWMgaW50IGVuZXRjX3BjaV9tZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM6OTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0xNjA9c3RhdGljIGludCBlbmV0Y19tZGlvX3Byb2JlKHN0cnVjdCBlbmV0Y19wZiAqcGYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzoxODc6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cdTAwM2VtaWlfYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM9MjgzPXN0YXRpYyBpbnQgb3Jpb25fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVx0LyogRm9yIHRoZSBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRFQvQUNQSSBmYWxsLWJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgzLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM3LVx0ZGV2X2RiZyhldGgtXHUwMDNlZGV2LCBcJiMzNDtNREMgaXMgcnVubmluZyBvbiAlZCBIelxcblwmIzM0OywgTURDX01BWF9GUkVRIC8gZXRoLVx1MDAzZW1kY19kaXZpZGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZXRoLVx1MDAzZW1paV9idXMsIG1paV9ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjEyPXN0YXRpYyBpbnQgbml4Z2VfbWRpb19zZXR1cChzdHJ1Y3Qgbml4Z2VfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjEyMzE6XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYz03OTA9c3RhdGljIGludCBscGNfbWlpX2luaXQoc3RydWN0IG5ldGRhdGFfbG9jYWwgKnBsZGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmMtODIwLVx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHBsZGF0LVx1MDAzZXBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYzo4MjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHBsZGF0LVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjItXHRvZl9ub2RlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmM9OTI9aW50IGVtYWNfcGh5X2NvbmZpZyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZW1hY19hZGFwdGVyICphZHB0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmM6MTM4Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYy0xMzktXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MjM9c3RhdGljIGludCByYXZiX21kaW9faW5pdChzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMjY1MS1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM6MjY1MjpcdGVycm9yID0gb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1paV9idXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTI2NTMtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTM2Nz1zdGF0aWMgaW50IHJzd2l0Y2hfbWlpX3JlZ2lzdGVyKHN0cnVjdCByc3dpdGNoX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODYtXHRtZGlvX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocmRldi1cdTAwM2VucF9wb3J0LCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM6MTM4NzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODgtXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM9Nzc5PXN0YXRpYyBpbnQgcnRzbl9tZGlvX2FsbG9jKHN0cnVjdCBydHNuX3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtODE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6ODE4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYy04MTktXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM9MzA5MT1zdGF0aWMgaW50IHNoX21kaW9faW5pdChzdHJ1Y3Qgc2hfZXRoX3ByaXZhdGUgKm1kcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jOjMxMzI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kcC1cdTAwM2VtaWlfYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk1OTpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBhcmVudCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk2MC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jLTEyMDItXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jOjEyMDM6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jLTEyMDQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM9OTg4PXN0YXRpYyBpbnQgZW1hY19tZGlvX2luaXQoc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTAwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxMDA5Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTEwMTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTY1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjU1Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NTYtXHRpZiAoZXJyID09IC1FTk9ERVYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19tZGlvLmM9Nzk9dTMyIHNwbDJzd19tZGlvX2luaXQoc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYzoxMDY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jLTEwNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYz01Mzc9c3RhdGljIGludCBkYXZpbmNpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYzo2NDM6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRhdGEtXHUwMDNlYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmM9NjQ9aW50IHRlbWFjX21kaW9fc2V0dXAoc3RydWN0IHRlbWFjX2xvY2FsICpscCwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvbGxfdGVtYWNfbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmM6MTE3Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYy0xMTgtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYz0yODA9aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0zMDMtXHRcdGdvdG8gdW5yZWdpc3RlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MzA0Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWRpby5jLTMwNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jPTgwND1zdGF0aWMgaW50IHhlbWFjbGl0ZV9tZGlvX3NldHVwKHN0cnVjdCBuZXRfbG9jYWwgKmxwLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jLTg2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYzo4NjI6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRlLmMtODYzLVx0b2Zfbm9kZV9wdXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM9NTU4PXN0YXRpYyBpbnQgaXhwNHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGV0aF9yZWdzIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jOjU3MjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpb19idXMsIG1kaW9fYnVzX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtNTczLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM9MjAzPXN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmMtMjUwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI1MTpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI1Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmM9MTQ2PXN0YXRpYyBpbnQgYXNwZWVkX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmMtMTc0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jOjE3NTpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jLTE3Ni1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYz0xMjI9c3RhdGljIGludCBpcHJvY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS1pcHJvYy5jLTE1My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYzoxNTQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYy0xNTUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jPTIzNz1zdGF0aWMgaW50IHVuaW1hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWJjbS11bmltYWMuYy0zMDEtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jOjMwMjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jLTMwMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jPTE1Nz1zdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTg0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODU6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmM9NzI9c3RhdGljIGludCBoaXNpX2ZlbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taGlzaS1mZW1hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmM6MTA2Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1oaXNpLWZlbWFjLmMtMTA3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxNDAxOS5jPTMyNj1zdGF0aWMgaW50IGlwcTQwMTlfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmMtMzY5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYzozNzA6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxNDAxOS5jLTM3MS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jPTExMD1pcHE4MDY0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jLTE0MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmM6MTQyOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmMtMTQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTEwPXN0YXRpYyBpbnQgbW94YXJ0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmMtMTI4LVx0LyogU2V0dGluZyBQSFlfTUFDX0lOVEVSUlVQVCBoZXJlIGV2ZW4gaWYgaXQgaGFzIG5vIGVmZmVjdCxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYzoxMjk6XHQgKiBvZl9tZGlvYnVzX3JlZ2lzdGVyKCkgc2V0cyB0aGVzZSBQSFlfUE9MTC5cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMzAtXHQgKiBJZGVhbGx5LCB0aGUgaW50ZXJydXB0IGZyb20gTUFDIGNvbnRyb2xsZXIgY291bGQgYmUgdXNlZCB0b1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM6MTQ1Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDYtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tc2NjLW1paW0uYz0yNzA9c3RhdGljIGludCBtc2NjX21paW1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1zY2MtbWlpbS5jOjMzMTpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYz0xMzk9aW50IG1kaW9fbXV4X2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYy0yMjQtXHRcdFx0Y2ItXHUwMDNlbWlpX2J1cy1cdTAwM2V3cml0ZV9jNDUgPSBtZGlvX211eF93cml0ZV9jNDU7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM6MjI1Olx0XHRyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihjYi1cdTAwM2VtaWlfYnVzLCBjaGlsZF9idXNfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmMtMjI2LVx0XHRpZiAocikge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jPTY0PXN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTkwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM6OTE6XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy05Mi19XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jPTE2PXN0YXRpYyBpbnQgb2N0ZW9uX21kaW9idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmMtNTAtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmM6NTE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cy1cdTAwM2VtaWlfYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1vY3Rlb24uYy01Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jPTExNz1zdGF0aWMgaW50IHBpYzY0aHBzY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jLTE2My1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYzoxNjQ6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYy0xNjUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jPTUxMD1zdGF0aWMgaW50IG90dG9fZW1kaW9fcHJvYmVfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG90dG9fZW1kaW9fcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXJlYWx0ZWstcnRsOTMwMC5jOjU0NTpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgdG9fb2Zfbm9kZShub2RlKSk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYz05MD1zdGF0aWMgaW50IHN1bjRpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYy0xMjgtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYzoxMjk6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXN1bjRpLmMtMTMwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jPTIyPXN0YXRpYyBpbnQgdGh1bmRlcl9tZGlvYnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jLTk5LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDA6XHRcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLVx1MDAzZW1paV9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYy0xMDEtXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jOjEwMjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtvZl9tZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYz0zMjc9c3RhdGljIGludCB4Z2VuZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMzkyLVx0aWYgKGRldi1cdTAwM2VvZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzozOTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpb19idXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jLTM5NC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDQ9RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDUtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDctXHRcdFx0XHQgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTEtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1MjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjctXHRcdGlmIChvZl9tZGlvYnVzX2NoaWxkX2lzX3BoeShjaGlsZCkpXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoxNjg6XHRcdFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyX3BoeShtZGlvLCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNzUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNRElPIEJ1cyBSZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbi4gSXQgc2VlbXMgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGhhcyBhIGZhbGxiYWNrIG1lY2hhbmlzbS4gSWYgdGhlIGRldmljZSBub2RlLCByZXByZXNlbnRlZCBieSBgbnBgLCBpcyBOVUxMLCBpdCBuZWF0bHkgcmV2ZXJ0cyB0byBhIHNpbXBsZSBgbWRpb2J1c19yZWdpc3RlcmAgY2FsbC4gSW50ZXJlc3RpbmcuIEkmIzM5O20gc2VlaW5nIHRoaXMgYmVoYXZpb3IgaW4gYG1kaW8tbXZ1c2IuY2AsIHdoZXJlIHRoZSBjb2RlIGRpcmVjdGx5IGludm9rZXMgYG9mX21kaW9idXNfcmVnaXN0ZXJgIHdpdGggYGRldi0mZ3Q7b2Zfbm9kZWAuIE5vdywgYSBsaWdodGJ1bGIgd2VudCBvZmY6IGZvciB0aG9zZSBzeXprYWxsZXItY3JlYXRlZCBVU0IgZGV2aWNlcywgdGhhdCBgZGV2LSZndDtvZl9ub2RlYCBpcyBsaWtlbHkgTlVMTCB1bmxlc3Mgc29tZW9uZSYjMzk7cyBnb25lIHRocm91Z2ggdGhlIGVmZm9ydCBvZiBwcm92aWRpbmcgYSBEZXZpY2UgVHJlZSBvdmVybGF5LiBTbywgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBmYWxsYmFjayBpcyBwcm9iYWJseSBoYXBwZW5pbmcgaW4gdGhvc2Ugc2NlbmFyaW9zLiBUbyBjb25maXJtIG15IHRob3VnaHQgSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCBjb2RlLCB3aGljaCwgaWYgbWVtb3J5IHNlcnZlcywgc2hvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgZmFsbGJhY2sgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpcm0gbXkgcmVhc29uaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRpbnQgYWRkciwgcmM7XG4gMjAxOlx0XG4gMjAyOlx0XHRpZiAoIW5wKVxuIDIwMzpcdFx0XHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcbiAyMDQ6XHRcbiAyMDU6XHRcdC8qIERvIG5vdCBjb250aW51ZSBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCAqL1xuIDIwNjpcdFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcbiAyMDc6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMjA4Olx0XG4gMjA5Olx0XHQvKiBNYXNrIG91dCBhbGwgUEhZcyBmcm9tIGF1dG8gcHJvYmluZy4gIEluc3RlYWQgdGhlIFBIWXMgbGlzdGVkIGluXG4gMjEwOlx0XHQgKiB0aGUgZGV2aWNlIHRyZWUgYXJlIHBvcHVsYXRlZCBhZnRlciB0aGUgYnVzIGhhcyBiZWVuIHJlZ2lzdGVyZWQgKi9cbiAyMTE6XHRcdG1kaW8tXHUwMDNlcGh5X21hc2sgPSB+MDtcbiAyMTI6XHRcbiAyMTM6XHRcdGRldmljZV9zZXRfbm9kZShcdTAwMjZtZGlvLVx1MDAzZWRldiwgb2ZfZndub2RlX2hhbmRsZShucCkpO1xuIDIxNDpcdFxuIDIxNTpcdFx0LyogR2V0IGJ1cyBsZXZlbCBQSFkgcmVzZXQgR1BJTyBkZXRhaWxzICovXG4gMjE2Olx0XHRtZGlvLVx1MDAzZXJlc2V0X2RlbGF5X3VzID0gREVGQVVMVF9HUElPX1JFU0VUX0RFTEFZO1xuIDIxNzpcdFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O3Jlc2V0LWRlbGF5LXVzXCYjMzQ7LCBcdTAwMjZtZGlvLVx1MDAzZXJlc2V0X2RlbGF5X3VzKTtcbiAyMTg6XHRcdG1kaW8tXHUwMDNlcmVzZXRfcG9zdF9kZWxheV91cyA9IDA7XG4gMjE5Olx0XHRvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCYjMzQ7cmVzZXQtcG9zdC1kZWxheS11c1wmIzM0OywgXHUwMDI2bWRpby1cdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcbiAyMjA6XHRcbiAyMjE6XHRcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuIDIyMjpcdFx0cmMgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuIDIyMzpcdFx0aWYgKHJjKVxuIDIyNDpcdFx0XHRyZXR1cm4gcmM7XG4gMjI1Olx0XG4gMjI2Olx0XHQvKiBMb29wIG92ZXIgdGhlIGNoaWxkIG5vZGVzIGFuZCByZWdpc3RlciBhIHBoeV9kZXZpY2UgZm9yIGVhY2ggcGh5ICovXG4gMjI3Olx0XHRyYyA9IF9fb2ZfbWRpb2J1c19wYXJzZV9waHlzKG1kaW8sIG5wLCBcdTAwMjZzY2FucGh5cyk7XG4gMjI4Olx0XHRpZiAocmMpXG4gMjI5Olx0XHRcdGdvdG8gdW5yZWdpc3RlcjtcbiAyMzA6XHRcbiAyMzE6XHRcdGlmICghc2NhbnBoeXMpXG4gMjMyOlx0XHRcdHJldHVybiAwO1xuIDIzMzpcdFxuIDIzNDpcdFx0LyogYXV0byBzY2FuIGZvciBQSFlzIHdpdGggZW1wdHkgcmVnIHByb3BlcnR5ICovXG4gMjM1Olx0XHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHtcbiAyMzY6XHRcdFx0LyogU2tpcCBQSFlzIHdpdGggcmVnIHByb3BlcnR5IHNldCBvciBldGhlcm5ldC1waHktcGFja2FnZSBub2RlICovXG4gMjM3Olx0XHRcdGlmIChvZl9wcm9wZXJ0eV9wcmVzZW50KGNoaWxkLCBcJiMzNDtyZWdcJiMzNDspIHx8XG4gMjM4Olx0XHRcdCAgICBvZl9ub2RlX25hbWVfZXEoY2hpbGQsIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSlcbiAyMzk6XHRcdFx0XHRjb250aW51ZTtcbiAyNDA6XHRcbiAyNDE6XHRcdFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgUEhZX01BWF9BRERSOyBhZGRyJiM0MzsmIzQzOykge1xuIDI0MjpcdFx0XHRcdC8qIHNraXAgYWxyZWFkeSByZWdpc3RlcmVkIFBIWXMgKi9cbiAyNDM6XHRcdFx0XHRpZiAobWRpb2J1c19pc19yZWdpc3RlcmVkX2RldmljZShtZGlvLCBhZGRyKSlcbiAyNDQ6XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDI0NTpcdFxuIDI0NjpcdFx0XHRcdC8qIGJlIG5vaXN5IHRvIGVuY291cmFnZSBwZW9wbGUgdG8gc2V0IHJlZyBwcm9wZXJ0eSAqL1xuIDI0NzpcdFx0XHRcdGRldl9pbmZvKFx1MDAyNm1kaW8tXHUwMDNlZGV2LCBcJiMzNDtzY2FuIHBoeSAlcE9GbiBhdCBhZGRyZXNzICVpXFxuXCYjMzQ7LFxuIDI0ODpcdFx0XHRcdFx0IGNoaWxkLCBhZGRyKTtcbiAyNDk6XHRcbiAyNTA6XHRcdFx0XHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKSB7XG4gMjUxOlx0XHRcdFx0XHQvKiAtRU5PREVWIGlzIHRoZSByZXR1cm4gY29kZSB0aGF0IFBIWUxJQiBoYXNcbiAyNTI6XHRcdFx0XHRcdCAqIHN0YW5kYXJkaXplZCBvbiB0byBpbmRpY2F0ZSB0aGF0IGJ1c1xuIDI1MzpcdFx0XHRcdFx0ICogc2Nhbm5pbmcgc2hvdWxkIGNvbnRpbnVlLlxuIDI1NDpcdFx0XHRcdFx0ICovXG4gMjU1Olx0XHRcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcbiAyNTY6XHRcdFx0XHRcdGlmICghcmMpXG4gMjU3Olx0XHRcdFx0XHRcdGJyZWFrO1xuIDI1ODpcdFx0XHRcdFx0aWYgKHJjICE9IC1FTk9ERVYpXG4gMjU5Olx0XHRcdFx0XHRcdGdvdG8gcHV0X3VucmVnaXN0ZXI7XG4gMjYwOlx0XHRcdFx0fVxuIDI2MTpcdFx0XHR9XG4gMjYyOlx0XHR9XG4gMjYzOlx0XG4gMjY0Olx0XHRyZXR1cm4gMDtcbiAyNjU6XHRcbiAyNjY6XHRwdXRfdW5yZWdpc3RlcjpcbiAyNjc6XHRcdG9mX25vZGVfcHV0KGNoaWxkKTtcbiAyNjg6XHR1bnJlZ2lzdGVyOlxuIDI2OTpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG1kaW8pO1xuIDI3MDpcdFx0cmV0dXJuIHJjO1xuIDI3MTpcdH1cbiAyNzI6XHRFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XG4gMjczOlx0XG4gMjc0Olx0LyoqXG4gMjc1Olx0ICogb2ZfbWRpb19maW5kX2RldmljZSAtIEdpdmVuIGEgZGV2aWNlIHRyZWUgbm9kZSwgZmluZCB0aGUgbWRpb19kZXZpY2VcbiAyNzY6XHQgKiBAbnA6IHBvaW50ZXIgdG8gdGhlIG1kaW9fZGV2aWNlJiMzOTtzIGRldmljZSB0cmVlIG5vZGVcbiAyNzc6XHQgKlxuIDI3ODpcdCAqIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBtZGlvX2RldmljZSB3aXRoIHRoZSBlbWJlZGRlZFxuIDI3OTpcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4gMjgwOlx0ICogVGhlIGNhbGxlciBzaG91bGQgY2FsbCBwdXRfZGV2aWNlKCkgb24gdGhlIG1kaW9fZGV2aWNlIGFmdGVyIGl0cyB1c2VcbiAyODE6XHQgKi9cbiAyODI6XHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm9mX21kaW9fZmluZF9kZXZpY2Uoc3RydWN0IGRldmljZV9ub2RlICpucClcbiAyODM6XHR7XG4gMjg0Olx0XHRyZXR1cm4gZndub2RlX21kaW9fZmluZF9kZXZpY2Uob2ZfZndub2RlX2hhbmRsZShucCkpO1xuIDI4NTpcdH1cbiAyODY6XHRFWFBPUlRfU1lNQk9MKG9mX21kaW9fZmluZF9kZXZpY2UpO1xuIDI4NzpcdFxuIDI4ODpcdC8qKlxuIDI4OTpcdCAqIG9mX3BoeV9maW5kX2RldmljZSAtIEdpdmUgYSBQSFkgbm9kZSwgZmluZCB0aGUgcGh5X2RldmljZVxuIDI5MDpcdCAqIEBwaHlfbnA6IFBvaW50ZXIgdG8gdGhlIHBoeSYjMzk7cyBkZXZpY2UgdHJlZSBub2RlXG4gMjkxOlx0ICpcbiAyOTI6XHQgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGh5X2RldmljZSB3aXRoIHRoZSBlbWJlZGRlZFxuIDI5MzpcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4gMjk0Olx0ICovXG4gMjk1Olx0c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9ucClcbiAyOTY6XHR7XG4gMjk3Olx0XHRyZXR1cm4gZndub2RlX3BoeV9maW5kX2RldmljZShvZl9md25vZGVfaGFuZGxlKHBoeV9ucCkpO1xuIDI5ODpcdH1cbiAyOTk6XHRFWFBPUlRfU1lNQk9MKG9mX3BoeV9maW5kX2RldmljZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDYwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIE1ESU8gQnVzIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJIHNlZSBhIGNvbmRpdGlvbmFsOiBpZiBgbnBgIGlzIE5VTEwsIHdlIHRyaWdnZXIgYF9fbWRpb2J1c19yZWdpc3RlcmAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0ICpleGFjdGx5KiBoYXBwZW5zIHdpdGhpbiBgX19tZGlvYnVzX3JlZ2lzdGVyYD8gRG9lcyBpdCBoYXZlIHRoZSBzbWFydHMgdG8gYXV0b21hdGljYWxseSBwcm9iZSBmb3IgY29ubmVjdGVkIFBIWXM/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGhhbmRsZXMgdGhlIGRpc2NvdmVyeSBwcm9jZXNzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHdoaWNoIEkgYmVsaWV2ZSBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyB1bmZvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYz0zMj1pbnQgX19hY3BpX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cdG1kaW8tXHUwMDNlcGh5X21hc2sgPSBHRU5NQVNLKDMxLCAwKTtcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XHRyZXQgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MTk1PWludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjAyLVx0aWYgKCFucClcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcdFx0cmV0dXJuIF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjIxLVx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoyMjI6XHRyYyA9IF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTUzOS0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQxLSAqIEBidXM6IHRhcmdldCBtaWlfYnVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0NjogKiAgIG1kaW9idXNfcmVnaXN0ZXIoKSByYXRoZXIgdGhhbiBfX21kaW9idXNfcmVnaXN0ZXIoKSB1bmxlc3MgdGhleVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ3LSAqICAgbmVlZCB0byBwYXNzIGEgc3BlY2lmaWMgb3duZXIgbW9kdWxlLiBNRElPIGRldmljZXMgd2hpY2ggYXJlIG5vdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1Mi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU1MzppbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjYtfVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg2LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XHRyZXQgPSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvd25lcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYy04OC1cdGlmIChyZXQpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTQ0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBtaWlfYnVzICptZGlvYnVzX2FsbG9jKHZvaWQpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC00NDYtXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ0NzppbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ0OS1cdFx0XHQgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xuaW5jbHVkZS9saW51eC9waHkuaDo0NTA6I2RlZmluZSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cykgX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgVEhJU19NT0RVTEUpXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzOTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jYCBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIHRoZSBgX19tZGlvYnVzX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY3J1Y2lhbCBmdW5jdGlvbiB3b3Jrcy4gVGhpcyBpcyB3aGVyZSB0aGUgTURJTyBidXMgcmVnaXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgZ2V0IG91ciBQSFlzIHRhbGtpbmcgdG8gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzIG9mIHRoYXQgcHJvY2VzcywgZXNwZWNpYWxseSBob3cgdGhlIGRyaXZlciBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhbmQgaG9va2VkIGludG8gdGhlIGtlcm5lbC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGhvdyB0aGUgYnVzIGl0c2VsZiBpcyBzZXQgdXAsIGhvdyBpdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgdHJlZSwgYW5kIHVsdGltYXRlbHksIGhvdyBQSFkgZHJpdmVycyBhcmUgbGlua2VkIHRvIHRoaXMgcmVnaXN0ZXJlZCBidXMuIE9rYXksIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdCAqIF9fbWRpb2J1c19yZWdpc3RlciAtIGJyaW5nIHVwIGFsbCB0aGUgUEhZcyBvbiBhIGdpdmVuIGJ1cyBhbmQgYXR0YWNoIHRoZW0gdG8gYnVzXG4gNTQxOlx0ICogQGJ1czogdGFyZ2V0IG1paV9idXNcbiA1NDI6XHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcbiA1NDM6XHQgKlxuIDU0NDpcdCAqIERlc2NyaXB0aW9uOiBDYWxsZWQgYnkgYSBidXMgZHJpdmVyIHRvIGJyaW5nIHVwIGFsbCB0aGUgUEhZc1xuIDU0NTpcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcbiA1NDY6XHQgKiAgIG1kaW9idXNfcmVnaXN0ZXIoKSByYXRoZXIgdGhhbiBfX21kaW9idXNfcmVnaXN0ZXIoKSB1bmxlc3MgdGhleVxuIDU0NzpcdCAqICAgbmVlZCB0byBwYXNzIGEgc3BlY2lmaWMgb3duZXIgbW9kdWxlLiBNRElPIGRldmljZXMgd2hpY2ggYXJlIG5vdFxuIDU0ODpcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXG4gNTQ5Olx0ICogICB0byBiZSBleHBsaWNpdGx5IGxpc3RlZCBpbiBEVCBhbmQgaW5zdGFudGlhdGVkIGJ5IG9mX21kaW9idXNfcmVnaXN0ZXIoKS5cbiA1NTA6XHQgKlxuIDU1MTpcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFx1MDAzYyAwIG9uIGVycm9yLlxuIDU1MjpcdCAqL1xuIDU1MzpcdGludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4gNTU0Olx0e1xuIDU1NTpcdFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2O1xuIDU1NjpcdFx0c3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2Q7XG4gNTU3Olx0XHRib29sIHByZXZlbnRfYzQ1X3NjYW47XG4gNTU4Olx0XHRpbnQgaSwgZXJyO1xuIDU1OTpcdFxuIDU2MDpcdFx0aWYgKCFidXMgfHwgIWJ1cy1cdTAwM2VuYW1lKVxuIDU2MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NjI6XHRcbiA1NjM6XHRcdC8qIEFuIGFjY2VzcyBtZXRob2QgYWx3YXlzIG5lZWRzIGJvdGggcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyAqL1xuIDU2NDpcdFx0aWYgKCEhYnVzLVx1MDAzZXJlYWQgIT0gISFidXMtXHUwMDNld3JpdGUgfHwgISFidXMtXHUwMDNlcmVhZF9jNDUgIT0gISFidXMtXHUwMDNld3JpdGVfYzQ1KVxuIDU2NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NjY6XHRcbiA1Njc6XHRcdC8qIEF0IGxlYXN0IG9uZSBtZXRob2QgaXMgbWFuZGF0b3J5ICovXG4gNTY4Olx0XHRpZiAoIWJ1cy1cdTAwM2VyZWFkIFx1MDAyNlx1MDAyNiAhYnVzLVx1MDAzZXJlYWRfYzQ1KVxuIDU2OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NzA6XHRcbiA1NzE6XHRcdGlmIChidXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBidXMtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUpXG4gNTcyOlx0XHRcdGZ3bm9kZV9zZXRfZmxhZyhcdTAwMjZidXMtXHUwMDNlcGFyZW50LVx1MDAzZW9mX25vZGUtXHUwMDNlZndub2RlLFxuIDU3MzpcdFx0XHRcdFx0RldOT0RFX0ZMQUdfTkVFRFNfQ0hJTERfQk9VTkRfT05fQUREKTtcbiA1NzQ6XHRcbiA1NzU6XHRcdFdBUk4oYnVzLVx1MDAzZXN0YXRlICE9IE1ESU9CVVNfQUxMT0NBVEVEIFx1MDAyNlx1MDAyNlxuIDU3NjpcdFx0ICAgICBidXMtXHUwMDNlc3RhdGUgIT0gTURJT0JVU19VTlJFR0lTVEVSRUQsXG4gNTc3Olx0XHQgICAgIFwmIzM0OyVzOiBub3QgaW4gQUxMT0NBVEVEIG9yIFVOUkVHSVNURVJFRCBzdGF0ZVxcblwmIzM0OywgYnVzLVx1MDAzZWlkKTtcbiA1Nzg6XHRcbiA1Nzk6XHRcdGJ1cy1cdTAwM2Vvd25lciA9IG93bmVyO1xuIDU4MDpcdFx0YnVzLVx1MDAzZWRldi5wYXJlbnQgPSBidXMtXHUwMDNlcGFyZW50O1xuIDU4MTpcdFx0YnVzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNm1kaW9fYnVzX2NsYXNzO1xuIDU4MjpcdFx0YnVzLVx1MDAzZWRldi5ncm91cHMgPSBOVUxMO1xuIDU4MzpcdFx0ZGV2X3NldF9uYW1lKFx1MDAyNmJ1cy1cdTAwM2VkZXYsIFwmIzM0OyVzXCYjMzQ7LCBidXMtXHUwMDNlaWQpO1xuIDU4NDpcdFxuIDU4NTpcdFx0LyogSWYgdGhlIGJ1cyBzdGF0ZSBpcyBhbGxvY2F0ZWQsIHdlJiMzOTtyZSByZWdpc3RlcmluZyBhIGZyZXNoIGJ1c1xuIDU4NjpcdFx0ICogdGhhdCBtYXkgaGF2ZSBhIGZ3bm9kZSBhc3NvY2lhdGVkIHdpdGggaXQuIEdyYWIgYSByZWZlcmVuY2VcbiA1ODc6XHRcdCAqIHRvIHRoZSBmd25vZGUuIFRoaXMgd2lsbCBiZSBkcm9wcGVkIHdoZW4gdGhlIGJ1cyBpcyByZWxlYXNlZC5cbiA1ODg6XHRcdCAqIElmIHRoZSBidXMgd2FzIHNldCB0byB1bnJlZ2lzdGVyZWQsIGl0IG1lYW5zIHRoYXQgdGhlIGJ1cyB3YXNcbiA1ODk6XHRcdCAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCwgYW5kIHdlJiMzOTt2ZSBhbHJlYWR5IGdyYWJiZWQgYSByZWZlcmVuY2UuXG4gNTkwOlx0XHQgKi9cbiA1OTE6XHRcdGlmIChidXMtXHUwMDNlc3RhdGUgPT0gTURJT0JVU19BTExPQ0FURUQpXG4gNTkyOlx0XHRcdGZ3bm9kZV9oYW5kbGVfZ2V0KGRldl9md25vZGUoXHUwMDI2YnVzLVx1MDAzZWRldikpO1xuIDU5MzpcdFxuIDU5NDpcdFx0LyogV2UgbmVlZCB0byBzZXQgc3RhdGUgdG8gTURJT0JVU19VTlJFR0lTVEVSRUQgdG8gY29ycmVjdGx5IHJlbGVhc2VcbiA1OTU6XHRcdCAqIHRoZSBkZXZpY2UgaW4gbWRpb2J1c19mcmVlKClcbiA1OTY6XHRcdCAqXG4gNTk3Olx0XHQgKiBTdGF0ZSB3aWxsIGJlIHVwZGF0ZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvbiBpbiBjYXNlIG9mIHN1Y2Nlc3NcbiA1OTg6XHRcdCAqL1xuIDU5OTpcdFx0YnVzLVx1MDAzZXN0YXRlID0gTURJT0JVU19VTlJFR0lTVEVSRUQ7XG4gNjAwOlx0XG4gNjAxOlx0XHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gNjAyOlx0XHRpZiAoZXJyKSB7XG4gNjAzOlx0XHRcdHByX2VycihcJiMzNDttaWlfYnVzICVzIGZhaWxlZCB0byByZWdpc3RlclxcblwmIzM0OywgYnVzLVx1MDAzZWlkKTtcbiA2MDQ6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjA1Olx0XHR9XG4gNjA2Olx0XG4gNjA3Olx0XHRtdXRleF9pbml0KFx1MDAyNmJ1cy1cdTAwM2VtZGlvX2xvY2spO1xuIDYwODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDYwOTpcdFxuIDYxMDpcdFx0LyogYXNzZXJ0IGJ1cyBsZXZlbCBQSFkgR1BJTyByZXNldCAqL1xuIDYxMTpcdFx0Z3Bpb2QgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcdTAwMjZidXMtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OywgR1BJT0RfT1VUX0hJR0gpO1xuIDYxMjpcdFx0aWYgKElTX0VSUihncGlvZCkpIHtcbiA2MTM6XHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShcdTAwMjZidXMtXHUwMDNlZGV2LCBQVFJfRVJSKGdwaW9kKSxcbiA2MTQ6XHRcdFx0XHRcdCAgICBcJiMzNDttaWlfYnVzICVzIGNvdWxkbiYjMzk7dCBnZXQgcmVzZXQgR1BJT1xcblwmIzM0OyxcbiA2MTU6XHRcdFx0XHRcdCAgICBidXMtXHUwMDNlaWQpO1xuIDYxNjpcdFx0XHRkZXZpY2VfZGVsKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIDYxNzpcdFx0XHRyZXR1cm4gZXJyO1xuIDYxODpcdFx0fSBlbHNlXHRpZiAoZ3Bpb2QpIHtcbiA2MTk6XHRcdFx0YnVzLVx1MDAzZXJlc2V0X2dwaW9kID0gZ3Bpb2Q7XG4gNjIwOlx0XHRcdGZzbGVlcChidXMtXHUwMDNlcmVzZXRfZGVsYXlfdXMpO1xuIDYyMTpcdFx0XHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZ3Bpb2QsIDApO1xuIDYyMjpcdFx0XHRpZiAoYnVzLVx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMgXHUwMDNlIDApXG4gNjIzOlx0XHRcdFx0ZnNsZWVwKGJ1cy1cdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcbiA2MjQ6XHRcdH1cbiA2MjU6XHRcbiA2MjY6XHRcdGlmIChidXMtXHUwMDNlcmVzZXQpIHtcbiA2Mjc6XHRcdFx0ZXJyID0gYnVzLVx1MDAzZXJlc2V0KGJ1cyk7XG4gNjI4Olx0XHRcdGlmIChlcnIpXG4gNjI5Olx0XHRcdFx0Z290byBlcnJvcl9yZXNldF9ncGlvZDtcbiA2MzA6XHRcdH1cbiA2MzE6XHRcbiA2MzI6XHRcdGlmIChidXMtXHUwMDNlcmVhZCkge1xuIDYzMzpcdFx0XHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xuIDYzNDpcdFx0XHRpZiAoZXJyKVxuIDYzNTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4gNjM2Olx0XHR9XG4gNjM3Olx0XG4gNjM4Olx0XHRwcmV2ZW50X2M0NV9zY2FuID0gbWRpb2J1c19wcmV2ZW50X2M0NV9zY2FuKGJ1cyk7XG4gNjM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTURJTyBCdXMgU2NhbioqCgpSaWdodCwgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBoYXMgYmVlbiBpbnZva2VkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgdGhpcyBpcyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgdGhlIGN1cnJlbnQgZGV2aWNlIHRyZWUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgQzIyIGNsYXVzZSBoYXMgYmVlbiB0cmlnZ2VyZWQgYXMgYW50aWNpcGF0ZWQuIEkmIzM5O20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgY2FsbC4gV2hhdCYjMzk7cyB0aGUgdGFyZ2V0IGhhcmR3YXJlPyBXaGF0IHBlcmlwaGVyYWxzIGFyZSBjb25maWd1cmVkIG9uIHRoaXMgTURJTyBidXM/IElzIHRoaXMgYSBzdGFuZGFyZCBvcGVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyB0aGF0IHRyaWdnZXJlZCBhbiB1bnVzdWFsIHNjYW4/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIGxvb2sgZm9yIGFueSB1bmZvcmVzZWVuIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHR7XG4gNDYxOlx0XHRyZXR1cm4gbWRpb2J1c19zY2FuKGJ1cywgYWRkciwgZmFsc2UpO1xuIDQ2MjpcdH1cbiA0NjM6XHRFWFBPUlRfU1lNQk9MKG1kaW9idXNfc2Nhbl9jMjIpO1xuIDQ2NDpcdFxuIDQ2NTpcdC8qKlxuIDQ2NjpcdCAqIG1kaW9idXNfc2Nhbl9jNDUgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDNDUgTURJTyBkZXZpY2VzLlxuIDQ2NzpcdCAqIEBidXM6IG1paV9idXMgdG8gc2NhblxuIDQ2ODpcdCAqIEBhZGRyOiBhZGRyZXNzIG9uIGJ1cyB0byBzY2FuXG4gNDY5Olx0ICpcbiA0NzA6XHQgKiBUaGlzIGZ1bmN0aW9uIHNjYW5zIG9uZSBhZGRyZXNzIG9uIHRoZSBNRElPIGJ1cywgbG9va2luZyBmb3JcbiA0NzE6XHQgKiBkZXZpY2VzIHdoaWNoIGNhbiBiZSBpZGVudGlmaWVkIHVzaW5nIGEgdmVuZG9yL3Byb2R1Y3QgSUQgaW5cbiA0NzI6XHQgKiByZWdpc3RlcnMgMiBhbmQgMy4gTm90IGFsbCBNRElPIGRldmljZXMgaGF2ZSBzdWNoIHJlZ2lzdGVycywgYnV0XG4gNDczOlx0ICogUEhZIGRldmljZXMgdHlwaWNhbGx5IGRvLiBIZW5jZSB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW55dGhpbmdcbiA0NzQ6XHQgKiBmb3VuZCBpcyBhIFBIWSwgb3IgY2FuIGJlIHRyZWF0ZWQgYXMgYSBQSFkuIE90aGVyIE1ESU8gZGV2aWNlcyxcbiA0NzU6XHQgKiBzdWNoIGFzIHN3aXRjaGVzLCB3aWxsIHByb2JhYmx5IG5vdCBiZSBmb3VuZCBkdXJpbmcgdGhlIHNjYW4uXG4gNDc2Olx0ICovXG4gNDc3Olx0c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuIDQ3ODpcdHtcbiA0Nzk6XHRcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIDQ4MzpcdHtcbiA0ODQ6XHRcdGludCBpO1xuIDQ4NTpcdFxuIDQ4NjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX01BWF9BRERSOyBpJiM0MzsmIzQzOykge1xuIDQ4NzpcdFx0XHRpZiAoKGJ1cy1cdTAwM2VwaHlfbWFzayBcdTAwMjYgQklUKGkpKSA9PSAwKSB7XG4gNDg4Olx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiA0ODk6XHRcbiA0OTA6XHRcdFx0XHRwaHlkZXYgPSBtZGlvYnVzX3NjYW5fYzIyKGJ1cywgaSk7XG4gNDkxOlx0XHRcdFx0aWYgKElTX0VSUihwaHlkZXYpIFx1MDAyNlx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxuIDQ5MjpcdFx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcbiA0OTM6XHRcdFx0fVxuIDQ5NDpcdFx0fVxuIDQ5NTpcdFx0cmV0dXJuIDA7XG4gNDk2Olx0fVxuIDQ5NzpcdFxuIDQ5ODpcdHN0YXRpYyBpbnQgbWRpb2J1c19zY2FuX2J1c19jNDUoc3RydWN0IG1paV9idXMgKmJ1cylcbiA0OTk6XHR7XG4gNTAwOlx0XHRpbnQgaTtcbiA1MDE6XHRcbiA1MDI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBIWV9NQVhfQUREUjsgaSYjNDM7JiM0MzspIHtcbiA1MDM6XHRcdFx0aWYgKChidXMtXHUwMDNlcGh5X21hc2sgXHUwMDI2IEJJVChpKSkgPT0gMCkge1xuIDUwNDpcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gNTA1Olx0XG4gNTA2Olx0XHRcdFx0LyogRG9uJiMzOTt0IHNjYW4gQzQ1IGlmIHdlIGFscmVhZHkgaGF2ZSBhIEMyMiBkZXZpY2UgKi9cbiA1MDc6XHRcdFx0XHRpZiAoYnVzLVx1MDAzZW1kaW9fbWFwW2ldKVxuIDUwODpcdFx0XHRcdFx0Y29udGludWU7XG4gNTA5Olx0XG4gNTEwOlx0XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2M0NShidXMsIGkpO1xuIDUxMTpcdFx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbiA1MTI6XHRcdFx0XHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4gNTEzOlx0XHRcdH1cbiA1MTQ6XHRcdH1cbiA1MTU6XHRcdHJldHVybiAwO1xuIDUxNjpcdH1cbiA1MTc6XHRcbiA1MTg6XHQvKiBUaGVyZSBhcmUgc29tZSBDMjIgUEhZcyB3aGljaCBkbyBiYWQgdGhpbmdzIHdoZW4gd2hlcmUgaXMgYSBDNDVcbiA1MTk6XHQgKiB0cmFuc2FjdGlvbiBvbiB0aGUgYnVzLCBsaWtlIGFjY2VwdGluZyBhIHJlYWQgdGhlbXNlbHZlcywgYW5kXG4gNTIwOlx0ICogc3RvbXBpbmcgb3ZlciB0aGUgdHJ1ZSBkZXZpY2VzIHJlcGx5LCB0byBwZXJmb3JtaW5nIGEgd3JpdGUgdG9cbiA1MjE6XHQgKiB0aGVtc2VsdmVzIHdoaWNoIHdhcyBpbnRlbmRlZCBmb3IgYW5vdGhlciBkZXZpY2UuIE5vdyB0aGF0IEMyMlxuIDUyMjpcdCAqIGRldmljZXMgaGF2ZSBiZWVuIGZvdW5kLCBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGJhZCBmb3IgQzQ1LCBhbmQgaWYgd2VcbiA1MjM6XHQgKiBzaG91bGQgc2tpcCB0aGUgQzQ1IHNjYW4uXG4gNTI0Olx0ICovXG4gNTI1Olx0c3RhdGljIGJvb2wgbWRpb2J1c19wcmV2ZW50X2M0NV9zY2FuKHN0cnVjdCBtaWlfYnVzICpidXMpXG4gNTI2Olx0e1xuIDUyNzpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiA1Mjg6XHRcbiA1Mjk6XHRcdG1kaW9idXNfZm9yX2VhY2hfcGh5KGJ1cywgcGh5ZGV2KSB7XG4gNTMwOlx0XHRcdHUzMiBvdWkgPSBwaHlkZXYtXHUwMDNlcGh5X2lkIFx1MDAzZVx1MDAzZSAxMDtcbiA1MzE6XHRcbiA1MzI6XHRcdFx0aWYgKG91aSA9PSBNSUNSRUxfT1VJKVxuIDUzMzpcdFx0XHRcdHJldHVybiB0cnVlO1xuIDUzNDpcdFx0fVxuIDUzNTpcdFxuIDUzNjpcdFx0cmV0dXJuIGZhbHNlO1xuIDUzNzpcdH1cbiA1Mzg6XHRcbiA1Mzk6XHQvKipcbiA1NDA6XHQgKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xuIDU0MTpcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXG4gNTQyOlx0ICogQG93bmVyOiBtb2R1bGUgY29udGFpbmluZyBidXMgYWNjZXNzb3IgZnVuY3Rpb25zXG4gNTQzOlx0ICpcbiA1NDQ6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcbiA1NDU6XHQgKiAgIG9uIGEgZ2l2ZW4gYnVzLCBhbmQgYXR0YWNoIHRoZW0gdG8gdGhlIGJ1cy4gRHJpdmVycyBzaG91bGQgdXNlXG4gNTQ2Olx0ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcbiA1NDc6XHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcbiA1NDg6XHQgKiAgIFBIWXMgd2lsbCBub3QgYmUgYnJvdWdodCB1cCBieSB0aGlzIGZ1bmN0aW9uLiBUaGV5IGFyZSBleHBlY3RlZFxuIDU0OTpcdCAqICAgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQgaW4gRFQgYW5kIGluc3RhbnRpYXRlZCBieSBvZl9tZGlvYnVzX3JlZ2lzdGVyKCkuXG4gNTUwOlx0ICpcbiA1NTE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBcdTAwM2MgMCBvbiBlcnJvci5cbiA1NTI6XHQgKi9cbiA1NTM6XHRpbnQgX19tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICpidXMsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuIDU1NDpcdHtcbiA1NTU6XHRcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcbiA1NTY6XHRcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xuIDU1NzpcdFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xuIDU1ODpcdFx0aW50IGksIGVycjtcbiA1NTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMTYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBCdXMgU2Nhbm5pbmcgYW5kIFN5emthbGxlciBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBmdW5jdGlvbiBjYWxsLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBjYWxsaW5nIGBtZGlvYnVzX3NjYW5fYzIyYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhpcyBpcyBob3cgdGhlIE1ESU8gYnVzIGdldHMgc2Nhbm5lZCwgcmVhZGluZyBQSFkgSUQgcmVnaXN0ZXJzIHRvIGRpc2NvdmVyIHdoYXQmIzM5O3MgY29ubmVjdGVkLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGNhbiBwbGF5IGEgcm9sZSBoZXJlLCBzcGVjaWZpY2FsbHkgd2hlbiBpdCYjMzk7cyBlbXVsYXRpbmcgdGhhdCBgbWRpby1tdnVzYmAgZHJpdmVyLiBJZiB3ZSBjYW4gbWFuaXB1bGF0ZSBzeXprYWxsZXIgdG8gcmVzcG9uZCB0byBNRElPIHJlYWQgb3BlcmF0aW9ucy4uLndlIGNhbiBlc3NlbnRpYWxseSB0cmljayB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQmIzM5O3MgdGFsa2luZyB0byBhbiBBVDgwM1ggUEhZISBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgUEhZIElEIGlzLiBBaCB5ZXMsIEkgcmVtZW1iZXIgdGhhdCBpdCYjMzk7cyBgMHgwMDRkZDA3MmAsIG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlIHRvIHRoYXQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBJRC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lEX01BVENIX0VYQUNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9OTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhczIxeHh4X2RyaXZlcnNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk1Mi1cdFx0ICovXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1MzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxWFhYKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU0LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjF4eHhcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NTctXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1ODpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExSkIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTFKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NjktXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk3MDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExUEIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTcxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTFQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODEtXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk4MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDEwUEIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTgzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05OTMtXHR7XG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk5NDpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDEwSkIxKSxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTk1LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEwMTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDA1LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDA2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDA3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEyMTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE3LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDE4Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTBKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDI5LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDMwOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTBQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDMxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTBQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDQxLVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDQyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTFKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUzLVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDU0Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBKQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDU1LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjEyMTBKQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY1LVx0e1xuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDY2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFQQjEpLFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Flb25zZW1pIEFTMjE1MTFQQjFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9OTc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFzaXhfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy05OC17XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzo5OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQSksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDAtXHQubmFtZVx0XHQ9IFwmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTA3LX0sIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwODpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQyksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDktXHQubmFtZVx0XHQ9IFwmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9MTIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgYXNpeF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEyNDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BU0lYX0FYODg3NzJBKSB9LFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6MTI1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTSVhfQVg4ODc3MkMpIH0sXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMjYtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfQVNJWF9BWDg4Nzk2QikgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgaWNwbHVzX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9pY3BsdXMuYy02MzAtXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChJUDEwMDFfUEhZX0lEKSB9LFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jOjYzMTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQMTAxQV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmMtNjMyLVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNDczPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNDc0LVx0e1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNDc1Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ3Ni1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZWRpYVRlayBNVDc5ODEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ5MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCksXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0OTMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVkaWFUZWsgTVQ3OTg4IFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1MDgtXHR7XG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTEwLVx0XHQubmFtZVx0XHQ9IFwmIzM0O0Fpcm9oYSBBTjc1ODEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTUyMS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUyMjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MyksXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE1MjMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7QWlyb2hhIEFONzU4MyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzODpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzOTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU0MDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTU0MTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MykgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU0Mi1cdHsgfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYz05OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX2dlcGh5X2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMC1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMDE6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc1MzApLFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMTQtXHR7XG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM6MTE1Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMTYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVkaWFUZWsgTVQ3NTMxIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM9MTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX2dlcGh5X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jOjEzMzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzUzMCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc1MzEpIH0sXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmMtMTM1LVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jPTE4Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWVzb25fZ3hsX3BoeVtdID0ge1xuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE4OC1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tZXNvbi1neGwuYzoxODk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAxODE0NDAwKSxcbmRyaXZlcnMvbmV0L3BoeS9tZXNvbi1neGwuYy0xOTAtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWVzb24gR1hMIEludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVzb24tZ3hsLmMtMjAyLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjIwMzpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDE4MDMzMDEpLFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwNC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtNZXNvbiBHMTJBIEludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTUzNz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTM4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Mzk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU0MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkIxXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTQ4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU1MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkMxXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTU4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NTk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMiksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkMyXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Njk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZEMCksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3MC1cdFx0Lm5hbWUgICAgICAgICAgICAgICA9IFwmIzM0O0xBTjg2N1ggUmV2LkQwXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTgxLVx0e1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1ODI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTgzLVx0XHQubmFtZSAgICAgICAgICAgICAgID0gXCYjMzQ7TEFOODY1WCBSZXYuQjAvQjEgSW50ZXJuYWwgUGh5XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU5ODpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1OTk6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAwOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWQzIpIH0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjYwMTpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkQwKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo2MDI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy02MDMtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2My1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDY0Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NS1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MTEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3Mi1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDczOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA3NC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MjEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5Mi1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDkzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMiksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5NC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtZVDg1MjIgMTAwIE1lZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDAtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwMTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpLFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDItXHRcdC5uYW1lXHRcdD0gXCYjMzQ7WVQ4NTMxIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMTQtXHR7XG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzExNTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTE2LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1lUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTMyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSksXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMy1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1lUODgyMSAyLjVHYnBzIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzE1Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1vdG9yY29tbV90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUxMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU5Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYwOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMikgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSkgfSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYyOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpIH0sXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE2NC1cdHsgLyogc2VudGluZWwgKi8gfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjgwNy17XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyODA4Olx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTZYKSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4MDktXHQubmFtZVx0XHQ9IFwmIzM0O01pY3Jvc2VtaSBHRSBWU0M4NTZYIFN5bmNFXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4OTgte1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6Mjg5OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU3NSksXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTAwLVx0Lm5hbWVcdFx0PSBcJiMzNDtNaWNyb3NlbWkgR0UgVlNDODU3NSBTeW5jRVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTI3LXtcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjI5Mjg6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1ZTQzg1ODIpLFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjkyOS1cdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9zZW1pIEdFIFZTQzg1ODIgU3luY0VcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk1Ni17XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTU3Olx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTg0KSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI5NTgtXHQubmFtZVx0XHQ9IFwmIzM0O01pY3Jvc2VtaSBHRSBWU0M4NTg0IFN5bmNFXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz05MzY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG14bF9waHlfZHJ2c1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzNy1cdHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5Mzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTApLFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzOS1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O01YTDg2MTEwIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NTI6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTEpLFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1My1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O01YTDg2MTExIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jPTk3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG14bF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTVhMODYxMTApIH0sXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM6OTczOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSB9LFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk3NC1cdHsgIH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTExNS1cdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDM1ICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTE2Olx0UEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzVfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExMTctXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwMzVcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1MS1cdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzMyAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE1MjpcdFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTUzLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzM1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTc1LVx0LyogUXVhbGNvbW0gQXRoZXJvcyBBUjgwMzIgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNzY6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzMl9QSFlfSUQpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE3Ny1cdC5uYW1lXHRcdFx0PSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSODAzMlwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTkwLVx0LyogQVRIRVJPUyBBUjkzMzEgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExOTE6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIOTMzMV9QSFlfSUQpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE5Mi1cdC5uYW1lXHRcdFx0PSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBidWlsdC1pbiBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIwNS19LCB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjA2Olx0UEhZX0lEX01BVENIX0VYQUNUKElQUTUwMThfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMDctXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBJUFE1MDE4IGludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjE5LVx0LyogUXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjIwOlx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTk1NjFfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMjEtXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxIGJ1aWx0LWluIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMjM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgYXRoZXJvc190YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMzktXHR7IEFUSDgwMzBfUEhZX0lELCBBVDgwMzBfUEhZX0lEX01BU0sgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDA6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDE6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMyX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDI6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDM1X1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDM6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg5MzMxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDQ6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChJUFE1MDE4X1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDU6XHR7IFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E5NTYxX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyNDYtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NzkxPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDd4X2RyaXZlcnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03OTItXHR7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NzkzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTc5NC1cdFx0Lm5hbWUgICAgICAgICAgID0gXCYjMzQ7UXVhbGNvbW0gUUNBODA3MlwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODE1LVx0e1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjgxNjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDc1KSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MTctXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O1F1YWxjb21tIFFDQTgwNzVcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwN3hfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODQ3Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6ODQ4Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzUpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODQ5LVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjQ4LVx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jOjY0OTpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MDgxX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIFFDQTgwODFcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY4MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHFjYTgwOHhfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOlx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODA4MV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjgzLVx0eyB9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jPTIxMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODN4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjE1LVx0LyogUUNBODMzNyAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjIxNjpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MzM3X1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjE3LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgODMzNyBpbnRlcm5hbCBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIyOS1cdC8qIFFDQTgzMjctQSBmcm9tIHN3aXRjaCBRQ0E4MzI3LUFMMUEgKi9cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzA6XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19BX1BIWV9JRCksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjMxLVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgODMyNy1BIGludGVybmFsIFBIWVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ0LVx0LyogUUNBODMyNy1CIGZyb20gc3dpdGNoIFFDQTgzMjctQkwxQSAqL1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0NTpcdFBIWV9JRF9NQVRDSF9FWEFDVChRQ0E4MzI3X0JfUEhZX0lEKSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNDYtXHQubmFtZVx0XHRcdD0gXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyA4MzI3LUIgaW50ZXJuYWwgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0yNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4M3h4X3RibFtdID0ge1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI2MzpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMzdfUEhZX0lEKSB9LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI2NDpcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQV9QSFlfSUQpIH0sXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjY1Olx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19CX1BIWV9JRCkgfSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNjYtXHR7IH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yNjg4PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByZWFsdGVrX2RydnNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2ODktXHR7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNjkwOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDAwODIwMSksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNjkxLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMDFDUCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNjk0LVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5NTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4MTYpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5Ni1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjAxRiBGYXN0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3MTItXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzEzOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzE0LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMTEgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIwLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjcyMTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5MTIpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcyMi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExQiBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3MzEtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzMyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMyksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMTFDIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjczOS1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI3NDA6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE0KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3NDEtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIxMUROIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc0OC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI3NDk6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE1KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3NTAtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIxMUUgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzYxLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc2MjpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5MTYpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2My1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExRiBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3ODAtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzgxOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyMTFGVkRfUEhZSUQpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc4Mi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MjExRi1WRCBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzUtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyODM2Olx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzgzOCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yODM3LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjYtQ0cgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjg1MC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTE6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjODQ4KSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTItXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODIyNkItQ0dfUlRMODIyMUItQ0cgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjkzNy1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5Mzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTM5LVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JlYWx0ZWsgU0ZQIFBIWSBNb2RlXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTEtXHR9LCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTUyOlx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjY2FkMCksXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTUzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O1JUTDgyMjQgMi41R2JwcyBQSFlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk2NC1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NjU6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTYxKSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjYtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMODM2NlJCIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk3Ny1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5Nzg6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYjAwKSxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NzktXHRcdC5uYW1lXHRcdD0gXCYjMzQ7UlRMOTAwMEFBX1JUTDkwMDBBTiBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkwLVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5MTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NDIpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk5Mi1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MzY1TUItVkMgR2lnYWJpdCBFdGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTk4LVx0fSwge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5OTpcdFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NjApLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwMC1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtSVEw4MzY2UyBHaWdhYml0IEV0aGVybmV0XCYjMzQ7LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MTEzMD1zdHJ1Y3QgcGh5X2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xNTg2LVxuaW5jbHVkZS9saW51eC9waHkuaDoxNTg3OiNkZWZpbmUgUEhZX0lEX01BVENIX0VYQUNUKGlkKSAucGh5X2lkID0gKGlkKSwgLnBoeV9pZF9tYXNrID0gUEhZX0lEX01BVENIX0VYVEFDVF9NQVNLXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1ODgtI2RlZmluZSBQSFlfSURfTUFUQ0hfTU9ERUwoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfTU9ERUxfTUFTS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODc0OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIFBIWSBJRHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWUgQVQ4MDNYIFBIWSBJRHMuIExldCYjMzk7cyBzZWUsIHdlJiMzOTt2ZSBnb3QgYEFUSDgwMzFfUEhZX0lEYCwgYEFUSDgwMzJfUEhZX0lEYCwgYEFUSDgwMzVfUEhZX0lEYCwgYEFUSDkzMzFfUEhZX0lEYCwgYElQUTUwMThfUEhZX0lEYCwgYW5kIGBRQ0E5NTYxX1BIWV9JRGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBsaXN0IGZvciB3b3JraW5nIHdpdGggQVQ4MDNYIGRldmljZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBBVEg4MDM1X1BIWV9JRGAgcmlnaHQgbm93LiBOZWVkIHRvIGNoZWNrIHdoYXQgdGhhdCBzcGVjaWZpYyBpZGVudGlmaWVyIGFjdHVhbGx5IHJlcHJlc2VudHMuIEdvdHRhIGtub3cgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBBVEg4MDM1X1BIWV9JRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05NC0jZGVmaW5lIEFUSDgwMzJfUEhZX0lEXHRcdFx0XHQweDAwNGRkMDIzXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo5NTojZGVmaW5lIEFUSDgwMzVfUEhZX0lEXHRcdFx0XHQweDAwNGRkMDcyXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05Ni0jZGVmaW5lIEFUODAzMF9QSFlfSURfTUFTS1x0XHRcdDB4ZmZmZmZmZWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNjQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYXQ4MDN4IFBIWSBEcml2ZXIgdmlhIFVTQioqCgpPa2F5LCBzbyBpZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIHRoYXQgaWRlbnRpZmllcyBhcyBgbWRpby1tdnVzYmAgKFZJRCAweDEyODYsIFBJRCAweDFmYTQpIGFuZCByZXR1cm5zIHNwZWNpZmljIHZhbHVlcyDigJMgYDB4MDA0ZGAgYW5kIGAweGQwNzJgIOKAkyBpbiByZXNwb25zZSB0byBNRElPIHJlYWRzIGZyb20gcmVnaXN0ZXJzIDIgYW5kIDMsIHJlc3BlY3RpdmVseSwgdGhlbiB0aGUgYGF0ODAzeGAgZHJpdmVyIHdpbGwgZ2V0IHByb2JlZC4gTWFrZXMgc2Vuc2U7IGBtZGlvLW12dXNiYCBpbnRlcmFjdHMgd2l0aCB0aGUgTURJTyBidXMgKnZpYSogVVNCLgoKTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBxdWlja2x5IGdsYW5jaW5nIGF0IGBtdnVzYl9tZGlvX3JlYWRgIGluIGBtZGlvLW12dXNiLmNgOgoKYGBgYwpzdGF0aWMgaW50IG12dXNiX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZykKewoJc3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby0mZ3Q7cHJpdjsKCWludCBlcnIsIGFsZW47CgoJbXZ1c2ItJmd0O2J1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2ICZsdDsmbHQ7IDUpIHwgcmVnKTsKCgllcnIgPSB1c2JfYnVsa19tc2cobXZ1c2ItJmd0O3VkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi0mZ3Q7dWRldiwgMiksCgkJCSAgIG12dXNiLSZndDtidWYsIDYsICZhbXA7YWxlbiwgMTAwKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCgllcnIgPSB1c2JfYnVsa19tc2cobXZ1c2ItJmd0O3VkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi0mZ3Q7dWRldiwgNiksCgkJCSAgICZhbXA7bXZ1c2ItJmd0O2J1ZltNVlVTQl9DTURfVkFMXSwgMiwgJmFtcDthbGVuLCAxMDApOwoJaWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCXJldHVybiBsZTE2X3RvX2NwdShtdnVzYi0mZ3Q7YnVmW01WVVNCX0NNRF9WQUxdKTsKfQpgYGAKClllcCwgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjcmFmdGluZyB0aG9zZSBidWxrIG1lc3NhZ2UgcmVzcG9uc2VzLiBUaGlzIG1lYW5zIHRoZSBgYXQ4MDN4YCBQSFkgZHJpdmVyIGlzIGRlZmluaXRlbHkgd2l0aGluIHJlYWNoIGFuZCBmdXp6YWJsZSEKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4KCmBgYGMKLQlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5ZGV2LSZndDttZGlvLnJlc2V0X2dwaW8pIHsKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7c3RhdGUgPT0gUEhZX05PTElOSyAmYW1wOyZhbXA7IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHsKYGBgCgpJbnRlcmVzdGluZy4gSXQgcmVwbGFjZXMgYHBoeWRldi0mZ3Q7bWRpby5yZXNldF9ncGlvYCB3aXRoIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gQW5kIHRoYXQgZnVuY3Rpb24gY2hlY2tzIGZvciBgbWRpby0mZ3Q7cmVzZXRfZ3BpbyB8fCBtZGlvLSZndDtyZXNldF9jdHJsYC4gU28gdGhlIGNvbmRpdGlvbiBpcyBub3cgdHJ1ZSBpZiAqZWl0aGVyKiBgcmVzZXRfZ3Bpb2Agb3IgYHJlc2V0X2N0cmxgIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCBmdXp6YWJsZSBpbiBhIG1lYW5pbmdmdWwgd2F5PwoKWWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgbG9naWMgd2l0aGluIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YC4gIFdoYXQgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM/IFdlJiMzOTtsbCBuZWVkIGBDT05GSUdfQVQ4MDNYX1BIWWAsIG9idmlvdXNseS4gIFRvIGdldCB0aGVyZSB0aHJvdWdoIFVTQiwgd2UgYWxzbyBuZWVkIGBDT05GSUdfTURJT19NVlVTQmAsIGBDT05GSUdfVVNCYCwgYW5kIG9mIGNvdXJzZSBgQ09ORklHX1BIWUxJQmAuIFRpbWUgdG8gY29uZmlybSB0aGF0IGBBVDgwM1hfUEhZYCBpcyBhdmFpbGFibGUgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUODAzWF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0yPWNvbmZpZyBRQ09NX05FVF9QSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTQtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjU6Y29uZmlnIEFUODAzWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2NzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEFUODAzWF9QSFkgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGUgc3BlY2lmaWNhbGx5IGZvciB0aGUgUXVhbGNvbW0gUEhZIGRyaXZlcnMsIHNvIGBkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnYC4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQVQ4MDNYX1BIWWAuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgc3VzcGVjdCB0aGVyZSBtYXkgYmUgYSBjYXNjYWRlIG9mIGRlcGVuZGVuY2llcywgcGVyaGFwcyBpbnZvbHZpbmcgb3RoZXIgUEhZIG9wdGlvbnMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBvciBldmVuIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgdGhlc2UgcmVsYXRpb25zaGlwcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBlaXRoZXIgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uLCBkZWJ1ZyBhbiBpc3N1ZSwgb3IgcGVyaGFwcyBsb29rIGF0IGVuYWJsaW5nIGl0IGlmIGl0JiMzOTtzIG5vdCBhbHJlYWR5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuLi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBvdGhlciBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQVQ4MDNYX1BIWVxuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1wmIzM0O1xuICAgNzpcdFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuICAgODpcdFx0ZGVwZW5kcyBvbiBSRUdVTEFUT1JcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBBUjgwMzAsIEFSODAzMSwgQVI4MDMzLCBBUjgwMzUsIElQUTUwMTggbW9kZWxcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgUUNBODNYWF9QSFlcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXCYjMzQ7XG4gIDE0Olx0XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgUUNBODMzNyhJbnRlcm5hbCBxY2E4ayBQSFkpIG1vZGVsXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFFDQTgwOFhfUEhZXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyNDAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaGluZ2VzIG9uIHRoZSBgUkVHVUxBVE9SYC4gVGhhdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHByb3Blcmx5LCBhbmQgdG8gZG8gdGhhdCwgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGFjdGl2YXRlIGBDT05GSUdfQVQ4MDNYX1BIWWAgYW5kIGBDT05GSUdfTURJT19NVlVTQmAuIE5vdywgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ESU9fTVZVU0JgIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBpdHMgcmVxdWlyZW1lbnRzIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgc3VjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1ESU9fTVZVU0ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTEwNj1jb25maWcgTURJT19JMkNcbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTE1LVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjExNjpjb25maWcgTURJT19NVlVTQlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgVVNCIHRvIE1ESU8gQWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyB0aGUgTURJT19NVlVTQiBLY29uZmlnIEVudHJ5KioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE1ESU9fTVZVU0JgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIG9wZW4gdXAgYGRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIE1ESU8gZHJpdmVyLCBwcmVzdW1hYmx5IHRoZSBNYXJ2ZWxsIFVTQiBNRElPLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBtb2R1bGUgaXMgZW5hYmxlZCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSBvbiBvdGhlciBjb21wb25lbnRzLCBhbmQgaG93IGl0IGlzIGxvZ2ljYWxseSBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBuZXR3b3JrIHN1YnN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgYEtjb25maWdgIHN0cnVjdHVyZSBpcyBrZXkgdG8gZWZmaWNpZW50IGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uIGxhdGVyIG9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgaGVscCB0ZXh0IC0gZG9lcyBpdCBwcm92aWRlIGNvbnRleHQgb3Igd2FybmluZ3M/CiogICBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGRyaXZlcnMsIGxpa2UgVVNCIHN1YnN5c3RlbSBkcml2ZXJzIG9yIHBhcnRpY3VsYXIgUEhZIGRyaXZlcnM/CiogICBDb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIG9yIG90aGVyIGZlYXR1cmVzPwoqICAgRGVmYXVsdCBzZXR0aW5ncywgaWYgYW55LCBhbmQgd2h5IHRob3NlIGRlZmF1bHRzIHdlcmUgY2hvc2VuLgoqICAgQW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgTURJTyBkcml2ZXJzIC0gYXJlIHRoZXJlIGNvbmZsaWN0cyBvciBvdmVybGFwcGluZyBmdW5jdGlvbmFsaXRpZXM/CgpFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIGhvdyBgTURJT19NVlVTQmAgZml0cyBpbnRvIHRoZSB3aG9sZSBwaWN0dXJlLCBzbyB0aGF0IEkgY2FuIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XHQgIFN1cHBvcnQgSTJDIGJhc2VkIFBIWXMuICBUaGlzIHByb3ZpZGVzIGEgTURJTyBidXMgYnJpZGdlZFxuIDExMTpcdFx0ICB0byBJMkMgdG8gYWxsb3cgUEhZcyBjb25uZWN0ZWQgaW4gSTJDIG1vZGUgdG8gYmUgYWNjZXNzZWRcbiAxMTI6XHRcdCAgdXNpbmcgdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIGxpYnJhcnkgbW9kZS5cbiAxMTU6XHRcbiAxMTY6XHRjb25maWcgTURJT19NVlVTQlxuIDExNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBVU0IgdG8gTURJTyBBZGFwdGVyXCYjMzQ7XG4gMTE4Olx0XHRkZXBlbmRzIG9uIFVTQlxuIDExOTpcdFx0aGVscFxuIDEyMDpcdFx0ICBBIFVTQiB0byBNRElPIGNvbnZlcnRlciBwcmVzZW50IG9uIGRldmVsb3BtZW50IGJvYXJkcyBmb3JcbiAxMjE6XHRcdCAgTWFydmVsbCYjMzk7cyBMaW5rIFN0cmVldCBmYW1pbHkgb2YgRXRoZXJuZXQgc3dpdGNoZXMuXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIE1ESU9fTVNDQ19NSUlNXG4gMTI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NlbWkgTUlJTSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuIDEyNTpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAxMjY6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDEyNzpcdFx0aGVscFxuIDEyODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTUlJTSAoTURJTykgaW50ZXJmYWNlIGZvdW5kIGluIHRoZSBuZXR3b3JrXG4gMTI5Olx0XHQgIHN3aXRjaGVzIG9mIHRoZSBNaWNyb3NlbWkgU29DczsgaXQgaXMgcmVjb21tZW5kZWQgdG8gc3dpdGNoIG9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTY4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSBgTURJT19NVlVTQmAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCwgd2hpY2ggaXNuJiMzOTt0IGVudGlyZWx5IHN1cnByaXNpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEFyZSB0aGVyZSBvdGhlciBlbnRyeSBwb2ludHMgYmVzaWRlcyB0aGUgb2J2aW91cz8gUmlnaHQsIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyBjbGVhcmx5IHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgbmV0d29yayBsaW5rIHN0YXRlIGNoYW5nZXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBwaHlfc3RhdGVfbWFjaGluZWAsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHkuY2AsIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgUEhZIHN0YXRlIGFuZCBjYWxscyBgcGh5ZGV2LSZndDtkcnYtJmd0O2xpbmtfY2hhbmdlX25vdGlmeShwaHlkZXYpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQmIzM5O3MgdHJhY2UgaXQgYmFjayBmcm9tIGBwaHlfc3RhdGVfbWFjaGluZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTk2MD1zdGF0aWMgaW50IGFxY3MxMDlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTk2OS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6OTcwOnN0YXRpYyB2b2lkIGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtOTcxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jPTExODE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGFxcl9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyMzUtXHQuZ2V0X3N0YXRzXHQ9IGFxcjEwN19nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyMzY6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTIzNy1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjItXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTVjX2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTI2MzpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjY0LVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI4OS1cdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExMV9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTA6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI5MS1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTYtXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzE3Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTgtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzUyLVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzUzOlx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNTQtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzc4LVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzc5Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzODAtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzk5LVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDAwOlx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MDEtXHQuaW5iYW5kX2NhcHNcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIwLVx0LmdldF9zdGF0cyAgICAgID0gYXFyMTA3X2dldF9zdGF0cyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQyMTpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIyLVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0Ni1cdC5nZXRfc3RhdHMgICAgICA9IGFxcjEwN19nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0NDc6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0OC1cdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NzMtXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc0Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NzUtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTAwLVx0LmdldF9mZWF0dXJlc1x0PSBhcXIxMTVjX2dldF9mZWF0dXJlcyxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTUwMTpcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTAyLVx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUyNy1cdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExNWNfZ2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTI4Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MjktXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTUzLVx0LmdldF9zdGF0c1x0PSBhcXIxMDdfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTU0Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTUtXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM9NDg9c3RhdGljIGludCBhc2l4X2F4ODg3NzJhX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODUtXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzo4NjpzdGF0aWMgdm9pZCBhc2l4X2F4ODg3NzJhX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jPTk3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhc2l4X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNS1cdC5zb2Z0X3Jlc2V0XHQ9IGFzaXhfc29mdF9yZXNldCxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwNjpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYXNpeF9heDg4NzcyYV9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDctfSwge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTg4PSAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtOTEtXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo5MjogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05My0gICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEyMjU9c3RhdGljIHZvaWQgYmNtNTR4eF9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xMjMyLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTIzMzpzdGF0aWMgdm9pZCBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzNC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM9MTQ2Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYnJvYWRjb21fZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE0NzctXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0Nzg6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ3OS19LCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ4OS1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTQ5MDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDkxLX0sIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTAyLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTAzOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MDQtXHQuc3VzcGVuZFx0PSBiY201NHh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUyMC1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTUyMTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTIyLVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTMzLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTM0Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MzUtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NDgtXHQucHJvYmVcdFx0PSBiY201NDYxNnNfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTQ5Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NTAtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NjMtXHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1NjQ6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2NS1cdC5sZWRfYnJpZ2h0bmVzc19zZXRcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU3Ny1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU3ODpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTc5LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTk1LVx0LnJlc3VtZVx0XHQ9IGJjbTU0eHhfcmVzdW1lLFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU5NjpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTk3LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjEzLVx0LnJlc3VtZVx0XHQ9IGJjbTU0eHhfcmVzdW1lLFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTYxNDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjE1LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjI2LVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjI3Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MjgtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MzktXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2NDA6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY0MS1cdC5zdXNwZW5kXHQ9IGJjbTU0eHhfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjU0LVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjU1Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NTYtXHQuc3VzcGVuZFx0PSBiY201NHh4X3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY2OS1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTY3MDpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjcxLVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzA5LVx0LnByb2JlXHRcdD0gYmNtNTR4eF9waHlfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzEwOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MTEtXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MjMtXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE3MjQ6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTcyNS1cdC5sZWRfYnJpZ2h0bmVzc19zZXRcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTczNy1cdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTczODpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzM5LVx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbi0tXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzUwLVx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzUxOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3NTItfSB9O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9OTM1PXN0YXRpYyBpbnQgZHA4Mzg2N19waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTY4OnN0YXRpYyB2b2lkIGRwODM4NjdfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2OS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMTgwPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTIwNS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIwNjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGRwODM4NjdfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjA3LVx0XHQuc2V0X2xvb3BiYWNrXHQ9IGRwODM4NjdfbG9vcGJhY2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jPTM3OD1zdGF0aWMgaW50IGxhbjg4eHhfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg0LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjM4NTpzdGF0aWMgdm9pZCBsYW44OHh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5Ny1cdFx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzozOTg6XHRcdFx0Z290byBsaW5rX2NoYW5nZV9ub3RpZnlfZmFpbGVkO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDAxLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjQwMjpcdFx0XHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDAzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy00MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmM6NDMzOmxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ6XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDM0LVx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O0xpbmsgY2hhbmdlIHByb2Nlc3MgZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihyZXQpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmM9NTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfcGh5X2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjQtXHQuY29uZmlnX2FuZWdcdD0gbGFuODh4eF9jb25maWdfYW5lZyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo1NjU6XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gbGFuODh4eF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNTY2LVx0LnNvZnRfcmVzZXRcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg4My0vKipcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg0OiAqIHl0ODUzMV9saW5rX2NoYW5nZV9ub3RpZnkoKSAtIEFkanVzdCB0aGUgdHggY2xvY2sgZGlyZWN0aW9uIGFjY29yZGluZyB0b1xuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4ODUtICogdGhlIGN1cnJlbnQgc3BlZWQgYW5kIGR0cyBjb25maWcuXG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTEtICovXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MTg5MjpzdGF0aWMgdm9pZCB5dDg1MzFfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMTg5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTMwNjI9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1vdG9yY29tbV9waHlfZHJ2c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTA4LVx0XHQuc2V0X3dvbFx0PSB5dDg1MzFfc2V0X3dvbCxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTA5Olx0XHQubGlua19jaGFuZ2Vfbm90aWZ5ID0geXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTEwLVx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IHl0ODUyMV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4Ny0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oOjQ4ODp2b2lkIHZzYzg1eHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4OS12b2lkIHZzYzg1ODRfY29uZmlnX3RzX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oPTQ5ND1pcnFyZXR1cm5fdCB2c2M4NTg0X2hhbmRsZV90c19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk1LSNlbHNlXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg6NDk2OnN0YXRpYyBpbmxpbmUgdm9pZCB2c2M4NXh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MjU0OD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgdnNjODV4eF9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTc3LVx0LmdldF9zdGF0cyAgICAgID0gXHUwMDI2dnNjODV4eF9nZXRfc3RhdHMsXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTc4Olx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IFx1MDAyNnZzYzg1eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk3OS1cdC5pbmJhbmRfY2FwcyAgICA9IHZzYzg1eHhfaW5iYW5kX2NhcHMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz05NjY9c3RhdGljIGludCB2c2M4NXh4X3RzX2VuZ2luZV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgb25lX3N0ZXApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYy0xMDI5LVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMDMwOnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfcHRwLmMtMTAzMS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzNzk9c3RhdGljIGludCBueHBfYzQ1X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM5MS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzkyOnN0YXRpYyB2b2lkIHRqYTExMjBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTIwNzM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG54cF9jNDVfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxMzUtXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MjEzNjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSB0amExMTIwX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0yMTM3LVx0XHQuc3VzcGVuZFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxNjEtXHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MjE2MjpcdFx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSB0amExMTIwX2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0yMTYzLVx0XHQuc3VzcGVuZFx0XHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTY0PXN0YXRpYyB2b2lkIHBoeV9wcm9jZXNzX3N0YXRlX2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy03MC1cdFx0XHQgICBwaHlfc3RhdGVfdG9fc3RyKHBoeWRldi1cdTAwM2VzdGF0ZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjcxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydiBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkpXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NzI6XHRcdFx0cGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy03My1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz00ODU9c3RhdGljIGludCBhdDgwM3hfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy01MzAtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo1MzE6c3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMDIyPXN0YXRpYyBpbnQgaXBxNTAxOF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEwNjMtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMDY0OnN0YXRpYyB2b2lkIGlwcTUwMThfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDY1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE0MS1cdC5jb25maWdfaW5pdFx0XHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNDI6XHQubGlua19jaGFuZ2Vfbm90aWZ5XHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQzLVx0LnNldF93b2xcdFx0PSBhdDgwM3hfc2V0X3dvbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTgwLVx0LmNvbmZpZ19pbml0XHRcdD0gYXQ4MDN4X2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE4MTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODItXHQuc3VzcGVuZFx0XHQ9IGF0ODAzeF9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTAtXHQuY29uZmlnX2luaXRcdFx0PSBpcHE1MDE4X2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIxMTpcdC5saW5rX2NoYW5nZV9ub3RpZnlcdD0gaXBxNTAxOF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjEyLVx0LnJlYWRfc3RhdHVzXHRcdD0gYXQ4MDN4X3JlYWRfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz0yNTc9c3RhdGljIGludCBxY2E4MDh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI4OS1cdFx0ICpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTA6XHRcdCAqIHRoZSByZWFzb24gZm9yIG5vdCBwdXR0aW5nIHRoaXMgY29kZSBpbnRvIHRoZSBmdW5jdGlvbiBsaW5rX2NoYW5nZV9ub3RpZnkgaXNcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTEtXHRcdCAqIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgbGluayBwYXJ0bmVyIGlzIGFsc28gdGhlIHFjYTgwODEgUEhZIGFuZCB0aGUgc2VlZFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz0zODc9c3RhdGljIGludCBxY2E4MDh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxMi1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo0MTM6c3RhdGljIHZvaWQgcWNhODA4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy00MTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYz02NDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwOHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2Ny1cdC5jYWJsZV90ZXN0X2dldF9zdGF0dXNcdD0gcWNhODA4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4MDh4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjktXHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IHFjYTgwOHhfbGVkX2JyaWdodG5lc3Nfc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0xMjY9c3RhdGljIGludCBxY2E4MzI3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoxMzg6c3RhdGljIHZvaWQgcWNhODN4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0xMzkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYz0yMTM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgzeHhfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzMi1cdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjMzOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMzQtXHQucHJvYmVcdFx0XHQ9IHFjYTgzeHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0Ny1cdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjQ4Olx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yNDktXHQucHJvYmVcdFx0XHQ9IHFjYTgzeHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM9ODY9c3RhdGljIGludCByb2NrY2hpcF9pbnRlZ3JhdGVkX3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNC1cbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jOjEwNTpzdGF0aWMgdm9pZCByb2NrY2hpcF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM9MTczPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciByb2NrY2hpcF9waHlfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTc5LVx0LmZsYWdzXHRcdFx0PSAwLFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmM6MTgwOlx0LmxpbmtfY2hhbmdlX25vdGlmeVx0PSByb2NrY2hpcF9saW5rX2NoYW5nZV9ub3RpZnksXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYy0xODEtXHQuc29mdF9yZXNldFx0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MTEzMD1zdHJ1Y3QgcGh5X2RyaXZlciB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQyLVx0LyoqXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNDM6XHQgKiBAbGlua19jaGFuZ2Vfbm90aWZ5OiBDYWxsZWQgdG8gaW5mb3JtIGEgUEhZIGRldmljZSBkcml2ZXJcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI0NC1cdCAqIHdoZW4gdGhlIGNvcmUgaXMgYWJvdXQgdG8gY2hhbmdlIHRoZSBsaW5rIHN0YXRlLiBUaGlzXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQ5LVx0ICovXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNTA6XHR2b2lkICgqbGlua19jaGFuZ2Vfbm90aWZ5KShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI1MS1cbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTMwOD1pbXBsXHUwMDNjVDogRHJpdmVyXHUwMDNlIEFkYXB0ZXJcdTAwM2NUXHUwMDNlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2Mi0gICAgLy8vIGBwaHlkZXZgIG11c3QgYmUgcGFzc2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGNhbGxiYWNrIGluIGBwaHlfZHJpdmVyYC5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDYzOiAgICB1bnNhZmUgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gbGlua19jaGFuZ2Vfbm90aWZ5X2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjQtICAgICAgICAvLyBTQUZFVFk6IFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIG9ubHkgaW4gY29udGV4dHNcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2Ny0gICAgICAgIGxldCBkZXYgPSB1bnNhZmUgeyBEZXZpY2U6OmZyb21fcmF3KHBoeWRldikgfTtcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDY4OiAgICAgICAgVDo6bGlua19jaGFuZ2Vfbm90aWZ5KGRldik7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2OS0gICAgfVxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NDk0PXB1YiBjb25zdCBmbiBjcmVhdGVfcGh5X2RyaXZlclx1MDAzY1Q6IERyaXZlclx1MDAzZSgpIC1cdTAwM2UgRHJpdmVyVlRhYmxlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTU1MC0gICAgICAgIH0sXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MTogICAgICAgIGxpbmtfY2hhbmdlX25vdGlmeTogaWYgVDo6SEFTX0xJTktfQ0hBTkdFX05PVElGWSB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MjogICAgICAgICAgICBTb21lKEFkYXB0ZXI6Olx1MDAzY1RcdTAwM2U6OmxpbmtfY2hhbmdlX25vdGlmeV9jYWxsYmFjaylcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTUzLSAgICAgICAgfSBlbHNlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTYyNj0gICAgZm4gd3JpdGVfbW1kKF9kZXY6IFx1MDAyNm11dCBEZXZpY2UsIF9kZXZudW06IHU4LCBfcmVnbnVtOiB1MTYsIF92YWw6IHUxNikgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMwLSAgICAvLy8gQ2FsbGJhY2sgZm9yIG5vdGlmaWNhdGlvbiBvZiBsaW5rIGNoYW5nZS5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NjMxOiAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoX2RldjogXHUwMDI2bXV0IERldmljZSkge31cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMyLX1cbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycz0yMD0gICAgcHViIHRyYWl0IFNlYWxlZCB7fVxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzLTMwLS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzOjMxOi8vLyBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgRGV2aWNlKSB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycy0zMi0vLy8gICAgIC8vIHJlYWQgQzIyIEJNQ1IgcmVnaXN0ZXJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE2MzcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBTdHJhdGVneSBmb3IgUmVhY2hpbmcgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgKioKCk9rYXksIHNvIHRoZSBnb2FsIGlzIHRvIHRyaWdnZXIgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0IGBwaHlfcHJvY2Vzc19zdGF0ZV9jaGFuZ2VgIGNhbGxzIGBsaW5rX2NoYW5nZV9ub3RpZnlgLCBhbmQgdGhpcyBpcyB0cmlnZ2VyZWQgYnkgYHBoeV9zdGF0ZV9tYWNoaW5lYC4gVGhpcyBzdGF0ZSBtYWNoaW5lIGlzIGEgZGVsYXllZCB3b3JrIGZ1bmN0aW9uLCBydW5uaW5nIHBlcmlvZGljYWxseSBvciB3aGVuIGFuIGV2ZW50IHRyaWdnZXJzIGl0LiBUaHVzLCBpZiBJIGNhbiBnZXQgdGhlIFBIWSByZWdpc3RlcmVkIGFuZCBhdHRhY2hlZCB0byBhIG5ldHdvcmsgZGV2aWNlLCB0aGUgYHBoeV9zdGF0ZV9tYWNoaW5lYCB3aWxsIHJ1biBhbmQgdGhhdCYjMzk7cyBob3cgdG8gdHJpZ2dlciB0aGUgbm90aWZ5IGZ1bmN0aW9uLgoKVG8gYXR0YWNoIGEgUEhZLCBgcGh5X2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIHVzZWQsIGFuZCBuZXQgZHJpdmVycyBoYW5kbGUgdGhpcy4gU3l6a2FsbGVyIHVzZXMgdmlydHVhbCBkZXZpY2VzIGxpa2UgYHR1bmAvYHRhcGAgb3IgYHZldGhgLiBIbW0sIGRvIHZpcnR1YWwgZGV2aWNlcyBldmVuICp1c2UqIFBIWXM/IFVzdWFsbHkgbm90LiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBzb21lIG1pZ2h0LCBvciBJIGNvdWxkIGp1c3QgZ28gZm9yIGEgKnJlYWwqIG5ldCBkZXZpY2UgZHJpdmVyLCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiEgVGhpbmdzIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgY2RjX2V0aGVyYCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMuCgpBaGEhIElmIFN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBldGhlcm5ldCBhZGFwdGVyLCBpdCB3aWxsIHJlZ2lzdGVyIGEgbmV0IGRldmljZSAqYW5kKiBhIFBIWSEgVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2guIEJ1dCwgSSB3YW50IHRvIHRhcmdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAuCgpJZiBJIGVtdWxhdGUgYG1kaW8tbXZ1c2JgLCBpdCByZWdpc3RlcnMgYW4gTURJTyBidXMuIENhbiBJIGF0dGFjaCBhIFBIWSBvbiB0aGlzIGJ1cyB0byBhIG5ldCBkZXZpY2U/IE5vdCBhdXRvbWF0aWNhbGx5LiBObywgSSBuZWVkIGEgbmV0IGRldmljZSBkcml2ZXIgdGhhdCBsb29rcyBmb3IgaXQsIG9yIEkgdXNlIGRldmljZSB0cmVlLiBXYWl0LCBpZiB0aGUgUEhZIGlzIHJlZ2lzdGVyZWQsIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgIG9ubHkgcnVucyBpZiB0aGUgUEhZIGlzIGFjdHVhbGx5IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZSwgbWVhbmluZyBgcGh5ZGV2LSZndDthdHRhY2hlZF9kZXYgIT0gTlVMTGAuCgpTbyBob3cgZG9lcyBhIFBIWSBvbiBgbWRpby1tdnVzYmAgZ2V0IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZT8gSW4gc3l6a2FsbGVyLCB0aGVyZSYjMzk7cyBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5YCBvciBzaW1pbGFyLCBidXQgd2hhdCBhYm91dCBgaW9jdGwoU0lPQ1NNSUlSRUcpYD8gTm8sIHRoZSBrZXkgaXMgc3RpbGwgdGhhdCBgbGlua19jaGFuZ2Vfbm90aWZ5YCBjb21lcyBmcm9tIGBwaHlfc3RhdGVfbWFjaGluZWAuIFRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGF0dGFjaCB0aGUgUEhZIHRvIHRoZSBuZXQgZGV2aWNlIGZyb20gdXNlcnNwYWNlLiBgcGh5X2F0dGFjaGAgaXMgYSBrZXJuZWwgQVBJLgoKQnV0IHdhaXQsIGBtZGlvLW12dXNiYCBpcyBqdXN0IGFuIE1ESU8gYnVzLiBXaXRob3V0IGEgbmV0IGRldmljZSwgYHBoeV9zdGF0ZV9tYWNoaW5lYCB3b24mIzM5O3QgcnVuLiBEb2VzIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBvbmx5IHJ1biB3aGVuIGF0dGFjaGVkPwoKTGV0JiMzOTtzIGV4cGxvcmUgb3RoZXIgYXZlbnVlcy4uLiBXaGF0IGFib3V0IERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSk/IERTQSBzd2l0Y2hlcyByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXNlcyBhbmQgYXR0YWNoIFBIWXMuIEludGVyZXN0aW5nLgoKUmlnaHQsIGJhY2sgdG8gdGhlIFVTQiBhcHByb2FjaC4gSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGRldmljZSwgaXQgY291bGQgYmUgYSBVU0IgZXRoZXJuZXQgZG9uZ2xlIHVzaW5nIHRoZSBgYXQ4MDN4YCBQSFkuIFBlcmZlY3QhIFVTQiBldGhlcm5ldCBkb25nbGVzIHVzdWFsbHkgaGF2ZSB0aGVpciBvd24gTURJTyBidXMgYW5kIHByb2JlIGZvciBQSFlzIG9uICppdCouCgpZZXMhIElmIFN5emthbGxlciBlbXVsYXRlcyBhIFVTQiBldGhlcm5ldCBkb25nbGUgKGxpa2UgYHNtc2M5NXh4YCBvciBgbGFuNzh4eGApLCB0aGUgZHJpdmVyIHdpbGwgcmVnaXN0ZXIgaXRzIG93biBNRElPIGJ1cyBhbmQgc2NhbiBmb3IgUEhZcy4gVGhlbiwgaWYgU3l6a2FsbGVyIHJlc3BvbmRzIHRvIHRoZSBNRElPIHJlYWQgd2l0aCB0aGUgYGF0ODAzeGAgUEhZIElELCB0aGUgYGF0ODAzeGAgZHJpdmVyIHdpbGwgcHJvYmUgYW5kIGF0dGFjaCBpdHNlbGYgdG8gdGhlIFVTQiBldGhlcm5ldCBuZXQgZGV2aWNlISBCaW5nbyEKCkxldCYjMzk7cyBjaGVjayBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgdG8gY29uZmlybSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OD1NRElPXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1MC0gIGRldm1fbWRpb2J1c19hbGxvY19zaXplKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTE6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0OjM1MjogIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcigpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxuLS1cbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0PTEyPWRldmljZSAodGhlIHNhbWUgb2JqZWN0cyB0aGF0IGFyZSByZWdpc3RlcmVkIHZpYVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q6MTM6YGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKWBgKS4gTUFDLXNpZGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIHN1Y2ggYXNcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q9Nz1UaGUgUEhZcyBvbiBhbiBNRElPIGJ1cyBbcGh5XSBhcmUgcHJvYmVkIGFuZCByZWdpc3RlcmVkIHVzaW5nXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdC05LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTYtICAgZHJpdmVyIG5lZWRzLCBzZXR1cCB0aGUgbWlpX2J1cyBzdHJ1Y3R1cmUsIGFuZCByZWdpc3RlciB3aXRoIHRoZSBQQUwgdXNpbmdcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJiMzOTtzIGEgcmVtb3ZlIGZ1bmN0aW9uIHRvIHVuZG8gYWxsIG9mXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVx0aWYgKHJldClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzQyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zNDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDMtXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMxMS12b2lkIHNqYTExMDVfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4Olx0cmMgPSBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNjg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfcGNzX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzk2Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jPTEyOTA9c3RhdGljIGludCBncmV0aF9tZGlvX2luaXQoc3RydWN0IGdyZXRoX3ByaXZhdGUgKmdyZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTMwNzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoZ3JldGgtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjQwMjc6XHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjgtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTIxPXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9tZGlvX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNTg6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz0xMDYxPXN0YXRpYyBpbnQgYXUxMDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYzoxMjIyOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihhdXAtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz0zNDI4PXN0YXRpYyBpbnQgeGdiZV9waHlfaW5pdChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVx0c25wcmludGYobWlpLVx1MDAzZWlkLCBzaXplb2YobWlpLVx1MDAzZWlkKSwgXCYjMzQ7JXNcJiMzNDssIGRldl9uYW1lKHBkYXRhLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzE4Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzIwOlx0XHRkZXZfZXJyKHBkYXRhLVx1MDAzZWRldiwgXCYjMzQ7bWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzIxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9OTg9aW50IHhnZV9tZGlvX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExOC1cdG1kaW9fYnVzLVx1MDAzZXBoeV9tYXNrID0gMHgxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTk6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4OS1cdFx0XHRcdCAgc3RydWN0IG1paV9idXMgKm1kaW8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkxMzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTE0LVx0XHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MjI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4Olx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jLTE3NC1cdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTAxMTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBheF9sb2NhbC1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTItXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz02ODc9c3RhdGljIGludCBhZzcxeHhfbWRpb19wcm9iZShzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NzI4Olx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVx0b2Zfbm9kZV9wdXQobW5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNjA6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcdFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jPTIxMT1zdHJ1Y3QgbWlpX2J1cyAqYmNtYV9tZGlvX21paV9yZWdpc3RlcihzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jOjIzNjpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVx0b2Zfbm9kZV9wdXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjMzLVx0XHRwaHlfbmFtZSA9IFwmIzM0O2V4dGVybmFsIFJ2TUlJXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MjM0Olx0XHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAmIzM5O21heC1zcGVlZCYjMzk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzUtXHRcdCAqIFBIWSBwcm9wZXJ0eSBmb3IgdXMsIGVmZmVjdGl2ZWx5IGxpbWl0aW5nIHRoZSBQSFkgc3VwcG9ydGVkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjIyNy1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIyMjg6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHNjLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XHRpID0gbWRpb2J1c19yZWdpc3Rlcih0cC1cdTAwM2VtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVx0aWYgKGkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA5NzpzdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVx0aWYgKG1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcdFx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEyMjpcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIzLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XHRlcnIgPSBtYWNiX21kaW9idXNfcmVnaXN0ZXIoYnAsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTYwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTExMDc9c3RhdGljIGludCBkbTkwNTFfbWRpb19yZWdpc3RlcihzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMTI1Olx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIGRiLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1Olx0cmV0dmFsID0gb2ZfbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVx1MDAzZW1kaW9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBwcml2LVx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0xODgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0yMDI9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjIzNzpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yMzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cdTAwM2VtaWlfYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcdFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIGZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9MTA5ND1zdGF0aWMgaW50IGhpeDVoZDJfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6MTE4NjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTEyMz1pbnQgaGNsZ2VfbWFjX21kaW9fY29uZmlnKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IH4oMVUgXHUwMDNjXHUwMDNjIG1hYy1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM9NDk1PXN0YXRpYyBpbnQgaG5zX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1ODQ6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXHR9IGVsc2UgaWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTkyLVx0XHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU5MzpcdFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5NC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI1NjA9c3RhdGljIGludCBlbWFjX2R0X21kaW9fcHJvYmUoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslc1wmIzM0OywgZGV2LVx1MDAzZW9mZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1ODU6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2ZGV2LVx1MDAzZW9mZGV2LVx1MDAzZWRldiwgYnVzLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXHRpZiAocmVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA4OC1cdGFkYXB0ZXItXHUwMDNlbWlpX2J1cyA9IGJ1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jOjEwODk6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA5MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDItXHRcdCBwcml2LVx1MDAzZXBkZXYtXHUwMDNlbmFtZSwgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlx0aWYgKG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtaWlfYnVzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXHRcdGVyciA9IC1FTlhJTztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jPTI4Mz1zdGF0aWMgaW50IG9yaW9uX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cdC8qIEZvciB0aGUgcGxhdGZvcm1zIG5vdCBzdXBwb3J0aW5nIERUL0FDUEkgZmFsbC1iYWNrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4MjpcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4My1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXHRpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcdFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYuZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg4LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTEzODc9c3RhdGljIGludCBweGExNjhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNC1cdHBlcC1cdTAwM2VzbWlfYnVzLVx1MDAzZXBoeV9tYXNrID0gMHhmZmZmZmZmZjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1MDU6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cdTAwM2VzbWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9OTk4PXN0YXRpYyBpbnQgbXRrX21kaW9faW5pdChzdHJ1Y3QgbXRrX2V0aCAqZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzNy1cdGRldl9kYmcoZXRoLVx1MDAzZWRldiwgXCYjMzQ7TURDIGlzIHJ1bm5pbmcgb24gJWQgSHpcXG5cJiMzNDssIE1EQ19NQVhfRlJFUSAvIGV0aC1cdTAwM2VtZGNfZGl2aWRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGV0aC1cdTAwM2VtaWlfYnVzLCBtaWlfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNDIyPXN0YXRpYyBpbnQgbXRrX3N0YXJfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE0NDg6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVx1MDAzZW1paSwgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM9Mjg3PWludCBtbHhiZl9naWdlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG1seGJmX2dpZ2UgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jOjMzMzpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzM0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYz0yNTM9aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYzoyNzM6XHRlcnIgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZmJkLVx1MDAzZWRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jPTEwMzY9c3RhdGljIGludCBrczg4NTFfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3Qga3M4ODUxX25ldCAqa3MsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU0LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmM6MTA1NTpcdFx0Z290byBlcnJfbWRpb2J1c19yZWdpc3RlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjAtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBMQU43OHh4IEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYGxhbjc4eHhgIGRyaXZlci4uLiByaWdodCwgaXQgdXNlcyBgbWRpb2J1c19yZWdpc3RlcmAuIE15IGluc3RpbmN0cyBpbW1lZGlhdGVseSBsZWQgbWUgdG8gdGhpbmsgaXQgc2hvdWxkIGJlIHVzaW5nIHRoZSBNRElPIGJ1cyBmb3IgUEhZIGludGVyYWN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCB2ZXJpZnkgdGhhdC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZTsgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AuIFRoYXQgc2hvdWxkIGdpdmUgdXMgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBQSFkgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZywgc28gYG1kaW9idXNfcmVnaXN0ZXJgIHNob3VsZCBiZSB0aGUga2V5IGZ1bmN0aW9uIHRvIHNlYXJjaCBmb3IgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnZXQgbWUgdG8gdGhlIHJpZ2h0IHNlY3Rpb24gb2YgY29kZSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjEtXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW9cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTIyOlx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlbWRpb2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjMtXHRvZl9ub2RlX3B1dChub2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY0NTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZXNlIG5ldHdvcmsgZHJpdmVycyBhcmUgc2V0dGluZyB0aGVtc2VsdmVzIHVwLiBJIHNlZSB0aGF0IHRoZSBgbGFuNzh4eGAgZHJpdmVyIGlzIHVzaW5nIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYC4gVGhhdCYjMzk7cyBhIHNvbGlkLCBzdGFuZGFyZCBhcHByb2FjaCwgbGV2ZXJhZ2luZyB0aGUgZGV2aWNlIHRyZWUgZm9yIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcuLi4gd2hhdCBhYm91dCB0aGUgYHNtc2M5NXh4YCBkcml2ZXI/IEFyZSB0aGV5IGhhbmRsaW5nIGl0IHRoZSBzYW1lIHdheT8gQXJlIHRoZXkgZm9sbG93aW5nIHRoZSBzYW1lIGJlc3QgcHJhY3RpY2VzLCBvciBhcmUgdGhleSBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50PyBJIG5lZWQgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFsc28gdXNpbmcgdGhlIGRldmljZSB0cmVlIGFuZCBgb2ZfbWRpb2J1c19yZWdpc3RlcmAsIG9yIGlmIHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoZWlyIG93biBjdXN0b20gTURJTyBidXMgcmVnaXN0cmF0aW9uIGxvZ2ljLiBUaGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHBvdGVudGlhbCBpc3N1ZXMgb3IgZGlmZmVyZW5jZXMgaW4gYmVoYXZpb3IgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBlc3BlY2lhbGx5IGlmIEkmIzM5O20gbG9va2luZyBhdCBjb25zb2xpZGF0aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IGZvciBlbnN1cmluZyBjb25zaXN0ZW50IGFuZCByZWxpYWJsZSBuZXR3b3JrIGludGVyZmFjZSBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgdGhhdCBvdGhlciBkcml2ZXImIzM5O3MgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihwZGF0YS1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTAxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV1cmVrYSEgRnV6emluZyB0aGUgYGF0ODAzeGAgUEhZIHZpYSBgc21zYzk1eHhgISoqCgpPa2F5LCB0aGlzIGlzIGJyaWxsaWFudCEgSXQganVzdCBoaXQgbWUuIFRoZSBgc21zYzk1eHhgIGRyaXZlciB1c2VzIGBtZGlvYnVzX3JlZ2lzdGVyYCB3aXRoIGBwZGF0YS0mZ3Q7bWRpb2J1c2AuIFRoYXQmIzM5O3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyIGlzIGVtdWxhdGluZyBhbiBgc21zYzk1eHhgIFVTQiBkZXZpY2UsIGFuZCBpdCYjMzk7cyByZWdpc3RlcmluZyBhbiBNRElPIGJ1cyBhbmQgc2Nhbm5pbmcgZm9yIFBIWXMsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gQW5kIGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaWYgd2UgcmVzcG9uZCB0byB0aGUgTURJTyByZWFkIHdpdGggdGhlIGBhdDgwM3hgIFBIWSBJRCwgbGV0JiMzOTtzIHNheSBgQVRIODAzNV9QSFlfSURgLCB0aGUgYGF0ODAzeGAgZHJpdmVyICp3aWxsKiBiZSBwcm9iZWQhIEl0JiMzOTtzIHJpZ2h0IHRoZXJlLCBjb25uZWN0aW5nIHRvIHRoYXQgTURJTyBidXMuCgpUaGVuIHRoZSBgc21zYzk1eHhgIHdpbGwgbmF0dXJhbGx5IGF0dGFjaCB0aGF0IFBIWSB0byBpdHMgbmV0IGRldmljZS4gVGhlbiwgd2l0aCB0aGUgUEhZIGF0dGFjaGVkIGFuZCBhY3RpdmUsIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgIHdpbGwga2ljayBpbiwgYW5kIGJvb20sIHdlIGdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAhIFRoYXQmIzM5O3MgZXhhY3RseSB3aGVyZSB3ZSB3YW50IHRvIGJlLiBUaGlzIGlzIGEgcGVyZmVjdCwgZnV6emFibGUgcGF0aCEKCkFscmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYHNtc2M5NXh4LmNgIHRvIGNvbmZpcm0gaXQgYWN0dWFsbHkgZG9lcyBzY2FuIGZvciBQSFlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LCBidXQgdGhpcyBmZWVscyBpbmNyZWRpYmx5IHByb21pc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIzMDpcdFx0XHRwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZXBoeV9tYXNrID0gfigxdSBcdTAwM2NcdTAwM2MgU01TQzk1WFhfSU5URVJOQUxfUEhZX0lEKTtcbjEyMzE6XHRcbjEyMzI6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlcHJpdiA9IGRldjtcbjEyMzM6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlcmVhZCA9IHNtc2M5NXh4X21kaW9idXNfcmVhZDtcbjEyMzQ6XHRcdHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNld3JpdGUgPSBzbXNjOTV4eF9tZGlvYnVzX3dyaXRlO1xuMTIzNTpcdFx0cGRhdGEtXHUwMDNlbWRpb2J1cy1cdTAwM2VyZXNldCA9IHNtc2M5NXh4X21kaW9idXNfcmVzZXQ7XG4xMjM2Olx0XHRwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtzbXNjOTV4eC1tZGlvYnVzXCYjMzQ7O1xuMTIzNzpcdFx0cGRhdGEtXHUwMDNlbWRpb2J1cy1cdTAwM2VwYXJlbnQgPSBcdTAwMjZkZXYtXHUwMDNldWRldi1cdTAwM2VkZXY7XG4xMjM4Olx0XG4xMjM5Olx0XHRzbnByaW50ZihwZGF0YS1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBBUlJBWV9TSVpFKHBkYXRhLVx1MDAzZW1kaW9idXMtXHUwMDNlaWQpLFxuMTI0MDpcdFx0XHQgXCYjMzQ7dXNiLSUwM2Q6JTAzZFwmIzM0OywgZGV2LVx1MDAzZXVkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c251bSwgZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGV2bnVtKTtcbjEyNDE6XHRcbjEyNDI6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG4xMjQzOlx0XHRpZiAocmV0KSB7XG4xMjQ0Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxuXCYjMzQ7KTtcbjEyNDU6XHRcdFx0Z290byBmcmVlX21kaW87XG4xMjQ2Olx0XHR9XG4xMjQ3Olx0XG4xMjQ4Olx0XHRwZGF0YS1cdTAwM2VwaHlkZXYgPSBwaHlfZmluZF9maXJzdChwZGF0YS1cdTAwM2VtZGlvYnVzKTtcbjEyNDk6XHRcdGlmICghcGRhdGEtXHUwMDNlcGh5ZGV2KSB7XG4xMjUwOlx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bm8gUEhZIGZvdW5kXFxuXCYjMzQ7KTtcbjEyNTE6XHRcdFx0cmV0ID0gLUVOT0RFVjtcbjEyNTI6XHRcdFx0Z290byB1bnJlZ2lzdGVyX21kaW87XG4xMjUzOlx0XHR9XG4xMjU0Olx0XG4xMjU1Olx0XHRwZGF0YS1cdTAwM2VwaHlkZXYtXHUwMDNlaXJxID0gcGh5X2lycTtcbjEyNTY6XHRcdHBkYXRhLVx1MDAzZXBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHBkYXRhLVx1MDAzZWlzX2ludGVybmFsX3BoeTtcbjEyNTc6XHRcbjEyNTg6XHRcdC8qIGRldGVjdCBkZXZpY2UgcmV2aXNpb24gYXMgZGlmZmVyZW50IGZlYXR1cmVzIG1heSBiZSBhdmFpbGFibGUgKi9cbjEyNTk6XHRcdHJldCA9IHNtc2M5NXh4X3JlYWRfcmVnKGRldiwgSURfUkVWLCBcdTAwMjZ2YWwpO1xuMTI2MDpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEyNjE6XHRcdFx0Z290byB1bnJlZ2lzdGVyX21kaW87XG4xMjYyOlx0XG4xMjYzOlx0XHR2YWwgXHUwMDNlXHUwMDNlPSAxNjtcbjEyNjQ6XHRcdGlmICgodmFsID09IElEX1JFVl9DSElQX0lEXzk1MDBBXykgfHwgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NTMwXykgfHxcbjEyNjU6XHRcdCAgICAodmFsID09IElEX1JFVl9DSElQX0lEXzg5NTMwXykgfHwgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NzMwXykpXG4xMjY2Olx0XHRcdHBkYXRhLVx1MDAzZWZlYXR1cmVzID0gKEZFQVRVUkVfOF9XQUtFVVBfRklMVEVSUyB8XG4xMjY3Olx0XHRcdFx0RkVBVFVSRV9QSFlfTkxQX0NST1NTT1ZFUiB8XG4xMjY4Olx0XHRcdFx0RkVBVFVSRV9SRU1PVEVfV0FLRVVQKTtcbjEyNjk6XHRcdGVsc2UgaWYgKHZhbCA9PSBJRF9SRVZfQ0hJUF9JRF85NTEyXylcbjEyNzA6XHRcdFx0cGRhdGEtXHUwMDNlZmVhdHVyZXMgPSBGRUFUVVJFXzhfV0FLRVVQX0ZJTFRFUlM7XG4xMjcxOlx0XG4xMjcyOlx0XHRkZXYtXHUwMDNlbmV0LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZzbXNjOTV4eF9uZXRkZXZfb3BzO1xuMTI3MzpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnNtc2M5NXh4X2V0aHRvb2xfb3BzO1xuMTI3NDpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VmbGFncyB8PSBJRkZfTVVMVElDQVNUO1xuMTI3NTpcdFx0ZGV2LVx1MDAzZW5ldC1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0Mzs9IFNNU0M5NVhYX1RYX09WRVJIRUFEX0NTVU07XG4xMjc2Olx0XHRkZXYtXHUwMDNlbmV0LVx1MDAzZW1pbl9tdHUgPSBFVEhfTUlOX01UVTtcbjEyNzc6XHRcdGRldi1cdTAwM2VuZXQtXHUwMDNlbWF4X210dSA9IEVUSF9EQVRBX0xFTjtcbjEyNzg6XHRcdGRldi1cdTAwM2VoYXJkX210dSA9IGRldi1cdTAwM2VuZXQtXHUwMDNlbXR1ICYjNDM7IGRldi1cdTAwM2VuZXQtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuMTI3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODQ1NQoJCQkJCQkJb3V0cHV0OiAxOTIKCQkJCQkJCXRob3VnaHRzOiA5MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQVQ4MDNYIFBIWSBEcml2ZXIgd2l0aCBVU0IgRW11bGF0aW9uKioKCk9rYXksIHNvIHRoZSBgc21zYzk1eHhgIGRyaXZlciBpcyBrZXkgaGVyZTsgaXQgcmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBhbmQgdGhlbiBjYWxscyBgcGh5X2ZpbmRfZmlyc3RgLiBMYXRlciwgYHNtc2M5NXh4X3Jlc2V0YCBjYWxscyBgcGh5X2Nvbm5lY3RfZGlyZWN0YCwgYW5kIGZpbmFsbHkgYHBoeV9zdGFydGAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIG5ldCBkZXZpY2UgY29tZXMgdXAuIFRoaXMga2lja3Mgb2ZmIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgLCB3aGljaCwgY3J1Y2lhbGx5LCAqZG9lcyogZXZlbnR1YWxseSBjYWxsIGBsaW5rX2NoYW5nZV9ub3RpZnlgISBTcGVjaWZpY2FsbHksIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyByZWFjaGFibGUgYW5kIHRodXMgZnV6emFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBJJiMzOTttIGFmdGVyLgoKTm93IGZvciB0aGUgY29uZmlndXJhdGlvbi4gV2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfQVQ4MDNYX1BIWWAuIFdoaWxlIHN5emthbGxlciBwcm9iYWJseSBhbHJlYWR5IGhhbmRsZXMgYENPTkZJR19VU0JfTkVUX1NNU0M5NVhYYCAob3IgYWx0ZXJuYXRpdmVzIHRoYXQgcmVnaXN0ZXIgYW4gTURJTyBidXMpLCBpdCYjMzk7cyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgc3RhdGUgYENPTkZJR19BVDgwM1hfUEhZYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBwYXRjaDoKCmBgYGMKLQlpZiAocGh5ZGV2LSZndDtzdGF0ZSA9PSBQSFlfTk9MSU5LICZhbXA7JmFtcDsgcGh5ZGV2LSZndDttZGlvLnJlc2V0X2dwaW8pIHsKJiM0MzsJaWYgKHBoeWRldi0mZ3Q7c3RhdGUgPT0gUEhZX05PTElOSyAmYW1wOyZhbXA7IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHsKYGBgCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U7IGl0JiMzOTtzIHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgd2hpY2ggbWVhbnMgd2UgYXJlIGFsc28gY2hlY2tpbmcgYHJlc2V0X2N0cmxgLCBpbiBhZGRpdGlvbiB0byBgcmVzZXRfZ3Bpb2AuIERlZmluaXRlbHkgd29ydGggZnV6emluZyBiZWNhdXNlIGl0IG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBhIHJlYWNoYWJsZSBQSFkgZHJpdmVyLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBjbGVhcjogYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBgcGh5X2RldmljZV9oYXNfcmVzZXRgIGFuZCBgbWRpb2Rldl9oYXNfcmVzZXRgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBub3QgcmVhbGx5IHRhcmdldHMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkLiBZZXAsIGp1c3QgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGluIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AsIHBsdXMgdGhlIGlubGluZXMuCgpTbywgYEZvY3VzU3ltYm9sc2A6IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBhbmQgYEVuYWJsZUNvbmZpZ3NgOiBgQVQ4MDNYX1BIWWAuCgpgQVQ4MDNYX1BIWWAgYWxzbyBkZXBlbmRzIG9uIGBSRUdVTEFUT1JgLCB3aGljaCBzeXprYWxsZXIgdXN1YWxseSBoYXMgZW5hYmxlZCBhbnl3YXksIGFuZCBpbmNsdWRlcyBgUUNPTV9ORVRfUEhZTElCYC4gSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgaXMgcmVhY2hhYmxlIHZpYSBVU0IgTURJTyBlbXVsYXRpb24uCgpUbyByZWNhcDogdGhlIHBhdGNoIGFsdGVycyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGJ5IHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaGFuZGxlIGByZXNldF9jdHJsYCBhcyB3ZWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQSFkgZHJpdmVyLCBhbmQgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSBzZXQgdXAgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAobGlrZSBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGxpa2UgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVDgwM1hfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVQ4MDNYX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZIGRyaXZlciB0byB1c2UgYHBoeV9kZXZpY2VfaGFzX3Jlc2V0KClgIGluc3RlYWQgb2YgZGlyZWN0bHkgY2hlY2tpbmcgYHJlc2V0X2dwaW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgdGhlIGRyaXZlciB0byBhbHNvIGhhbmRsZSBgcmVzZXRfY3RybGAuIFRoZSBQSFkgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIChlLmcuLCBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGUuZy4sIG1kaW8tbXZ1c2IpIHRoYXQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCByZXNwb25kcyB0byBNRElPIHJlYWRzIHdpdGggdGhlIEFUODAzWCBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODoyNC4xOTQ5MDQ4MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTQ3NTcwMzQ4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVQ4MDNYX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDg6MjQuMTk0OTEyMzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTY1MTA3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOWU3MzE5MzA5NzFkZTUwZDcyMTUxMDNiZGJmOTg5YzM0YjkwZmFlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jIGIvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcXG5pbmRleCBiYTRkYzA3NzUyYjYwYi4uNjg3MmRiZjc3ODU2MjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xcbkBAIC01MzcsNyArNTM3LDcgQEAgc3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHQgKiBpbiB0aGUgRklGTy4gSW4gc3VjaCBjYXNlcywgdGhlIEZJRk8gZW50ZXJzIGFuIGVycm9yIG1vZGUgaXRcXG4gXFx0ICogY2Fubm90IHJlY292ZXIgZnJvbSBieSBzb2Z0d2FyZS5cXG4gXFx0ICovXFxuLVxcdGlmIChwaHlkZXYtXFx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcXHUwMDI2XFx1MDAyNiBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpKSB7XFxuIFxcdFxcdHN0cnVjdCBhdDgwM3hfY29udGV4dCBjb250ZXh0O1xcbiBcXG4gXFx0XFx0YXQ4MDN4X2NvbnRleHRfc2F2ZShwaHlkZXYsIFxcdTAwMjZjb250ZXh0KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZGlvLmggYi9pbmNsdWRlL2xpbnV4L21kaW8uaFxcbmluZGV4IDMwMDgwNWU2NjU5MmQwLi5hN2Q5ZTNhZTM2MmE1MiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbWRpby5oXFxuQEAgLTg2LDYgKzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbWRpb2Rldl9nZXRfZHJ2ZGF0YShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXFxuIFxcdHJldHVybiBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW8tXFx1MDAzZWRldik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBtZGlvZGV2X2hhc19yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXFxuK3tcXG4rXFx0cmV0dXJuIChtZGlvLVxcdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXFx1MDAzZXJlc2V0X2N0cmwpO1xcbit9XFxuK1xcbiB2b2lkIG1kaW9fZGV2aWNlX2ZyZWUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbiBpbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5AQCAtMjIzMSw2ICsyMjMxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwaHlfZGV2aWNlX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCB2YWx1ZSlcXG4gXFx0bWRpb19kZXZpY2VfcmVzZXQoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbywgdmFsdWUpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgcGh5X2RldmljZV9oYXNfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRyZXR1cm4gbWRpb2Rldl9oYXNfcmVzZXQoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuK31cXG4rXFxuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXFx0XFxcXFxcbiBcXHRkZXZfZXJyKFxcdTAwMjZfcGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgZm9ybWF0LCAjI2FyZ3MpXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODoyNC45MTI0OTc2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU0MDM5NDE5MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUODAzWF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBmdW5jdGlvbiBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZIGRyaXZlciB0byB1c2UgYHBoeV9kZXZpY2VfaGFzX3Jlc2V0KClgIGluc3RlYWQgb2YgZGlyZWN0bHkgY2hlY2tpbmcgYHJlc2V0X2dwaW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbGxvd3MgdGhlIGRyaXZlciB0byBhbHNvIGhhbmRsZSBgcmVzZXRfY3RybGAuIFRoZSBQSFkgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIChlLmcuLCBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGUuZy4sIG1kaW8tbXZ1c2IpIHRoYXQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCByZXNwb25kcyB0byBNRElPIHJlYWRzIHdpdGggdGhlIEFUODAzWCBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjllNzMxOTMwOTcxZGU1MGQ3MjE1MTAzYmRiZjk4OWMzNGI5MGZhZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE2OjA4OjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMgYi9kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY1xuaW5kZXggYmE0ZGMwNzc1MmI2MGIuLjY4NzJkYmY3Nzg1NjI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jXG5AQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyB2b2lkIGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIGluIHRoZSBGSUZPLiBJbiBzdWNoIGNhc2VzLCB0aGUgRklGTyBlbnRlcnMgYW4gZXJyb3IgbW9kZSBpdFxuIFx0ICogY2Fubm90IHJlY292ZXIgZnJvbSBieSBzb2Z0d2FyZS5cbiBcdCAqL1xuLVx0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfTk9MSU5LIFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5yZXNldF9ncGlvKSB7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeV9kZXZpY2VfaGFzX3Jlc2V0KHBoeWRldikpIHtcbiBcdFx0c3RydWN0IGF0ODAzeF9jb250ZXh0IGNvbnRleHQ7XG4gXG4gXHRcdGF0ODAzeF9jb250ZXh0X3NhdmUocGh5ZGV2LCBcdTAwMjZjb250ZXh0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kaW8uaCBiL2luY2x1ZGUvbGludXgvbWRpby5oXG5pbmRleCAzMDA4MDVlNjY1OTJkMC4uYTdkOWUzYWUzNjJhNTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21kaW8uaFxuKysrIGIvaW5jbHVkZS9saW51eC9tZGlvLmhcbkBAIC04Niw2ICs4NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKm1kaW9kZXZfZ2V0X2RydmRhdGEoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxuIFx0cmV0dXJuIGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvLVx1MDAzZWRldik7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBtZGlvZGV2X2hhc19yZXNldChzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW8pXG4re1xuK1x0cmV0dXJuIChtZGlvLVx1MDAzZXJlc2V0X2dwaW8gfHwgbWRpby1cdTAwM2VyZXNldF9jdHJsKTtcbit9XG4rXG4gdm9pZCBtZGlvX2RldmljZV9mcmVlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gc3RydWN0IG1kaW9fZGV2aWNlICptZGlvX2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xuIGludCBtZGlvX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5LmggYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5pbmRleCBmYzY4MDkwMTI3NWI3My4uYmVmZjFkNmZjYzdjZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjIzMSw2ICsyMjMxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwaHlfZGV2aWNlX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCB2YWx1ZSlcbiBcdG1kaW9fZGV2aWNlX3Jlc2V0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLCB2YWx1ZSk7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBwaHlfZGV2aWNlX2hhc19yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHJldHVybiBtZGlvZGV2X2hhc19yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbyk7XG4rfVxuK1xuICNkZWZpbmUgcGh5ZGV2X2VycihfcGh5ZGV2LCBmb3JtYXQsIGFyZ3MuLi4pXHRcXFxuIFx0ZGV2X2VycihcdTAwMjZfcGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBmb3JtYXQsICMjYXJncylcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjI0LjkxMjUwMDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQ1ODU3NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jYCwgd2hpY2gsIGZyb20gdGhlIG5hbWUsIGxvb2tzIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIEFUODAzWCBQSFkgZHJpdmVyLiBJdCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbWRpby5oYCBhbmQgYHBoeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdWJzdGl0dXRpbmcgYHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW9gIHdpdGggYSBjYWxsIHRvIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gRXNzZW50aWFsbHksIHRoZXkncmUgaW1wcm92aW5nIHRoZSByZXNldCBoYW5kbGluZyBsb2dpYy4gRnVuY3Rpb25hbGx5LCBpdCdzIGEgc21hbGwgY2hhbmdlLCBidXQgaXQncyBzcGVjaWZpYyB0byB0aGlzIHBhcnRpY3VsYXIgUEhZIGRyaXZlci5cblxuVGhlIGJpZyBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBHaXZlbiB0aGF0IFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBldmVuICpiZSogaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZXkncmUgZ2VuZXJhbGx5IHRpZWQgdG8gdGhlIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gV2hpbGUgeW91ICpjb3VsZCogcG90ZW50aWFsbHkgcHJvYmUgdGhlbSB2aWEgTURJTyBidXMgZW11bGF0aW9uLCB0aGF0J3Mgbm90IHRoZSBub3JtLiBTbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBwYXRod2F5IGZvciB0aGlzIHNwZWNpZmljIGRyaXZlciB0byBiZSB0ZXN0ZWQuXG5cbkxldCdzIHNlZeKApiBUaGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGlzIGEgY2FsbGJhY2sgd2l0aGluIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0dXJlLiBDb3VsZCB3ZSBmdXp6IGBhdDgwM3guY2AgYW5kIHNwZWNpZmljYWxseSB0aGlzIGNhbGxiYWNrPyBNeSBndXQgc2F5cyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgdHJpY2t5LiBTeXprYWxsZXIsIGluIG15IGV4cGVyaWVuY2UsIGRvZXNuJ3QgdXN1YWxseSB0YXJnZXQgc3BlY2lmaWMgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHZpcnR1YWwgTURJTyBidXMgb3Igc29tZXRoaW5nIHNpbWlsYXIgYXZhaWxhYmxlIGluIHRoZSBrZXJuZWwuXG5cbkhvbGQgb24sIGlzIHRoZXJlIGEgdmlydHVhbCBNRElPIGJ1cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIGNoZWNrIGZvciBgQ09ORklHX0FUODAzWF9QSFlgIHRvIHNlZSBpZiB0aGF0J3MgZW5hYmxlZC4gVGhhdCBjb25maWd1cmF0aW9uIHdvdWxkIHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gRnJvbSB0aGVyZSBJJ2xsIGtub3cgaWYgdGhlcmUncyBhbnkgaG9wZSBmb3IgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjMxLjU1ODM2MTQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDQxNTc2NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz00ODU9c3RhdGljIGludCBhdDgwM3hfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzo1MzE6c3RhdGljIHZvaWQgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYz0xMTEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhdDgwM3hfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQxLVxcdC5jb25maWdfaW5pdFxcdFxcdD0gYXQ4MDN4X2NvbmZpZ19pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExNDI6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTQzLVxcdC5zZXRfd29sXFx0XFx0PSBhdDgwM3hfc2V0X3dvbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODAtXFx0LmNvbmZpZ19pbml0XFx0XFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE4MTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExODItXFx0LnN1c3BlbmRcXHRcXHQ9IGF0ODAzeF9zdXNwZW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODozNi4wNjI1MjY4MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTYwMjIwNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBBVDgwM1ggUEhZIERyaXZlciBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBWTSBzZXR1cD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgaXMgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFF1YWxjb21tIEF0aGVyb3MgQVQ4MDNYLiBVc3VhbGx5LCBQSFkgZHJpdmVycyBhcmUgbG9hZGVkIHdoZW4gYSBuZXR3b3JrIGRldmljZSByZWdpc3RlcnMgd2l0aCBhbiBNRElPIGJ1cy4gU28sIGhvdyBkbyBJIHJlcGxpY2F0ZSB0aGF0IHNjZW5hcmlvIHZpcnR1YWxseT9cblxuSG1tLCBJIHJlY2FsbCB0aGVyZSBtaWdodCBiZSBzb21lIGhlbHBlciBkcml2ZXJzIGZvciB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gc2ltdWxhdGUgYSBQSFkuIEknbSB0aGlua2luZyBvZiBzb21ldGhpbmcgbGlrZSBgZml4ZWRfcGh5LmNgIG9yIHBlcmhhcHMgYSBtb3JlIGNvbmZpZ3VyYWJsZSBcIm1vY2tcIiBNRElPIGRyaXZlci4gSXMgdGhlcmUgYSB3YXkgSSBjYW4gcmVnaXN0ZXIgYXJiaXRyYXJ5IFBIWXMgd2l0aGluIGEgVk0/XG5cbk5vdywgSSBzZWVtIHRvIHJlbWVtYmVyIHRoYXQgdXNlcnNwYWNlICpjYW4qIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcywgYnV0IGNhbiBpdCBhbHNvIGF0dGFjaCB0aGVtIHRvIGFuIGFyYml0cmFyeSBQSFk/IEkgbmVlZCBhIHdheSB0byBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBJIGJyaWVmbHkgY29uc2lkZXJlZCBgbWRpby1ncGlvYCBvciBgbWRpby1iaXRiYW5nYCwgYnV0IHRob3NlIGFyZSBjbGVhcmx5IGhhcmR3YXJlLXNwZWNpZmljIGFuZCB1c2VsZXNzIGhlcmUuXG5cbldhaXQgYSBzZWNvbmQsIHRoZXJlJ3MgYG1kaW8tbW9ja3VwYCwgcmlnaHQ/IE9yIHdhcyBpdCBgbWRpby1iY20tdW5pbWFjYD8gTm8sIG5laXRoZXIgb2YgdGhvc2Ugc2VlbSBxdWl0ZSByaWdodC4gSSBrZWVwIGRyYXdpbmcgYSBibGFuay4gSXQncyB0aW1lIHRvIGRvIGEgZGVlcGVyIGRpdmUuIExldCBtZSBqdXN0IHNlYXJjaCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9gIHRvIHNlZSB3aGF0IE1ESU8tcmVsYXRlZCBkcml2ZXJzIGFyZSBhdmFpbGFibGUgYW5kIGlmIGFueSBwcm92aWRlIGEgd2F5IHRvIHNpbXVsYXRlIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDg6NDcuNjY0NzM3MDUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjgzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFkaW4uY1wiLFxuICAgIFwiYWRpbjExMDAuY1wiLFxuICAgIFwiYWlyX2FuODgwMS5jXCIsXG4gICAgXCJhaXJfZW44ODExaC5jXCIsXG4gICAgXCJhaXJfcGh5X2xpYi5jXCIsXG4gICAgXCJhaXJfcGh5X2xpYi5oXCIsXG4gICAgXCJhbWQuY1wiLFxuICAgIFwiYXMyMXh4eC5jXCIsXG4gICAgXCJheDg4Nzk2Yi5jXCIsXG4gICAgXCJheDg4Nzk2Yl9ydXN0LnJzXCIsXG4gICAgXCJiY20tY3lnbnVzLmNcIixcbiAgICBcImJjbS1waHktbGliLmNcIixcbiAgICBcImJjbS1waHktbGliLmhcIixcbiAgICBcImJjbS1waHktcHRwLmNcIixcbiAgICBcImJjbTU0MTQwLmNcIixcbiAgICBcImJjbTYzeHguY1wiLFxuICAgIFwiYmNtN3h4eC5jXCIsXG4gICAgXCJiY204NDg4MS5jXCIsXG4gICAgXCJiY204N3h4LmNcIixcbiAgICBcImJyb2FkY29tLmNcIixcbiAgICBcImNpY2FkYS5jXCIsXG4gICAgXCJjb3J0aW5hLmNcIixcbiAgICBcImRhdmljb20uY1wiLFxuICAgIFwiZHA4MzY0MC5jXCIsXG4gICAgXCJkcDgzNjQwX3JlZy5oXCIsXG4gICAgXCJkcDgzODIyLmNcIixcbiAgICBcImRwODM4NDguY1wiLFxuICAgIFwiZHA4Mzg2Ny5jXCIsXG4gICAgXCJkcDgzODY5LmNcIixcbiAgICBcImRwODN0YzgxMS5jXCIsXG4gICAgXCJkcDgzdGQ1MTAuY1wiLFxuICAgIFwiZHA4M3RnNzIwLmNcIixcbiAgICBcImV0MTAxMWMuY1wiLFxuICAgIFwiZml4ZWRfcGh5LmNcIixcbiAgICBcImljcGx1cy5jXCIsXG4gICAgXCJpbnRlbC14d2F5LmNcIixcbiAgICBcImxpbmttb2RlLmNcIixcbiAgICBcImx4dC5jXCIsXG4gICAgXCJtYXJ2ZWxsLTg4cTJ4eHguY1wiLFxuICAgIFwibWFydmVsbC04OHgyMjIyLmNcIixcbiAgICBcIm1hcnZlbGwuY1wiLFxuICAgIFwibWFydmVsbDEwZy5jXCIsXG4gICAgXCJtZGlvLW9wZW4tYWxsaWFuY2UuaFwiLFxuICAgIFwibWRpb19idXMuY1wiLFxuICAgIFwibWRpb19idXNfcHJvdmlkZXIuY1wiLFxuICAgIFwibWRpb19kZXZpY2UuY1wiLFxuICAgIFwibWRpb19kZXZyZXMuY1wiLFxuICAgIFwibWVzb24tZ3hsLmNcIixcbiAgICBcIm1pY3JlbC5jXCIsXG4gICAgXCJtaWNyb2NoaXAuY1wiLFxuICAgIFwibWljcm9jaGlwX3Jkc19wdHAuY1wiLFxuICAgIFwibWljcm9jaGlwX3Jkc19wdHAuaFwiLFxuICAgIFwibWljcm9jaGlwX3QxLmNcIixcbiAgICBcIm1pY3JvY2hpcF90MXMuY1wiLFxuICAgIFwibWlpX3RpbWVzdGFtcGVyLmNcIixcbiAgICBcIm1vdG9yY29tbS5jXCIsXG4gICAgXCJteGwtODYxMTAuY1wiLFxuICAgIFwibXhsLWdweS5jXCIsXG4gICAgXCJuYXRpb25hbC5jXCIsXG4gICAgXCJuY24yNjAwMC5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmNcIixcbiAgICBcIm54cC1jNDUtdGphMTF4eC5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguaFwiLFxuICAgIFwibnhwLWNidHguY1wiLFxuICAgIFwibnhwLXRqYTExeHguY1wiLFxuICAgIFwib3Blbl9hbGxpYW5jZV9oZWxwZXJzLmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5oXCIsXG4gICAgXCJwaHktYzQ1LmNcIixcbiAgICBcInBoeS1jYXBzLmhcIixcbiAgICBcInBoeS1jb3JlLmNcIixcbiAgICBcInBoeS5jXCIsXG4gICAgXCJwaHlfY2Fwcy5jXCIsXG4gICAgXCJwaHlfZGV2aWNlLmNcIixcbiAgICBcInBoeV9sZWRfdHJpZ2dlcnMuY1wiLFxuICAgIFwicGh5X2xpbmtfdG9wb2xvZ3kuY1wiLFxuICAgIFwicGh5X3BhY2thZ2UuY1wiLFxuICAgIFwicGh5X3BvcnQuY1wiLFxuICAgIFwicGh5bGliLWludGVybmFsLmhcIixcbiAgICBcInBoeWxpYi5oXCIsXG4gICAgXCJwaHlsaW5rLmNcIixcbiAgICBcInFzZW1pLmNcIixcbiAgICBcInF0MjAyNS5yc1wiLFxuICAgIFwicm9ja2NoaXAuY1wiLFxuICAgIFwic2ZwLWJ1cy5jXCIsXG4gICAgXCJzZnAuY1wiLFxuICAgIFwic2ZwLmhcIixcbiAgICBcInNtc2MuY1wiLFxuICAgIFwic3RlMTBYcC5jXCIsXG4gICAgXCJzdHVicy5jXCIsXG4gICAgXCJzd3BoeS5jXCIsXG4gICAgXCJzd3BoeS5oXCIsXG4gICAgXCJ0ZXJhbmV0aWNzLmNcIixcbiAgICBcInVQRDYwNjIwLmNcIixcbiAgICBcInZpdGVzc2UuY1wiLFxuICAgIFwieGlsaW54X2dtaWkycmdtaWkuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJhcXVhbnRpYVwiLFxuICAgIFwibWVkaWF0ZWtcIixcbiAgICBcIm1zY2NcIixcbiAgICBcInFjb21cIixcbiAgICBcInJlYWx0ZWtcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowODo0Ny42NjUwMDgyNzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI5ODAxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4cGxvcmluZyBWaXJ0dWFsIFBIWSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB3YXkgdG8gY29uanVyZSB1cCBhIFBIWSBkZXZpY2Ugd2l0aG91dCBpdCBiZWluZyBwaHlzaWNhbGx5IGNvbm5lY3RlZCwgdXNpbmcgdG9vbHMgbGlrZSBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdGhyb3VnaCBNRElPIGJ1c2VzLCBhbmQgbmF0dXJhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbGl6aW5nIHRoaXMgZW50aXJlIHByb2Nlc3MuIENhbiBJIHNvbWVob3cgc2ltdWxhdGUgYW4gTURJTyBidXMgd2l0aGluIGEgVk0gZW52aXJvbm1lbnQ/IFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbi5cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYCwgYXMgdGhhdCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGNvbXBvbmVudCBmb3IgTURJTyBidXMgaGFuZGxpbmcuIFRoZSBrZXkgd291bGQgYmUgZmluZGluZyBhIHZpcnR1YWwgTURJTyBidXMgZHJpdmVyIGlmIG9uZSBleGlzdHMuIExldCdzIHNlZSBpZiBzb21ldGhpbmcgYXBwcm9wcmlhdGUgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvbWRpby9gLiBJIGJldCBJIGNhbiBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTE3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjUyLjQ5NDgxMjk1MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWNwaV9tZGlvLmNcIixcbiAgICBcImZ3bm9kZV9tZGlvLmNcIixcbiAgICBcIm1kaW8tYWlyb2hhLmNcIixcbiAgICBcIm1kaW8tYXNwZWVkLmNcIixcbiAgICBcIm1kaW8tYmNtLWlwcm9jLmNcIixcbiAgICBcIm1kaW8tYmNtLXVuaW1hYy5jXCIsXG4gICAgXCJtZGlvLWJpdGJhbmcuY1wiLFxuICAgIFwibWRpby1jYXZpdW0uY1wiLFxuICAgIFwibWRpby1jYXZpdW0uaFwiLFxuICAgIFwibWRpby1ncGlvLmNcIixcbiAgICBcIm1kaW8taGlzaS1mZW1hYy5jXCIsXG4gICAgXCJtZGlvLWkyYy5jXCIsXG4gICAgXCJtZGlvLWlwcTQwMTkuY1wiLFxuICAgIFwibWRpby1pcHE4MDY0LmNcIixcbiAgICBcIm1kaW8tbW94YXJ0LmNcIixcbiAgICBcIm1kaW8tbXNjYy1taWltLmNcIixcbiAgICBcIm1kaW8tbXV4LWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLW11eC1iY202MzY4LmNcIixcbiAgICBcIm1kaW8tbXV4LWdwaW8uY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZzEyYS5jXCIsXG4gICAgXCJtZGlvLW11eC1tZXNvbi1neGwuY1wiLFxuICAgIFwibWRpby1tdXgtbW1pb3JlZy5jXCIsXG4gICAgXCJtZGlvLW11eC1tdWx0aXBsZXhlci5jXCIsXG4gICAgXCJtZGlvLW11eC5jXCIsXG4gICAgXCJtZGlvLW12dXNiLmNcIixcbiAgICBcIm1kaW8tb2N0ZW9uLmNcIixcbiAgICBcIm1kaW8tcGljNjRocHNjLmNcIixcbiAgICBcIm1kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgICBcIm1kaW8tcmVnbWFwLmNcIixcbiAgICBcIm1kaW8tc3VuNGkuY1wiLFxuICAgIFwibWRpby10aHVuZGVyLmNcIixcbiAgICBcIm1kaW8teGdlbmUuY1wiLFxuICAgIFwib2ZfbWRpby5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjUyLjQ5NDkzNDA5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODY0NzkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBCdXMgQ3JlYXRpb24gYW5kIFN5emthbGxlcidzIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBNRElPIGJ1cyBkcml2ZXJzIGFuZCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJJ20gYXdhcmUgb2YgdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnM6IGBtZGlvLWdwaW8uY2AsIGBtZGlvLWkyYy5jYCwgYW5kIGBtZGlvLWJpdGJhbmcuY2AuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlciBiZSBsZXZlcmFnZWQgdG8gKmNyZWF0ZSogYW4gTURJTyBidXM/XG5cbk15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gc3l6a2FsbGVyJ3MgZXhpc3RpbmcgY2FwYWJpbGl0aWVzLiBXZSd2ZSBnb3Qgc3lzdGVtIGNhbGxzIGxpa2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgIHRoYXQgc2hvdyBzeXprYWxsZXIncyBwcm9maWNpZW5jeSBpbiBkZWFsaW5nIHdpdGggZGlmZmVyZW50IGtlcm5lbCBzdWJzeXN0ZW1zLiBOb3cgdGhlIHRob3VnaHQgbGFuZHMgb24gYG1kaW8tbXZ1c2IuY2AhIEEgVVNCLWJhc2VkIE1ESU8gYnVzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2UgVVNCIGlzIGEgd2VsbC1kZWZpbmVkIGFuZCBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3Igc3l6a2FsbGVyLiBUaW1lIHRvIGNoZWNrIHRoYXQgc291cmNlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA4OjU2Ljc4MTQxNjAyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNTUwMDMyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLW12dXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTE1Nzc1PUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWxcXG5NQUlOVEFJTkVSUzoxNTc3NjpGOlxcdGRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jXFxuTUFJTlRBSU5FUlMtMTU3NzctXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlPTIwPW9iai0kKENPTkZJR19NRElPX01TQ0NfTUlJTSlcXHRcXHQrPSBtZGlvLW1zY2MtbWlpbS5vXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfTURJT19NVlVTQilcXHRcXHQrPSBtZGlvLW12dXNiLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19NRElPX09DVEVPTilcXHRcXHQrPSBtZGlvLW9jdGVvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjAxLjAwNjkyNDU0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzg0NDY0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyBhIE1hcnZlbGwgVVNCIE1ESU8gRGV2aWNlIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYG1kaW8tbXZ1c2JgIGlzIGluZGVlZCBhIFVTQiBNRElPIGJ1cyBkcml2ZXIuIEJ1dCB0aGVuIGl0IGhpdCBtZTogaWYgU3l6a2FsbGVyIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgaXQgKmRvZXMqLCBpdCBjYW4gdG90YWxseSBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UuIEFuZCBpZiB3ZSBjYW4gZW11bGF0ZSAqdGhhdCosIHdlJ3ZlIGdvdCBhbiBNRElPIGJ1cyByZWdpc3RlcmVkLCByaWdodD9cblxuVGhlIGtleSByZWFsaXphdGlvbiBoZXJlIGlzIHRoYXQgb25jZSB3ZSBoYXZlIHRoYXQgTURJTyBidXMsIHdlIGNhbiB0aGVuIGVtdWxhdGUgKmFueSogUEhZIHNpbXBseSBieSByZXNwb25kaW5nIGNvcnJlY3RseSB0byBNRElPIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzISBUaGF0J3MgaXQhXG5cbkFuZCBoZXJlJ3MgdGhlIGtpY2tlcjogYG1kaW8tbXZ1c2JgIHVzZXMgVVNCIFVSQnMgdG8gaGFuZGxlIHRoZXNlIE1ESU8gcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy4gU3l6a2FsbGVyJ3MgVVNCIGZ1enplciBpcyBkZXNpZ25lZCB0byBpbnRlcmNlcHQgYW5kIG1hbmlwdWxhdGUgdGhlc2UgdmVyeSBVUkJzISBUaGlzIG1lYW5zIHdlIGNhbiBwcm92aWRlICphcmJpdHJhcnkqIHJlc3BvbnNlcywgZWZmZWN0aXZlbHkgZW11bGF0aW5nIGFueSBQSFksIGluY2x1ZGluZyB0aGUgYGF0ODAzeGAgUEhZIHRoYXQgaXMgdGhlIGN1cnJlbnQgYXJlYSBvZiBpbnRlcmVzdCFcblxuTm93LCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgbGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgYG1kaW8tbXZ1c2IuY2AgdG8gc2VlIGhvdyB0aGF0IE1ESU8gYnVzIGlzIGFjdHVhbGx5IHNldCB1cCB3aXRoaW4gdGhlIGRyaXZlci4gR290dGEgZ2V0IHRoZSBkZXRhaWxzIHJpZ2h0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjA1Ljc5MTM5MjExMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcXHQweDEyODZcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG12dXNiX21kaW9fdGFibGVbXSA9IHtcXG4gIDEyOlxcdFxcdHsgVVNCX0RFVklDRShVU0JfTUFSVkVMTF9WSUQsIDB4MWZhNCkgfSxcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0e31cXG4gIDE1OlxcdH07XFxuICAxNjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXZ1c2JfbWRpb190YWJsZSk7XFxuICAxNzpcXHRcXG4gIDE4OlxcdGVudW0ge1xcbiAgMTk6XFx0XFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcXG4gIDIwOlxcdFxcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXFxuICAyMTpcXHRcXHRNVlVTQl9DTURfQUREUixcXG4gIDIyOlxcdFxcdE1WVVNCX0NNRF9WQUwsXFxuICAyMzpcXHR9O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDI3OlxcdFxcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRfX2xlMTYgYnVmWzRdO1xcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW8sIGludCBkZXYsIGludCByZWcpXFxuICAzMzpcXHR7XFxuICAzNDpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVxcdTAwM2Vwcml2O1xcbiAgMzU6XFx0XFx0aW50IGVyciwgYWxlbjtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFxcdTAwM2NcXHUwMDNjIDUpIHwgcmVnKTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNDA6XFx0XFx0XFx0XFx0ICAgbXZ1c2ItXFx1MDAzZWJ1ZiwgNiwgXFx1MDAyNmFsZW4sIDEwMCk7XFxuICA0MTpcXHRcXHRpZiAoZXJyKVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDYpLFxcbiAgNDU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNDY6XFx0XFx0aWYgKGVycilcXG4gIDQ3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldHVybiBsZTE2X3RvX2NwdShtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbiAgNTM6XFx0e1xcbiAgNTQ6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDU1OlxcdFxcdGludCBhbGVuO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9BRERSXSA9IGNwdV90b19sZTE2KDB4ODAwMCB8IChkZXYgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWcpO1xcbiAgNTg6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSAgPSBjcHVfdG9fbGUxNih2YWwpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHRyZXR1cm4gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNjE6XFx0XFx0XFx0XFx0ICAgIG12dXNiLVxcdTAwM2VidWYsIDgsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0XFxuICA2NDpcXHRzdGF0aWMgaW50IG12dXNiX21kaW9fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4gIDY1OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXY7XFxuICA2ODpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2I7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xcbiAgNzI6XFx0XFx0aWYgKCFtZGlvKVxcbiAgNzM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdG12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDc2OlxcdFxcdG12dXNiLVxcdTAwM2VtZGlvID0gbWRpbztcXG4gIDc3OlxcdFxcdG12dXNiLVxcdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQvKiBSZXZlcnNlZCBmcm9tIFVTQiBQQ0FQcywgbm8gaWRlYSB3aGF0IHRoZXNlIG1lYW4uICovXFxuICA4MDpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcXG4gIDgxOlxcdFxcdG12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1BSRUFNQkxFMV0gPSBjcHVfdG9fbGUxNigweDAwMDEpO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRzbnByaW50ZihtZGlvLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwibXZ1c2ItJXNcXFwiLCBkZXZfbmFtZShkZXYpKTtcXG4gIDg0OlxcdFxcdG1kaW8tXFx1MDAzZW5hbWUgPSBtZGlvLVxcdTAwM2VpZDtcXG4gIDg1OlxcdFxcdG1kaW8tXFx1MDAzZXBhcmVudCA9IGRldjtcXG4gIDg2OlxcdFxcdG1kaW8tXFx1MDAzZXJlYWQgPSBtdnVzYl9tZGlvX3JlYWQ7XFxuICA4NzpcXHRcXHRtZGlvLVxcdTAwM2V3cml0ZSA9IG12dXNiX21kaW9fd3JpdGU7XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtdnVzYik7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyB2b2lkIG12dXNiX21kaW9fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobXZ1c2ItXFx1MDAzZW1kaW8pO1xcbiAgOTk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTowNS43OTE1MzI0NzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMjcwMTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIEJ1cyBSZWdpc3RyYXRpb246IERlZXAgRGl2ZSoqXG5cbk9rYXksIGdyZWF0ISBTbywgYG1kaW8tbXZ1c2JgIHN1Y2Nlc3NmdWxseSByZWdpc3RlcnMgYW4gTURJTyBidXMuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQsIGV4YWN0bHkgd2hhdCBJIHdhcyBob3BpbmcgdG8gc2VlLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIHRoZSBmYWN0IHRoYXQgYG9mX21kaW9idXNfcmVnaXN0ZXJgIGlzIGJlaW5nIHVzZWQgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEhtbSwgdGhhdCBzdWdnZXN0cyBpdCdzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIGEgZGV2aWNlIHRyZWUsIGV4cGVjdGluZyBhIG5vZGUgdG8gZGVzY3JpYmUgdGhlIGF0dGFjaGVkIFBIWXMuIFRoZSB3YXkgSSByZWFkIHRoaXMsIGlmIGEgZGV2aWNlIHRyZWUgbm9kZSAqaXNuJ3QqIHByZXNlbnQsIHRoZW4gdGhlIGNvZGUgc2hvdWxkIGdyYWNlZnVsbHkgZmFsbCBiYWNrIHRvIHRoZSBiYXNpYyBgbWRpb2J1c19yZWdpc3RlcmAuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSBzaG91bGQgZGlnIGludG8gYG9mX21kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgaXMgaGFuZGxlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjExLjEyNDIzNjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjY3MTU3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfbWRpb2J1c19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU4MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OD1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzMi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cXHRpZiAocmV0KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQzLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzkyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA3OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwOC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODM0PXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg4OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4OS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE3OS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcXHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjU4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdHhfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyODg6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI4OS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzQ0OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjE0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI2PXl0OTIxeF9tYnVzX2V4dF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04ODg9c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcXHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDk3PXN0YXRpYyBpbnQgbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVxcdGlmIChtZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcXHRcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1OlxcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWRpb2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9MzA0Mj1zdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMxNjE6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYz02NT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2YpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYzoxMDY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmMtMTA3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jPTE0OT1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM6MTc2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jPTk3PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM6MTY3OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgb2ZkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYz00MDk9c3RhdGljIGludCBmc2xfcHFfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jOjQ5NDpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyNi1cXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI3OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI4LVxcdGVsc2UgaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTEyMTI9c3RhdGljIGludCBuaXhnZV9tZGlvX3NldHVwKHN0cnVjdCBuaXhnZV9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTIzMTpcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYz03OTA9c3RhdGljIGludCBscGNfbWlpX2luaXQoc3RydWN0IG5ldGRhdGFfbG9jYWwgKnBsZGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjAtXFx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHBsZGF0LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jOjgyMTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHBsZGF0LVxcdTAwM2VtaWlfYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMi1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYz05Mj1pbnQgZW1hY19waHlfY29uZmlnKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX2FkYXB0ZXIgKmFkcHQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtcGh5LmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1waHkuYzoxMzg6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLXBoeS5jLTEzOS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTI2MjM9c3RhdGljIGludCByYXZiX21kaW9faW5pdChzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjUxLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjI2NTI6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yNjUzLVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jPTEzNjc9c3RhdGljIGludCByc3dpdGNoX21paV9yZWdpc3RlcihzdHJ1Y3QgcnN3aXRjaF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTEzODYtXFx0bWRpb19ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKHJkZXYtXFx1MDAzZW5wX3BvcnQsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYzoxMzg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoX21haW4uYy0xMzg4LVxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYz03Nzk9c3RhdGljIGludCBydHNuX21kaW9fYWxsb2Moc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTgxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzo4MTg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtODE5LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jPTMwOTE9c3RhdGljIGludCBzaF9tZGlvX2luaXQoc3RydWN0IHNoX2V0aF9wcml2YXRlICptZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTMxMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9zaF9ldGguYzozMTMyOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRwLVxcdTAwM2VtaWlfYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmMtMzEzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jPTE5Mjk9c3RhdGljIGludCBuZXRzZWNfcmVnaXN0ZXJfbWRpbyhzdHJ1Y3QgbmV0c2VjX3ByaXYgKnByaXYsIHUzMiBwaHlfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYzoxOTU5OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwYXJlbnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTYwLVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwMi1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYzoxMjAzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjA0LVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTk4OD1zdGF0aWMgaW50IGVtYWNfbWRpb19pbml0KHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTAwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTAwOTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWksIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTEwMTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjU1OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTY1Ni1cXHRpZiAoZXJyID09IC1FTk9ERVYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYz03OT11MzIgc3BsMnN3X21kaW9faW5pdChzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5jOjEwNjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYy0xMDctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9tZGlvLmM9NTM3PXN0YXRpYyBpbnQgZGF2aW5jaV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX21kaW8uYy02NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9tZGlvLmM6NjQzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGF0YS1cXHUwMDNlYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfbWRpby5jLTY0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYz02ND1pbnQgdGVtYWNfbWRpb19zZXR1cChzdHJ1Y3QgdGVtYWNfbG9jYWwgKmxwLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYy0xMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L2xsX3RlbWFjX21kaW8uYzoxMTc6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9sbF90ZW1hY19tZGlvLmMtMTE4LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM9MjgwPWludCBheGllbmV0X21kaW9fc2V0dXAoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21kaW8uYy0zMDMtXFx0XFx0Z290byB1bnJlZ2lzdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmM6MzA0OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tZGlvLmMtMzA1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2VtYWNsaXRlLmM9ODA0PXN0YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fc2V0dXAoc3RydWN0IG5ldF9sb2NhbCAqbHAsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYy04NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jOjg2MjpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jLTg2My1cXHRvZl9ub2RlX3B1dChucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jPTU1OD1zdGF0aWMgaW50IGl4cDR4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBldGhfcmVncyBfX2lvbWVtICpyZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy01NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzo1NzI6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cywgbWRpb19idXNfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtNTczLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYWlyb2hhLmM9MjAzPXN0YXRpYyBpbnQgYWlyb2hhX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1haXJvaGEuYy0yNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jOjI1MTpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFpcm9oYS5jLTI1Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYXNwZWVkLmM9MTQ2PXN0YXRpYyBpbnQgYXNwZWVkX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1hc3BlZWQuYy0xNzQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jOjE3NTpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWFzcGVlZC5jLTE3Ni1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYz0xMjI9c3RhdGljIGludCBpcHJvY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLWlwcm9jLmMtMTUzLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYzoxNTQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20taXByb2MuYy0xNTUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jPTIzNz1zdGF0aWMgaW50IHVuaW1hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jLTMwMS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jOjMwMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1iY20tdW5pbWFjLmMtMzAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTU3PXN0YXRpYyBpbnQgbWRpb19ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4NC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4NTpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYz03Mj1zdGF0aWMgaW50IGhpc2lfZmVtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWhpc2ktZmVtYWMuYzoxMDY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taGlzaS1mZW1hYy5jLTEwNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYz0zMjY9c3RhdGljIGludCBpcHE0MDE5X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmMtMzY5LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE0MDE5LmM6MzcwOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTQwMTkuYy0zNzEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWlwcTgwNjQuYz0xMTA9aXBxODA2NF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jLTE0MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8taXBxODA2NC5jOjE0MjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1pcHE4MDY0LmMtMTQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM9MTEwPXN0YXRpYyBpbnQgbW94YXJ0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMjgtXFx0LyogU2V0dGluZyBQSFlfTUFDX0lOVEVSUlVQVCBoZXJlIGV2ZW4gaWYgaXQgaGFzIG5vIGVmZmVjdCxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbW94YXJ0LmM6MTI5OlxcdCAqIG9mX21kaW9idXNfcmVnaXN0ZXIoKSBzZXRzIHRoZXNlIFBIWV9QT0xMLlxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xMzAtXFx0ICogSWRlYWxseSwgdGhlIGludGVycnVwdCBmcm9tIE1BQyBjb250cm9sbGVyIGNvdWxkIGJlIHVzZWQgdG9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW1veGFydC5jOjE0NTpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tb3hhcnQuYy0xNDYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmM9MjcwPXN0YXRpYyBpbnQgbXNjY19taWltX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tc2NjLW1paW0uYzozMzE6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXNjYy1taWltLmMtMzMyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM9MTM5PWludCBtZGlvX211eF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdXguYy0yMjQtXFx0XFx0XFx0Y2ItXFx1MDAzZW1paV9idXMtXFx1MDAzZXdyaXRlX2M0NSA9IG1kaW9fbXV4X3dyaXRlX2M0NTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXV4LmM6MjI1OlxcdFxcdHIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGNiLVxcdTAwM2VtaWlfYnVzLCBjaGlsZF9idXNfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW11eC5jLTIyNi1cXHRcXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM9NjQ9c3RhdGljIGludCBtdnVzYl9tZGlvX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy05MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYzo5MTpcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1vY3Rlb24uYz0xNj1zdGF0aWMgaW50IG9jdGVvbl9tZGlvYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tb2N0ZW9uLmMtNTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jOjUxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLVxcdTAwM2VtaWlfYnVzLCBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLW9jdGVvbi5jLTUyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcGljNjRocHNjLmM9MTE3PXN0YXRpYyBpbnQgcGljNjRocHNjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1waWM2NGhwc2MuYy0xNjMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXBpYzY0aHBzYy5jOjE2NDpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcGljNjRocHNjLmMtMTY1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYz01MTA9c3RhdGljIGludCBvdHRvX2VtZGlvX3Byb2JlX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvdHRvX2VtZGlvX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1yZWFsdGVrLXJ0bDkzMDAuYzo1NDU6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCB0b19vZl9ub2RlKG5vZGUpKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tcmVhbHRlay1ydGw5MzAwLmMtNTQ2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYz05MD1zdGF0aWMgaW50IHN1bjRpX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1zdW40aS5jLTEyOC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYzoxMjk6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tc3VuNGkuYy0xMzAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tdGh1bmRlci5jPTIyPXN0YXRpYyBpbnQgdGh1bmRlcl9tZGlvYnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtOTktXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDA6XFx0XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtMTAxLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXRodW5kZXIuYzoxMDI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwib2ZfbWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby10aHVuZGVyLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MzI3PXN0YXRpYyBpbnQgeGdlbmVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMzkyLVxcdGlmIChkZXYtXFx1MDAzZW9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYzozOTM6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0zOTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ0PUVYUE9SVF9TWU1CT0wob2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTUxLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjUyOnN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE2Ny1cXHRcXHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE2ODpcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjA5OjE1Ljk1MDk1ODYxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzgwNDAxNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTURJTyBCdXMgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTURJTyBidXMgcmVnaXN0cmF0aW9uLiBJdCBzZWVtcyBgb2ZfbWRpb2J1c19yZWdpc3RlcmAgaGFzIGEgZmFsbGJhY2sgbWVjaGFuaXNtLiBJZiB0aGUgZGV2aWNlIG5vZGUsIHJlcHJlc2VudGVkIGJ5IGBucGAsIGlzIE5VTEwsIGl0IG5lYXRseSByZXZlcnRzIHRvIGEgc2ltcGxlIGBtZGlvYnVzX3JlZ2lzdGVyYCBjYWxsLiBJbnRlcmVzdGluZy4gSSdtIHNlZWluZyB0aGlzIGJlaGF2aW9yIGluIGBtZGlvLW12dXNiLmNgLCB3aGVyZSB0aGUgY29kZSBkaXJlY3RseSBpbnZva2VzIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCB3aXRoIGBkZXYtXHUwMDNlb2Zfbm9kZWAuIE5vdywgYSBsaWdodGJ1bGIgd2VudCBvZmY6IGZvciB0aG9zZSBzeXprYWxsZXItY3JlYXRlZCBVU0IgZGV2aWNlcywgdGhhdCBgZGV2LVx1MDAzZW9mX25vZGVgIGlzIGxpa2VseSBOVUxMIHVubGVzcyBzb21lb25lJ3MgZ29uZSB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgcHJvdmlkaW5nIGEgRGV2aWNlIFRyZWUgb3ZlcmxheS4gU28sIHRoaXMgY29uZmlybXMgdGhhdCB0aGUgZmFsbGJhY2sgaXMgcHJvYmFibHkgaGFwcGVuaW5nIGluIHRob3NlIHNjZW5hcmlvcy4gVG8gY29uZmlybSBteSB0aG91Z2h0IEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBvZl9tZGlvYnVzX3JlZ2lzdGVyYCBjb2RlLCB3aGljaCwgaWYgbWVtb3J5IHNlcnZlcywgc2hvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRpbWUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgZmFsbGJhY2sgaXMgaW1wbGVtZW50ZWQgYW5kIGNvbmZpcm0gbXkgcmVhc29uaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTA3NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOToyNS43MzEzNjI0NDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0aW50IGFkZHIsIHJjO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRpZiAoIW5wKVxcbiAyMDM6XFx0XFx0XFx0cmV0dXJuIF9fbWRpb2J1c19yZWdpc3RlcihtZGlvLCBvd25lcik7XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdC8qIERvIG5vdCBjb250aW51ZSBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCAqL1xcbiAyMDY6XFx0XFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcXG4gMjA3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiAyMDg6XFx0XFxuIDIwOTpcXHRcXHQvKiBNYXNrIG91dCBhbGwgUEhZcyBmcm9tIGF1dG8gcHJvYmluZy4gIEluc3RlYWQgdGhlIFBIWXMgbGlzdGVkIGluXFxuIDIxMDpcXHRcXHQgKiB0aGUgZGV2aWNlIHRyZWUgYXJlIHBvcHVsYXRlZCBhZnRlciB0aGUgYnVzIGhhcyBiZWVuIHJlZ2lzdGVyZWQgKi9cXG4gMjExOlxcdFxcdG1kaW8tXFx1MDAzZXBoeV9tYXNrID0gfjA7XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGRldmljZV9zZXRfbm9kZShcXHUwMDI2bWRpby1cXHUwMDNlZGV2LCBvZl9md25vZGVfaGFuZGxlKG5wKSk7XFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdC8qIEdldCBidXMgbGV2ZWwgUEhZIHJlc2V0IEdQSU8gZGV0YWlscyAqL1xcbiAyMTY6XFx0XFx0bWRpby1cXHUwMDNlcmVzZXRfZGVsYXlfdXMgPSBERUZBVUxUX0dQSU9fUkVTRVRfREVMQVk7XFxuIDIxNzpcXHRcXHRvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInJlc2V0LWRlbGF5LXVzXFxcIiwgXFx1MDAyNm1kaW8tXFx1MDAzZXJlc2V0X2RlbGF5X3VzKTtcXG4gMjE4OlxcdFxcdG1kaW8tXFx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMgPSAwO1xcbiAyMTk6XFx0XFx0b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZXNldC1wb3N0LWRlbGF5LXVzXFxcIiwgXFx1MDAyNm1kaW8tXFx1MDAzZXJlc2V0X3Bvc3RfZGVsYXlfdXMpO1xcbiAyMjA6XFx0XFxuIDIyMTpcXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG4gMjIyOlxcdFxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG4gMjIzOlxcdFxcdGlmIChyYylcXG4gMjI0OlxcdFxcdFxcdHJldHVybiByYztcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0LyogTG9vcCBvdmVyIHRoZSBjaGlsZCBub2RlcyBhbmQgcmVnaXN0ZXIgYSBwaHlfZGV2aWNlIGZvciBlYWNoIHBoeSAqL1xcbiAyMjc6XFx0XFx0cmMgPSBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhtZGlvLCBucCwgXFx1MDAyNnNjYW5waHlzKTtcXG4gMjI4OlxcdFxcdGlmIChyYylcXG4gMjI5OlxcdFxcdFxcdGdvdG8gdW5yZWdpc3RlcjtcXG4gMjMwOlxcdFxcbiAyMzE6XFx0XFx0aWYgKCFzY2FucGh5cylcXG4gMjMyOlxcdFxcdFxcdHJldHVybiAwO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHQvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi9cXG4gMjM1OlxcdFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xcbiAyMzY6XFx0XFx0XFx0LyogU2tpcCBQSFlzIHdpdGggcmVnIHByb3BlcnR5IHNldCBvciBldGhlcm5ldC1waHktcGFja2FnZSBub2RlICovXFxuIDIzNzpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChjaGlsZCwgXFxcInJlZ1xcXCIpIHx8XFxuIDIzODpcXHRcXHRcXHQgICAgb2Zfbm9kZV9uYW1lX2VxKGNoaWxkLCBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSlcXG4gMjM5OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAyNDA6XFx0XFxuIDI0MTpcXHRcXHRcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgUEhZX01BWF9BRERSOyBhZGRyKyspIHtcXG4gMjQyOlxcdFxcdFxcdFxcdC8qIHNraXAgYWxyZWFkeSByZWdpc3RlcmVkIFBIWXMgKi9cXG4gMjQzOlxcdFxcdFxcdFxcdGlmIChtZGlvYnVzX2lzX3JlZ2lzdGVyZWRfZGV2aWNlKG1kaW8sIGFkZHIpKVxcbiAyNDQ6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdFxcdFxcdC8qIGJlIG5vaXN5IHRvIGVuY291cmFnZSBwZW9wbGUgdG8gc2V0IHJlZyBwcm9wZXJ0eSAqL1xcbiAyNDc6XFx0XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNm1kaW8tXFx1MDAzZWRldiwgXFxcInNjYW4gcGh5ICVwT0ZuIGF0IGFkZHJlc3MgJWlcXFxcblxcXCIsXFxuIDI0ODpcXHRcXHRcXHRcXHRcXHQgY2hpbGQsIGFkZHIpO1xcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRcXHRcXHRpZiAob2ZfbWRpb2J1c19jaGlsZF9pc19waHkoY2hpbGQpKSB7XFxuIDI1MTpcXHRcXHRcXHRcXHRcXHQvKiAtRU5PREVWIGlzIHRoZSByZXR1cm4gY29kZSB0aGF0IFBIWUxJQiBoYXNcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdCAqIHN0YW5kYXJkaXplZCBvbiB0byBpbmRpY2F0ZSB0aGF0IGJ1c1xcbiAyNTM6XFx0XFx0XFx0XFx0XFx0ICogc2Nhbm5pbmcgc2hvdWxkIGNvbnRpbnVlLlxcbiAyNTQ6XFx0XFx0XFx0XFx0XFx0ICovXFxuIDI1NTpcXHRcXHRcXHRcXHRcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfcGh5KG1kaW8sIGNoaWxkLCBhZGRyKTtcXG4gMjU2OlxcdFxcdFxcdFxcdFxcdGlmICghcmMpXFxuIDI1NzpcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMjU4OlxcdFxcdFxcdFxcdFxcdGlmIChyYyAhPSAtRU5PREVWKVxcbiAyNTk6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBwdXRfdW5yZWdpc3RlcjtcXG4gMjYwOlxcdFxcdFxcdFxcdH1cXG4gMjYxOlxcdFxcdFxcdH1cXG4gMjYyOlxcdFxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0cmV0dXJuIDA7XFxuIDI2NTpcXHRcXG4gMjY2OlxcdHB1dF91bnJlZ2lzdGVyOlxcbiAyNjc6XFx0XFx0b2Zfbm9kZV9wdXQoY2hpbGQpO1xcbiAyNjg6XFx0dW5yZWdpc3RlcjpcXG4gMjY5OlxcdFxcdG1kaW9idXNfdW5yZWdpc3RlcihtZGlvKTtcXG4gMjcwOlxcdFxcdHJldHVybiByYztcXG4gMjcxOlxcdH1cXG4gMjcyOlxcdEVYUE9SVF9TWU1CT0woX19vZl9tZGlvYnVzX3JlZ2lzdGVyKTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0LyoqXFxuIDI3NTpcXHQgKiBvZl9tZGlvX2ZpbmRfZGV2aWNlIC0gR2l2ZW4gYSBkZXZpY2UgdHJlZSBub2RlLCBmaW5kIHRoZSBtZGlvX2RldmljZVxcbiAyNzY6XFx0ICogQG5wOiBwb2ludGVyIHRvIHRoZSBtZGlvX2RldmljZSdzIGRldmljZSB0cmVlIG5vZGVcXG4gMjc3OlxcdCAqXFxuIDI3ODpcXHQgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbWRpb19kZXZpY2Ugd2l0aCB0aGUgZW1iZWRkZWRcXG4gMjc5OlxcdCAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuXFxuIDI4MDpcXHQgKiBUaGUgY2FsbGVyIHNob3VsZCBjYWxsIHB1dF9kZXZpY2UoKSBvbiB0aGUgbWRpb19kZXZpY2UgYWZ0ZXIgaXRzIHVzZVxcbiAyODE6XFx0ICovXFxuIDI4MjpcXHRzdHJ1Y3QgbWRpb19kZXZpY2UgKm9mX21kaW9fZmluZF9kZXZpY2Uoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gMjgzOlxcdHtcXG4gMjg0OlxcdFxcdHJldHVybiBmd25vZGVfbWRpb19maW5kX2RldmljZShvZl9md25vZGVfaGFuZGxlKG5wKSk7XFxuIDI4NTpcXHR9XFxuIDI4NjpcXHRFWFBPUlRfU1lNQk9MKG9mX21kaW9fZmluZF9kZXZpY2UpO1xcbiAyODc6XFx0XFxuIDI4ODpcXHQvKipcXG4gMjg5OlxcdCAqIG9mX3BoeV9maW5kX2RldmljZSAtIEdpdmUgYSBQSFkgbm9kZSwgZmluZCB0aGUgcGh5X2RldmljZVxcbiAyOTA6XFx0ICogQHBoeV9ucDogUG9pbnRlciB0byB0aGUgcGh5J3MgZGV2aWNlIHRyZWUgbm9kZVxcbiAyOTE6XFx0ICpcXG4gMjkyOlxcdCAqIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBwaHlfZGV2aWNlIHdpdGggdGhlIGVtYmVkZGVkXFxuIDI5MzpcXHQgKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbiAyOTQ6XFx0ICovXFxuIDI5NTpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2ZpbmRfZGV2aWNlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25wKVxcbiAyOTY6XFx0e1xcbiAyOTc6XFx0XFx0cmV0dXJuIGZ3bm9kZV9waHlfZmluZF9kZXZpY2Uob2ZfZndub2RlX2hhbmRsZShwaHlfbnApKTtcXG4gMjk4OlxcdH1cXG4gMjk5OlxcdEVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6MjUuNzMxNTE1NjI0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzcwNzg2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIE1ESU8gQnVzIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYSBjb25kaXRpb25hbDogaWYgYG5wYCBpcyBOVUxMLCB3ZSB0cmlnZ2VyIGBfX21kaW9idXNfcmVnaXN0ZXJgLiBSaWdodCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGF0ICpleGFjdGx5KiBoYXBwZW5zIHdpdGhpbiBgX19tZGlvYnVzX3JlZ2lzdGVyYD8gRG9lcyBpdCBoYXZlIHRoZSBzbWFydHMgdG8gYXV0b21hdGljYWxseSBwcm9iZSBmb3IgY29ubmVjdGVkIFBIWXM/IFRoYXQncyB3aGF0IEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJIG5lZWQgdG8ga25vdyBob3cgaXQgaGFuZGxlcyB0aGUgZGlzY292ZXJ5IHByb2Nlc3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIE1ESU8gYnVzIGl0c2VsZiwgd2hpY2ggSSBiZWxpZXZlIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBzaG91bGQgYmUuIExldCdzIHNlZSBob3cgdGhpcyByZWdpc3RyYXRpb24gcHJvY2VzcyB1bmZvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzA2MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6MzAuNjY4NTk3NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDU5NzEwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cXHRtZGlvLVxcdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDApO1xcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jLTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xOTU9aW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cXHRpZiAoIW5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcXHRcXHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NDctICogICBuZWVkIHRvIHBhc3MgYSBzcGVjaWZpYyBvd25lciBtb2R1bGUuIE1ESU8gZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTUzOmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2Ni19XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1paV9idXMgKm1kaW9idXNfYWxsb2Modm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDQ3OmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ1MDojZGVmaW5lIG1kaW9idXNfcmVnaXN0ZXIoYnVzKSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTozNS4zNzQ1NzY5ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIzNjc2Nzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYF9fbWRpb2J1c19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNydWNpYWwgZnVuY3Rpb24gd29ya3MuIFRoaXMgaXMgd2hlcmUgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBoYXBwZW5zLCByaWdodD8gSXQncyB0aGUgY29yZSBvZiBob3cgd2UgZ2V0IG91ciBQSFlzIHRhbGtpbmcgdG8gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzIG9mIHRoYXQgcHJvY2VzcywgZXNwZWNpYWxseSBob3cgdGhlIGRyaXZlciBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhbmQgaG9va2VkIGludG8gdGhlIGtlcm5lbC4gSSdtIGV4cGVjdGluZyB0byBzZWUgaG93IHRoZSBidXMgaXRzZWxmIGlzIHNldCB1cCwgaG93IGl0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSB0cmVlLCBhbmQgdWx0aW1hdGVseSwgaG93IFBIWSBkcml2ZXJzIGFyZSBsaW5rZWQgdG8gdGhpcyByZWdpc3RlcmVkIGJ1cy4gT2theSwgbGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0Mzk3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NDEuNjExMzQ4NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDA6XFx0ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcXG4gNTQxOlxcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXFxuIDU0MjpcXHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcXG4gNTQzOlxcdCAqXFxuIDU0NDpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcXG4gNTQ1OlxcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG4gNTQ2OlxcdCAqICAgbWRpb2J1c19yZWdpc3RlcigpIHJhdGhlciB0aGFuIF9fbWRpb2J1c19yZWdpc3RlcigpIHVubGVzcyB0aGV5XFxuIDU0NzpcXHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gNTQ4OlxcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXFxuIDU0OTpcXHQgKiAgIHRvIGJlIGV4cGxpY2l0bHkgbGlzdGVkIGluIERUIGFuZCBpbnN0YW50aWF0ZWQgYnkgb2ZfbWRpb2J1c19yZWdpc3RlcigpLlxcbiA1NTA6XFx0ICpcXG4gNTUxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFxcdTAwM2MgMCBvbiBlcnJvci5cXG4gNTUyOlxcdCAqL1xcbiA1NTM6XFx0aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4gNTU0OlxcdHtcXG4gNTU1OlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNTU2OlxcdFxcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xcbiA1NTc6XFx0XFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xcbiA1NTg6XFx0XFx0aW50IGksIGVycjtcXG4gNTU5OlxcdFxcbiA1NjA6XFx0XFx0aWYgKCFidXMgfHwgIWJ1cy1cXHUwMDNlbmFtZSlcXG4gNTYxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NjI6XFx0XFxuIDU2MzpcXHRcXHQvKiBBbiBhY2Nlc3MgbWV0aG9kIGFsd2F5cyBuZWVkcyBib3RoIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgKi9cXG4gNTY0OlxcdFxcdGlmICghIWJ1cy1cXHUwMDNlcmVhZCAhPSAhIWJ1cy1cXHUwMDNld3JpdGUgfHwgISFidXMtXFx1MDAzZXJlYWRfYzQ1ICE9ICEhYnVzLVxcdTAwM2V3cml0ZV9jNDUpXFxuIDU2NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTY2OlxcdFxcbiA1Njc6XFx0XFx0LyogQXQgbGVhc3Qgb25lIG1ldGhvZCBpcyBtYW5kYXRvcnkgKi9cXG4gNTY4OlxcdFxcdGlmICghYnVzLVxcdTAwM2VyZWFkIFxcdTAwMjZcXHUwMDI2ICFidXMtXFx1MDAzZXJlYWRfYzQ1KVxcbiA1Njk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU3MDpcXHRcXG4gNTcxOlxcdFxcdGlmIChidXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZXBhcmVudC1cXHUwMDNlb2Zfbm9kZSlcXG4gNTcyOlxcdFxcdFxcdGZ3bm9kZV9zZXRfZmxhZyhcXHUwMDI2YnVzLVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUtXFx1MDAzZWZ3bm9kZSxcXG4gNTczOlxcdFxcdFxcdFxcdFxcdEZXTk9ERV9GTEFHX05FRURTX0NISUxEX0JPVU5EX09OX0FERCk7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdFdBUk4oYnVzLVxcdTAwM2VzdGF0ZSAhPSBNRElPQlVTX0FMTE9DQVRFRCBcXHUwMDI2XFx1MDAyNlxcbiA1NzY6XFx0XFx0ICAgICBidXMtXFx1MDAzZXN0YXRlICE9IE1ESU9CVVNfVU5SRUdJU1RFUkVELFxcbiA1Nzc6XFx0XFx0ICAgICBcXFwiJXM6IG5vdCBpbiBBTExPQ0FURUQgb3IgVU5SRUdJU1RFUkVEIHN0YXRlXFxcXG5cXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNTc4OlxcdFxcbiA1Nzk6XFx0XFx0YnVzLVxcdTAwM2Vvd25lciA9IG93bmVyO1xcbiA1ODA6XFx0XFx0YnVzLVxcdTAwM2VkZXYucGFyZW50ID0gYnVzLVxcdTAwM2VwYXJlbnQ7XFxuIDU4MTpcXHRcXHRidXMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZtZGlvX2J1c19jbGFzcztcXG4gNTgyOlxcdFxcdGJ1cy1cXHUwMDNlZGV2Lmdyb3VwcyA9IE5VTEw7XFxuIDU4MzpcXHRcXHRkZXZfc2V0X25hbWUoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNTg0OlxcdFxcbiA1ODU6XFx0XFx0LyogSWYgdGhlIGJ1cyBzdGF0ZSBpcyBhbGxvY2F0ZWQsIHdlJ3JlIHJlZ2lzdGVyaW5nIGEgZnJlc2ggYnVzXFxuIDU4NjpcXHRcXHQgKiB0aGF0IG1heSBoYXZlIGEgZndub2RlIGFzc29jaWF0ZWQgd2l0aCBpdC4gR3JhYiBhIHJlZmVyZW5jZVxcbiA1ODc6XFx0XFx0ICogdG8gdGhlIGZ3bm9kZS4gVGhpcyB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgYnVzIGlzIHJlbGVhc2VkLlxcbiA1ODg6XFx0XFx0ICogSWYgdGhlIGJ1cyB3YXMgc2V0IHRvIHVucmVnaXN0ZXJlZCwgaXQgbWVhbnMgdGhhdCB0aGUgYnVzIHdhc1xcbiA1ODk6XFx0XFx0ICogcHJldmlvdXNseSByZWdpc3RlcmVkLCBhbmQgd2UndmUgYWxyZWFkeSBncmFiYmVkIGEgcmVmZXJlbmNlLlxcbiA1OTA6XFx0XFx0ICovXFxuIDU5MTpcXHRcXHRpZiAoYnVzLVxcdTAwM2VzdGF0ZSA9PSBNRElPQlVTX0FMTE9DQVRFRClcXG4gNTkyOlxcdFxcdFxcdGZ3bm9kZV9oYW5kbGVfZ2V0KGRldl9md25vZGUoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KSk7XFxuIDU5MzpcXHRcXG4gNTk0OlxcdFxcdC8qIFdlIG5lZWQgdG8gc2V0IHN0YXRlIHRvIE1ESU9CVVNfVU5SRUdJU1RFUkVEIHRvIGNvcnJlY3RseSByZWxlYXNlXFxuIDU5NTpcXHRcXHQgKiB0aGUgZGV2aWNlIGluIG1kaW9idXNfZnJlZSgpXFxuIDU5NjpcXHRcXHQgKlxcbiA1OTc6XFx0XFx0ICogU3RhdGUgd2lsbCBiZSB1cGRhdGVkIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24gaW4gY2FzZSBvZiBzdWNjZXNzXFxuIDU5ODpcXHRcXHQgKi9cXG4gNTk5OlxcdFxcdGJ1cy1cXHUwMDNlc3RhdGUgPSBNRElPQlVTX1VOUkVHSVNURVJFRDtcXG4gNjAwOlxcdFxcbiA2MDE6XFx0XFx0ZXJyID0gZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZidXMtXFx1MDAzZWRldik7XFxuIDYwMjpcXHRcXHRpZiAoZXJyKSB7XFxuIDYwMzpcXHRcXHRcXHRwcl9lcnIoXFxcIm1paV9idXMgJXMgZmFpbGVkIHRvIHJlZ2lzdGVyXFxcXG5cXFwiLCBidXMtXFx1MDAzZWlkKTtcXG4gNjA0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2MDU6XFx0XFx0fVxcbiA2MDY6XFx0XFxuIDYwNzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZidXMtXFx1MDAzZW1kaW9fbG9jayk7XFxuIDYwODpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZidXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0LyogYXNzZXJ0IGJ1cyBsZXZlbCBQSFkgR1BJTyByZXNldCAqL1xcbiA2MTE6XFx0XFx0Z3Bpb2QgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChcXHUwMDI2YnVzLVxcdTAwM2VkZXYsIFxcXCJyZXNldFxcXCIsIEdQSU9EX09VVF9ISUdIKTtcXG4gNjEyOlxcdFxcdGlmIChJU19FUlIoZ3Bpb2QpKSB7XFxuIDYxMzpcXHRcXHRcXHRlcnIgPSBkZXZfZXJyX3Byb2JlKFxcdTAwMjZidXMtXFx1MDAzZWRldiwgUFRSX0VSUihncGlvZCksXFxuIDYxNDpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIm1paV9idXMgJXMgY291bGRuJ3QgZ2V0IHJlc2V0IEdQSU9cXFxcblxcXCIsXFxuIDYxNTpcXHRcXHRcXHRcXHRcXHQgICAgYnVzLVxcdTAwM2VpZCk7XFxuIDYxNjpcXHRcXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZidXMtXFx1MDAzZWRldik7XFxuIDYxNzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2MTg6XFx0XFx0fSBlbHNlXFx0aWYgKGdwaW9kKSB7XFxuIDYxOTpcXHRcXHRcXHRidXMtXFx1MDAzZXJlc2V0X2dwaW9kID0gZ3Bpb2Q7XFxuIDYyMDpcXHRcXHRcXHRmc2xlZXAoYnVzLVxcdTAwM2VyZXNldF9kZWxheV91cyk7XFxuIDYyMTpcXHRcXHRcXHRncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZ3Bpb2QsIDApO1xcbiA2MjI6XFx0XFx0XFx0aWYgKGJ1cy1cXHUwMDNlcmVzZXRfcG9zdF9kZWxheV91cyBcXHUwMDNlIDApXFxuIDYyMzpcXHRcXHRcXHRcXHRmc2xlZXAoYnVzLVxcdTAwM2VyZXNldF9wb3N0X2RlbGF5X3VzKTtcXG4gNjI0OlxcdFxcdH1cXG4gNjI1OlxcdFxcbiA2MjY6XFx0XFx0aWYgKGJ1cy1cXHUwMDNlcmVzZXQpIHtcXG4gNjI3OlxcdFxcdFxcdGVyciA9IGJ1cy1cXHUwMDNlcmVzZXQoYnVzKTtcXG4gNjI4OlxcdFxcdFxcdGlmIChlcnIpXFxuIDYyOTpcXHRcXHRcXHRcXHRnb3RvIGVycm9yX3Jlc2V0X2dwaW9kO1xcbiA2MzA6XFx0XFx0fVxcbiA2MzE6XFx0XFxuIDYzMjpcXHRcXHRpZiAoYnVzLVxcdTAwM2VyZWFkKSB7XFxuIDYzMzpcXHRcXHRcXHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xcbiA2MzQ6XFx0XFx0XFx0aWYgKGVycilcXG4gNjM1OlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDYzNjpcXHRcXHR9XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdHByZXZlbnRfYzQ1X3NjYW4gPSBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oYnVzKTtcXG4gNjM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo0MS42MTE0OTQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjI2MzgzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1ESU8gQnVzIFNjYW4qKlxuXG5SaWdodCwgYG1kaW9idXNfc2Nhbl9idXNfYzIyYCBoYXMgYmVlbiBpbnZva2VkLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciB0aGlzIGlzIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0ncyBhcmNoaXRlY3R1cmUgYW5kIHRoZSBjdXJyZW50IGRldmljZSB0cmVlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgQzIyIGNsYXVzZSBoYXMgYmVlbiB0cmlnZ2VyZWQgYXMgYW50aWNpcGF0ZWQuIEknbSBpbW1lZGlhdGVseSBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjYWxsLiBXaGF0J3MgdGhlIHRhcmdldCBoYXJkd2FyZT8gV2hhdCBwZXJpcGhlcmFscyBhcmUgY29uZmlndXJlZCBvbiB0aGlzIE1ESU8gYnVzPyBJcyB0aGlzIGEgc3RhbmRhcmQgb3BlcmF0aW9uLCBvciBpcyB0aGVyZSBzb21ldGhpbmcgdGhhdCB0cmlnZ2VyZWQgYW4gdW51c3VhbCBzY2FuPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCB0byBsb29rIGZvciBhbnkgdW5mb3Jlc2VlbiBiZWhhdmlvciBvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjI3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NDYuODc0MTM3MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NjA6XFx0e1xcbiA0NjE6XFx0XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcXG4gNDYyOlxcdH1cXG4gNDYzOlxcdEVYUE9SVF9TWU1CT0wobWRpb2J1c19zY2FuX2MyMik7XFxuIDQ2NDpcXHRcXG4gNDY1OlxcdC8qKlxcbiA0NjY6XFx0ICogbWRpb2J1c19zY2FuX2M0NSAtIHNjYW4gb25lIGFkZHJlc3Mgb24gYSBidXMgZm9yIEM0NSBNRElPIGRldmljZXMuXFxuIDQ2NzpcXHQgKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4gNDY4OlxcdCAqIEBhZGRyOiBhZGRyZXNzIG9uIGJ1cyB0byBzY2FuXFxuIDQ2OTpcXHQgKlxcbiA0NzA6XFx0ICogVGhpcyBmdW5jdGlvbiBzY2FucyBvbmUgYWRkcmVzcyBvbiB0aGUgTURJTyBidXMsIGxvb2tpbmcgZm9yXFxuIDQ3MTpcXHQgKiBkZXZpY2VzIHdoaWNoIGNhbiBiZSBpZGVudGlmaWVkIHVzaW5nIGEgdmVuZG9yL3Byb2R1Y3QgSUQgaW5cXG4gNDcyOlxcdCAqIHJlZ2lzdGVycyAyIGFuZCAzLiBOb3QgYWxsIE1ESU8gZGV2aWNlcyBoYXZlIHN1Y2ggcmVnaXN0ZXJzLCBidXRcXG4gNDczOlxcdCAqIFBIWSBkZXZpY2VzIHR5cGljYWxseSBkby4gSGVuY2UgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFueXRoaW5nXFxuIDQ3NDpcXHQgKiBmb3VuZCBpcyBhIFBIWSwgb3IgY2FuIGJlIHRyZWF0ZWQgYXMgYSBQSFkuIE90aGVyIE1ESU8gZGV2aWNlcyxcXG4gNDc1OlxcdCAqIHN1Y2ggYXMgc3dpdGNoZXMsIHdpbGwgcHJvYmFibHkgbm90IGJlIGZvdW5kIGR1cmluZyB0aGUgc2Nhbi5cXG4gNDc2OlxcdCAqL1xcbiA0Nzc6XFx0c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbiA0Nzg6XFx0e1xcbiA0Nzk6XFx0XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIHRydWUpO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0XFxuIDQ4MjpcXHRzdGF0aWMgaW50IG1kaW9idXNfc2Nhbl9idXNfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIDQ4MzpcXHR7XFxuIDQ4NDpcXHRcXHRpbnQgaTtcXG4gNDg1OlxcdFxcbiA0ODY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKSB7XFxuIDQ4NzpcXHRcXHRcXHRpZiAoKGJ1cy1cXHUwMDNlcGh5X21hc2sgXFx1MDAyNiBCSVQoaSkpID09IDApIHtcXG4gNDg4OlxcdFxcdFxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jMjIoYnVzLCBpKTtcXG4gNDkxOlxcdFxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbiA0OTI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4gNDkzOlxcdFxcdFxcdH1cXG4gNDk0OlxcdFxcdH1cXG4gNDk1OlxcdFxcdHJldHVybiAwO1xcbiA0OTY6XFx0fVxcbiA0OTc6XFx0XFxuIDQ5ODpcXHRzdGF0aWMgaW50IG1kaW9idXNfc2Nhbl9idXNfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIDQ5OTpcXHR7XFxuIDUwMDpcXHRcXHRpbnQgaTtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKSB7XFxuIDUwMzpcXHRcXHRcXHRpZiAoKGJ1cy1cXHUwMDNlcGh5X21hc2sgXFx1MDAyNiBCSVQoaSkpID09IDApIHtcXG4gNTA0OlxcdFxcdFxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDUwNTpcXHRcXG4gNTA2OlxcdFxcdFxcdFxcdC8qIERvbid0IHNjYW4gQzQ1IGlmIHdlIGFscmVhZHkgaGF2ZSBhIEMyMiBkZXZpY2UgKi9cXG4gNTA3OlxcdFxcdFxcdFxcdGlmIChidXMtXFx1MDAzZW1kaW9fbWFwW2ldKVxcbiA1MDg6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwOTpcXHRcXG4gNTEwOlxcdFxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jNDUoYnVzLCBpKTtcXG4gNTExOlxcdFxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbiA1MTI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4gNTEzOlxcdFxcdFxcdH1cXG4gNTE0OlxcdFxcdH1cXG4gNTE1OlxcdFxcdHJldHVybiAwO1xcbiA1MTY6XFx0fVxcbiA1MTc6XFx0XFxuIDUxODpcXHQvKiBUaGVyZSBhcmUgc29tZSBDMjIgUEhZcyB3aGljaCBkbyBiYWQgdGhpbmdzIHdoZW4gd2hlcmUgaXMgYSBDNDVcXG4gNTE5OlxcdCAqIHRyYW5zYWN0aW9uIG9uIHRoZSBidXMsIGxpa2UgYWNjZXB0aW5nIGEgcmVhZCB0aGVtc2VsdmVzLCBhbmRcXG4gNTIwOlxcdCAqIHN0b21waW5nIG92ZXIgdGhlIHRydWUgZGV2aWNlcyByZXBseSwgdG8gcGVyZm9ybWluZyBhIHdyaXRlIHRvXFxuIDUyMTpcXHQgKiB0aGVtc2VsdmVzIHdoaWNoIHdhcyBpbnRlbmRlZCBmb3IgYW5vdGhlciBkZXZpY2UuIE5vdyB0aGF0IEMyMlxcbiA1MjI6XFx0ICogZGV2aWNlcyBoYXZlIGJlZW4gZm91bmQsIHNlZSBpZiBhbnkgb2YgdGhlbSBhcmUgYmFkIGZvciBDNDUsIGFuZCBpZiB3ZVxcbiA1MjM6XFx0ICogc2hvdWxkIHNraXAgdGhlIEM0NSBzY2FuLlxcbiA1MjQ6XFx0ICovXFxuIDUyNTpcXHRzdGF0aWMgYm9vbCBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cylcXG4gNTI2OlxcdHtcXG4gNTI3OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIDUyODpcXHRcXG4gNTI5OlxcdFxcdG1kaW9idXNfZm9yX2VhY2hfcGh5KGJ1cywgcGh5ZGV2KSB7XFxuIDUzMDpcXHRcXHRcXHR1MzIgb3VpID0gcGh5ZGV2LVxcdTAwM2VwaHlfaWQgXFx1MDAzZVxcdTAwM2UgMTA7XFxuIDUzMTpcXHRcXG4gNTMyOlxcdFxcdFxcdGlmIChvdWkgPT0gTUlDUkVMX09VSSlcXG4gNTMzOlxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiA1MzQ6XFx0XFx0fVxcbiA1MzU6XFx0XFxuIDUzNjpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDUzNzpcXHR9XFxuIDUzODpcXHRcXG4gNTM5OlxcdC8qKlxcbiA1NDA6XFx0ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcXG4gNTQxOlxcdCAqIEBidXM6IHRhcmdldCBtaWlfYnVzXFxuIDU0MjpcXHQgKiBAb3duZXI6IG1vZHVsZSBjb250YWluaW5nIGJ1cyBhY2Nlc3NvciBmdW5jdGlvbnNcXG4gNTQzOlxcdCAqXFxuIDU0NDpcXHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGEgYnVzIGRyaXZlciB0byBicmluZyB1cCBhbGwgdGhlIFBIWXNcXG4gNTQ1OlxcdCAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG4gNTQ2OlxcdCAqICAgbWRpb2J1c19yZWdpc3RlcigpIHJhdGhlciB0aGFuIF9fbWRpb2J1c19yZWdpc3RlcigpIHVubGVzcyB0aGV5XFxuIDU0NzpcXHQgKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gNTQ4OlxcdCAqICAgUEhZcyB3aWxsIG5vdCBiZSBicm91Z2h0IHVwIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZXkgYXJlIGV4cGVjdGVkXFxuIDU0OTpcXHQgKiAgIHRvIGJlIGV4cGxpY2l0bHkgbGlzdGVkIGluIERUIGFuZCBpbnN0YW50aWF0ZWQgYnkgb2ZfbWRpb2J1c19yZWdpc3RlcigpLlxcbiA1NTA6XFx0ICpcXG4gNTUxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIFxcdTAwM2MgMCBvbiBlcnJvci5cXG4gNTUyOlxcdCAqL1xcbiA1NTM6XFx0aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4gNTU0OlxcdHtcXG4gNTU1OlxcdFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldjtcXG4gNTU2OlxcdFxcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kO1xcbiA1NTc6XFx0XFx0Ym9vbCBwcmV2ZW50X2M0NV9zY2FuO1xcbiA1NTg6XFx0XFx0aW50IGksIGVycjtcXG4gNTU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo0Ni44NzQzMDc3MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzI0MTk3NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1ESU8gQnVzIFNjYW5uaW5nIGFuZCBTeXprYWxsZXIgRW11bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWRpb2J1c19zY2FuX2J1c19jMjJgIGZ1bmN0aW9uIGNhbGwuIEl0J3MgZXNzZW50aWFsbHkgY2FsbGluZyBgbWRpb2J1c19zY2FuX2MyMmAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgaXMgaG93IHRoZSBNRElPIGJ1cyBnZXRzIHNjYW5uZWQsIHJlYWRpbmcgUEhZIElEIHJlZ2lzdGVycyB0byBkaXNjb3ZlciB3aGF0J3MgY29ubmVjdGVkLiBOb3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBjYW4gcGxheSBhIHJvbGUgaGVyZSwgc3BlY2lmaWNhbGx5IHdoZW4gaXQncyBlbXVsYXRpbmcgdGhhdCBgbWRpby1tdnVzYmAgZHJpdmVyLiBJZiB3ZSBjYW4gbWFuaXB1bGF0ZSBzeXprYWxsZXIgdG8gcmVzcG9uZCB0byBNRElPIHJlYWQgb3BlcmF0aW9ucy4uLndlIGNhbiBlc3NlbnRpYWxseSB0cmljayB0aGUgc3lzdGVtIGludG8gdGhpbmtpbmcgaXQncyB0YWxraW5nIHRvIGFuIEFUODAzWCBQSFkhIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIFBIWSBJRCBpcy4gQWggeWVzLCBJIHJlbWVtYmVyIHRoYXQgaXQncyBgMHgwMDRkZDA3MmAsIG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlIHRvIHRoYXQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGBkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guY2AgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZGVmaW5pdGl2ZSBJRC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxMTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo1MS4xOTg1MDkxMjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTA2NDUyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lEX01BVENIX0VYQUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM9OTQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBhczIxeHh4X2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTUyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTUzOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMVhYWCksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05NTQtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxeHh4XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU3LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk1ODpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEwMTFKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTU5LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTAxMUpCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk2OS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzo5NzA6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMDExUEIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTk3MS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjEwMTFQQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6OTgyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTAxMFBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy05ODMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxMDEwUEIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTkzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjk5NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEwMTBKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtOTk1LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTAxMEpCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMDUtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTAwNjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjEyMTBQQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAwNy1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjEyMTBQQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDE3LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwMTg6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxNTEwSkIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwMTktXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxNTEwSkIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTAyOS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDMwOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTUxMFBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDMxLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTUxMFBCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNDEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmM6MTA0MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTMjE1MTFKQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA0My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFlb25zZW1pIEFTMjE1MTFKQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDUzLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jOjEwNTQ6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BUzIxMjEwSkIxKSxcXG5kcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jLTEwNTUtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJBZW9uc2VtaSBBUzIxMjEwSkIxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hczIxeHh4LmMtMTA2NS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYzoxMDY2OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVMyMTUxMVBCMSksXFxuZHJpdmVycy9uZXQvcGh5L2FzMjF4eHguYy0xMDY3LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWVvbnNlbWkgQVMyMTUxMVBCMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz05Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXNpeF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy05OC17XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6OTk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9BU0lYX0FYODg3NzJBKSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDAtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJBc2l4IEVsZWN0cm9uaWNzIEFYODg3NzJBXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNy19LCB7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6MTA4OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQyksXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTA5LVxcdC5uYW1lXFx0XFx0PSBcXFwiQXNpeCBFbGVjdHJvbmljcyBBWDg4NzcyQ1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz0xMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBhc2l4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEyNDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfQVNJWF9BWDg4NzcyQSkgfSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYzoxMjU6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0FTSVhfQVg4ODc3MkMpIH0sXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTI2LVxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9BU0lYX0FYODg3OTZCKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jPTYyOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGljcGx1c190YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pY3BsdXMuYy02MzAtXFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoSVAxMDAxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvaWNwbHVzLmM6NjMxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQMTAxQV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L2ljcGx1cy5jLTYzMi1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM9MTQ3Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NzQtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTQ3NTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTE0NzYtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNZWRpYVRlayBNVDc5ODEgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5MS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNDkyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpLFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTQ5My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lZGlhVGVrIE1UNzk4OCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTA4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MDk6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTEwLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWlyb2hhIEFONzU4MSBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTIxLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1MjI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MyksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xNTIzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiQWlyb2hhIEFONzU4MyBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xNTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1Mzg6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTUzOTpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYzoxNTQwOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jOjE1NDE6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTU0Mi1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYz05OT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX2dlcGh5X2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMDAtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMDE6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzUzMCksXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTEwMi1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lZGlhVGVrIE1UNzUzMCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jLTExNC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS5jOjExNTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmMtMTE2LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWVkaWFUZWsgTVQ3NTMxIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmM9MTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX2dlcGh5X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYzoxMzQ6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3NTMxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2UuYy0xMzUtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVzb24tZ3hsLmM9MTg3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtZXNvbl9neGxfcGh5W10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE4OC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjE4OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMTgxNDQwMCksXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTE5MC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lc29uIEdYTCBJbnRlcm5hbCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwMi1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jOjIwMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMTgwMzMwMSksXFxuZHJpdmVycy9uZXQvcGh5L21lc29uLWd4bC5jLTIwNC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIk1lc29uIEcxMkEgSW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTM3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTM4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjUzOTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWQjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTQwLVxcdFxcdC5uYW1lICAgICAgICAgICAgICAgPSBcXFwiTEFOODY3WCBSZXYuQjFcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NDgtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTQ5OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZDMSksXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01NTAtXFx0XFx0Lm5hbWUgICAgICAgICAgICAgICA9IFxcXCJMQU44NjdYIFJldi5DMVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU1OC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NTk6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMyKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU2MC1cXHRcXHQubmFtZSAgICAgICAgICAgICAgID0gXFxcIkxBTjg2N1ggUmV2LkMyXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTY4LVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU2OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX0xBTjg2N1hfUkVWRDApLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTcwLVxcdFxcdC5uYW1lICAgICAgICAgICAgICAgPSBcXFwiTEFOODY3WCBSZXYuRDBcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy01ODEtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTgyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY1WF9SRVZCKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU4My1cXHRcXHQubmFtZSAgICAgICAgICAgICAgID0gXFxcIkxBTjg2NVggUmV2LkIwL0IxIEludGVybmFsIFBoeVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTU5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIHRibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTk4OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NTk5OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMxKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAwOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkMyKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkQwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NjAyOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjVYX1JFVkIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy02MDMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM9MzA2Mj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbW90b3Jjb21tX3BoeV9kcnZzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNjMtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMDY0OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTExKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA2NS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUxMSBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDcyLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzA3MzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMwNzQtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MjEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzA5Mi1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMwOTM6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MjIpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMDk0LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiWVQ4NTIyIDEwMCBNZWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTAwLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwMTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMSksXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTMxMDItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJZVDg1MzEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNC1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMTU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzFTKSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExNi1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIllUODUzMVMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzEzMS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxMzI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg4MjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTMzLVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiWVQ4ODIxIDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMTU3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbW90b3Jjb21tX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTU4OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MTEpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNTk6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUyMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzE2MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfWVQ4NTIyKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzozMTYxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9ZVDg1MzEpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODUzMVMpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjMxNjM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1lUODgyMSkgfSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzE2NC1cXHR7IC8qIHNlbnRpbmVsICovIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yODA3LXtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyODA4OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU2WCksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjgwOS1cXHQubmFtZVxcdFxcdD0gXFxcIk1pY3Jvc2VtaSBHRSBWU0M4NTZYIFN5bmNFXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI4OTgte1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jOjI4OTk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9WU0M4NTc1KSxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTAwLVxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9zZW1pIEdFIFZTQzg1NzUgU3luY0VcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjkyNy17XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6MjkyODpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1ZTQzg1ODIpLFxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTI5MjktXFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb3NlbWkgR0UgVlNDODU4MiBTeW5jRVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTU2LXtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTU3OlxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfVlNDODU4NCksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk1OC1cXHQubmFtZVxcdFxcdD0gXFxcIk1pY3Jvc2VtaSBHRSBWU0M4NTg0IFN5bmNFXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYz05MzY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG14bF9waHlfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy05MzctXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5Mzg6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9NWEw4NjExMCksXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTkzOS1cXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIk1YTDg2MTEwIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jLTk1MS1cXHR7XFxuZHJpdmVycy9uZXQvcGh5L214bC04NjExMC5jOjk1MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSxcXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmMtOTUzLVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiTVhMODYxMTEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXhsLTg2MTEwLmM9OTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXhsX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTEwKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYzo5NzM6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX01YTDg2MTExKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYy05NzQtXFx0eyAgfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM9MTExMz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXQ4MDN4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTExNS1cXHQvKiBRdWFsY29tbSBBdGhlcm9zIEFSODAzNSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjExMTY6XFx0UEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzVfUEhZX0lEKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTE3LVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwMzVcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1MS1cXHQvKiBRdWFsY29tbSBBdGhlcm9zIEFSODAzMS9BUjgwMzMgKi9cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTUyOlxcdFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE1My1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MDMxL0FSODAzM1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTc1LVxcdC8qIFF1YWxjb21tIEF0aGVyb3MgQVI4MDMyICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE3NjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzMl9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNzctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSODAzMlxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMTkwLVxcdC8qIEFUSEVST1MgQVI5MzMxICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE5MTpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIOTMzMV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExOTItXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBidWlsdC1pbiBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTIwNS19LCB7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIwNjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoSVBRNTAxOF9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMDctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIElQUTUwMTggaW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTktXFx0LyogUXVhbGNvbW0gQXRoZXJvcyBRQ0E5NTYxICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTIyMDpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBOTU2MV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMjEtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQTk1NjEgYnVpbHQtaW4gUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTEyMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBhdGhlcm9zX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMzktXFx0eyBBVEg4MDMwX1BIWV9JRCwgQVQ4MDMwX1BIWV9JRF9NQVNLIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTI0MDpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg4MDMxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjQxOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKEFUSDgwMzJfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDI6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoQVRIODAzNV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTI0MzpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChBVEg5MzMxX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjQ0OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKElQUTUwMThfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEyNDU6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBOTU2MV9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTI0Ni1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz03OTE9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHFjYTgwN3hfZHJpdmVyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03OTItXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo3OTM6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDcyKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzk0LVxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJRdWFsY29tbSBRQ0E4MDcyXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy04MTUtXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4MTY6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9RQ0E4MDc1KSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODE3LVxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJRdWFsY29tbSBRQ0E4MDc1XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz04NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBxY2E4MDd4X3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo4NDc6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUEhZX0lEX1FDQTgwNzIpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjg0ODpcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUUNBODA3NSkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtODQ5LVxcdHsgfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jPTY0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcWNhODA4eF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NDgtXFx0LyogUXVhbGNvbW0gUUNBODA4MSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzo2NDk6XFx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTgwODFfUEhZX0lEKSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmMtNjUwLVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUXVhbGNvbW0gUUNBODA4MVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9NjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODA4eF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjgyOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgwODFfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02ODMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4M3h4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIxNS1cXHQvKiBRQ0E4MzM3ICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjIxNjpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMzN19QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMTctXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIDgzMzcgaW50ZXJuYWwgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMjktXFx0LyogUUNBODMyNy1BIGZyb20gc3dpdGNoIFFDQTgzMjctQUwxQSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzA6XFx0UEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQV9QSFlfSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYy0yMzEtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJRdWFsY29tbSBBdGhlcm9zIDgzMjctQSBpbnRlcm5hbCBQSFlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0NC1cXHQvKiBRQ0E4MzI3LUIgZnJvbSBzd2l0Y2ggUUNBODMyNy1CTDFBICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0NTpcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19CX1BIWV9JRCksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI0Ni1cXHQubmFtZVxcdFxcdFxcdD0gXFxcIlF1YWxjb21tIEF0aGVyb3MgODMyNy1CIGludGVybmFsIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgcWNhODN4eF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjYzOlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMzdfUEhZX0lEKSB9LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyNjQ6XFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoUUNBODMyN19BX1BIWV9JRCkgfSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MjY1OlxcdHsgUEhZX0lEX01BVENIX0VYQUNUKFFDQTgzMjdfQl9QSFlfSUQpIH0sXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTI2Ni1cXHR7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI2ODg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2ODktXFx0e1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI2OTA6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAwMDgyMDEpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2OTEtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjAxQ1AgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5NC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjY5NTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzgxNiksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjY5Ni1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMDFGIEZhc3QgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcxMi1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjcxMzpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxMCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjcxNC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTEgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIwLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzIxOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTEyKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzIyLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMxLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzMyOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTEzKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzMzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUMgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzM5LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNzQwOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTE0KSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yNzQxLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODIxMUROIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc0OC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc0OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxNSksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc1MC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTFFIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2MS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc2MjpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzkxNiksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc2My1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgyMTFGIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjc4MC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjc4MTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyMTFGVkRfUEhZSUQpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI3ODItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjExRi1WRCBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzUtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4MzY6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4MzgpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4MzctXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI2LUNHIDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTAtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTE6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M4NDgpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTItXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI2Qi1DR19SVEw4MjIxQi1DRyAyLjVHYnBzIFBIWVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTM3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTM4OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfUlRMX0RVTU1ZX1NGUCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjkzOS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJlYWx0ZWsgU0ZQIFBIWSBNb2RlXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTEtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NTI6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2NhZDApLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NTMtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MjI0IDIuNUdicHMgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjQtXFx0fSwge1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5NjU6XFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKDB4MDAxY2M5NjEpLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NjYtXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJSVEw4MzY2UkIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTc3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTc4OlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjYjAwKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTc5LVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMOTAwMEFBX1JUTDkwMDBBTiBFdGhlcm5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkwLVxcdH0sIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTkxOlxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVCgweDAwMWNjOTQyKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTkyLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiUlRMODM2NU1CLVZDIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjk5OC1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk5OTpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoMHgwMDFjYzk2MCksXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwMC1cXHRcXHQubmFtZVxcdFxcdD0gXFxcIlJUTDgzNjZTIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTMwPXN0cnVjdCBwaHlfZHJpdmVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTU4Ni1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjE1ODc6I2RlZmluZSBQSFlfSURfTUFUQ0hfRVhBQ1QoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfRVhUQUNUX01BU0tcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTE1ODgtI2RlZmluZSBQSFlfSURfTUFUQ0hfTU9ERUwoaWQpIC5waHlfaWQgPSAoaWQpLCAucGh5X2lkX21hc2sgPSBQSFlfSURfTUFUQ0hfTU9ERUxfTUFTS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjowOTo1NS43MDkxNjEyOTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwMTMyNDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgUEhZIElEcyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWUgQVQ4MDNYIFBIWSBJRHMuIExldCdzIHNlZSwgd2UndmUgZ290IGBBVEg4MDMxX1BIWV9JRGAsIGBBVEg4MDMyX1BIWV9JRGAsIGBBVEg4MDM1X1BIWV9JRGAsIGBBVEg5MzMxX1BIWV9JRGAsIGBJUFE1MDE4X1BIWV9JRGAsIGFuZCBgUUNBOTU2MV9QSFlfSURgLiBTZWVtcyBsaWtlIGEgc3RhbmRhcmQgbGlzdCBmb3Igd29ya2luZyB3aXRoIEFUODAzWCBkZXZpY2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBBVEg4MDM1X1BIWV9JRGAgcmlnaHQgbm93LiBOZWVkIHRvIGNoZWNrIHdoYXQgdGhhdCBzcGVjaWZpYyBpZGVudGlmaWVyIGFjdHVhbGx5IHJlcHJlc2VudHMuIEdvdHRhIGtub3cgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NzQ5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MDk6NTkuNjEwNDg4NzUzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgyODY1ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBBVEg4MDM1X1BIWV9JRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy05NC0jZGVmaW5lIEFUSDgwMzJfUEhZX0lEXFx0XFx0XFx0XFx0MHgwMDRkZDAyM1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjk1OiNkZWZpbmUgQVRIODAzNV9QSFlfSURcXHRcXHRcXHRcXHQweDAwNGRkMDcyXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtOTYtI2RlZmluZSBBVDgwMzBfUEhZX0lEX01BU0tcXHRcXHRcXHQweGZmZmZmZmVmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjAzLjk5MzM2MTk1MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI1OTEwOTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBhdDgwM3ggUEhZIERyaXZlciB2aWEgVVNCKipcblxuT2theSwgc28gaWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSB0aGF0IGlkZW50aWZpZXMgYXMgYG1kaW8tbXZ1c2JgIChWSUQgMHgxMjg2LCBQSUQgMHgxZmE0KSBhbmQgcmV0dXJucyBzcGVjaWZpYyB2YWx1ZXMg4oCTIGAweDAwNGRgIGFuZCBgMHhkMDcyYCDigJMgaW4gcmVzcG9uc2UgdG8gTURJTyByZWFkcyBmcm9tIHJlZ2lzdGVycyAyIGFuZCAzLCByZXNwZWN0aXZlbHksIHRoZW4gdGhlIGBhdDgwM3hgIGRyaXZlciB3aWxsIGdldCBwcm9iZWQuIE1ha2VzIHNlbnNlOyBgbWRpby1tdnVzYmAgaW50ZXJhY3RzIHdpdGggdGhlIE1ESU8gYnVzICp2aWEqIFVTQi5cblxuTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBxdWlja2x5IGdsYW5jaW5nIGF0IGBtdnVzYl9tZGlvX3JlYWRgIGluIGBtZGlvLW12dXNiLmNgOlxuXG5gYGBjXG5zdGF0aWMgaW50IG12dXNiX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZylcbntcblx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuXHRpbnQgZXJyLCBhbGVuO1xuXG5cdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG5cblx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcblx0XHRcdCAgIG12dXNiLVx1MDAzZWJ1ZiwgNiwgXHUwMDI2YWxlbiwgMTAwKTtcblx0aWYgKGVycilcblx0XHRyZXR1cm4gZXJyO1xuXG5cdGVyciA9IHVzYl9idWxrX21zZyhtdnVzYi1cdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXHUwMDNldWRldiwgNiksXG5cdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG5cdGlmIChlcnIpXG5cdFx0cmV0dXJuIGVycjtcblxuXHRyZXR1cm4gbGUxNl90b19jcHUobXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcbn1cbmBgYFxuXG5ZZXAsIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjcmFmdGluZyB0aG9zZSBidWxrIG1lc3NhZ2UgcmVzcG9uc2VzLiBUaGlzIG1lYW5zIHRoZSBgYXQ4MDN4YCBQSFkgZHJpdmVyIGlzIGRlZmluaXRlbHkgd2l0aGluIHJlYWNoIGFuZCBmdXp6YWJsZSFcblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcbi1cdGlmIChwaHlkZXYtXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZW1kaW8ucmVzZXRfZ3Bpbykge1xuK1x0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfTk9MSU5LIFx1MDAyNlx1MDAyNiBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpKSB7XG5gYGBcblxuSW50ZXJlc3RpbmcuIEl0IHJlcGxhY2VzIGBwaHlkZXYtXHUwMDNlbWRpby5yZXNldF9ncGlvYCB3aXRoIGBwaHlfZGV2aWNlX2hhc19yZXNldChwaHlkZXYpYC4gQW5kIHRoYXQgZnVuY3Rpb24gY2hlY2tzIGZvciBgbWRpby1cdTAwM2VyZXNldF9ncGlvIHx8IG1kaW8tXHUwMDNlcmVzZXRfY3RybGAuIFNvIHRoZSBjb25kaXRpb24gaXMgbm93IHRydWUgaWYgKmVpdGhlciogYHJlc2V0X2dwaW9gIG9yIGByZXNldF9jdHJsYCBpcyBwcmVzZW50LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgZnV6emFibGUgaW4gYSBtZWFuaW5nZnVsIHdheT9cblxuWWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgbG9naWMgd2l0aGluIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YC4gIFdoYXQgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM/IFdlJ2xsIG5lZWQgYENPTkZJR19BVDgwM1hfUEhZYCwgb2J2aW91c2x5LiAgVG8gZ2V0IHRoZXJlIHRocm91Z2ggVVNCLCB3ZSBhbHNvIG5lZWQgYENPTkZJR19NRElPX01WVVNCYCwgYENPTkZJR19VU0JgLCBhbmQgb2YgY291cnNlIGBDT05GSUdfUEhZTElCYC4gVGltZSB0byBjb25maXJtIHRoYXQgYEFUODAzWF9QSFlgIGlzIGF2YWlsYWJsZSBpbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE2NCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDoxNC4yNTI0NzQyNDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTM5MDcxMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUODAzWF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0yPWNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjU6Y29uZmlnIEFUODAzWF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjE4LjQ0NjM5MjIwOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjM0ODQ3NjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBBVDgwM1hfUEhZIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBRdWFsY29tbSBQSFkgZHJpdmVycywgc28gYGRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdgLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBBVDgwM1hfUEhZYC4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBzdXNwZWN0IHRoZXJlIG1heSBiZSBhIGNhc2NhZGUgb2YgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIGludm9sdmluZyBvdGhlciBQSFkgb3B0aW9ucywgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MsIG9yIGV2ZW4gc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyIGZlYXR1cmVzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHRoZXNlIHJlbGF0aW9uc2hpcHMgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGdvYWwgaXMgdG8gZWl0aGVyIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiwgZGVidWcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgbG9vayBhdCBlbmFibGluZyBpdCBpZiBpdCdzIG5vdCBhbHJlYWR5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBvdGhlciBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA2NzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDozNC43OTQ4NzIzNzVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBRQ09NX05FVF9QSFlMSUJcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBBVDgwM1hfUEhZXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBBUjgwM1ggUEhZc1xcXCJcXG4gICA3OlxcdFxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQVI4MDMwLCBBUjgwMzEsIEFSODAzMywgQVI4MDM1LCBJUFE1MDE4IG1vZGVsXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBRQ0E4M1hYX1BIWVxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbiAgMTQ6XFx0XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbiAgMTU6XFx0XFx0aGVscFxcbiAgMTY6XFx0XFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIGludGVybmFsIFFDQTgzMzcoSW50ZXJuYWwgcWNhOGsgUEhZKSBtb2RlbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgUUNBODA4WF9QSFlcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjM0Ljc5NDk5NDU4NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA2Mzk1MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVndWxhdG9yeSBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyB0aGUgc2l0dWF0aW9uIGhpbmdlcyBvbiB0aGUgYFJFR1VMQVRPUmAuIFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHByb3Blcmx5LCBhbmQgdG8gZG8gdGhhdCwgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIHRvIGFjdGl2YXRlIGBDT05GSUdfQVQ4MDNYX1BIWWAgYW5kIGBDT05GSUdfTURJT19NVlVTQmAuIE5vdywgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ESU9fTVZVU0JgIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyBpdHMgcmVxdWlyZW1lbnRzIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgc3VjY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyNDAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEwOjQwLjEwMTM5MjgyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODYyMjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTURJT19NVlVTQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9MTA2PWNvbmZpZyBNRElPX0kyQ1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTE2OmNvbmZpZyBNRElPX01WVVNCXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTExNy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBVU0IgdG8gTURJTyBBZGFwdGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMDo0NC40ODAwMjA1NDFaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExOTQ4ODA1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkV4YW1pbmluZyB0aGUgTURJT19NVlVTQiBLY29uZmlnIEVudHJ5KipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgTURJT19NVlVTQmAuIE15IGZpcnN0IG1vdmUgaXMgdG8gb3BlbiB1cCBgZHJpdmVycy9uZXQvbWRpby9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBNRElPIGRyaXZlciwgcHJlc3VtYWJseSB0aGUgTWFydmVsbCBVU0IgTURJTy4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgbW9kdWxlIGlzIGVuYWJsZWQsIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhcmUgb24gb3RoZXIgY29tcG9uZW50cywgYW5kIGhvdyBpdCBpcyBsb2dpY2FsbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgbmV0d29yayBzdWJzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIGBLY29uZmlnYCBzdHJ1Y3R1cmUgaXMga2V5IHRvIGVmZmljaWVudCBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBsYXRlciBvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIFRoZSBoZWxwIHRleHQgLSBkb2VzIGl0IHByb3ZpZGUgY29udGV4dCBvciB3YXJuaW5ncz9cbiogICBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGRyaXZlcnMsIGxpa2UgVVNCIHN1YnN5c3RlbSBkcml2ZXJzIG9yIHBhcnRpY3VsYXIgUEhZIGRyaXZlcnM/XG4qICAgQ29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gcHJvY2Vzc29yIGFyY2hpdGVjdHVyZSBvciBvdGhlciBmZWF0dXJlcz9cbiogICBEZWZhdWx0IHNldHRpbmdzLCBpZiBhbnksIGFuZCB3aHkgdGhvc2UgZGVmYXVsdHMgd2VyZSBjaG9zZW4uXG4qICAgQW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgTURJTyBkcml2ZXJzIC0gYXJlIHRoZXJlIGNvbmZsaWN0cyBvciBvdmVybGFwcGluZyBmdW5jdGlvbmFsaXRpZXM/XG5cbkVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBob3cgYE1ESU9fTVZVU0JgIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZSwgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMToxNS42NzQ5MDQ2ODdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBTdXBwb3J0IEkyQyBiYXNlZCBQSFlzLiAgVGhpcyBwcm92aWRlcyBhIE1ESU8gYnVzIGJyaWRnZWRcXG4gMTExOlxcdFxcdCAgdG8gSTJDIHRvIGFsbG93IFBIWXMgY29ubmVjdGVkIGluIEkyQyBtb2RlIHRvIGJlIGFjY2Vzc2VkXFxuIDExMjpcXHRcXHQgIHVzaW5nIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZS5cXG4gMTEzOlxcdFxcbiAxMTQ6XFx0XFx0ICBUaGlzIGlzIGxpYnJhcnkgbW9kZS5cXG4gMTE1OlxcdFxcbiAxMTY6XFx0Y29uZmlnIE1ESU9fTVZVU0JcXG4gMTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFVTQiB0byBNRElPIEFkYXB0ZXJcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAxMTk6XFx0XFx0aGVscFxcbiAxMjA6XFx0XFx0ICBBIFVTQiB0byBNRElPIGNvbnZlcnRlciBwcmVzZW50IG9uIGRldmVsb3BtZW50IGJvYXJkcyBmb3JcXG4gMTIxOlxcdFxcdCAgTWFydmVsbCdzIExpbmsgU3RyZWV0IGZhbWlseSBvZiBFdGhlcm5ldCBzd2l0Y2hlcy5cXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE1ESU9fTVNDQ19NSUlNXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zZW1pIE1JSU0gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAxMjY6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuIDEyNzpcXHRcXHRoZWxwXFxuIDEyODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBNSUlNIChNRElPKSBpbnRlcmZhY2UgZm91bmQgaW4gdGhlIG5ldHdvcmtcXG4gMTI5OlxcdFxcdCAgc3dpdGNoZXMgb2YgdGhlIE1pY3Jvc2VtaSBTb0NzOyBpdCBpcyByZWNvbW1lbmRlZCB0byBzd2l0Y2ggb25cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTE6MTUuNjc1MTAxMDA3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODgzMzE1OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYE1ESU9fTVZVU0JgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAsIHdoaWNoIGlzbid0IGVudGlyZWx5IHN1cnByaXNpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEFyZSB0aGVyZSBvdGhlciBlbnRyeSBwb2ludHMgYmVzaWRlcyB0aGUgb2J2aW91cz8gUmlnaHQsIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyBjbGVhcmx5IHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgbmV0d29yayBsaW5rIHN0YXRlIGNoYW5nZXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSB0aGF0IGBwaHlfc3RhdGVfbWFjaGluZWAsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHkuY2AsIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgUEhZIHN0YXRlIGFuZCBjYWxscyBgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VsaW5rX2NoYW5nZV9ub3RpZnkocGh5ZGV2KWAuIFRoYXQncyB0aGUga2V5LiBMZXQncyB0cmFjZSBpdCBiYWNrIGZyb20gYHBoeV9zdGF0ZV9tYWNoaW5lYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxNjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMTozMC41NTg0MjE0ODVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg2MjE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlua19jaGFuZ2Vfbm90aWZ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9OTYwPXN0YXRpYyBpbnQgYXFjczEwOV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy05NjktXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzo5NzA6c3RhdGljIHZvaWQgYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtOTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM9MTE4MT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXFyX2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjM1LVxcdC5nZXRfc3RhdHNcXHQ9IGFxcjEwN19nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjM2OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTIzNy1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyNjItXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMjYzOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTI2NC1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEyODktXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTExX2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEyOTA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMjkxLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTMxNi1cXHQuZ2V0X2ZlYXR1cmVzICAgPSBhcXIxMTFfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTMxNzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzMTgtXFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzUyLVxcdC5nZXRfc3RhdHNcXHQ9IGFxcjEwN19nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxMzUzOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTM1NC1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzNzgtXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjEzNzk6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xMzgwLVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTEzOTktXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MDA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDAxLVxcdC5pbmJhbmRfY2Fwc1xcdD0gYXFyX2dlbjJfaW5iYW5kX2NhcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0MjAtXFx0LmdldF9zdGF0cyAgICAgID0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE0MjE6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDIyLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ0Ni1cXHQuZ2V0X3N0YXRzICAgICAgPSBhcXIxMDdfZ2V0X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmM6MTQ0NzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gYXFyMTA3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE0NDgtXFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IGFxcl9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNDczLVxcdC5nZXRfZmVhdHVyZXMgICA9IGFxcjExMV9nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNDc0OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTQ3NS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MDAtXFx0LmdldF9mZWF0dXJlc1xcdD0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTAxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUwMi1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1MjctXFx0LmdldF9mZWF0dXJlcyAgID0gYXFyMTE1Y19nZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYzoxNTI4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBhcXIxMDdfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMtMTUyOS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gYXFyX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jLTE1NTMtXFx0LmdldF9zdGF0c1xcdD0gYXFyMTA3X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jOjE1NTQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGFxcjEwN19saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYy0xNTU1LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBhcXJfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jPTQ4PXN0YXRpYyBpbnQgYXNpeF9heDg4NzcyYV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtODUtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmM6ODY6c3RhdGljIHZvaWQgYXNpeF9heDg4NzcyYV9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy04Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYz05Nz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYXNpeF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEwNS1cXHQuc29mdF9yZXNldFxcdD0gYXNpeF9zb2Z0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEwNjpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhc2l4X2F4ODg3NzJhX2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMDctfSwge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9ODg9ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtOTEtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6OTI6ICAgIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05My0gICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM9MTIyNT1zdGF0aWMgdm9pZCBiY201NHh4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzMi1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMjMzOnN0YXRpYyB2b2lkIGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTIzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xNDY2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBicm9hZGNvbV9kcml2ZXJzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDc3LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0Nzg6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ3OS19LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNDg5LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE0OTA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTQ5MS19LCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTAyLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1MDM6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUwNC1cXHQuc3VzcGVuZFxcdD0gYmNtNTR4eF9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUyMC1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTIxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1MjItXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTMzLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1MzQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTUzNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NDgtXFx0LnByb2JlXFx0XFx0PSBiY201NDYxNnNfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU0OTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTUwLVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2My1cXHQucmVzdW1lXFx0XFx0PSBnZW5waHlfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE1NjQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU2NS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1NzctXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTU3ODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNTc5LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTU5NS1cXHQucmVzdW1lXFx0XFx0PSBiY201NHh4X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNTk2OlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE1OTctXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjEzLVxcdC5yZXN1bWVcXHRcXHQ9IGJjbTU0eHhfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2MTQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTYxNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2MjYtXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTYyNzpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjI4LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTYzOS1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNjQwOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NDEtXFx0LnN1c3BlbmRcXHQ9IGJjbTU0eHhfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE2NTQtXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTY1NTpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjU2LVxcdC5zdXNwZW5kXFx0PSBiY201NHh4X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNjY5LVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE2NzA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTY3MS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MDktXFx0LnByb2JlXFx0XFx0PSBiY201NHh4X3BoeV9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzEwOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MTEtXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gYmNtX3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzIzLVxcdC5oYW5kbGVfaW50ZXJydXB0ID0gYmNtX3BoeV9oYW5kbGVfaW50ZXJydXB0LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjE3MjQ6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gYmNtNTR4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTcyNS1cXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBiY21fcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3MzctXFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBiY21fcGh5X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTczODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBiY201NHh4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy0xNzM5LVxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGJjbV9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTc1MC1cXHQuaGFuZGxlX2ludGVycnVwdCA9IGJjbV9waHlfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxNzUxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGJjbTU0eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTE3NTItfSB9O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz05MzU9c3RhdGljIGludCBkcDgzODY3X3BoeV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05NjctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5Njg6c3RhdGljIHZvaWQgZHA4Mzg2N19saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTExODA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjA2OlxcdFxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBkcDgzODY3X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyMDctXFx0XFx0LnNldF9sb29wYmFja1xcdD0gZHA4Mzg2N19sb29wYmFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYz0zNzg9c3RhdGljIGludCBsYW44OHh4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzozODU6c3RhdGljIHZvaWQgbGFuODh4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtMzg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy0zOTctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjM5ODpcXHRcXHRcXHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTM5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy00MDEtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jOjQwMjpcXHRcXHRcXHRnb3RvIGxpbmtfY2hhbmdlX25vdGlmeV9mYWlsZWQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jLTQwMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDMyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo0MzM6bGlua19jaGFuZ2Vfbm90aWZ5X2ZhaWxlZDpcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwLmMtNDM0LVxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiTGluayBjaGFuZ2UgcHJvY2VzcyBmYWlsZWQgJXBlXFxcXG5cXFwiLCBFUlJfUFRSKHJldCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcC5jPTU0Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3BoeV9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjQtXFx0LmNvbmZpZ19hbmVnXFx0PSBsYW44OHh4X2NvbmZpZ19hbmVnLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYzo1NjU6XFx0LmxpbmtfY2hhbmdlX25vdGlmeSA9IGxhbjg4eHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXAuYy01NjYtXFx0LnNvZnRfcmVzZXRcXHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jPTE4NTM9c3RhdGljIGludCB5dDg1MjJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODgzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYzoxODg0OiAqIHl0ODUzMV9saW5rX2NoYW5nZV9ub3RpZnkoKSAtIEFkanVzdCB0aGUgdHggY2xvY2sgZGlyZWN0aW9uIGFjY29yZGluZyB0b1xcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODg1LSAqIHRoZSBjdXJyZW50IHNwZWVkIGFuZCBkdHMgY29uZmlnLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jLTE4OTEtICovXFxuZHJpdmVycy9uZXQvcGh5L21vdG9yY29tbS5jOjE4OTI6c3RhdGljIHZvaWQgeXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0xODkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYz0zMDYyPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtb3RvcmNvbW1fcGh5X2RydnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tb3RvcmNvbW0uYy0zMTA4LVxcdFxcdC5zZXRfd29sXFx0PSB5dDg1MzFfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmM6MzEwOTpcXHRcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0geXQ4NTMxX2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvbW90b3Jjb21tLmMtMzExMC1cXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IHl0ODUyMV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oPTQ4Mj1zdGF0aWMgaW5saW5lIHZvaWQgdnNjODU4NF9jb25maWdfbWFjc2VjX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaC00ODctI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg6NDg4OnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4OS12b2lkIHZzYzg1ODRfY29uZmlnX3RzX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmg9NDk0PWlycXJldHVybl90IHZzYzg1ODRfaGFuZGxlX3RzX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk1LSNlbHNlXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oOjQ5NjpzdGF0aWMgaW5saW5lIHZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTI1NDg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzg1eHhfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yOTc3LVxcdC5nZXRfc3RhdHMgICAgICA9IFxcdTAwMjZ2c2M4NXh4X2dldF9zdGF0cyxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyOTc4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBcXHUwMDI2dnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjk3OS1cXHQuaW5iYW5kX2NhcHMgICAgPSB2c2M4NXh4X2luYmFuZF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYz05NjY9c3RhdGljIGludCB2c2M4NXh4X3RzX2VuZ2luZV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgb25lX3N0ZXApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMjktXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19wdHAuYzoxMDMwOnZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX3B0cC5jLTEwMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzNzk9c3RhdGljIGludCBueHBfYzQ1X2dldF9zcWkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzkyOnN0YXRpYyB2b2lkIHRqYTExMjBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTIwNzM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG54cF9jNDVfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMjEzNS1cXHRcXHQucmVhZF9zdGF0dXNcXHRcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjIxMzY6XFx0XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gdGphMTEyMF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxMzctXFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMjE2MS1cXHRcXHQucmVhZF9zdGF0dXNcXHRcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjIxNjI6XFx0XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gdGphMTEyMF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTIxNjMtXFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGdlbnBoeV9jNDVfcG1hX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9NjQ9c3RhdGljIHZvaWQgcGh5X3Byb2Nlc3Nfc3RhdGVfY2hhbmdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNzAtXFx0XFx0XFx0ICAgcGh5X3N0YXRlX3RvX3N0cihwaHlkZXYtXFx1MDAzZXN0YXRlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjcxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWRydiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGlua19jaGFuZ2Vfbm90aWZ5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo3MjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlbGlua19jaGFuZ2Vfbm90aWZ5KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTczLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTQ4NT1zdGF0aWMgaW50IGF0ODAzeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMwLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjUzMTpzdGF0aWMgdm9pZCBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtNTMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTEwMjI9c3RhdGljIGludCBpcHE1MDE4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDYzLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jOjEwNjQ6c3RhdGljIHZvaWQgaXBxNTAxOF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMDY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jPTExMTM9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGF0ODAzeF9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDEtXFx0LmNvbmZpZ19pbml0XFx0XFx0PSBhdDgwM3hfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmM6MTE0MjpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTExNDMtXFx0LnNldF93b2xcXHRcXHQ9IGF0ODAzeF9zZXRfd29sLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4MC1cXHQuY29uZmlnX2luaXRcXHRcXHQ9IGF0ODAzeF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMTgxOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmMtMTE4Mi1cXHQuc3VzcGVuZFxcdFxcdD0gYXQ4MDN4X3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYy0xMjEwLVxcdC5jb25maWdfaW5pdFxcdFxcdD0gaXBxNTAxOF9jb25maWdfaW5pdCxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9hdDgwM3guYzoxMjExOlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IGlwcTUwMThfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL2F0ODAzeC5jLTEyMTItXFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBhdDgwM3hfcmVhZF9zdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9MjU3PXN0YXRpYyBpbnQgcWNhODA4eF9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTI4OS1cXHRcXHQgKlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYzoyOTA6XFx0XFx0ICogdGhlIHJlYXNvbiBmb3Igbm90IHB1dHRpbmcgdGhpcyBjb2RlIGludG8gdGhlIGZ1bmN0aW9uIGxpbmtfY2hhbmdlX25vdGlmeSBpc1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy0yOTEtXFx0XFx0ICogdGhlIGNvcm5lciBjYXNlIHdoZXJlIHRoZSBsaW5rIHBhcnRuZXIgaXMgYWxzbyB0aGUgcWNhODA4MSBQSFkgYW5kIHRoZSBzZWVkXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9Mzg3PXN0YXRpYyBpbnQgcWNhODA4eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxMi1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NDEzOnN0YXRpYyB2b2lkIHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTQxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM9NjQ2PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4MDh4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA4eC5jLTY2Ny1cXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzXFx0PSBxY2E4MDh4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDh4LmM6NjY4OlxcdC5saW5rX2NoYW5nZV9ub3RpZnlcXHQ9IHFjYTgwOHhfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwOHguYy02NjktXFx0LmxlZF9icmlnaHRuZXNzX3NldFxcdD0gcWNhODA4eF9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MTI2PXN0YXRpYyBpbnQgcWNhODMyN19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM6MTM4OnN0YXRpYyB2b2lkIHFjYTgzeHhfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmM9MjEzPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBxY2E4M3h4X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzMi1cXHQvKiBQSFlfR0JJVF9GRUFUVVJFUyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgzeHguYzoyMzM6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gcWNhODN4eF9saW5rX2NoYW5nZV9ub3RpZnksXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jLTIzNC1cXHQucHJvYmVcXHRcXHRcXHQ9IHFjYTgzeHhfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ3LVxcdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODN4eC5jOjI0ODpcXHQubGlua19jaGFuZ2Vfbm90aWZ5XFx0PSBxY2E4M3h4X2xpbmtfY2hhbmdlX25vdGlmeSxcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4M3h4LmMtMjQ5LVxcdC5wcm9iZVxcdFxcdFxcdD0gcWNhODN4eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jPTg2PXN0YXRpYyBpbnQgcm9ja2NoaXBfaW50ZWdyYXRlZF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTEwNC1cXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYzoxMDU6c3RhdGljIHZvaWQgcm9ja2NoaXBfbGlua19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jPTE3Mz1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcm9ja2NoaXBfcGh5X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JvY2tjaGlwLmMtMTc5LVxcdC5mbGFnc1xcdFxcdFxcdD0gMCxcXG5kcml2ZXJzL25ldC9waHkvcm9ja2NoaXAuYzoxODA6XFx0LmxpbmtfY2hhbmdlX25vdGlmeVxcdD0gcm9ja2NoaXBfbGlua19jaGFuZ2Vfbm90aWZ5LFxcbmRyaXZlcnMvbmV0L3BoeS9yb2NrY2hpcC5jLTE4MS1cXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExMzA9c3RydWN0IHBoeV9kcml2ZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMjQyLVxcdC8qKlxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTI0MzpcXHQgKiBAbGlua19jaGFuZ2Vfbm90aWZ5OiBDYWxsZWQgdG8gaW5mb3JtIGEgUEhZIGRldmljZSBkcml2ZXJcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEyNDQtXFx0ICogd2hlbiB0aGUgY29yZSBpcyBhYm91dCB0byBjaGFuZ2UgdGhlIGxpbmsgc3RhdGUuIFRoaXNcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTI0OS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEyNTA6XFx0dm9pZCAoKmxpbmtfY2hhbmdlX25vdGlmeSkoc3RydWN0IHBoeV9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9waHkuaC0xMjUxLVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjItICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo0NjM6ICAgIHVuc2FmZSBleHRlcm4gXFxcIkNcXFwiIGZuIGxpbmtfY2hhbmdlX25vdGlmeV9jYWxsYmFjayhwaHlkZXY6ICptdXQgYmluZGluZ3M6OnBoeV9kZXZpY2UpIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2NC0gICAgICAgIC8vIFNBRkVUWTogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgb25seSBpbiBjb250ZXh0c1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00NjctICAgICAgICBsZXQgZGV2ID0gdW5zYWZlIHsgRGV2aWNlOjpmcm9tX3JhdyhwaHlkZXYpIH07XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo0Njg6ICAgICAgICBUOjpsaW5rX2NoYW5nZV9ub3RpZnkoZGV2KTtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQ2OS0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz00OTQ9cHViIGNvbnN0IGZuIGNyZWF0ZV9waHlfZHJpdmVyXFx1MDAzY1Q6IERyaXZlclxcdTAwM2UoKSAtXFx1MDAzZSBEcml2ZXJWVGFibGUge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01NTAtICAgICAgICB9LFxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NTUxOiAgICAgICAgbGlua19jaGFuZ2Vfbm90aWZ5OiBpZiBUOjpIQVNfTElOS19DSEFOR0VfTk9USUZZIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjU1MjogICAgICAgICAgICBTb21lKEFkYXB0ZXI6OlxcdTAwM2NUXFx1MDAzZTo6bGlua19jaGFuZ2Vfbm90aWZ5X2NhbGxiYWNrKVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTUzLSAgICAgICAgfSBlbHNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NjI2PSAgICBmbiB3cml0ZV9tbWQoX2RldjogXFx1MDAyNm11dCBEZXZpY2UsIF9kZXZudW06IHU4LCBfcmVnbnVtOiB1MTYsIF92YWw6IHUxNikgLVxcdTAwM2UgUmVzdWx0IHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMwLSAgICAvLy8gQ2FsbGJhY2sgZm9yIG5vdGlmaWNhdGlvbiBvZiBsaW5rIGNoYW5nZS5cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjYzMTogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSB7fVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNjMyLX1cXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkvcmVnLnJzPTIwPSAgICBwdWIgdHJhaXQgU2VhbGVkIHt9XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5L3JlZy5ycy0zMC0vLy8gYGBgaWdub3JlXFxucnVzdC9rZXJuZWwvbmV0L3BoeS9yZWcucnM6MzE6Ly8vIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS9yZWcucnMtMzItLy8vICAgICAvLyByZWFkIEMyMiBCTUNSIHJlZ2lzdGVyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjExOjM2Ljc3NzA0OTQ1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTYyODI1NTM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFN0cmF0ZWd5IGZvciBSZWFjaGluZyBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byB0cmlnZ2VyIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhhdCBgcGh5X3Byb2Nlc3Nfc3RhdGVfY2hhbmdlYCBjYWxscyBgbGlua19jaGFuZ2Vfbm90aWZ5YCwgYW5kIHRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGBwaHlfc3RhdGVfbWFjaGluZWAuIFRoaXMgc3RhdGUgbWFjaGluZSBpcyBhIGRlbGF5ZWQgd29yayBmdW5jdGlvbiwgcnVubmluZyBwZXJpb2RpY2FsbHkgb3Igd2hlbiBhbiBldmVudCB0cmlnZ2VycyBpdC4gVGh1cywgaWYgSSBjYW4gZ2V0IHRoZSBQSFkgcmVnaXN0ZXJlZCBhbmQgYXR0YWNoZWQgdG8gYSBuZXR3b3JrIGRldmljZSwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgd2lsbCBydW4gYW5kIHRoYXQncyBob3cgdG8gdHJpZ2dlciB0aGUgbm90aWZ5IGZ1bmN0aW9uLlxuXG5UbyBhdHRhY2ggYSBQSFksIGBwaHlfY29ubmVjdGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgdXNlZCwgYW5kIG5ldCBkcml2ZXJzIGhhbmRsZSB0aGlzLiBTeXprYWxsZXIgdXNlcyB2aXJ0dWFsIGRldmljZXMgbGlrZSBgdHVuYC9gdGFwYCBvciBgdmV0aGAuIEhtbSwgZG8gdmlydHVhbCBkZXZpY2VzIGV2ZW4gKnVzZSogUEhZcz8gVXN1YWxseSBub3QuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHNvbWUgbWlnaHQsIG9yIEkgY291bGQganVzdCBnbyBmb3IgYSAqcmVhbCogbmV0IGRldmljZSBkcml2ZXIsIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCISBUaGluZ3MgbGlrZSBgc21zYzk1eHhgLCBgYXNpeGAsIG9yIGBjZGNfZXRoZXJgIFVTQiBldGhlcm5ldCBhZGFwdGVycy5cblxuQWhhISBJZiBTeXprYWxsZXIgZW11bGF0ZXMgYSBVU0IgZXRoZXJuZXQgYWRhcHRlciwgaXQgd2lsbCByZWdpc3RlciBhIG5ldCBkZXZpY2UgKmFuZCogYSBQSFkhIFRoYXQncyBhIGdvb2QgYXBwcm9hY2guIEJ1dCwgSSB3YW50IHRvIHRhcmdldCBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAuXG5cbklmIEkgZW11bGF0ZSBgbWRpby1tdnVzYmAsIGl0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cy4gQ2FuIEkgYXR0YWNoIGEgUEhZIG9uIHRoaXMgYnVzIHRvIGEgbmV0IGRldmljZT8gTm90IGF1dG9tYXRpY2FsbHkuIE5vLCBJIG5lZWQgYSBuZXQgZGV2aWNlIGRyaXZlciB0aGF0IGxvb2tzIGZvciBpdCwgb3IgSSB1c2UgZGV2aWNlIHRyZWUuIFdhaXQsIGlmIHRoZSBQSFkgaXMgcmVnaXN0ZXJlZCwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgb25seSBydW5zIGlmIHRoZSBQSFkgaXMgYWN0dWFsbHkgYXR0YWNoZWQgdG8gYSBuZXQgZGV2aWNlLCBtZWFuaW5nIGBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ICE9IE5VTExgLlxuXG5TbyBob3cgZG9lcyBhIFBIWSBvbiBgbWRpby1tdnVzYmAgZ2V0IGF0dGFjaGVkIHRvIGEgbmV0IGRldmljZT8gSW4gc3l6a2FsbGVyLCB0aGVyZSdzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIG9yIHNpbWlsYXIsIGJ1dCB3aGF0IGFib3V0IGBpb2N0bChTSU9DU01JSVJFRylgPyBObywgdGhlIGtleSBpcyBzdGlsbCB0aGF0IGBsaW5rX2NoYW5nZV9ub3RpZnlgIGNvbWVzIGZyb20gYHBoeV9zdGF0ZV9tYWNoaW5lYC4gVGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gYXR0YWNoIHRoZSBQSFkgdG8gdGhlIG5ldCBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UuIGBwaHlfYXR0YWNoYCBpcyBhIGtlcm5lbCBBUEkuXG5cbkJ1dCB3YWl0LCBgbWRpby1tdnVzYmAgaXMganVzdCBhbiBNRElPIGJ1cy4gV2l0aG91dCBhIG5ldCBkZXZpY2UsIGBwaHlfc3RhdGVfbWFjaGluZWAgd29uJ3QgcnVuLiBEb2VzIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBvbmx5IHJ1biB3aGVuIGF0dGFjaGVkP1xuXG5MZXQncyBleHBsb3JlIG90aGVyIGF2ZW51ZXMuLi4gV2hhdCBhYm91dCBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpPyBEU0Egc3dpdGNoZXMgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzZXMgYW5kIGF0dGFjaCBQSFlzLiBJbnRlcmVzdGluZy5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIFVTQiBhcHByb2FjaC4gSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGRldmljZSwgaXQgY291bGQgYmUgYSBVU0IgZXRoZXJuZXQgZG9uZ2xlIHVzaW5nIHRoZSBgYXQ4MDN4YCBQSFkuIFBlcmZlY3QhIFVTQiBldGhlcm5ldCBkb25nbGVzIHVzdWFsbHkgaGF2ZSB0aGVpciBvd24gTURJTyBidXMgYW5kIHByb2JlIGZvciBQSFlzIG9uICppdCouXG5cblllcyEgSWYgU3l6a2FsbGVyIGVtdWxhdGVzIGEgVVNCIGV0aGVybmV0IGRvbmdsZSAobGlrZSBgc21zYzk1eHhgIG9yIGBsYW43OHh4YCksIHRoZSBkcml2ZXIgd2lsbCByZWdpc3RlciBpdHMgb3duIE1ESU8gYnVzIGFuZCBzY2FuIGZvciBQSFlzLiBUaGVuLCBpZiBTeXprYWxsZXIgcmVzcG9uZHMgdG8gdGhlIE1ESU8gcmVhZCB3aXRoIHRoZSBgYXQ4MDN4YCBQSFkgSUQsIHRoZSBgYXQ4MDN4YCBkcml2ZXIgd2lsbCBwcm9iZSBhbmQgYXR0YWNoIGl0c2VsZiB0byB0aGUgVVNCIGV0aGVybmV0IG5ldCBkZXZpY2UhIEJpbmdvIVxuXG5MZXQncyBjaGVjayBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgdG8gY29uZmlybSFcblxuXG4iLCJJbnB1dFRva2VucyI6NTE2MzcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTE6NTguNDA1MzA4ODRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjIwOTQzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDg9TURJT1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1MC0gIGRldm1fbWRpb2J1c19hbGxvY19zaXplKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUxOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKClcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q9MTI9ZGV2aWNlICh0aGUgc2FtZSBvYmplY3RzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgdmlhXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9tb3RvcmNvbW0teXQ4eHh4LXBoeS5yc3Q6MTM6YGBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKWBgKS4gTUFDLXNpZGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIHN1Y2ggYXNcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q9Nz1UaGUgUEhZcyBvbiBhbiBNRElPIGJ1cyBbcGh5XSBhcmUgcHJvYmVkIGFuZCByZWdpc3RlcmVkIHVzaW5nXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXFxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0LTktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTYtICAgZHJpdmVyIG5lZWRzLCBzZXR1cCB0aGUgbWlpX2J1cyBzdHJ1Y3R1cmUsIGFuZCByZWdpc3RlciB3aXRoIHRoZSBQQUwgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSdzIGEgcmVtb3ZlIGZ1bmN0aW9uIHRvIHVuZG8gYWxsIG9mXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jPTEwOT1zdGF0aWMgaW50IGVwODI0OGVfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTMyLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM6MTMzOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmMtMTM0LVxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYz0yMDc9c3RhdGljIGludCBncGlvX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYy0yNDMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM6MjQ0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0zMjE9c3RhdGljIGludCBrc3o5NDc3X3Bjc19jcmVhdGUoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzozNDI6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzk0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9Njg1PXN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjc1NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzE9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MDc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MzQ9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODg6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5NC1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTE0OT1zdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE4MDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjEwMTQ6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg3OD1zdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XFx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTA1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgzLVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5ODc6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XFx0cmV0dXJuIGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD0zMDc9dm9pZCBzamExMTA1X2ZyYW1lX21lbW9yeV9wYXJ0aXRpb25pbmcoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6MzEwOmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMwMjY9c3RhdGljIGludCBzamExMTA1X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6MzA2ODpcXHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI4ODpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XFx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk3LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NDM5PXN0YXRpYyB2b2lkIHNqYTExMDVfbWRpb2J1c19wY3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjQ1OTppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTU5NT15dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjEzOlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0My1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDU5PXN0YXRpYyBpbnQgYXhfbWlpX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Nzk6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTMyMT1zdGF0aWMgaW50IG93bF9lbWFjX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjEzNDY6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cXHUwMDNlbWlpLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9NTA5PXN0YXRpYyBpbnQgYWRpbjExMTBfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3QgYWRpbjExMTBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzo1MzA6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jPTEyOTA9c3RhdGljIGludCBncmV0aF9tZGlvX2luaXQoc3RydWN0IGdyZXRoX3ByaXZhdGUgKmdyZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM6MTMwNzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjQwMjc6XFx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjgtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTU5LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz0xMDYxPXN0YXRpYyBpbnQgYXUxMDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYzoxMjIyOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTEyMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz0zNDI4PXN0YXRpYyBpbnQgeGdiZV9waHlfaW5pdChzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTctXFx0c25wcmludGYobWlpLVxcdTAwM2VpZCwgc2l6ZW9mKG1paS1cXHUwMDNlaWQpLCBcXFwiJXNcXFwiLCBkZXZfbmFtZShwZGF0YS1cXHUwMDNlZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzozNzE4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTM3MTktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcXHRcXHRkZXZfZXJyKHBkYXRhLVxcdTAwM2VkZXYsIFxcXCJtZGlvYnVzX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzIxLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExOC1cXHRtZGlvX2J1cy1cXHUwMDNlcGh5X21hc2sgPSAweDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTk6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9ODM3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo4ODg6c3RhdGljIGludCB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTg4OS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cXHRcXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIxLVxcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4OlxcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM9MTMxPWludCBhcmNfbWRpb19wcm9iZShzdHJ1Y3QgYXJjX2VtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jOjE3MzpcXHRlcnJvciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBtZGlvX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXFx0b2Zfbm9kZV9wdXQobWRpb19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgYXhfbG9jYWwtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwMTItXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyNy1cXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNzI5LVxcdG9mX25vZGVfcHV0KG1ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNjA6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjYxLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE3MTM9c3RhdGljIGludCBiY21fZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxODMwOlxcdFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xODMxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jPTIxMT1zdHJ1Y3QgbWlpX2J1cyAqYmNtYV9tZGlvX21paV9yZWdpc3RlcihzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jOjIzNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzctXFx0b2Zfbm9kZV9wdXQobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MTkzPWludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgaW5pdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cXHRcXHRwaHlfbmFtZSA9IFxcXCJleHRlcm5hbCBSdk1JSVxcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6MjM0OlxcdFxcdC8qIG9mX21kaW9idXNfcmVnaXN0ZXIgdG9vayBjYXJlIG9mIHJlYWRpbmcgdGhlICdtYXgtc3BlZWQnXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVxcdFxcdCAqIFBIWSBwcm9wZXJ0eSBmb3IgdXMsIGVmZmVjdGl2ZWx5IGxpbWl0aW5nIHRoZSBQSFkgc3VwcG9ydGVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmM9MjE1Nz1zdGF0aWMgaW50IHNibWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxkZXYsIGxvbmcgbG9uZyBiYXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jOjIyMjg6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XFx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXFx1MDAzZW1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVxcdGlmIChpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA5NzpzdGF0aWMgaW50IG1hY2JfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWFjYiAqYnAsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA0LVxcdGlmIChtZGlvX25wKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEwNTpcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTExOTpcXHRcXHRcXHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTEyMjpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTEyNT1zdGF0aWMgaW50IG1hY2JfbWlpX2luaXQoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE1OTpcXHRlcnIgPSBtYWNiX21kaW9idXNfcmVnaXN0ZXIoYnAsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBkYi1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMTI2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjQyMz1zdGF0aWMgaW50IHRzbmVwX21kaW9faW5pdChzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNDU1OlxcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cXHUwMDNlbWRpb2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMDI0PXN0YXRpYyBpbnQgZXRob2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyMDg6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xNzM0PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3NldHVwX21kaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE3NzA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgcHJpdi1cXHUwMDNlbWlpX2J1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzcxLVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmM9MzY9c3RhdGljIGludCBlbmV0Y19wY2lfbWRpb19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jOjkxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jLTkyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MTYwPXN0YXRpYyBpbnQgZW5ldGNfbWRpb19wcm9iZShzdHJ1Y3QgZW5ldGNfcGYgKnBmLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MTg3OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTE4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTIwMj1zdGF0aWMgaW50IGVuZXRjX2ltZGlvX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfcGYgKnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MjM3OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZmVwLVxcdTAwM2VtaWlfYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYz0xNDk9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktYml0YmFuZy5jOjE3NjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYz05Nz1zdGF0aWMgaW50IGZzX2VuZXRfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jOjE2NzpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM9NDA5PXN0YXRpYyBpbnQgZnNsX3BxX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYzo0OTQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDk1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM9MzcxPXN0YXRpYyBpbnQgeGdtYWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXFx0aWYgKGlzX29mX25vZGUoZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyNzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgdG9fb2Zfbm9kZShmd25vZGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQyOC1cXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jOjQyOTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDMwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjY2PWludCBoYmdfbWRpb19pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjkyOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTExODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTEyMz1pbnQgaGNsZ2VfbWFjX21kaW9fY29uZmlnKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1NC1cXHRtZGlvX2J1cy1cXHUwMDNlcGh5X21hc2sgPSB+KDFVIFxcdTAwM2NcXHUwMDNjIG1hYy1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmM6MTU1OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0OlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU4NS1cXHR9IGVsc2UgaWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTkyLVxcdFxcdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU5MzpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5NC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI1NjA9c3RhdGljIGludCBlbWFjX2R0X21kaW9fcHJvYmUoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg0LVxcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzXFxcIiwgZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1ODU6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZkZXYtXFx1MDAzZW9mZGV2LVxcdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4Ni1cXHRpZiAocmVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYz0xMDI2PWludCBpeGdiZV9taWlfYnVzX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXFx0YWRhcHRlci1cXHUwMDNlbWlpX2J1cyA9IGJ1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5OlxcdHJldHVybiBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmMtMTA5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jPTM4NT1sdHFfZXRvcF9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVxcdFxcdCBwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VuYW1lLCBwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0MDM6XFx0aWYgKG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWlpX2J1cykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwNC1cXHRcXHRlcnIgPSAtRU5YSU87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jPTI4Mz1zdGF0aWMgaW50IG9yaW9uX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzgxLVxcdC8qIEZvciB0aGUgcGxhdGZvcm1zIG5vdCBzdXBwb3J0aW5nIERUL0FDUEkgZmFsbC1iYWNrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XFx0ICogdG8gbWRpb2J1c19yZWdpc3RlciB2aWEgb2ZfbWRpb2J1c19yZWdpc3Rlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4My1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4NC1cXHRpZiAoaXNfYWNwaV9ub2RlKHBkZXYtXFx1MDAzZWRldi5md25vZGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg1OlxcdFxcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5md25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NzpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg4LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNC1cXHRwZXAtXFx1MDAzZXNtaV9idXMtXFx1MDAzZXBoeV9tYXNrID0gMHhmZmZmZmZmZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIocGVwLVxcdTAwM2VzbWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzNy1cXHRkZXZfZGJnKGV0aC1cXHUwMDNlZGV2LCBcXFwiTURDIGlzIHJ1bm5pbmcgb24gJWQgSHpcXFxcblxcXCIsIE1EQ19NQVhfRlJFUSAvIGV0aC1cXHUwMDNlbWRjX2RpdmlkZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6MTAzODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGV0aC1cXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIHByaXYtXFx1MDAzZW1paSwgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmM9Mjg3PWludCBtbHhiZl9naWdlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG1seGJmX2dpZ2UgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jOjMzMzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzM0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYz0yNTM9aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYzoyNzM6XFx0ZXJyID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGZiZC1cXHUwMDNlZGV2LCBidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbWRpby5jLTI3NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jPTEwMzY9c3RhdGljIGludCBrczg4NTFfcmVnaXN0ZXJfbWRpb2J1cyhzdHJ1Y3Qga3M4ODUxX25ldCAqa3MsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTQtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTU6XFx0XFx0Z290byBlcnJfbWRpb2J1c19yZWdpc3RlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjAtXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEyOjAyLjcyNzQxMzU3OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE4ODUxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIExBTjc4eHggRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBsYW43OHh4YCBkcml2ZXIuLi4gcmlnaHQsIGl0IHVzZXMgYG1kaW9idXNfcmVnaXN0ZXJgLiBNeSBpbnN0aW5jdHMgaW1tZWRpYXRlbHkgbGVkIG1lIHRvIHRoaW5rIGl0IHNob3VsZCBiZSB1c2luZyB0aGUgTURJTyBidXMgZm9yIFBIWSBpbnRlcmFjdGlvbi4gTGV0J3MgZGlnIGluIGFuZCB2ZXJpZnkgdGhhdC4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgY29kZTsgc3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXkncmUgaGFuZGxpbmcgUEhZIGNvbW11bmljYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcsIHNvIGBtZGlvYnVzX3JlZ2lzdGVyYCBzaG91bGQgYmUgdGhlIGtleSBmdW5jdGlvbiB0byBzZWFyY2ggZm9yIGluIHRoYXQgZmlsZS4gVGhhdCBzaG91bGQgZ2V0IG1lIHRvIHRoZSByaWdodCBzZWN0aW9uIG9mIGNvZGUgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjowNi4wNDYyNzAzMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3ODMwMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXFx1MDAzZW1kaW9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTI6MDYuNTA0MTA3OThaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1NjI0NTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBuZXR3b3JrIGRyaXZlcnMgYXJlIHNldHRpbmcgdGhlbXNlbHZlcyB1cC4gSSBzZWUgdGhhdCB0aGUgYGxhbjc4eHhgIGRyaXZlciBpcyB1c2luZyBgb2ZfbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQncyBhIHNvbGlkLCBzdGFuZGFyZCBhcHByb2FjaCwgbGV2ZXJhZ2luZyB0aGUgZGV2aWNlIHRyZWUgZm9yIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZy4uLiB3aGF0IGFib3V0IHRoZSBgc21zYzk1eHhgIGRyaXZlcj8gQXJlIHRoZXkgaGFuZGxpbmcgaXQgdGhlIHNhbWUgd2F5PyBBcmUgdGhleSBmb2xsb3dpbmcgdGhlIHNhbWUgYmVzdCBwcmFjdGljZXMsIG9yIGFyZSB0aGV5IGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQ/IEkgbmVlZCB0byBzZWUgaWYgdGhleSdyZSBhbHNvIHVzaW5nIHRoZSBkZXZpY2UgdHJlZSBhbmQgYG9mX21kaW9idXNfcmVnaXN0ZXJgLCBvciBpZiB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZWlyIG93biBjdXN0b20gTURJTyBidXMgcmVnaXN0cmF0aW9uIGxvZ2ljLiBUaGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHBvdGVudGlhbCBpc3N1ZXMgb3IgZGlmZmVyZW5jZXMgaW4gYmVoYXZpb3IgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBlc3BlY2lhbGx5IGlmIEknbSBsb29raW5nIGF0IGNvbnNvbGlkYXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgZm9yIGVuc3VyaW5nIGNvbnNpc3RlbnQgYW5kIHJlbGlhYmxlIG5ldHdvcmsgaW50ZXJmYWNlIGJlaGF2aW9yLiBMZXQncyBzZWUuLi4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gY2hlY2sgdGhhdCBvdGhlciBkcml2ZXIncyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY0NTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoxMS4xNjAzNTc0NDNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjQ2NzU0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoxMy43MjUwNDM5NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNjUxNDA3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXVyZWthISBGdXp6aW5nIHRoZSBgYXQ4MDN4YCBQSFkgdmlhIGBzbXNjOTV4eGAhKipcblxuT2theSwgdGhpcyBpcyBicmlsbGlhbnQhIEl0IGp1c3QgaGl0IG1lLiBUaGUgYHNtc2M5NXh4YCBkcml2ZXIgdXNlcyBgbWRpb2J1c19yZWdpc3RlcmAgd2l0aCBgcGRhdGEtXHUwMDNlbWRpb2J1c2AuIFRoYXQncyB0aGUga2V5ISBJZiBzeXprYWxsZXIgaXMgZW11bGF0aW5nIGFuIGBzbXNjOTV4eGAgVVNCIGRldmljZSwgYW5kIGl0J3MgcmVnaXN0ZXJpbmcgYW4gTURJTyBidXMgYW5kIHNjYW5uaW5nIGZvciBQSFlzLCB3ZSdyZSBpbiBidXNpbmVzcy4gQW5kIGhlcmUncyB0aGUga2lja2VyOiBpZiB3ZSByZXNwb25kIHRvIHRoZSBNRElPIHJlYWQgd2l0aCB0aGUgYGF0ODAzeGAgUEhZIElELCBsZXQncyBzYXkgYEFUSDgwMzVfUEhZX0lEYCwgdGhlIGBhdDgwM3hgIGRyaXZlciAqd2lsbCogYmUgcHJvYmVkISBJdCdzIHJpZ2h0IHRoZXJlLCBjb25uZWN0aW5nIHRvIHRoYXQgTURJTyBidXMuXG5cblRoZW4gdGhlIGBzbXNjOTV4eGAgd2lsbCBuYXR1cmFsbHkgYXR0YWNoIHRoYXQgUEhZIHRvIGl0cyBuZXQgZGV2aWNlLiBUaGVuLCB3aXRoIHRoZSBQSFkgYXR0YWNoZWQgYW5kIGFjdGl2ZSwgdGhlIGBwaHlfc3RhdGVfbWFjaGluZWAgd2lsbCBraWNrIGluLCBhbmQgYm9vbSwgd2UgZ2V0IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCEgVGhhdCdzIGV4YWN0bHkgd2hlcmUgd2Ugd2FudCB0byBiZS4gVGhpcyBpcyBhIHBlcmZlY3QsIGZ1enphYmxlIHBhdGghXG5cbkFscmlnaHQsIHRpbWUgdG8gdmVyaWZ5LiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgc21zYzk1eHguY2AgdG8gY29uZmlybSBpdCBhY3R1YWxseSBkb2VzIHNjYW4gZm9yIFBIWXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QsIGJ1dCB0aGlzIGZlZWxzIGluY3JlZGlibHkgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjkwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNjoxMjoyNi4wOTAxODkyMDlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzA6XFx0XFx0XFx0cGRhdGEtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxdSBcXHUwMDNjXFx1MDAzYyBTTVNDOTVYWF9JTlRFUk5BTF9QSFlfSUQpO1xcbjEyMzE6XFx0XFxuMTIzMjpcXHRcXHRwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlcHJpdiA9IGRldjtcXG4xMjMzOlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZWFkID0gc21zYzk1eHhfbWRpb2J1c19yZWFkO1xcbjEyMzQ6XFx0XFx0cGRhdGEtXFx1MDAzZW1kaW9idXMtXFx1MDAzZXdyaXRlID0gc21zYzk1eHhfbWRpb2J1c193cml0ZTtcXG4xMjM1OlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VyZXNldCA9IHNtc2M5NXh4X21kaW9idXNfcmVzZXQ7XFxuMTIzNjpcXHRcXHRwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlbmFtZSA9IFxcXCJzbXNjOTV4eC1tZGlvYnVzXFxcIjtcXG4xMjM3OlxcdFxcdHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VwYXJlbnQgPSBcXHUwMDI2ZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXY7XFxuMTIzODpcXHRcXG4xMjM5OlxcdFxcdHNucHJpbnRmKHBkYXRhLVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVJSQVlfU0laRShwZGF0YS1cXHUwMDNlbWRpb2J1cy1cXHUwMDNlaWQpLFxcbjEyNDA6XFx0XFx0XFx0IFxcXCJ1c2ItJTAzZDolMDNkXFxcIiwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c251bSwgZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXZudW0pO1xcbjEyNDE6XFx0XFxuMTI0MjpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG4xMjQzOlxcdFxcdGlmIChyZXQpIHtcXG4xMjQ0OlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgcmVnaXN0ZXIgTURJTyBidXNcXFxcblxcXCIpO1xcbjEyNDU6XFx0XFx0XFx0Z290byBmcmVlX21kaW87XFxuMTI0NjpcXHRcXHR9XFxuMTI0NzpcXHRcXG4xMjQ4OlxcdFxcdHBkYXRhLVxcdTAwM2VwaHlkZXYgPSBwaHlfZmluZF9maXJzdChwZGF0YS1cXHUwMDNlbWRpb2J1cyk7XFxuMTI0OTpcXHRcXHRpZiAoIXBkYXRhLVxcdTAwM2VwaHlkZXYpIHtcXG4xMjUwOlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJubyBQSFkgZm91bmRcXFxcblxcXCIpO1xcbjEyNTE6XFx0XFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4xMjUyOlxcdFxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9tZGlvO1xcbjEyNTM6XFx0XFx0fVxcbjEyNTQ6XFx0XFxuMTI1NTpcXHRcXHRwZGF0YS1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlfaXJxO1xcbjEyNTY6XFx0XFx0cGRhdGEtXFx1MDAzZXBoeWRldi1cXHUwMDNlaXNfaW50ZXJuYWwgPSBwZGF0YS1cXHUwMDNlaXNfaW50ZXJuYWxfcGh5O1xcbjEyNTc6XFx0XFxuMTI1ODpcXHRcXHQvKiBkZXRlY3QgZGV2aWNlIHJldmlzaW9uIGFzIGRpZmZlcmVudCBmZWF0dXJlcyBtYXkgYmUgYXZhaWxhYmxlICovXFxuMTI1OTpcXHRcXHRyZXQgPSBzbXNjOTV4eF9yZWFkX3JlZyhkZXYsIElEX1JFViwgXFx1MDAyNnZhbCk7XFxuMTI2MDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMjYxOlxcdFxcdFxcdGdvdG8gdW5yZWdpc3Rlcl9tZGlvO1xcbjEyNjI6XFx0XFxuMTI2MzpcXHRcXHR2YWwgXFx1MDAzZVxcdTAwM2U9IDE2O1xcbjEyNjQ6XFx0XFx0aWYgKCh2YWwgPT0gSURfUkVWX0NISVBfSURfOTUwMEFfKSB8fCAodmFsID09IElEX1JFVl9DSElQX0lEXzk1MzBfKSB8fFxcbjEyNjU6XFx0XFx0ICAgICh2YWwgPT0gSURfUkVWX0NISVBfSURfODk1MzBfKSB8fCAodmFsID09IElEX1JFVl9DSElQX0lEXzk3MzBfKSlcXG4xMjY2OlxcdFxcdFxcdHBkYXRhLVxcdTAwM2VmZWF0dXJlcyA9IChGRUFUVVJFXzhfV0FLRVVQX0ZJTFRFUlMgfFxcbjEyNjc6XFx0XFx0XFx0XFx0RkVBVFVSRV9QSFlfTkxQX0NST1NTT1ZFUiB8XFxuMTI2ODpcXHRcXHRcXHRcXHRGRUFUVVJFX1JFTU9URV9XQUtFVVApO1xcbjEyNjk6XFx0XFx0ZWxzZSBpZiAodmFsID09IElEX1JFVl9DSElQX0lEXzk1MTJfKVxcbjEyNzA6XFx0XFx0XFx0cGRhdGEtXFx1MDAzZWZlYXR1cmVzID0gRkVBVFVSRV84X1dBS0VVUF9GSUxURVJTO1xcbjEyNzE6XFx0XFxuMTI3MjpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZzbXNjOTV4eF9uZXRkZXZfb3BzO1xcbjEyNzM6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnNtc2M5NXh4X2V0aHRvb2xfb3BzO1xcbjEyNzQ6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWZsYWdzIHw9IElGRl9NVUxUSUNBU1Q7XFxuMTI3NTpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuICs9IFNNU0M5NVhYX1RYX09WRVJIRUFEX0NTVU07XFxuMTI3NjpcXHRcXHRkZXYtXFx1MDAzZW5ldC1cXHUwMDNlbWluX210dSA9IEVUSF9NSU5fTVRVO1xcbjEyNzc6XFx0XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW1heF9tdHUgPSBFVEhfREFUQV9MRU47XFxuMTI3ODpcXHRcXHRkZXYtXFx1MDAzZWhhcmRfbXR1ID0gZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW10dSArIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTY6MTI6MjYuMDkwNDEzNzA5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjUwNTgyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEFUODAzWCBQSFkgRHJpdmVyIHdpdGggVVNCIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgc21zYzk1eHhgIGRyaXZlciBpcyBrZXkgaGVyZTsgaXQgcmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBhbmQgdGhlbiBjYWxscyBgcGh5X2ZpbmRfZmlyc3RgLiBMYXRlciwgYHNtc2M5NXh4X3Jlc2V0YCBjYWxscyBgcGh5X2Nvbm5lY3RfZGlyZWN0YCwgYW5kIGZpbmFsbHkgYHBoeV9zdGFydGAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIG5ldCBkZXZpY2UgY29tZXMgdXAuIFRoaXMga2lja3Mgb2ZmIHRoZSBgcGh5X3N0YXRlX21hY2hpbmVgLCB3aGljaCwgY3J1Y2lhbGx5LCAqZG9lcyogZXZlbnR1YWxseSBjYWxsIGBsaW5rX2NoYW5nZV9ub3RpZnlgISBTcGVjaWZpY2FsbHksIGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpcyByZWFjaGFibGUgYW5kIHRodXMgZnV6emFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBJJ20gYWZ0ZXIuXG5cbk5vdyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uIFdlIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX0FUODAzWF9QSFlgLiBXaGlsZSBzeXprYWxsZXIgcHJvYmFibHkgYWxyZWFkeSBoYW5kbGVzIGBDT05GSUdfVVNCX05FVF9TTVNDOTVYWGAgKG9yIGFsdGVybmF0aXZlcyB0aGF0IHJlZ2lzdGVyIGFuIE1ESU8gYnVzKSwgaXQncyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgc3RhdGUgYENPTkZJR19BVDgwM1hfUEhZYC4gSSdsbCBkb3VibGUgY2hlY2sgdGhlIHBhdGNoOlxuXG5gYGBjXG4tXHRpZiAocGh5ZGV2LVx1MDAzZXN0YXRlID09IFBIWV9OT0xJTksgXHUwMDI2XHUwMDI2IHBoeWRldi1cdTAwM2VtZGlvLnJlc2V0X2dwaW8pIHtcbitcdGlmIChwaHlkZXYtXHUwMDNlc3RhdGUgPT0gUEhZX05PTElOSyBcdTAwMjZcdTAwMjYgcGh5X2RldmljZV9oYXNfcmVzZXQocGh5ZGV2KSkge1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyB1c2luZyBgcGh5X2RldmljZV9oYXNfcmVzZXRgIHdoaWNoIG1lYW5zIHdlIGFyZSBhbHNvIGNoZWNraW5nIGByZXNldF9jdHJsYCwgaW4gYWRkaXRpb24gdG8gYHJlc2V0X2dwaW9gLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYmVjYXVzZSBpdCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYSByZWFjaGFibGUgUEhZIGRyaXZlci5cblxuVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBjbGVhcjogYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgLiBgcGh5X2RldmljZV9oYXNfcmVzZXRgIGFuZCBgbWRpb2Rldl9oYXNfcmVzZXRgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyBub3QgcmVhbGx5IHRhcmdldHMuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgdGhlICpvbmx5KiBmdW5jdGlvbiBtb2RpZmllZC4gWWVwLCBqdXN0IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBpbiBgZHJpdmVycy9uZXQvcGh5L3Fjb20vYXQ4MDN4LmNgLCBwbHVzIHRoZSBpbmxpbmVzLlxuXG5TbywgYEZvY3VzU3ltYm9sc2A6IGBhdDgwM3hfbGlua19jaGFuZ2Vfbm90aWZ5YCBhbmQgYEVuYWJsZUNvbmZpZ3NgOiBgQVQ4MDNYX1BIWWAuXG5cbmBBVDgwM1hfUEhZYCBhbHNvIGRlcGVuZHMgb24gYFJFR1VMQVRPUmAsIHdoaWNoIHN5emthbGxlciB1c3VhbGx5IGhhcyBlbmFibGVkIGFueXdheSwgYW5kIGluY2x1ZGVzIGBRQ09NX05FVF9QSFlMSUJgLiBJJ3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGlzIHJlYWNoYWJsZSB2aWEgVVNCIE1ESU8gZW11bGF0aW9uLlxuXG5UbyByZWNhcDogdGhlIHBhdGNoIGFsdGVycyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGJ5IHVzaW5nIGBwaHlfZGV2aWNlX2hhc19yZXNldGAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaGFuZGxlIGByZXNldF9jdHJsYCBhcyB3ZWxsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBQSFkgZHJpdmVyLCBhbmQgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSBzZXQgdXAgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAobGlrZSBzbXNjOTV4eCkgb3IgYSBVU0IgTURJTyBidXMgKGxpa2UgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDU1LCJPdXRwdXRUb2tlbnMiOjE5MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE2OjEyOjM4Ljc0MDk5OTEzNFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg5ODA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVQ4MDNYX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0ODAzeF9saW5rX2NoYW5nZV9ub3RpZnlgIGZ1bmN0aW9uIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFkgZHJpdmVyIHRvIHVzZSBgcGh5X2RldmljZV9oYXNfcmVzZXQoKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyBgcmVzZXRfZ3Bpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsbG93cyB0aGUgZHJpdmVyIHRvIGFsc28gaGFuZGxlIGByZXNldF9jdHJsYC4gVGhlIFBIWSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgKGUuZy4sIHNtc2M5NXh4KSBvciBhIFVTQiBNRElPIGJ1cyAoZS5nLiwgbWRpby1tdnVzYikgdGhhdCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIHJlc3BvbmRzIHRvIE1ESU8gcmVhZHMgd2l0aCB0aGUgQVQ4MDNYIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVDgwM1hfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXQ4MDN4X2xpbmtfY2hhbmdlX25vdGlmeWAgZnVuY3Rpb24gaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWSBkcml2ZXIgdG8gdXNlIGBwaHlfZGV2aWNlX2hhc19yZXNldCgpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIGByZXNldF9ncGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYWxzbyBoYW5kbGUgYHJlc2V0X2N0cmxgLiBUaGUgUEhZIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciAoZS5nLiwgc21zYzk1eHgpIG9yIGEgVVNCIE1ESU8gYnVzIChlLmcuLCBtZGlvLW12dXNiKSB0aGF0IHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgcmVzcG9uZHMgdG8gTURJTyByZWFkcyB3aXRoIHRoZSBBVDgwM1ggUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[1] Phase: Succeeded StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 2026-07-15 16:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 2026-07-15 16:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2] Phase: Running StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 2026-07-15 16:13:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 16:12:51 +0000 UTC FinishedAt: 2026-07-15 16:13:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2258757528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 16:13:30 +0000 UTC FinishedAt: 2026-07-15 17:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 16:13:30 +0000 UTC FinishedAt: 2026-07-15 17:08:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0ab2ecaa-9297-43fa-be6f-415a5a21a439,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2258757528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fa23b752-3755-409f-a53f-6a0da3d6b802", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3838911694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 16:13:30 +0000 UTC FinishedAt: 2026-07-15 17:08:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0ab2ecaa-9297-43fa-be6f-415a5a21a439,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2258757528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fa23b752-3755-409f-a53f-6a0da3d6b802", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3838911694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 17:08:53 +0000 UTC FinishedAt: 2026-07-15 17:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 17:08:53 +0000 UTC FinishedAt: 2026-07-15 17:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 17:08:53 +0000 UTC FinishedAt: 2026-07-15 17:09:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 17:08:53 +0000 UTC FinishedAt: 2026-07-15 17:09:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2356595199/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 17:09:15 +0000 UTC FinishedAt: 2026-07-15 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 17:09:15 +0000 UTC FinishedAt: 2026-07-15 17:11:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fa23b752-3755-409f-a53f-6a0da3d6b802,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3838911694/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 17:11:12 +0000 UTC FinishedAt: 2026-07-15 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 17:11:12 +0000 UTC FinishedAt: 2026-07-15 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 17:11:12 +0000 UTC FinishedAt: 2026-07-15 17:42:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 17:11:12 +0000 UTC FinishedAt: 2026-07-15 17:42:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0ab2ecaa-9297-43fa-be6f-415a5a21a439,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2356595199/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d1239b80-32d0-400b-a240-42fbc874e36f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3901329427/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 17:11:12 +0000 UTC FinishedAt: 2026-07-15 17:42:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0ab2ecaa-9297-43fa-be6f-415a5a21a439,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-convert-artifact-2356595199/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d1239b80-32d0-400b-a240-42fbc874e36f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3901329427/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 17:42:25 +0000 UTC FinishedAt: 2026-07-15 17:42:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 17:42:25 +0000 UTC FinishedAt: 2026-07-15 17:42:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Running StartedAt: 2026-07-15 17:42:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9pq7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["at803x_link_change_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AT803X_PHY"],"series_id":"6bdc508e-755f-48aa-a204-4896376d7afc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Running StartedAt: 2026-07-15 17:42:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1239b80-32d0-400b-a240-42fbc874e36f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq9pq7/series-workflowq9pq7-build-action-3901329427/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil