Name: series-workflow6fgd8 Phase: Succeeded StartedAt: 2026-08-06 02:37:00 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[0] Phase: Succeeded StartedAt: 2026-08-06 02:37:00 +0000 UTC FinishedAt: 2026-08-06 02:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 02:37:00 +0000 UTC FinishedAt: 2026-08-06 02:57:54 +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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "series_id": "72c63ef9-2b1f-4c84-8806-dc8f2c79a802" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unregister_netdevice_many_notify", "netdev_work_sched", "__netdev_work_core_sched", "netdev_work_cancel_all" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfc2NoZWQmIzM0OywKICAgICYjMzQ7X19uZXRkZXZfd29ya19jb3JlX3NjaGVkJiMzNDssCiAgICAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMzI4NTIyNDhhODE4NjdjNDFmNWMyMzI2N2YxMzEyNWE4MzkyMGQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAwMjo1Njo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NzgsNiAmIzQzOzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdGN4X3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfeGRwX3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xuJiM0MztcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xuIFx0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0XHRicGZfZGV2X2JvdW5kX25ldGRldl91bnJlZ2lzdGVyKGRldik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxuaW5kZXggNWQwYjAzMDVkM2JhYS4uYjc1N2ZhZWFkNGQxYSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuaFxuQEAgLTE3OSw2ICYjNDM7MTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHtcbiB2b2lkIF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbiB1bnNpZ25lZCBsb25nXG4gX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xuJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtMzEsNiAmIzQzOzMxLDEwIEBAIHN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXG4gXHRcdHJldHVybjtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbiYjNDM7XHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUpKSB7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSwgXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCk7XG4gXHRcdG5ldGRldl9ob2xkKGRldiwgXHUwMDI2ZGV2LVx1MDAzZXdvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG5AQCAtNjEsNiAmIzQzOzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbiBcdHJldHVybiBldmVudHM7XG4gfVxuIFxuJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbiYjNDM7XHRkZXYtXHUwMDNld29ya19wZW5kaW5nID0gMDtcbiYjNDM7XHRkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcgPSAwO1xuJiM0MztcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuJiM0MztcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKTtcbiYjNDM7XHRcdG5ldGRldl9wdXQoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya190cmFja2VyKTtcbiYjNDM7XHR9XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbiB7XG4gXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMzMjg1MjI0OGE4MTg2N2M0MWY1YzIzMjY3ZjEzMTI1YTgzOTIwZDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtMTI0NzgsNiAmIzQzOzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAogCQlkZXZfdGN4X3VuaW5zdGFsbChkZXYpOwogCQlkZXZfeGRwX3VuaW5zdGFsbChkZXYpOwogCQlkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpOwomIzQzOwkJbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpOwogCQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCQlicGZfZGV2X2JvdW5kX25ldGRldl91bnJlZ2lzdGVyKGRldik7CiAKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmgKaW5kZXggNWQwYjAzMDVkM2JhYS4uYjc1N2ZhZWFkNGQxYSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmgKQEAgLTE3OSw2ICYjNDM7MTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHsKIHZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpOwogdW5zaWduZWQgbG9uZwogX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spOwomIzQzO3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAogdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncywKIAkJCXVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCwKZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jCmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL25ldGRldl93b3JrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYwpAQCAtMzEsNiAmIzQzOzMxLDEwIEBAIHN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsCiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19iaCgmYW1wO25ldGRldl93b3JrX2xvY2spOwomIzQzOwlpZiAoIWRldl9pc2FsaXZlKGRldikpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7bmV0ZGV2X3dvcmtfbG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlpZiAobGlzdF9lbXB0eSgmYW1wO2Rldi0mZ3Q7d29ya19ub2RlKSkgewogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZGV2LSZndDt3b3JrX25vZGUsICZhbXA7bmV0ZGV2X3dvcmtfbGlzdCk7CiAJCW5ldGRldl9ob2xkKGRldiwgJmFtcDtkZXYtJmd0O3dvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7CkBAIC02MSw2ICYjNDM7NjUsMTggQEAgbmV0ZGV2X3dvcmtfZGVxdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nICpwZW5kaW5nLAogCXJldHVybiBldmVudHM7CiB9CiAKJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO25ldGRldl93b3JrX2xvY2spOwomIzQzOwlkZXYtJmd0O3dvcmtfcGVuZGluZyA9IDA7CiYjNDM7CWRldi0mZ3Q7d29ya19jb3JlX3BlbmRpbmcgPSAwOwomIzQzOwlpZiAoIWxpc3RfZW1wdHkoJmFtcDtkZXYtJmd0O3dvcmtfbm9kZSkpIHsKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDtkZXYtJmd0O3dvcmtfbm9kZSk7CiYjNDM7CQluZXRkZXZfcHV0KGRldiwgJmFtcDtkZXYtJmd0O3dvcmtfdHJhY2tlcik7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtuZXRkZXZfd29ya19sb2NrKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKQogewogCW5ldGRldl93b3JrX2VucXVldWUoZGV2LCBldmVudHMsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTmV0d29ya2luZyBDaGFuZ2UqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgY2FsbGluZyBpdCB3aXRoaW4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gVGhlcmUmIzM5O3MgYWxzbyBhIG5ldyBjaGVjayBmb3IgYCFkZXZfaXNhbGl2ZShkZXYpYCBpbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBoZXJlLgoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGJ1dCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgbW9yZSBpbW1lZGlhdGVseSByZWxldmFudCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIG5ldGRldmljZSB1bnJlZ2lzdHJhdGlvbjsgdGhhdCBoYXBwZW5zIGFsbCB0aGUgdGltZSwgcmlnaHQ/ICBEZXN0cm95aW5nIHZldGggcGFpcnMsIGR1bW15IGludGVyZmFjZXMsIHR1bm5lbHMsIGFuZCBzbyBvbi4uLml0JiMzOTtzIGEgZnJlcXVlbnQgb2NjdXJyZW5jZS4gIEFuZCwgdGhlbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgaXMgdXNlZCwgYXMgdGhlIG5hbWUgaW1wbGllcywgdG8gcXVldWUgdXAgd29yayBvbiBuZXRkZXZpY2VzLiBUaGUgaW5jbHVzaW9uIG9mIHRoYXQgY2hlY2ssIGAhZGV2X2lzYWxpdmUoZGV2KWAgaXMgcHJldHR5IGludGVyZXN0aW5nLiBJdCBtdXN0IG1lYW4gdGhlIHdvcmsgc2hvdWxkbiYjMzk7dCBiZSBleGVjdXRlZCBpZiB0aGUgZGV2aWNlIGhhcyBiZWVuIG1hcmtlZCBhcyBkZWFkLgoKSeKAmWxsIG5lZWQgdG8gdHJhY2sgZG93biBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGluIGBuZXQvY29yZS9kZXYuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTEyNDA3PWJvb2wgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MTItXG5uZXQvY29yZS9kZXYuYzoxMjQxMzp2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG5uZXQvY29yZS9kZXYuYy0xMjQxNC1cdFx0XHRcdCAgICAgIHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTU5PXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxubmV0L2NvcmUvZGV2LmMtMTI1NjAte1xubmV0L2NvcmUvZGV2LmM6MTI1NjE6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShoZWFkLCAwLCBOVUxMKTtcbm5ldC9jb3JlL2Rldi5jLTEyNTYyLX1cbi0tXG5uZXQvY29yZS9kZXYuaD0xODQ9dm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbi0tXG5uZXQvY29yZS9kZXYuaC0xODctXG5uZXQvY29yZS9kZXYuaDoxODg6dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxubmV0L2NvcmUvZGV2LmgtMTg5LVx0XHRcdFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xuLS1cbm5ldC9jb3JlL3J0bmV0bGluay5jPTM2MjI9aW50IHJ0bmxfZGVsZXRlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzYzMS1cdG9wcy1cdTAwM2VkZWxsaW5rKGRldiwgXHUwMDI2bGlzdF9raWxsKTtcbm5ldC9jb3JlL3J0bmV0bGluay5jOjM2MzI6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShcdTAwMjZsaXN0X2tpbGwsIHBvcnRpZCwgbmxoKTtcbm5ldC9jb3JlL3J0bmV0bGluay5jLTM2MzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgd2hpY2ggaXMgYSB0ZWFyZG93biBmdW5jdGlvbi4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCAqb25seSogY29udGFpbnMgc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEhvd2V2ZXIsIHRoaXMgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpc24mIzM5O3QgZHJpdmVyLXNwZWNpZmljOyBpdCYjMzk7cyBhIGNvcmUgbmV0d29yayBkZXZpY2UgdW5yZWdpc3RyYXRpb24gZnVuY3Rpb24uIEl0IGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgbmV0ZGV2aWNlIGlzIGRlc3Ryb3llZCwgd2hpY2ggY2FuIGhhcHBlbiB0aHJvdWdoIHZhcmlvdXMgbWVhbnMsIGxpa2UgdXNpbmcgcnRuZXRsaW5rLCBtZWFuaW5nIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcyEgSXQgbG9va3MgbGlrZSB0aGlzIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gY2FuY2VsaW5nIG9yIHByZXZlbnRpbmcgdGhlIGVucXVldWluZyBvZiB3b3JrIG9uIGEgbmV0ZGV2IHRoYXQgaXMgYmVpbmcgdW5yZWdpc3RlcmVkIGFuZCBpcyBhbHJlYWR5IGRlYWQuIFRoZSBjaGFuZ2VkIGZ1bmN0aW9ucyBhcmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX2VucXVldWVgLCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLgoKTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9ucyBtZW50aW9uZWQgYXJlIGFjdHVhbGx5IHJlbGF0ZWQgdG8gdGhpcyBmaXggYW5kIG5vdCBhIHJlZCBoZXJyaW5nLiBUaW1lIHRvIGNoZWNrIGBuZXRkZXZfd29ya19lbnF1ZXVlYCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfd29ya19lbnF1ZXVlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl93b3JrLmM9MjU9c3RhdGljIERFQ0xBUkVfV09SSyhuZXRkZXZfd29yaywgbmV0ZGV2X3dvcmtfcHJvYyk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTI2LVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yOC1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgY29yZSlcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTgwPXZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODI6XHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODMtfVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTA3PXZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDgte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDk6XHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgMCwgZXZlbnRzKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTEwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZGlzc2VjdGluZyBgbmV0ZGV2X3dvcmtfc2NoZWRgIGFuZCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYDoKCioqRGVsdmluZyBpbnRvIE5ldHdvcmsgRGV2aWNlIFdvcmsgU2NoZWR1bGluZyoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGludG8gZ2Vhci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLCBhcmUgYWN0dWFsbHkgKmRvaW5nKi4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBkZWVwbHkgaW52b2x2ZWQgd2l0aCBzY2hlZHVsaW5nIHdvcmsgcmVsYXRlZCB0byBuZXR3b3JrIGRldmljZXMsIHdoaWNoIGlzLCBvYnZpb3VzbHksIGEgY29yZSBhcmVhLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGRpZmZlcmVudCBraW5kcyBvZiBuZXR3b3JrIGRldmljZSBhY3Rpdml0eSBhbmQgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgbWlnaHQgcGxheSBpbnRvIHRoYXQ6IGludGVycnVwdCBoYW5kbGluZywgcGFja2V0IHByb2Nlc3NpbmcsIERNQSBjb21wbGV0aW9uLCBldCBjZXRlcmEuIElzIG9uZSBtb3JlIGdlbmVyaWMsIG9yIGxvd2VyIGxldmVsIHRoYW4gdGhlIG90aGVyPyBEb2VzIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIHJlcHJlc2VudCB0aGUgY29yZSBzY2hlZHVsaW5nIG1lY2hhbmlzbSB0aGF0IHRoZSBoaWdoZXIgbGV2ZWwgYG5ldGRldl93b3JrX3NjaGVkYCB1dGlsaXplcz8gSSBuZWVkIHRvIGxvb2sgaW50byBob3cgdGhlIG5ldHdvcmtpbmcgc3RhY2sgaXMgY29uc3RydWN0ZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGhvb2tzIGFyZSBwbGFjZWQsIGhvdyB0aGV5JiMzOTtyZSBjYWxsZWQsIGFuZCB3aGF0IGNvbnRleHQgdGhleSYjMzk7cmUgY2FsbGVkIGZyb20uIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCB3aGVyZSB0aGV5JiMzOTtyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhleSYjMzk7cmUgdXNlZC4gSSBzaG91bGQgYmUgYWJsZSB0byBzdGFydCBieSBpZGVudGlmeWluZyBhbGwgY2FsbGVycyBhbmQgdGhlbiBhbmFseXplIHRoZSBjYWxsaW5nIGNvbnRleHQsIHRoYXQgd2F5IHRoZSB1c2UgY2FzZXMgYmVjb21lIHZlcnkgYXBwYXJlbnQsIHZlcnkgcXVpY2tseS4gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IHRoZSB3b3JrIHF1ZXVlL3NjaGVkdWxpbmcgaXMgbmV0d29yayBkZXZpY2UgcmVsYXRlZCBhbmQgaXMgbGlrZWx5IGRyaXZlbiBieSBhc3luY2hyb25vdXMgYWN0aXZpdHkgZnJvbSBoYXJkd2FyZS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgbWVjaGFuaXNtIGZvciBkZWZlcnJpbmcgd29yayBmcm9tIGludGVycnVwdCBjb250ZXh0IHRvIGEgbW9yZSBzdWl0YWJsZSB0YXNrIGNvbnRleHQsIGFuZCBJJiMzOTtkIGxpa2UgdG8gcXVpY2tseSBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgZGVlcCB3ZSBuZWVkIHRvIGdvIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X3dvcmtfc2NoZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xMDYzPXN0cnVjdCBuZXRkZXZfbmV0X25vdGlmaWVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzUtICogdm9pZCAoKm5kb193b3JrKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjExMzY6ICpcdFJ1biBkZWZlcnJlZCB3b3JrIHNjaGVkdWxlZCB3aXRoIG5ldGRldl93b3JrX3NjaGVkKEBldmVudHMpLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM3LSAqXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODEwPWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xOTQzLSAqXHRAd29ya19wZW5kaW5nOlx0XHREcml2ZXItZGVmaW5lZCBwZW5kaW5nIG5ldGRldl93b3JrLCBwYXNzZWQgdG9cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlx0XHRcdFx0bmRvX3dvcmsoKSAoc2VlIG5ldGRldl93b3JrX3NjaGVkKCkpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDUtICpcdEB3b3JrX2NvcmVfcGVuZGluZzpcdENvcmUtZGVmaW5lZCBwZW5kaW5nIG5ldGRldl93b3JrIChORVRERVZfV09SS18qKVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTIxMz12b2lkIGRldl9nZXRfdHN0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNC1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTIxNTp2b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNi11bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xuLS1cbm5ldC84MDIxcS92bGFuLmM9MzY4PXN0YXRpYyBpbnQgdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MjQtXG5uZXQvODAyMXEvdmxhbi5jOjQyNTpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfTVRVKTtcbm5ldC84MDIxcS92bGFuLmMtNDI2LVx0XHR9XG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MzAtXHRcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcbm5ldC84MDIxcS92bGFuLmM6NDMxOlx0XHRcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19GRUFUVVJFUyk7XG5uZXQvODAyMXEvdmxhbi5jLTQzMi1cdFx0YnJlYWs7XG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXHRcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcbm5ldC84MDIxcS92bGFuLmM6NDM3Olx0XHRcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcbm5ldC84MDIxcS92bGFuLmMtNDM4LVx0XHRicmVhaztcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTY4PXZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzktXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjgwOnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgzLX1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODQ6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19zY2hlZCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFdvcmsgU2NoZWR1bGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIGZ1bmN0aW9uYWxpdHkg4oCTIHNwZWNpZmljYWxseSwgaG93IGRyaXZlcnMsIGxpa2UgVkxBTiBmb3IgaW5zdGFuY2UsIHNjaGVkdWxlIHdvcmsgdXNpbmcgYG5ldGRldl93b3JrX3NjaGVkYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgbW9kaWZ5aW5nIGBuZXRkZXZfd29ya19lbnF1ZXVlYCB0byBpbmNvcnBvcmF0ZSBhIGNoZWNrIGZvciBgIWRldl9pc2FsaXZlKGRldilgIGFuZCB0aGUgaW50cm9kdWN0aW9uIG9mIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhlIGxhdHRlciBpcyBpbnZva2VkIGZyb20gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBtb2RpZmljYXRpb24sIGEgZnVuZGFtZW50YWwgY2hhbmdlLiBHaXZlbiB0aGlzLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCBgcnRubF9kZWxldGVfbGlua2AgZm9yIGZvY3VzLCBidXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyByZWFsbHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBldmVuIHRob3VnaCBpdCYjMzk7cyBhIHRlYXJkb3duIGZ1bmN0aW9uLiBUaGF0IHNhaWQsIEkgc2hvdWxkIGZvY3VzIG9uIGhvdyB0aGF0IGlzIGFsbCBsaW5rZWQgd2l0aCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgYW5kIGBuZXRkZXZfd29ya19zY2hlZGAuIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgY2FsbGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuCgpOb3csIEkgd2FudCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIFRoZSBzb3VyY2UgZmlsZXMsIGBuZXQvY29yZS9kZXYuY2AgYW5kIGBuZXQvY29yZS9uZXRkZXZfd29yay5jYCwgYXJlIGNvbXBpbGVkIGJ5IGRlZmF1bHQgZm9yIG5ldHdvcmtpbmcsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9jb3JlL01ha2VmaWxlYCBmb3IgYW55IHBvdGVudGlhbCBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzI0PXN0YXRpYyB2b2lkIHB2cmRtYV9uZXRkZXZpY2VfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTcyNS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyNjpcdHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmsgKm5ldGRldl93b3JrO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MjctXHRzdHJ1Y3QgcHZyZG1hX2RldiAqZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MjgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyOTpcdG5ldGRldl93b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmssIHdvcmspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2cHZyZG1hX2RldmljZV9saXN0LCBkZXZpY2VfbGluaykge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzM6XHRcdGlmICgobmV0ZGV2X3dvcmstXHUwMDNlZXZlbnQgPT0gTkVUREVWX1JFR0lTVEVSKSB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzQ6XHRcdCAgICAoZGV2LVx1MDAzZW5ldGRldiA9PSBuZXRkZXZfd29yay1cdTAwM2VldmVudF9uZXRkZXYpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczNS1cdFx0XHRwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X2hhbmRsZShkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNjpcdFx0XHRcdFx0XHQgICAgICBuZXRkZXZfd29yay1cdTAwM2VldmVudF9uZXRkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNzpcdFx0XHRcdFx0XHQgICAgICBuZXRkZXZfd29yay1cdTAwM2VldmVudCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczOC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTc0Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzQzOlx0a2ZyZWUobmV0ZGV2X3dvcmspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDQtfVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzQ2PXN0YXRpYyBpbnQgcHZyZG1hX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDktXHRzdHJ1Y3QgbmV0X2RldmljZSAqZXZlbnRfbmV0ZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1MDpcdHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmsgKm5ldGRldl93b3JrO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1MjpcdG5ldGRldl93b3JrID0ga21hbGxvY19vYmooKm5ldGRldl93b3JrLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzUzOlx0aWYgKCFuZXRkZXZfd29yaylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzU0LVx0XHRyZXR1cm4gTk9USUZZX0JBRDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTY6XHRJTklUX1dPUksoXHUwMDI2bmV0ZGV2X3dvcmstXHUwMDNld29yaywgcHZyZG1hX25ldGRldmljZV9ldmVudF93b3JrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU3Olx0bmV0ZGV2X3dvcmstXHUwMDNlZXZlbnRfbmV0ZGV2ID0gZXZlbnRfbmV0ZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTg6XHRuZXRkZXZfd29yay1cdTAwM2VldmVudCA9IGV2ZW50O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTk6XHRxdWV1ZV93b3JrKGV2ZW50X3dxLCBcdTAwMjZuZXRkZXZfd29yay1cdTAwM2V3b3JrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xMzI9c3RydWN0IGl3bF9tZWlfZmlsdGVycyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE2My0gKlx0YWNjZXNzZWQgd2l0aG91dCB0aGUgbXV0ZXguXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6MTY0OiAqIEBuZXRkZXZfd29yazogdXNlZCB0byBkZWZlciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyBvZiB0aGUgbmV0ZGV2IHRvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMTY1LSAqXHRhdm9pZCB0YWtpbmcgdGhlIHJ0bmwgbG9jayBpbiB0aGUgU0FQIG1lc3NhZ2VzIGhhbmRsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xNzI9c3RydWN0IGl3bF9tZWkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xODktXHRzcGlubG9ja190IGRhdGFfcV9sb2NrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjE5MDpcdHN0cnVjdCB3b3JrX3N0cnVjdCBuZXRkZXZfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTEtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIG93bmVyc2hpcF9kd29yaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9NTk3PXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGl3bF9tZWlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTYzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo2Mzc6c3RhdGljIHZvaWQgaXdsX21laV9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTYzOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjM5LVx0c3RydWN0IGl3bF9tZWkgKm1laSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6NjQwOlx0XHRjb250YWluZXJfb2Yod2ssIHN0cnVjdCBpd2xfbWVpLCBuZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjQxLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9ODE2PXN0YXRpYyB2b2lkIGl3bF9tZWlfaGFuZGxlX2FtdF9zdGF0ZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTgzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo4MzM6XHRzY2hlZHVsZV93b3JrKFx1MDAyNm1laS1cdTAwM2VuZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtODM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xOTY0PXN0YXRpYyBpbnQgaXdsX21laV9wcm9iZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODEtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZtZWktXHUwMDNlZGF0YV9xX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjE5ODI6XHRJTklUX1dPUksoXHUwMDI2bWVpLVx1MDAzZW5ldGRldl93b3JrLCBpd2xfbWVpX25ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTgzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bWVpLVx1MDAzZW93bmVyc2hpcF9kd29yaywgaXdsX21laV9vd25lcnNoaXBfZHdvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0yMDUzPXN0YXRpYyB2b2lkIGl3bF9tZWlfcmVtb3ZlKHN0cnVjdCBtZWlfY2xfZGV2aWNlICpjbGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMjE2MC1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtZWktXHUwMDNlY3NhX3Rocm90dGxlX2VuZF93ayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6MjE2MTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bWVpLVx1MDAzZW5ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0yMTYyLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1laS1cdTAwM2Vvd25lcnNoaXBfZHdvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTY3PXN0cnVjdCBiYW1fZG11eCB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODUtXHRERUNMQVJFX0JJVE1BUChyZW1vdGVfY2hhbm5lbHMsIEJBTV9ETVVYX05VTV9DSCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NjpcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdpc3Rlcl9uZXRkZXZfd29yaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg3LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldnNbQkFNX0RNVVhfTlVNX0NIXTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDI5LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDMwOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzMS17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0MzI6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGJhbV9kbXV4LCByZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MzMtXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz01Mzk9c3RhdGljIHZvaWQgYmFtX2RtdXhfY21kX29wZW4oc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTUzLVx0XHQvKiBDYW5ub3Qgc2xlZXAgaGVyZSwgc2NoZWR1bGUgd29yayB0byByZWdpc3RlciB0aGUgbmV0ZGV2ICovXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1NTQ6XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NzY1PXN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MDQtXHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODA1Olx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmssIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwNi1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz04NTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU4LVx0LyogVW5yZWdpc3RlciBuZXR3b3JrIGludGVyZmFjZXMgKi9cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg1OTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NjAtXHRydG5sX2xvY2soKTtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTEwNjM9c3RydWN0IG5ldGRldl9uZXRfbm90aWZpZXIge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTEzNS0gKiB2b2lkICgqbmRvX3dvcmspKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTEzNjogKlx0UnVuIGRlZmVycmVkIHdvcmsgc2NoZWR1bGVkIHdpdGggbmV0ZGV2X3dvcmtfc2NoZWQoQGV2ZW50cykuXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzctICpcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTA9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDAtICpcdFx0XHRcdGRvZXMgbm90IGltcGxlbWVudCBuZG9fc2V0X3J4X21vZGUoKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxOTQxOiAqXHRAd29ya19ub2RlOlx0XHRMaXN0IGVudHJ5IGZvciBhc3luYyBuZXRkZXZfd29yayBwcm9jZXNzaW5nXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDI6ICpcdEB3b3JrX3RyYWNrZXI6XHRcdFJlZmNvdW50IHRyYWNrZXIgZm9yIGFzeW5jIG5ldGRldl93b3JrXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDM6ICpcdEB3b3JrX3BlbmRpbmc6XHRcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxOTQ0OiAqXHRcdFx0XHRuZG9fd29yaygpIChzZWUgbmV0ZGV2X3dvcmtfc2NoZWQoKSlcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NTogKlx0QHdvcmtfY29yZV9wZW5kaW5nOlx0Q29yZS1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmsgKE5FVERFVl9XT1JLXyopXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDYtICpcdEByeF9tb2RlX2FkZHJfY2FjaGU6XHRSZWN5Y2xlZCBzbmFwc2hvdCBlbnRyaWVzIGZvciByeF9tb2RlIHdvcmtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTUyMTM9dm9pZCBkZXZfZ2V0X3RzdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyMTQtXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTU6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTY6dW5zaWduZWQgbG9uZyBuZXRkZXZfd29ya19jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNy1cbi0tXG5uZXQvODAyMXEvdmxhbi5jPTM2OD1zdGF0aWMgaW50IHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxuLS1cbm5ldC84MDIxcS92bGFuLmMtNDI0LVxubmV0LzgwMjFxL3ZsYW4uYzo0MjU6XHRcdFx0bmV0ZGV2X3dvcmtfc2NoZWQodmxhbmRldiwgVkxBTl9XT1JLX01UVSk7XG5uZXQvODAyMXEvdmxhbi5jLTQyNi1cdFx0fVxuLS1cbm5ldC84MDIxcS92bGFuLmMtNDMwLVx0XHR2bGFuX2dyb3VwX2Zvcl9lYWNoX2RldihncnAsIGksIHZsYW5kZXYpXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xubmV0LzgwMjFxL3ZsYW4uYy00MzItXHRcdGJyZWFrO1xuLS1cbm5ldC84MDIxcS92bGFuLmMtNDM2LVx0XHR2bGFuX2dyb3VwX2Zvcl9lYWNoX2RldihncnAsIGksIHZsYW5kZXYpXG5uZXQvODAyMXEvdmxhbi5jOjQzNzpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfTElOS19TVEFURSk7XG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cdFx0YnJlYWs7XG4tLVxubmV0LzgwMjFxL3ZsYW4uaD0xMjY9dm9pZCB2bGFuX2ZpbHRlcl9kcm9wX3ZpZHMoc3RydWN0IHZsYW5faW5mbyAqdmxhbl9pbmZvLCBfX2JlMTYgcHJvdG8pO1xubmV0LzgwMjFxL3ZsYW4uaC0xMjctXG5uZXQvODAyMXEvdmxhbi5oOjEyODovKiBuZXRkZXZfd29yayBldmVudHMgcHJvcGFnYXRlZCBmcm9tIHRoZSByZWFsIGRldmljZSwgc2VlIHZsYW5fZGV2X3dvcmsoKS4gKi9cbm5ldC84MDIxcS92bGFuLmgtMTI5LWVudW0ge1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jPTI2Mz1zdGF0aWMgaW50IHZsYW5fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0yNzMtXHQvKiBUaGUgZXhwbGljaXQgb3BlbiBzdXBlcnNlZGVzIGFueSBkZWZlcnJlZCBsaW5rLXN0YXRlIHN5bmMgKi9cbm5ldC84MDIxcS92bGFuX2Rldi5jOjI3NDpcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3NS1cbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0zMDE9c3RhdGljIGludCB2bGFuX2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMzA2LVx0LyogVGhlIGV4cGxpY2l0IGNsb3NlIHN1cGVyc2VkZXMgYW55IGRlZmVycmVkIGxpbmstc3RhdGUgc3luYyAqL1xubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MzA3Olx0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgVkxBTl9XT1JLX0xJTktfU1RBVEUpO1xubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMzA4LVxuLS1cbm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XHRcdCAgICAgJiM0Mzs9IGRldi5vIGRldl9hcGkubyBkZXZfYWRkcl9saXN0cy5vIGRzdC5vIG5ldGV2ZW50Lm8gXFxcbi0tXG5uZXQvY29yZS9NYWtlZmlsZS0xNS1cdFx0XHRmaWJfbm90aWZpZXIubyB4ZHAubyBmbG93X29mZmxvYWQubyBncm8ubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTY6XHRcdFx0bmV0ZGV2LWdlbmwubyBuZXRkZXYtZ2VubC1nZW4ubyBuZXRkZXZfd29yay5vIGdzby5vXG5uZXQvY29yZS9NYWtlZmlsZS0xNy1cbi0tXG5uZXQvY29yZS9kZXYuYz0xMjQxMz12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0ODAtXHRcdGRldl9tZW1vcnlfcHJvdmlkZXJfdW5pbnN0YWxsKGRldik7XG5uZXQvY29yZS9kZXYuYzoxMjQ4MTpcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xubmV0L2NvcmUvZGV2LmMtMTI0ODItXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L2NvcmUvZGV2Lmg9MTcyPXZvaWQgbmV0aWZfcnhfbW9kZV9jYW5jZWxfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxubmV0L2NvcmUvZGV2LmgtMTc0LS8qIEV2ZW50cyBmb3IgdGhlIGFzeW5jIG5ldGRldiB3b3JrLCB0cmFja2VkIGluIG5ldGRldi1cdTAwM2V3b3JrX2NvcmVfcGVuZGluZy4gKi9cbm5ldC9jb3JlL2Rldi5oOjE3NTplbnVtIG5ldGRldl93b3JrX2NvcmUge1xubmV0L2NvcmUvZGV2LmgtMTc2LVx0TkVUREVWX1dPUktfUlhfTU9ERVx0PSBCSVQoMCksXHQvKiBydW4gdGhlIHJ4X21vZGUgdXBkYXRlICovXG4tLVxubmV0L2NvcmUvZGV2LmgtMTc4LVxubmV0L2NvcmUvZGV2Lmg6MTc5OnZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xubmV0L2NvcmUvZGV2LmgtMTgwLXVuc2lnbmVkIGxvbmdcbm5ldC9jb3JlL2Rldi5oOjE4MTpfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7XG5uZXQvY29yZS9kZXYuaDoxODI6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTgzLVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM9MTMzNT1zdGF0aWMgdm9pZCBuZXRpZl9yeF9tb2RlX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzYte1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxMzM3Olx0X19uZXRkZXZfd29ya19jb3JlX3NjaGVkKGRldiwgTkVUREVWX1dPUktfUlhfTU9ERSk7XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzgtfVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM9MTQwOD12b2lkIG5ldGlmX3J4X21vZGVfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDA5LXtcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM6MTQxMDpcdGlmIChfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgTkVUREVWX1dPUktfUlhfTU9ERSkpXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTE0MTEtXHRcdG5ldGlmX3J4X21vZGVfcnVuKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM6c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcHJvYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTU6LyogQG5ldGRldl93b3JrX2xvY2sgcHJvdGVjdHM6XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2OiAqICAtIEBuZXRkZXZfd29ya19saXN0XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3LSAqICAtIHdpdGhpbiB0aGUgbGlzdCBlbnRyaWVzIChzdHJ1Y3QgbmV0X2RldmljZSBmaWVsZHMpOlxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjItICovXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjIzOnN0YXRpYyBMSVNUX0hFQUQobmV0ZGV2X3dvcmtfbGlzdCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI0OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI1OnN0YXRpYyBERUNMQVJFX1dPUksobmV0ZGV2X3dvcmssIG5ldGRldl93b3JrX3Byb2MpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yNi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Mjc6c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjgtXHRcdFx0XHR1bnNpZ25lZCBsb25nIGNvcmUpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zMi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzM6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM0LVx0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKSB7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjM1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMzYtXHRcdHJldHVybjtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM4LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSkpIHtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Mzk6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSwgXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQwLVx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDMtXHRkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcgfD0gY29yZTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NDQ6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDUtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjQ2Olx0c2NoZWR1bGVfd29yayhcdTAwMjZuZXRkZXZfd29yayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQ3LX1cbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTQ5PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjUwOm5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNTEtXHRcdCAgICB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy01NC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NTU6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU2LVx0ZXZlbnRzID0gKnBlbmRpbmcgXHUwMDI2IG1hc2s7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02Mi1cdH1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NjM6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjQtXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02Ny1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Njg6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTY5LXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NzA6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTcxLVx0ZGV2LVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03Ni1cdH1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Nzc6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzgtfVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODA6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODEte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo4MjpcdG5ldGRldl93b3JrX2VucXVldWUoZGV2LCBldmVudHMsIDApO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04My19XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg0OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfc2NoZWQpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04NS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODYtLyoqXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg3OiAqIG5ldGRldl93b3JrX2NhbmNlbCgpIC0gY2FuY2VsIHNlbGVjdGVkIHdvcmsgZm9yIGEgbmV0ZGV2XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTg4LSAqIEBkZXY6IG5ldF9kZXZpY2Vcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwMC0gKi9cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAxOnVuc2lnbmVkIGxvbmcgbmV0ZGV2X3dvcmtfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzaylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTAyLXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAzOlx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19wZW5kaW5nLCBtYXNrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA0LX1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTA1OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfY2FuY2VsKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA2LVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDc6dm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwOC17XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwOTpcdG5ldGRldl93b3JrX2VucXVldWUoZGV2LCAwLCBldmVudHMpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTAtfVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTEyPXVuc2lnbmVkIGxvbmdcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTEzOl9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTQte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMTU6XHRyZXR1cm4gbmV0ZGV2X3dvcmtfZGVxdWV1ZShkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX2NvcmVfcGVuZGluZywgbWFzayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNi19XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNy1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTE4OnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTE5LVx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMjktXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEzMDpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19wcm9jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTMxLXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEzOC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM5Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE0MDpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCkpIHtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTQxOlx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNDItXHRcdFx0YnJlYWs7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0My1cdFx0fVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDQ6XHRcdGRldiA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCwgc3RydWN0IG5ldF9kZXZpY2UsXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0NS1cdFx0XHRcdCAgICAgICB3b3JrX25vZGUpO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTUyLVx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNnRyYWNrZXIsIEdGUF9BVE9NSUMpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNTM6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNTQtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NS1cdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1NjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNTctXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTY4LVx0XHR9XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2OTpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3MC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTcxOlx0XHRuZXRkZXZfd29ya19ydW4oZGV2LCBldmVudHMsIGNvcmUpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNzItXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3ZsYW5fcmVhbF9kZXYuc2gtNy0jIFRoZSBrZXJuZWwgbWlycm9ycyBhIHJlYWwgZGV2aWNlJiMzOTtzIFVQL0RPV04sIE1UVSBhbmQgZmVhdHVyZSBjaGFuZ2VzIG9udG8gaXRzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfdmxhbl9yZWFsX2Rldi5zaDo4OiMgVkxBTnMuICBUaGlzIGlzIGRvbmUgYXN5bmNocm9ub3VzbHkgKG5ldGRldl93b3JrKTogZG9pbmcgaXQgc3luY2hyb25vdXNseSBmcm9tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfdmxhbl9yZWFsX2Rldi5zaC05LSMgdGhlIHJlYWwgZGV2aWNlJiMzOTtzIG5vdGlmaWVyIGNvdWxkIGRlYWRsb2NrLiAgSWYgdGhlIHJlYWwgZGV2aWNlIGlzIGJyb3VnaHQgdXBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb3JlIE5ldHdvcmsgRGV2aWNlIFdvcmtxdWV1ZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBsb29rIGF0IHNlZW0gdG8gYmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFdhaXQsIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBjYWxsZWQgZnJvbSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBzbyB0aGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpJdCBsb29rcyBsaWtlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGFyZSB0aGUgZnVuY3Rpb25zIHByaW1hcmlseSByZXNwb25zaWJsZSBmb3IgKmVucXVldWluZyogd29yayBvbnRvIHRoZSB3b3JrcXVldWUuIFNob3VsZCBJIGluY2x1ZGUgYHJ0bmxfZGVsZXRlX2xpbmtgIG9yIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWA/IE9rYXksIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNvcmUgZGV2aWNlIGNvZGUsIGluIGBuZXQvY29yZS9kZXYuY2AgYW5kIGRlY2xhcmVkIGluIGBuZXQvY29yZS9kZXYuaGAsIHNvIGl0IGlzbiYjMzk7dCBleHBvcnRlZC4gYG5ldGRldl93b3JrX3NjaGVkYCBpcyBleHBvcnRlZCwgdGhvdWdoLiBBbmQsIEkgc2VlIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGlzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Rldi5oYC4gU28sIEkmIzM5O2xsIGdvIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGZvciBub3cuCgpXYWl0IGEgbWludXRlLCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaXMgYWN0dWFsbHkgYWRkZWQgYnkgdGhpcyBwYXRjaCwgc28gSSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBvbmUgdG9vLiAgQW5kIEkgc2VlIHRoYXQgYG5ldGRldl93b3JrX2VucXVldWVgIGlzIG1vZGlmaWVkLiBCdXQsIHNpbmNlIGl0JiMzOTtzIGRlY2xhcmVkIHN0YXRpYywgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciBteSB1bmRlcnN0YW5kaW5nIGFyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLiBBbmQsIG9mIGNvdXJzZSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCBhcyB3ZWxsLgoKQWxyaWdodCwgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbmV0L2NvcmUvZGV2LmNgLCBpdCYjMzk7cyBjb21waWxlZCBhcyBsb25nIGFzIGBDT05GSUdfTkVUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE5vIHVudXN1YWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHdvcnJ5IGFib3V0LgoKT25lIGZpbmFsIGNoZWNrLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBkZXZfaXNhbGl2ZShkZXYpYCBjYWxsIHdpdGhpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldl9pc2FsaXZlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5oPTQwOT1pbnQgbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcpO1xuLS1cbm5ldC9jb3JlL2Rldi5oLTQxMS0vKiBDYWxsZXIgaG9sZHMgUlROTCwgbmV0ZGV2LVx1MDAzZWxvY2sgb3IgUkNVICovXG5uZXQvY29yZS9kZXYuaDo0MTI6c3RhdGljIGlubGluZSBib29sIGRldl9pc2FsaXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9kZXYuaC00MTMte1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTY5PXN0YXRpYyBpbnQgc3lzZnNfcnRubF9sb2NrKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTEwMi1cdCAqL1xubmV0L2NvcmUvbmV0LXN5c2ZzLmM6MTAzOlx0aWYgKCFkZXZfaXNhbGl2ZShuZGV2KSkge1xubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTEyMj1zdGF0aWMgc3NpemVfdCBuZXRkZXZfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTI5LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2NvcmUvbmV0LXN5c2ZzLmM6MTMwOlx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTMxLVx0XHRyZXQgPSAoKmZvcm1hdCkobmRldiwgYnVmKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0xODk9bmV0ZGV2X2xvY2tfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yMDYtXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyMDc6XHRpZiAoZGV2X2lzYWxpdmUobmV0ZGV2KSkge1xubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjA4LVx0XHRyZXQgPSAoKnNldCkobmV0ZGV2LCBuZXcpO1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTI1ND1zdGF0aWMgc3NpemVfdCBhZGRyZXNzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNjItXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyNjM6XHRpZiAoZGV2X2lzYWxpdmUobmRldikpXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNjQtXHRcdHJldCA9IHN5c2ZzX2Zvcm1hdF9tYWMoYnVmLCBuZGV2LVx1MDAzZWRldl9hZGRyLCBuZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0yNzI9c3RhdGljIHNzaXplX3QgYnJvYWRjYXN0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI3OC1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjI3OTpcdGlmIChkZXZfaXNhbGl2ZShuZGV2KSlcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI4MC1cdFx0cmV0ID0gc3lzZnNfZm9ybWF0X21hYyhidWYsIG5kZXYtXHUwMDNlYnJvYWRjYXN0LCBuZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz03Mjg9c3RhdGljIHNzaXplX3QgdGhyZWFkZWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtNzM1LVxubmV0L2NvcmUvbmV0LXN5c2ZzLmM6NzM2Olx0aWYgKGRldl9pc2FsaXZlKG5ldGRldikpXG5uZXQvY29yZS9uZXQtc3lzZnMuYy03MzctXHRcdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBmbXRfZGVjLCBSRUFEX09OQ0UobmV0ZGV2LVx1MDAzZXRocmVhZGVkKSk7XG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9ODAyPXN0YXRpYyBzc2l6ZV90IG5ldHN0YXRfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTgxMi1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjgxMzpcdGlmIChkZXZfaXNhbGl2ZShkZXYpKSB7XG5uZXQvY29yZS9uZXQtc3lzZnMuYy04MTQtXHRcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCB0ZW1wO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9Mjc9c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozNDpcdGlmICghZGV2X2lzYWxpdmUoZGV2KSkge1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zNS1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYz0xMzA9c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcHJvYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNjUtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2NjpcdFx0XHRpZiAoIWRldl9pc2FsaXZlKGRldikpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE2Ny1cdFx0XHRcdGNvcmUgPSBldmVudHMgPSAwO1xuLS1cbm5ldC9jb3JlL3J0bmV0bGluay5jPTQyNTY9c3RhdGljIGludCBydG5sX2dldGxpbmsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtNDMxMS1cdFx0cnRubF9sb2NrKCk7XG5uZXQvY29yZS9ydG5ldGxpbmsuYzo0MzEyOlx0XHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcbm5ldC9jb3JlL3J0bmV0bGluay5jLTQzMTMtXHRcdFx0ZXJyID0gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwNDgKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhpcyBOZXR3b3JraW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGlzc3VlIGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gSXQgc2VlbXMgbGlrZSB3ZSBoYXZlIGEgcHJvYmxlbSB3aGVyZSB3b3JrIHJlbGF0ZWQgdG8gYSBuZXR3b3JrIGRldmljZSAobmV0ZGV2IHdvcmspIGlzIGVpdGhlciBnZXR0aW5nIHNjaGVkdWxlZCBmb3IgYSBkZXZpY2UgdGhhdCYjMzk7cyBhbHJlYWR5IGRlYWQg4oCTIHdoaWNoIGlzIG9idmlvdXNseSBiYWQg4oCTIG9yIG5vdCBiZWluZyBwcm9wZXJseSBjYW5jZWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC4gVGhpcyBpcyBjbGFzc2ljIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhdHRlbnRpb24uCgpGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgY2xlYXIgd2luLiBJdCYjMzk7cyB0aGUga2luZCBvZiBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIHN1YnRsZSBjb3JydXB0aW9uLCByZXNvdXJjZSBsZWFrcywgb3IgZXZlbiBjcmFzaGVzIGlmIGxlZnQgdW5jaGVja2VkLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgZnV6emluZyB0aGlzIGlzIGEgZ29vZCBpZGVhIHRvIGNvbmZpcm0gaXRzIGVmZmVjdGl2ZW5lc3MuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAsIGBuZXRkZXZfd29ya19zY2hlZGAsIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLiBUaGVzZSBhcmUgdGhlIHBvaW50cyBvZiBpbnRlcmVzdCB3aGVyZSB0aGUgZml4IGlzIGxpa2VseSBpbXBsZW1lbnRlZC4gSSBkb24mIzM5O3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZyByZXF1aXJlbWVudHMsIHRoYW5rZnVsbHk7IGBDT05GSUdfTkVUYCBzaG91bGQgYmUgc3VmZmljaWVudC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiB0aGUgcGF0Y2ggZW5zdXJlcyBwZW5kaW5nIG5ldGRldiB3b3JrIGlzIGNhbmNlbGxlZCBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBhbmQgaXQgcHJldmVudHMgc2NoZWR1bGluZyBuZXcgd29yayBmb3IgZGV2aWNlcyB0aGF0IGFyZSBubyBsb25nZXIgYWN0aXZlLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhZGlseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDcmVhdGluZyBhbmQgZGVzdHJveWluZyB2ZXRoIG9yIGR1bW15IGludGVyZmFjZXMgdXNpbmcgbmV0bGluayBvcGVyYXRpb25zIGFyZSBjb21tb24gYW5kIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLCBzbyBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gVGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB3aGVuIGNyYWZ0aW5nIHRlc3QgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUxLjY0ODI1NzIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMDQyOTk0ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUxLjY0ODI2NjM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NDkwODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzMyODUyMjQ4YTgxODY3YzQxZjVjMjMyNjdmMTMxMjVhODM5MjBkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtMTI0NzgsNiArMTI0NzgsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuIFxcdFxcdGRldl90Y3hfdW5pbnN0YWxsKGRldik7XFxuIFxcdFxcdGRldl94ZHBfdW5pbnN0YWxsKGRldik7XFxuIFxcdFxcdGRldl9tZW1vcnlfcHJvdmlkZXJfdW5pbnN0YWxsKGRldik7XFxuK1xcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG4gXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0XFx0YnBmX2Rldl9ib3VuZF9uZXRkZXZfdW5yZWdpc3RlcihkZXYpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxcbmluZGV4IDVkMGIwMzA1ZDNiYWEuLmI3NTdmYWVhZDRkMWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmhcXG4rKysgYi9uZXQvY29yZS9kZXYuaFxcbkBAIC0xNzksNiArMTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHtcXG4gdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XFxuIHVuc2lnbmVkIGxvbmdcXG4gX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIFxcbiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLFxcbiBcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXFxuaW5kZXggMzEwOWZhZTEzMmFkMS4uZTcyMWEwNmQ1OGRmMSAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXFxuKysrIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbkBAIC0zMSw2ICszMSwxMCBAQCBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbitcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRldi1cXHUwMDNld29ya19ub2RlKSkge1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSwgXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xcbiBcXHRcXHRuZXRkZXZfaG9sZChkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuQEAgLTYxLDYgKzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcXG4gXFx0cmV0dXJuIGV2ZW50cztcXG4gfVxcbiBcXG4rdm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG4rXFx0ZGV2LVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xcbitcXHRkZXYtXFx1MDAzZXdvcmtfY29yZV9wZW5kaW5nID0gMDtcXG4rXFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSkpIHtcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpO1xcbitcXHRcXHRuZXRkZXZfcHV0KGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya190cmFja2VyKTtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxuK31cXG4rXFxuIHZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXFxuIHtcXG4gXFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIGV2ZW50cywgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUyLjExNzU2ODY2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUxNTczNjc3ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMzMjg1MjI0OGE4MTg2N2M0MWY1YzIzMjY3ZjEzMTI1YTgzOTIwZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xuaW5kZXggZTUwZWQ2NzdkZTcyNS4uZmNhMjU3OTdlZWVjYSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5jXG4rKysgYi9uZXQvY29yZS9kZXYuY1xuQEAgLTEyNDc4LDYgKzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdGN4X3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfeGRwX3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xuK1x0XHRuZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7XG4gXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4gXHRcdGJwZl9kZXZfYm91bmRfbmV0ZGV2X3VucmVnaXN0ZXIoZGV2KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuaCBiL25ldC9jb3JlL2Rldi5oXG5pbmRleCA1ZDBiMDMwNWQzYmFhLi5iNzU3ZmFlYWQ0ZDFhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmhcbisrKyBiL25ldC9jb3JlL2Rldi5oXG5AQCAtMTc5LDYgKzE3OSw3IEBAIGVudW0gbmV0ZGV2X3dvcmtfY29yZSB7XG4gdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4rKysgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtMzEsNiArMzEsMTAgQEAgc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuK1x0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKSB7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUsIFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xuIFx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuQEAgLTYxLDYgKzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbiBcdHJldHVybiBldmVudHM7XG4gfVxuIFxuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbitcdGRldi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xuK1x0ZGV2LVx1MDAzZXdvcmtfY29yZV9wZW5kaW5nID0gMDtcbitcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUpO1xuK1x0XHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2ZGV2LVx1MDAzZXdvcmtfdHJhY2tlcik7XG4rXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbit9XG4rXG4gdm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbiB7XG4gXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUyLjExNzU3MDI0OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDcwODE0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBOZXR3b3JraW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgY2FsbGluZyBpdCB3aXRoaW4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gVGhlcmUncyBhbHNvIGEgbmV3IGNoZWNrIGZvciBgIWRldl9pc2FsaXZlKGRldilgIGluIGBuZXRkZXZfd29ya19lbnF1ZXVlYC4gVGhpcyBsb29rcyBsaWtlIGEgZmFpcmx5IHNpZ25pZmljYW50IGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBoZXJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgYnV0IEknbGwgZm9jdXMgb24gdGhlIG1vcmUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBuZXRkZXZpY2UgdW5yZWdpc3RyYXRpb247IHRoYXQgaGFwcGVucyBhbGwgdGhlIHRpbWUsIHJpZ2h0PyAgRGVzdHJveWluZyB2ZXRoIHBhaXJzLCBkdW1teSBpbnRlcmZhY2VzLCB0dW5uZWxzLCBhbmQgc28gb24uLi5pdCdzIGEgZnJlcXVlbnQgb2NjdXJyZW5jZS4gIEFuZCwgdGhlbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgaXMgdXNlZCwgYXMgdGhlIG5hbWUgaW1wbGllcywgdG8gcXVldWUgdXAgd29yayBvbiBuZXRkZXZpY2VzLiBUaGUgaW5jbHVzaW9uIG9mIHRoYXQgY2hlY2ssIGAhZGV2X2lzYWxpdmUoZGV2KWAgaXMgcHJldHR5IGludGVyZXN0aW5nLiBJdCBtdXN0IG1lYW4gdGhlIHdvcmsgc2hvdWxkbid0IGJlIGV4ZWN1dGVkIGlmIHRoZSBkZXZpY2UgaGFzIGJlZW4gbWFya2VkIGFzIGRlYWQuXG5cbknigJlsbCBuZWVkIHRvIHRyYWNrIGRvd24gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjU2Ljc2NDY1NDA3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIzOTc4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTEyNDA3PWJvb2wgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMjQxMi1cXG5uZXQvY29yZS9kZXYuYzoxMjQxMzp2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxubmV0L2NvcmUvZGV2LmMtMTI0MTQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMjU1OT12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG5uZXQvY29yZS9kZXYuYy0xMjU2MC17XFxubmV0L2NvcmUvZGV2LmM6MTI1NjE6XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoaGVhZCwgMCwgTlVMTCk7XFxubmV0L2NvcmUvZGV2LmMtMTI1NjItfVxcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTg0PXZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXFxuLS1cXG5uZXQvY29yZS9kZXYuaC0xODctXFxubmV0L2NvcmUvZGV2Lmg6MTg4OnZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG5uZXQvY29yZS9kZXYuaC0xODktXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xcbi0tXFxubmV0L2NvcmUvcnRuZXRsaW5rLmM9MzYyMj1pbnQgcnRubF9kZWxldGVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTM2MzEtXFx0b3BzLVxcdTAwM2VkZWxsaW5rKGRldiwgXFx1MDAyNmxpc3Rfa2lsbCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmM6MzYzMjpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShcXHUwMDI2bGlzdF9raWxsLCBwb3J0aWQsIG5saCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzYzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTY6NTguNTg4NjQwNzExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNDQzOTUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCB3aGljaCBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLiBCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0ICpvbmx5KiBjb250YWlucyBzcGVjaWZpYyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gSG93ZXZlciwgdGhpcyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGlzbid0IGRyaXZlci1zcGVjaWZpYzsgaXQncyBhIGNvcmUgbmV0d29yayBkZXZpY2UgdW5yZWdpc3RyYXRpb24gZnVuY3Rpb24uIEl0IGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgbmV0ZGV2aWNlIGlzIGRlc3Ryb3llZCwgd2hpY2ggY2FuIGhhcHBlbiB0aHJvdWdoIHZhcmlvdXMgbWVhbnMsIGxpa2UgdXNpbmcgcnRuZXRsaW5rLCBtZWFuaW5nIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzISBJdCBsb29rcyBsaWtlIHRoaXMgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBjYW5jZWxpbmcgb3IgcHJldmVudGluZyB0aGUgZW5xdWV1aW5nIG9mIHdvcmsgb24gYSBuZXRkZXYgdGhhdCBpcyBiZWluZyB1bnJlZ2lzdGVyZWQgYW5kIGlzIGFscmVhZHkgZGVhZC4gVGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbnMgbWVudGlvbmVkIGFyZSBhY3R1YWxseSByZWxhdGVkIHRvIHRoaXMgZml4IGFuZCBub3QgYSByZWQgaGVycmluZy4gVGltZSB0byBjaGVjayBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCB0byBjb25maXJtIG15IGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MDMuMzAzMDgyNjcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Njg1NDQzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3dvcmtfZW5xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfd29yay5jPTI1PXN0YXRpYyBERUNMQVJFX1dPUksobmV0ZGV2X3dvcmssIG5ldGRldl93b3JrX3Byb2MpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjYtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjgtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3JlKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYz04MD12b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODEte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODI6XFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIGV2ZW50cywgMCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04My19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTEwNz12b2lkIF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwOC17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDk6XFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIDAsIGV2ZW50cyk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1NzowNS4xNzE2MzE3MDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMxMDQyMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBkaXNzZWN0aW5nIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgOlxuXG4qKkRlbHZpbmcgaW50byBOZXR3b3JrIERldmljZSBXb3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW50byBnZWFyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYG5ldGRldl93b3JrX3NjaGVkYCBhbmQgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFyZSBhY3R1YWxseSAqZG9pbmcqLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgZGVlcGx5IGludm9sdmVkIHdpdGggc2NoZWR1bGluZyB3b3JrIHJlbGF0ZWQgdG8gbmV0d29yayBkZXZpY2VzLCB3aGljaCBpcywgb2J2aW91c2x5LCBhIGNvcmUgYXJlYS4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGRpZmZlcmVudCBraW5kcyBvZiBuZXR3b3JrIGRldmljZSBhY3Rpdml0eSBhbmQgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgbWlnaHQgcGxheSBpbnRvIHRoYXQ6IGludGVycnVwdCBoYW5kbGluZywgcGFja2V0IHByb2Nlc3NpbmcsIERNQSBjb21wbGV0aW9uLCBldCBjZXRlcmEuIElzIG9uZSBtb3JlIGdlbmVyaWMsIG9yIGxvd2VyIGxldmVsIHRoYW4gdGhlIG90aGVyPyBEb2VzIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIHJlcHJlc2VudCB0aGUgY29yZSBzY2hlZHVsaW5nIG1lY2hhbmlzbSB0aGF0IHRoZSBoaWdoZXIgbGV2ZWwgYG5ldGRldl93b3JrX3NjaGVkYCB1dGlsaXplcz8gSSBuZWVkIHRvIGxvb2sgaW50byBob3cgdGhlIG5ldHdvcmtpbmcgc3RhY2sgaXMgY29uc3RydWN0ZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGhvb2tzIGFyZSBwbGFjZWQsIGhvdyB0aGV5J3JlIGNhbGxlZCwgYW5kIHdoYXQgY29udGV4dCB0aGV5J3JlIGNhbGxlZCBmcm9tLiBJJ20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCB3aGVyZSB0aGV5J3JlIGRlZmluZWQsIGFuZCB3aGVyZSB0aGV5J3JlIHVzZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgYnkgaWRlbnRpZnlpbmcgYWxsIGNhbGxlcnMgYW5kIHRoZW4gYW5hbHl6ZSB0aGUgY2FsbGluZyBjb250ZXh0LCB0aGF0IHdheSB0aGUgdXNlIGNhc2VzIGJlY29tZSB2ZXJ5IGFwcGFyZW50LCB2ZXJ5IHF1aWNrbHkuIE15IGluaXRpYWwgZ3Vlc3MgaXMgdGhhdCB0aGUgd29yayBxdWV1ZS9zY2hlZHVsaW5nIGlzIG5ldHdvcmsgZGV2aWNlIHJlbGF0ZWQgYW5kIGlzIGxpa2VseSBkcml2ZW4gYnkgYXN5bmNocm9ub3VzIGFjdGl2aXR5IGZyb20gaGFyZHdhcmUuIEknbSBwcm9iYWJseSBsb29raW5nIGF0IGEgbWVjaGFuaXNtIGZvciBkZWZlcnJpbmcgd29yayBmcm9tIGludGVycnVwdCBjb250ZXh0IHRvIGEgbW9yZSBzdWl0YWJsZSB0YXNrIGNvbnRleHQsIGFuZCBJJ2QgbGlrZSB0byBxdWlja2x5IGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQncyBzZWUgaG93IGRlZXAgd2UgbmVlZCB0byBnbyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MDguODAyNjc2NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MzEzMTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29ya19zY2hlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTEwNjM9c3RydWN0IG5ldGRldl9uZXRfbm90aWZpZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM1LSAqIHZvaWQgKCpuZG9fd29yaykoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTEzNjogKlxcdFJ1biBkZWZlcnJlZCB3b3JrIHNjaGVkdWxlZCB3aXRoIG5ldGRldl93b3JrX3NjaGVkKEBldmVudHMpLlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTEzNy0gKlxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODEwPWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDMtICpcXHRAd29ya19wZW5kaW5nOlxcdFxcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlxcdFxcdFxcdFxcdG5kb193b3JrKCkgKHNlZSBuZXRkZXZfd29ya19zY2hlZCgpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTk0NS0gKlxcdEB3b3JrX2NvcmVfcGVuZGluZzpcXHRDb3JlLWRlZmluZWQgcGVuZGluZyBuZXRkZXZfd29yayAoTkVUREVWX1dPUktfKilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTIxMz12b2lkIGRldl9nZXRfdHN0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyMTQtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1MjE1OnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNi11bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYz0zNjg9c3RhdGljIGludCB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCwgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDI0LVxcbm5ldC84MDIxcS92bGFuLmM6NDI1OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19NVFUpO1xcbm5ldC84MDIxcS92bGFuLmMtNDI2LVxcdFxcdH1cXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDMwLVxcdFxcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcXHRcXHRcXHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xcbm5ldC84MDIxcS92bGFuLmMtNDMyLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXFx0XFx0dmxhbl9ncm91cF9mb3JfZWFjaF9kZXYoZ3JwLCBpLCB2bGFuZGV2KVxcbm5ldC84MDIxcS92bGFuLmM6NDM3OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9Njg9dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTc5LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODA6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODMtfVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODQ6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19zY2hlZCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MTAuNjY1ODEzODg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMzIxODEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgV29yayBTY2hlZHVsaW5nIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGRldmljZSBmdW5jdGlvbmFsaXR5IOKAkyBzcGVjaWZpY2FsbHksIGhvdyBkcml2ZXJzLCBsaWtlIFZMQU4gZm9yIGluc3RhbmNlLCBzY2hlZHVsZSB3b3JrIHVzaW5nIGBuZXRkZXZfd29ya19zY2hlZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIG1vZGlmeWluZyBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgdG8gaW5jb3Jwb3JhdGUgYSBjaGVjayBmb3IgYCFkZXZfaXNhbGl2ZShkZXYpYCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoZSBsYXR0ZXIgaXMgaW52b2tlZCBmcm9tIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBtb2RpZmljYXRpb24sIGEgZnVuZGFtZW50YWwgY2hhbmdlLiBHaXZlbiB0aGlzLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCBgcnRubF9kZWxldGVfbGlua2AgZm9yIGZvY3VzLCBidXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyByZWFsbHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBldmVuIHRob3VnaCBpdCdzIGEgdGVhcmRvd24gZnVuY3Rpb24uIFRoYXQgc2FpZCwgSSBzaG91bGQgZm9jdXMgb24gaG93IHRoYXQgaXMgYWxsIGxpbmtlZCB3aXRoIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgYG5ldGRldl93b3JrX3NjaGVkYC4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBjYWxsaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC5cblxuTm93LCBJIHdhbnQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBUaGUgc291cmNlIGZpbGVzLCBgbmV0L2NvcmUvZGV2LmNgIGFuZCBgbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY2AsIGFyZSBjb21waWxlZCBieSBkZWZhdWx0IGZvciBuZXR3b3JraW5nLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgZm9yIGFueSBwb3RlbnRpYWwgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjE2LjM4OTAzNTMwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMzY3ODk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29ya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jPTcyND1zdGF0aWMgdm9pZCBwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzI1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyNjpcXHRzdHJ1Y3QgcHZyZG1hX25ldGRldmljZV93b3JrICpuZXRkZXZfd29yaztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTcyNy1cXHRzdHJ1Y3QgcHZyZG1hX2RldiAqZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzI4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzI5OlxcdG5ldGRldl93b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmssIHdvcmspO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzItXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsIFxcdTAwMjZwdnJkbWFfZGV2aWNlX2xpc3QsIGRldmljZV9saW5rKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzM6XFx0XFx0aWYgKChuZXRkZXZfd29yay1cXHUwMDNlZXZlbnQgPT0gTkVUREVWX1JFR0lTVEVSKSB8fFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzM0OlxcdFxcdCAgICAoZGV2LVxcdTAwM2VuZXRkZXYgPT0gbmV0ZGV2X3dvcmstXFx1MDAzZWV2ZW50X25ldGRldikpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczNS1cXHRcXHRcXHRwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X2hhbmRsZShkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbmV0ZGV2X3dvcmstXFx1MDAzZWV2ZW50X25ldGRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBuZXRkZXZfd29yay1cXHUwMDNlZXZlbnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzM4LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NDM6XFx0a2ZyZWUobmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzQ0LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzQ2PXN0YXRpYyBpbnQgcHZyZG1hX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTc0OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZXZlbnRfbmV0ZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTA6XFx0c3RydWN0IHB2cmRtYV9uZXRkZXZpY2Vfd29yayAqbmV0ZGV2X3dvcms7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTI6XFx0bmV0ZGV2X3dvcmsgPSBrbWFsbG9jX29iaigqbmV0ZGV2X3dvcmssIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzUzOlxcdGlmICghbmV0ZGV2X3dvcmspXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTQtXFx0XFx0cmV0dXJuIE5PVElGWV9CQUQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTY6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXRkZXZfd29yay1cXHUwMDNld29yaywgcHZyZG1hX25ldGRldmljZV9ldmVudF93b3JrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1NzpcXHRuZXRkZXZfd29yay1cXHUwMDNlZXZlbnRfbmV0ZGV2ID0gZXZlbnRfbmV0ZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU4OlxcdG5ldGRldl93b3JrLVxcdTAwM2VldmVudCA9IGV2ZW50O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU5OlxcdHF1ZXVlX3dvcmsoZXZlbnRfd3EsIFxcdTAwMjZuZXRkZXZfd29yay1cXHUwMDNld29yayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MTMyPXN0cnVjdCBpd2xfbWVpX2ZpbHRlcnMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE2My0gKlxcdGFjY2Vzc2VkIHdpdGhvdXQgdGhlIG11dGV4LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxNjQ6ICogQG5ldGRldl93b3JrOiB1c2VkIHRvIGRlZmVyIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIG9mIHRoZSBuZXRkZXYgdG9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMTY1LSAqXFx0YXZvaWQgdGFraW5nIHRoZSBydG5sIGxvY2sgaW4gdGhlIFNBUCBtZXNzYWdlcyBoYW5kbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xNzI9c3RydWN0IGl3bF9tZWkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE4OS1cXHRzcGlubG9ja190IGRhdGFfcV9sb2NrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxOTA6XFx0c3RydWN0IHdvcmtfc3RydWN0IG5ldGRldl93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBvd25lcnNoaXBfZHdvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9NTk3PXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGl3bF9tZWlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo2Mzc6c3RhdGljIHZvaWQgaXdsX21laV9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy02Mzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy02MzktXFx0c3RydWN0IGl3bF9tZWkgKm1laSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjY0MDpcXHRcXHRjb250YWluZXJfb2Yod2ssIHN0cnVjdCBpd2xfbWVpLCBuZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTY0MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jPTgxNj1zdGF0aWMgdm9pZCBpd2xfbWVpX2hhbmRsZV9hbXRfc3RhdGUoc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTgzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6ODMzOlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm1laS1cXHUwMDNlbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy04MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MTk2ND1zdGF0aWMgaW50IGl3bF9tZWlfcHJvYmUoc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODEtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm1laS1cXHUwMDNlZGF0YV9xX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxOTgyOlxcdElOSVRfV09SSyhcXHUwMDI2bWVpLVxcdTAwM2VuZXRkZXZfd29yaywgaXdsX21laV9uZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODMtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1laS1cXHUwMDNlb3duZXJzaGlwX2R3b3JrLCBpd2xfbWVpX293bmVyc2hpcF9kd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MjA1Mz1zdGF0aWMgdm9pZCBpd2xfbWVpX3JlbW92ZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMjE2MC1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1laS1cXHUwMDNlY3NhX3Rocm90dGxlX2VuZF93ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjIxNjE6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bWVpLVxcdTAwM2VuZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTIxNjItXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtZWktXFx1MDAzZW93bmVyc2hpcF9kd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz02Nz1zdHJ1Y3QgYmFtX2RtdXgge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODUtXFx0REVDTEFSRV9CSVRNQVAocmVtb3RlX2NoYW5uZWxzLCBCQU1fRE1VWF9OVU1fQ0gpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg2OlxcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdpc3Rlcl9uZXRkZXZfd29yaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04Ny1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2c1tCQU1fRE1VWF9OVU1fQ0hdO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDExPXN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDI5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzMDpzdGF0aWMgdm9pZCBiYW1fZG11eF9yZWdpc3Rlcl9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDMxLXtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0MzI6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzMy1cXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTUzOT1zdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfb3BlbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU1My1cXHRcXHQvKiBDYW5ub3Qgc2xlZXAgaGVyZSwgc2NoZWR1bGUgd29yayB0byByZWdpc3RlciB0aGUgbmV0ZGV2ICovXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTU0OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmRtdXgtXFx1MDAzZXJlZ2lzdGVyX25ldGRldl93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NTUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NzY1PXN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwNC1cXHRJTklUX1dPUksoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODA1OlxcdElOSVRfV09SSyhcXHUwMDI2ZG11eC1cXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmssIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz04NTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NTgtXFx0LyogVW5yZWdpc3RlciBuZXR3b3JrIGludGVyZmFjZXMgKi9cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NTk6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZG11eC1cXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg2MC1cXHRydG5sX2xvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTA2Mz1zdHJ1Y3QgbmV0ZGV2X25ldF9ub3RpZmllciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzUtICogdm9pZCAoKm5kb193b3JrKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxMTM2OiAqXFx0UnVuIGRlZmVycmVkIHdvcmsgc2NoZWR1bGVkIHdpdGggbmV0ZGV2X3dvcmtfc2NoZWQoQGV2ZW50cykuXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM3LSAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTA9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTk0MC0gKlxcdFxcdFxcdFxcdGRvZXMgbm90IGltcGxlbWVudCBuZG9fc2V0X3J4X21vZGUoKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0MTogKlxcdEB3b3JrX25vZGU6XFx0XFx0TGlzdCBlbnRyeSBmb3IgYXN5bmMgbmV0ZGV2X3dvcmsgcHJvY2Vzc2luZ1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0MjogKlxcdEB3b3JrX3RyYWNrZXI6XFx0XFx0UmVmY291bnQgdHJhY2tlciBmb3IgYXN5bmMgbmV0ZGV2X3dvcmtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDM6ICpcXHRAd29ya19wZW5kaW5nOlxcdFxcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlxcdFxcdFxcdFxcdG5kb193b3JrKCkgKHNlZSBuZXRkZXZfd29ya19zY2hlZCgpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NTogKlxcdEB3b3JrX2NvcmVfcGVuZGluZzpcXHRDb3JlLWRlZmluZWQgcGVuZGluZyBuZXRkZXZfd29yayAoTkVUREVWX1dPUktfKilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDYtICpcXHRAcnhfbW9kZV9hZGRyX2NhY2hlOlxcdFJlY3ljbGVkIHNuYXBzaG90IGVudHJpZXMgZm9yIHJ4X21vZGUgd29ya1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01MjEzPXZvaWQgZGV2X2dldF90c3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNC1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTU6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1MjE2OnVuc2lnbmVkIGxvbmcgbmV0ZGV2X3dvcmtfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjE3LVxcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYz0zNjg9c3RhdGljIGludCB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCwgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDI0LVxcbm5ldC84MDIxcS92bGFuLmM6NDI1OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19NVFUpO1xcbm5ldC84MDIxcS92bGFuLmMtNDI2LVxcdFxcdH1cXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDMwLVxcdFxcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcXHRcXHRcXHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xcbm5ldC84MDIxcS92bGFuLmMtNDMyLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXFx0XFx0dmxhbl9ncm91cF9mb3JfZWFjaF9kZXYoZ3JwLCBpLCB2bGFuZGV2KVxcbm5ldC84MDIxcS92bGFuLmM6NDM3OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC84MDIxcS92bGFuLmg9MTI2PXZvaWQgdmxhbl9maWx0ZXJfZHJvcF92aWRzKHN0cnVjdCB2bGFuX2luZm8gKnZsYW5faW5mbywgX19iZTE2IHByb3RvKTtcXG5uZXQvODAyMXEvdmxhbi5oLTEyNy1cXG5uZXQvODAyMXEvdmxhbi5oOjEyODovKiBuZXRkZXZfd29yayBldmVudHMgcHJvcGFnYXRlZCBmcm9tIHRoZSByZWFsIGRldmljZSwgc2VlIHZsYW5fZGV2X3dvcmsoKS4gKi9cXG5uZXQvODAyMXEvdmxhbi5oLTEyOS1lbnVtIHtcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jPTI2Mz1zdGF0aWMgaW50IHZsYW5fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3My1cXHQvKiBUaGUgZXhwbGljaXQgb3BlbiBzdXBlcnNlZGVzIGFueSBkZWZlcnJlZCBsaW5rLXN0YXRlIHN5bmMgKi9cXG5uZXQvODAyMXEvdmxhbl9kZXYuYzoyNzQ6XFx0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgVkxBTl9XT1JLX0xJTktfU1RBVEUpO1xcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3NS1cXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jPTMwMT1zdGF0aWMgaW50IHZsYW5fZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTMwNi1cXHQvKiBUaGUgZXhwbGljaXQgY2xvc2Ugc3VwZXJzZWRlcyBhbnkgZGVmZXJyZWQgbGluay1zdGF0ZSBzeW5jICovXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MzA3OlxcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0zMDgtXFxuLS1cXG5uZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVxcdFxcdCAgICAgKz0gZGV2Lm8gZGV2X2FwaS5vIGRldl9hZGRyX2xpc3RzLm8gZHN0Lm8gbmV0ZXZlbnQubyBcXFxcXFxuLS1cXG5uZXQvY29yZS9NYWtlZmlsZS0xNS1cXHRcXHRcXHRmaWJfbm90aWZpZXIubyB4ZHAubyBmbG93X29mZmxvYWQubyBncm8ubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTY6XFx0XFx0XFx0bmV0ZGV2LWdlbmwubyBuZXRkZXYtZ2VubC1nZW4ubyBuZXRkZXZfd29yay5vIGdzby5vXFxubmV0L2NvcmUvTWFrZWZpbGUtMTctXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMjQxMz12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMjQ4MC1cXHRcXHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xcbm5ldC9jb3JlL2Rldi5jOjEyNDgxOlxcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG5uZXQvY29yZS9kZXYuYy0xMjQ4Mi1cXHRcXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTcyPXZvaWQgbmV0aWZfcnhfbW9kZV9jYW5jZWxfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5uZXQvY29yZS9kZXYuaC0xNzQtLyogRXZlbnRzIGZvciB0aGUgYXN5bmMgbmV0ZGV2IHdvcmssIHRyYWNrZWQgaW4gbmV0ZGV2LVxcdTAwM2V3b3JrX2NvcmVfcGVuZGluZy4gKi9cXG5uZXQvY29yZS9kZXYuaDoxNzU6ZW51bSBuZXRkZXZfd29ya19jb3JlIHtcXG5uZXQvY29yZS9kZXYuaC0xNzYtXFx0TkVUREVWX1dPUktfUlhfTU9ERVxcdD0gQklUKDApLFxcdC8qIHJ1biB0aGUgcnhfbW9kZSB1cGRhdGUgKi9cXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE3OC1cXG5uZXQvY29yZS9kZXYuaDoxNzk6dm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XFxubmV0L2NvcmUvZGV2LmgtMTgwLXVuc2lnbmVkIGxvbmdcXG5uZXQvY29yZS9kZXYuaDoxODE6X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbm5ldC9jb3JlL2Rldi5oOjE4Mjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxubmV0L2NvcmUvZGV2LmgtMTgzLVxcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xMzM1PXN0YXRpYyB2b2lkIG5ldGlmX3J4X21vZGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzYte1xcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM6MTMzNzpcXHRfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoZGV2LCBORVRERVZfV09SS19SWF9NT0RFKTtcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzgtfVxcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xNDA4PXZvaWQgbmV0aWZfcnhfbW9kZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDA5LXtcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjE0MTA6XFx0aWYgKF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCBORVRERVZfV09SS19SWF9NT0RFKSlcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTE0MTEtXFx0XFx0bmV0aWZfcnhfbW9kZV9ydW4oZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTItXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19wcm9jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNC1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1Oi8qIEBuZXRkZXZfd29ya19sb2NrIHByb3RlY3RzOlxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTY6ICogIC0gQG5ldGRldl93b3JrX2xpc3RcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3LSAqICAtIHdpdGhpbiB0aGUgbGlzdCBlbnRyaWVzIChzdHJ1Y3QgbmV0X2RldmljZSBmaWVsZHMpOlxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yMi0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjIzOnN0YXRpYyBMSVNUX0hFQUQobmV0ZGV2X3dvcmtfbGlzdCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNDpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MjU6c3RhdGljIERFQ0xBUkVfV09SSyhuZXRkZXZfd29yaywgbmV0ZGV2X3dvcmtfcHJvYyk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yNi1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI3OnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yOC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGNvcmUpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMyLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzM6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM0LVxcdGlmICghZGV2X2lzYWxpdmUoZGV2KSkge1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMzYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zOC1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozOTpcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSwgXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDAtXFx0XFx0bmV0ZGV2X2hvbGQoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy00My1cXHRkZXYtXFx1MDAzZXdvcmtfY29yZV9wZW5kaW5nIHw9IGNvcmU7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo0NDpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy00NS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjQ2OlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5ldGRldl93b3JrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQ3LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9NDk9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjUwOm5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTUxLVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1hc2spXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU0LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NTU6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU2LVxcdGV2ZW50cyA9ICpwZW5kaW5nIFxcdTAwMjYgbWFzaztcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjItXFx0fVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NjM6XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjQtXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTY3LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Njg6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02OS17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo3MDpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzEtXFx0ZGV2LVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03Ni1cXHR9XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo3NzpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OC19XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjgwOnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04MS17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo4MjpcXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgzLX1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg0OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfc2NoZWQpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODUtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04Ni0vKipcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg3OiAqIG5ldGRldl93b3JrX2NhbmNlbCgpIC0gY2FuY2VsIHNlbGVjdGVkIHdvcmsgZm9yIGEgbmV0ZGV2XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04OC0gKiBAZGV2OiBuZXRfZGV2aWNlXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwMC0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwMTp1bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDIte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAzOlxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19wZW5kaW5nLCBtYXNrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNC19XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDU6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19jYW5jZWwpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA2LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTA3OnZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA4LXtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwOTpcXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgMCwgZXZlbnRzKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExMC19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTExMj11bnNpZ25lZCBsb25nXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMTM6X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTQte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTE1OlxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTE2LX1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNy1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjExODpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTktXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgY29yZSlcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTI5LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTMwOnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3Byb2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTMxLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTM4LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM5OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDA6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDE6XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTQyLVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTQzLVxcdFxcdH1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE0NDpcXHRcXHRkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZuZXRkZXZfd29ya19saXN0LCBzdHJ1Y3QgbmV0X2RldmljZSxcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0NS1cXHRcXHRcXHRcXHQgICAgICAgd29ya19ub2RlKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTUyLVxcdFxcdG5ldGRldl9ob2xkKGRldiwgXFx1MDAyNnRyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTUzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NC1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NS1cXHRcXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1NjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTU3LVxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpKSB7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE2OC1cXHRcXHR9XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNjk6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTcwLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTcxOlxcdFxcdG5ldGRldl93b3JrX3J1bihkZXYsIGV2ZW50cywgY29yZSk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNzItXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF92bGFuX3JlYWxfZGV2LnNoLTctIyBUaGUga2VybmVsIG1pcnJvcnMgYSByZWFsIGRldmljZSdzIFVQL0RPV04sIE1UVSBhbmQgZmVhdHVyZSBjaGFuZ2VzIG9udG8gaXRzXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3ZsYW5fcmVhbF9kZXYuc2g6ODojIFZMQU5zLiAgVGhpcyBpcyBkb25lIGFzeW5jaHJvbm91c2x5IChuZXRkZXZfd29yayk6IGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgZnJvbVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF92bGFuX3JlYWxfZGV2LnNoLTktIyB0aGUgcmVhbCBkZXZpY2UncyBub3RpZmllciBjb3VsZCBkZWFkbG9jay4gIElmIHRoZSByZWFsIGRldmljZSBpcyBicm91Z2h0IHVwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjE4LjEyMjcyMjY3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk5MTQ4NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBOZXR3b3JrIERldmljZSBXb3JrcXVldWUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBsb29rIGF0IHNlZW0gdG8gYmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFdhaXQsIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBjYWxsZWQgZnJvbSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBzbyB0aGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC5cblxuSXQgbG9va3MgbGlrZSBgbmV0ZGV2X3dvcmtfc2NoZWRgIGFuZCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYCBhcmUgdGhlIGZ1bmN0aW9ucyBwcmltYXJpbHkgcmVzcG9uc2libGUgZm9yICplbnF1ZXVpbmcqIHdvcmsgb250byB0aGUgd29ya3F1ZXVlLiBTaG91bGQgSSBpbmNsdWRlIGBydG5sX2RlbGV0ZV9saW5rYCBvciBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgPyBPa2F5LCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGlzIGRlZmluZWQgd2l0aGluIHRoZSBjb3JlIGRldmljZSBjb2RlLCBpbiBgbmV0L2NvcmUvZGV2LmNgIGFuZCBkZWNsYXJlZCBpbiBgbmV0L2NvcmUvZGV2LmhgLCBzbyBpdCBpc24ndCBleHBvcnRlZC4gYG5ldGRldl93b3JrX3NjaGVkYCBpcyBleHBvcnRlZCwgdGhvdWdoLiBBbmQsIEkgc2VlIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGlzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Rldi5oYC4gU28sIEknbGwgZ28gd2l0aCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfc2NoZWRgLCBhbmQgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAgZm9yIG5vdy5cblxuV2FpdCBhIG1pbnV0ZSwgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGlzIGFjdHVhbGx5IGFkZGVkIGJ5IHRoaXMgcGF0Y2gsIHNvIEkgbmVlZCB0byBpbmNsdWRlIHRoYXQgb25lIHRvby4gIEFuZCBJIHNlZSB0aGF0IGBuZXRkZXZfd29ya19lbnF1ZXVlYCBpcyBtb2RpZmllZC4gQnV0LCBzaW5jZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciBteSB1bmRlcnN0YW5kaW5nIGFyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLiBBbmQsIG9mIGNvdXJzZSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCBhcyB3ZWxsLlxuXG5BbHJpZ2h0LCBsZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbmV0L2NvcmUvZGV2LmNgLCBpdCdzIGNvbXBpbGVkIGFzIGxvbmcgYXMgYENPTkZJR19ORVRgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gTm8gdW51c3VhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gd29ycnkgYWJvdXQuXG5cbk9uZSBmaW5hbCBjaGVjaywgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBgZGV2X2lzYWxpdmUoZGV2KWAgY2FsbCB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzg3NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1NzoyNC42MjE4NzQ2MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjI5OTM1NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2lzYWxpdmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2Lmg9NDA5PWludCBuZXRfaHd0c3RhbXBfdmFsaWRhdGUoY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNmZyk7XFxuLS1cXG5uZXQvY29yZS9kZXYuaC00MTEtLyogQ2FsbGVyIGhvbGRzIFJUTkwsIG5ldGRldi1cXHUwMDNlbG9jayBvciBSQ1UgKi9cXG5uZXQvY29yZS9kZXYuaDo0MTI6c3RhdGljIGlubGluZSBib29sIGRldl9pc2FsaXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvZGV2LmgtNDEzLXtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTY5PXN0YXRpYyBpbnQgc3lzZnNfcnRubF9sb2NrKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTAyLVxcdCAqL1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjEwMzpcXHRpZiAoIWRldl9pc2FsaXZlKG5kZXYpKSB7XFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTA0LVxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0xMjI9c3RhdGljIHNzaXplX3QgbmV0ZGV2X3Nob3coY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTI5LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoxMzA6XFx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTEzMS1cXHRcXHRyZXQgPSAoKmZvcm1hdCkobmRldiwgYnVmKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTE4OT1uZXRkZXZfbG9ja19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjA2LVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjIwNzpcXHRpZiAoZGV2X2lzYWxpdmUobmV0ZGV2KSkge1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTIwOC1cXHRcXHRyZXQgPSAoKnNldCkobmV0ZGV2LCBuZXcpO1xcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9MjU0PXN0YXRpYyBzc2l6ZV90IGFkZHJlc3Nfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjYyLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyNjM6XFx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI2NC1cXHRcXHRyZXQgPSBzeXNmc19mb3JtYXRfbWFjKGJ1ZiwgbmRldi1cXHUwMDNlZGV2X2FkZHIsIG5kZXYtXFx1MDAzZWFkZHJfbGVuKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTI3Mj1zdGF0aWMgc3NpemVfdCBicm9hZGNhc3Rfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNzgtXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjI3OTpcXHRpZiAoZGV2X2lzYWxpdmUobmRldikpXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjgwLVxcdFxcdHJldCA9IHN5c2ZzX2Zvcm1hdF9tYWMoYnVmLCBuZGV2LVxcdTAwM2Vicm9hZGNhc3QsIG5kZXYtXFx1MDAzZWFkZHJfbGVuKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTcyOD1zdGF0aWMgc3NpemVfdCB0aHJlYWRlZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTczNS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYzo3MzY6XFx0aWYgKGRldl9pc2FsaXZlKG5ldGRldikpXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtNzM3LVxcdFxcdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBmbXRfZGVjLCBSRUFEX09OQ0UobmV0ZGV2LVxcdTAwM2V0aHJlYWRlZCkpO1xcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9ODAyPXN0YXRpYyBzc2l6ZV90IG5ldHN0YXRfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtODEyLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzo4MTM6XFx0aWYgKGRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYy04MTQtXFx0XFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHRlbXA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTI3PXN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozNDpcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM1LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTMwPXN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3Byb2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNjUtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNjY6XFx0XFx0XFx0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTY3LVxcdFxcdFxcdFxcdGNvcmUgPSBldmVudHMgPSAwO1xcbi0tXFxubmV0L2NvcmUvcnRuZXRsaW5rLmM9NDI1Nj1zdGF0aWMgaW50IHJ0bmxfZ2V0bGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTQzMTEtXFx0XFx0cnRubF9sb2NrKCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmM6NDMxMjpcXHRcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9ydG5ldGxpbmsuYy00MzEzLVxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjI2LjM4NDg3NDMxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzMwNjMyODI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgTmV0d29ya2luZyBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGlzc3VlIGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBJdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcm9ibGVtIHdoZXJlIHdvcmsgcmVsYXRlZCB0byBhIG5ldHdvcmsgZGV2aWNlIChuZXRkZXYgd29yaykgaXMgZWl0aGVyIGdldHRpbmcgc2NoZWR1bGVkIGZvciBhIGRldmljZSB0aGF0J3MgYWxyZWFkeSBkZWFkIOKAkyB3aGljaCBpcyBvYnZpb3VzbHkgYmFkIOKAkyBvciBub3QgYmVpbmcgcHJvcGVybHkgY2FuY2VsbGVkIHdoZW4gdGhlIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuIFRoaXMgaXMgY2xhc3NpYyBjb3JlIG5ldHdvcmtpbmcgc3R1ZmYsIHNvIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYXR0ZW50aW9uLlxuXG5Gcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgY2xlYXIgd2luLiBJdCdzIHRoZSBraW5kIG9mIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gc3VidGxlIGNvcnJ1cHRpb24sIHJlc291cmNlIGxlYWtzLCBvciBldmVuIGNyYXNoZXMgaWYgbGVmdCB1bmNoZWNrZWQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBmdXp6aW5nIHRoaXMgaXMgYSBnb29kIGlkZWEgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZXNlIGtleSBzeW1ib2xzOiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfc2NoZWRgLCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYCwgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhlc2UgYXJlIHRoZSBwb2ludHMgb2YgaW50ZXJlc3Qgd2hlcmUgdGhlIGZpeCBpcyBsaWtlbHkgaW1wbGVtZW50ZWQuIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZyByZXF1aXJlbWVudHMsIHRoYW5rZnVsbHk7IGBDT05GSUdfTkVUYCBzaG91bGQgYmUgc3VmZmljaWVudC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IHRoZSBwYXRjaCBlbnN1cmVzIHBlbmRpbmcgbmV0ZGV2IHdvcmsgaXMgY2FuY2VsbGVkIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24sIGFuZCBpdCBwcmV2ZW50cyBzY2hlZHVsaW5nIG5ldyB3b3JrIGZvciBkZXZpY2VzIHRoYXQgYXJlIG5vIGxvbmdlciBhY3RpdmUuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFkaWx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHZldGggb3IgZHVtbXkgaW50ZXJmYWNlcyB1c2luZyBuZXRsaW5rIG9wZXJhdGlvbnMgYXJlIGNvbW1vbiBhbmQgZWZmZWN0aXZlIHRlc3QgY2FzZXMsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIFRoaXMgaXMgc29tZXRoaW5nIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVuIGNyYWZ0aW5nIHRlc3QgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDQ4LCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1Nzo0My42OTEyMDU5MTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgICBcIm5ldGRldl93b3JrX3NjaGVkXCIsXG4gICAgXCJfX25ldGRldl93b3JrX2NvcmVfc2NoZWRcIixcbiAgICBcIm5ldGRldl93b3JrX2NhbmNlbF9hbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow6fgd8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 02:37:00 +0000 UTC FinishedAt: 2026-08-06 02:57:45 +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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "series_id": "72c63ef9-2b1f-4c84-8806-dc8f2c79a802" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unregister_netdevice_many_notify", "netdev_work_sched", "__netdev_work_core_sched", "netdev_work_cancel_all" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfc2NoZWQmIzM0OywKICAgICYjMzQ7X19uZXRkZXZfd29ya19jb3JlX3NjaGVkJiMzNDssCiAgICAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMzI4NTIyNDhhODE4NjdjNDFmNWMyMzI2N2YxMzEyNWE4MzkyMGQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAwMjo1Njo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NzgsNiAmIzQzOzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdGN4X3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfeGRwX3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xuJiM0MztcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xuIFx0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0XHRicGZfZGV2X2JvdW5kX25ldGRldl91bnJlZ2lzdGVyKGRldik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxuaW5kZXggNWQwYjAzMDVkM2JhYS4uYjc1N2ZhZWFkNGQxYSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuaFxuQEAgLTE3OSw2ICYjNDM7MTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHtcbiB2b2lkIF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbiB1bnNpZ25lZCBsb25nXG4gX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xuJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtMzEsNiAmIzQzOzMxLDEwIEBAIHN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXG4gXHRcdHJldHVybjtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbiYjNDM7XHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUpKSB7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSwgXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCk7XG4gXHRcdG5ldGRldl9ob2xkKGRldiwgXHUwMDI2ZGV2LVx1MDAzZXdvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG5AQCAtNjEsNiAmIzQzOzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbiBcdHJldHVybiBldmVudHM7XG4gfVxuIFxuJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbiYjNDM7XHRkZXYtXHUwMDNld29ya19wZW5kaW5nID0gMDtcbiYjNDM7XHRkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcgPSAwO1xuJiM0MztcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuJiM0MztcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKTtcbiYjNDM7XHRcdG5ldGRldl9wdXQoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya190cmFja2VyKTtcbiYjNDM7XHR9XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbiB7XG4gXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMzMjg1MjI0OGE4MTg2N2M0MWY1YzIzMjY3ZjEzMTI1YTgzOTIwZDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtMTI0NzgsNiAmIzQzOzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAogCQlkZXZfdGN4X3VuaW5zdGFsbChkZXYpOwogCQlkZXZfeGRwX3VuaW5zdGFsbChkZXYpOwogCQlkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpOwomIzQzOwkJbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpOwogCQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCQlicGZfZGV2X2JvdW5kX25ldGRldl91bnJlZ2lzdGVyKGRldik7CiAKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmgKaW5kZXggNWQwYjAzMDVkM2JhYS4uYjc1N2ZhZWFkNGQxYSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmgKQEAgLTE3OSw2ICYjNDM7MTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHsKIHZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpOwogdW5zaWduZWQgbG9uZwogX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spOwomIzQzO3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAogdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncywKIAkJCXVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCwKZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jCmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL25ldGRldl93b3JrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYwpAQCAtMzEsNiAmIzQzOzMxLDEwIEBAIHN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsCiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19iaCgmYW1wO25ldGRldl93b3JrX2xvY2spOwomIzQzOwlpZiAoIWRldl9pc2FsaXZlKGRldikpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7bmV0ZGV2X3dvcmtfbG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlpZiAobGlzdF9lbXB0eSgmYW1wO2Rldi0mZ3Q7d29ya19ub2RlKSkgewogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZGV2LSZndDt3b3JrX25vZGUsICZhbXA7bmV0ZGV2X3dvcmtfbGlzdCk7CiAJCW5ldGRldl9ob2xkKGRldiwgJmFtcDtkZXYtJmd0O3dvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7CkBAIC02MSw2ICYjNDM7NjUsMTggQEAgbmV0ZGV2X3dvcmtfZGVxdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nICpwZW5kaW5nLAogCXJldHVybiBldmVudHM7CiB9CiAKJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO25ldGRldl93b3JrX2xvY2spOwomIzQzOwlkZXYtJmd0O3dvcmtfcGVuZGluZyA9IDA7CiYjNDM7CWRldi0mZ3Q7d29ya19jb3JlX3BlbmRpbmcgPSAwOwomIzQzOwlpZiAoIWxpc3RfZW1wdHkoJmFtcDtkZXYtJmd0O3dvcmtfbm9kZSkpIHsKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDtkZXYtJmd0O3dvcmtfbm9kZSk7CiYjNDM7CQluZXRkZXZfcHV0KGRldiwgJmFtcDtkZXYtJmd0O3dvcmtfdHJhY2tlcik7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtuZXRkZXZfd29ya19sb2NrKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKQogewogCW5ldGRldl93b3JrX2VucXVldWUoZGV2LCBldmVudHMsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTmV0d29ya2luZyBDaGFuZ2UqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgY2FsbGluZyBpdCB3aXRoaW4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gVGhlcmUmIzM5O3MgYWxzbyBhIG5ldyBjaGVjayBmb3IgYCFkZXZfaXNhbGl2ZShkZXYpYCBpbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBoZXJlLgoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGJ1dCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgbW9yZSBpbW1lZGlhdGVseSByZWxldmFudCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIG5ldGRldmljZSB1bnJlZ2lzdHJhdGlvbjsgdGhhdCBoYXBwZW5zIGFsbCB0aGUgdGltZSwgcmlnaHQ/ICBEZXN0cm95aW5nIHZldGggcGFpcnMsIGR1bW15IGludGVyZmFjZXMsIHR1bm5lbHMsIGFuZCBzbyBvbi4uLml0JiMzOTtzIGEgZnJlcXVlbnQgb2NjdXJyZW5jZS4gIEFuZCwgdGhlbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgaXMgdXNlZCwgYXMgdGhlIG5hbWUgaW1wbGllcywgdG8gcXVldWUgdXAgd29yayBvbiBuZXRkZXZpY2VzLiBUaGUgaW5jbHVzaW9uIG9mIHRoYXQgY2hlY2ssIGAhZGV2X2lzYWxpdmUoZGV2KWAgaXMgcHJldHR5IGludGVyZXN0aW5nLiBJdCBtdXN0IG1lYW4gdGhlIHdvcmsgc2hvdWxkbiYjMzk7dCBiZSBleGVjdXRlZCBpZiB0aGUgZGV2aWNlIGhhcyBiZWVuIG1hcmtlZCBhcyBkZWFkLgoKSeKAmWxsIG5lZWQgdG8gdHJhY2sgZG93biBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGluIGBuZXQvY29yZS9kZXYuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTEyNDA3PWJvb2wgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MTItXG5uZXQvY29yZS9kZXYuYzoxMjQxMzp2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG5uZXQvY29yZS9kZXYuYy0xMjQxNC1cdFx0XHRcdCAgICAgIHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTU5PXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxubmV0L2NvcmUvZGV2LmMtMTI1NjAte1xubmV0L2NvcmUvZGV2LmM6MTI1NjE6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShoZWFkLCAwLCBOVUxMKTtcbm5ldC9jb3JlL2Rldi5jLTEyNTYyLX1cbi0tXG5uZXQvY29yZS9kZXYuaD0xODQ9dm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbi0tXG5uZXQvY29yZS9kZXYuaC0xODctXG5uZXQvY29yZS9kZXYuaDoxODg6dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxubmV0L2NvcmUvZGV2LmgtMTg5LVx0XHRcdFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xuLS1cbm5ldC9jb3JlL3J0bmV0bGluay5jPTM2MjI9aW50IHJ0bmxfZGVsZXRlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzYzMS1cdG9wcy1cdTAwM2VkZWxsaW5rKGRldiwgXHUwMDI2bGlzdF9raWxsKTtcbm5ldC9jb3JlL3J0bmV0bGluay5jOjM2MzI6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShcdTAwMjZsaXN0X2tpbGwsIHBvcnRpZCwgbmxoKTtcbm5ldC9jb3JlL3J0bmV0bGluay5jLTM2MzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgd2hpY2ggaXMgYSB0ZWFyZG93biBmdW5jdGlvbi4gQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCAqb25seSogY29udGFpbnMgc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEhvd2V2ZXIsIHRoaXMgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpc24mIzM5O3QgZHJpdmVyLXNwZWNpZmljOyBpdCYjMzk7cyBhIGNvcmUgbmV0d29yayBkZXZpY2UgdW5yZWdpc3RyYXRpb24gZnVuY3Rpb24uIEl0IGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgbmV0ZGV2aWNlIGlzIGRlc3Ryb3llZCwgd2hpY2ggY2FuIGhhcHBlbiB0aHJvdWdoIHZhcmlvdXMgbWVhbnMsIGxpa2UgdXNpbmcgcnRuZXRsaW5rLCBtZWFuaW5nIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcyEgSXQgbG9va3MgbGlrZSB0aGlzIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gY2FuY2VsaW5nIG9yIHByZXZlbnRpbmcgdGhlIGVucXVldWluZyBvZiB3b3JrIG9uIGEgbmV0ZGV2IHRoYXQgaXMgYmVpbmcgdW5yZWdpc3RlcmVkIGFuZCBpcyBhbHJlYWR5IGRlYWQuIFRoZSBjaGFuZ2VkIGZ1bmN0aW9ucyBhcmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX2VucXVldWVgLCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLgoKTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9ucyBtZW50aW9uZWQgYXJlIGFjdHVhbGx5IHJlbGF0ZWQgdG8gdGhpcyBmaXggYW5kIG5vdCBhIHJlZCBoZXJyaW5nLiBUaW1lIHRvIGNoZWNrIGBuZXRkZXZfd29ya19lbnF1ZXVlYCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfd29ya19lbnF1ZXVlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl93b3JrLmM9MjU9c3RhdGljIERFQ0xBUkVfV09SSyhuZXRkZXZfd29yaywgbmV0ZGV2X3dvcmtfcHJvYyk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTI2LVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yOC1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgY29yZSlcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTgwPXZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODI6XHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODMtfVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTA3PXZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDgte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDk6XHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgMCwgZXZlbnRzKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTEwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTQ0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gZGlzc2VjdGluZyBgbmV0ZGV2X3dvcmtfc2NoZWRgIGFuZCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYDoKCioqRGVsdmluZyBpbnRvIE5ldHdvcmsgRGV2aWNlIFdvcmsgU2NoZWR1bGluZyoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGludG8gZ2Vhci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLCBhcmUgYWN0dWFsbHkgKmRvaW5nKi4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBkZWVwbHkgaW52b2x2ZWQgd2l0aCBzY2hlZHVsaW5nIHdvcmsgcmVsYXRlZCB0byBuZXR3b3JrIGRldmljZXMsIHdoaWNoIGlzLCBvYnZpb3VzbHksIGEgY29yZSBhcmVhLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGRpZmZlcmVudCBraW5kcyBvZiBuZXR3b3JrIGRldmljZSBhY3Rpdml0eSBhbmQgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgbWlnaHQgcGxheSBpbnRvIHRoYXQ6IGludGVycnVwdCBoYW5kbGluZywgcGFja2V0IHByb2Nlc3NpbmcsIERNQSBjb21wbGV0aW9uLCBldCBjZXRlcmEuIElzIG9uZSBtb3JlIGdlbmVyaWMsIG9yIGxvd2VyIGxldmVsIHRoYW4gdGhlIG90aGVyPyBEb2VzIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIHJlcHJlc2VudCB0aGUgY29yZSBzY2hlZHVsaW5nIG1lY2hhbmlzbSB0aGF0IHRoZSBoaWdoZXIgbGV2ZWwgYG5ldGRldl93b3JrX3NjaGVkYCB1dGlsaXplcz8gSSBuZWVkIHRvIGxvb2sgaW50byBob3cgdGhlIG5ldHdvcmtpbmcgc3RhY2sgaXMgY29uc3RydWN0ZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGhvb2tzIGFyZSBwbGFjZWQsIGhvdyB0aGV5JiMzOTtyZSBjYWxsZWQsIGFuZCB3aGF0IGNvbnRleHQgdGhleSYjMzk7cmUgY2FsbGVkIGZyb20uIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCB3aGVyZSB0aGV5JiMzOTtyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhleSYjMzk7cmUgdXNlZC4gSSBzaG91bGQgYmUgYWJsZSB0byBzdGFydCBieSBpZGVudGlmeWluZyBhbGwgY2FsbGVycyBhbmQgdGhlbiBhbmFseXplIHRoZSBjYWxsaW5nIGNvbnRleHQsIHRoYXQgd2F5IHRoZSB1c2UgY2FzZXMgYmVjb21lIHZlcnkgYXBwYXJlbnQsIHZlcnkgcXVpY2tseS4gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IHRoZSB3b3JrIHF1ZXVlL3NjaGVkdWxpbmcgaXMgbmV0d29yayBkZXZpY2UgcmVsYXRlZCBhbmQgaXMgbGlrZWx5IGRyaXZlbiBieSBhc3luY2hyb25vdXMgYWN0aXZpdHkgZnJvbSBoYXJkd2FyZS4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgbWVjaGFuaXNtIGZvciBkZWZlcnJpbmcgd29yayBmcm9tIGludGVycnVwdCBjb250ZXh0IHRvIGEgbW9yZSBzdWl0YWJsZSB0YXNrIGNvbnRleHQsIGFuZCBJJiMzOTtkIGxpa2UgdG8gcXVpY2tseSBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgZGVlcCB3ZSBuZWVkIHRvIGdvIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X3dvcmtfc2NoZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xMDYzPXN0cnVjdCBuZXRkZXZfbmV0X25vdGlmaWVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzUtICogdm9pZCAoKm5kb193b3JrKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjExMzY6ICpcdFJ1biBkZWZlcnJlZCB3b3JrIHNjaGVkdWxlZCB3aXRoIG5ldGRldl93b3JrX3NjaGVkKEBldmVudHMpLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM3LSAqXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODEwPWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xOTQzLSAqXHRAd29ya19wZW5kaW5nOlx0XHREcml2ZXItZGVmaW5lZCBwZW5kaW5nIG5ldGRldl93b3JrLCBwYXNzZWQgdG9cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlx0XHRcdFx0bmRvX3dvcmsoKSAoc2VlIG5ldGRldl93b3JrX3NjaGVkKCkpXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDUtICpcdEB3b3JrX2NvcmVfcGVuZGluZzpcdENvcmUtZGVmaW5lZCBwZW5kaW5nIG5ldGRldl93b3JrIChORVRERVZfV09SS18qKVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTIxMz12b2lkIGRldl9nZXRfdHN0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNC1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6NTIxNTp2b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNi11bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xuLS1cbm5ldC84MDIxcS92bGFuLmM9MzY4PXN0YXRpYyBpbnQgdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MjQtXG5uZXQvODAyMXEvdmxhbi5jOjQyNTpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfTVRVKTtcbm5ldC84MDIxcS92bGFuLmMtNDI2LVx0XHR9XG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MzAtXHRcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcbm5ldC84MDIxcS92bGFuLmM6NDMxOlx0XHRcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19GRUFUVVJFUyk7XG5uZXQvODAyMXEvdmxhbi5jLTQzMi1cdFx0YnJlYWs7XG4tLVxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXHRcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcbm5ldC84MDIxcS92bGFuLmM6NDM3Olx0XHRcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcbm5ldC84MDIxcS92bGFuLmMtNDM4LVx0XHRicmVhaztcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTY4PXZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzktXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjgwOnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgzLX1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODQ6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19zY2hlZCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFdvcmsgU2NoZWR1bGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIGZ1bmN0aW9uYWxpdHkg4oCTIHNwZWNpZmljYWxseSwgaG93IGRyaXZlcnMsIGxpa2UgVkxBTiBmb3IgaW5zdGFuY2UsIHNjaGVkdWxlIHdvcmsgdXNpbmcgYG5ldGRldl93b3JrX3NjaGVkYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgbW9kaWZ5aW5nIGBuZXRkZXZfd29ya19lbnF1ZXVlYCB0byBpbmNvcnBvcmF0ZSBhIGNoZWNrIGZvciBgIWRldl9pc2FsaXZlKGRldilgIGFuZCB0aGUgaW50cm9kdWN0aW9uIG9mIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhlIGxhdHRlciBpcyBpbnZva2VkIGZyb20gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBtb2RpZmljYXRpb24sIGEgZnVuZGFtZW50YWwgY2hhbmdlLiBHaXZlbiB0aGlzLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCBgcnRubF9kZWxldGVfbGlua2AgZm9yIGZvY3VzLCBidXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyByZWFsbHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBldmVuIHRob3VnaCBpdCYjMzk7cyBhIHRlYXJkb3duIGZ1bmN0aW9uLiBUaGF0IHNhaWQsIEkgc2hvdWxkIGZvY3VzIG9uIGhvdyB0aGF0IGlzIGFsbCBsaW5rZWQgd2l0aCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgYW5kIGBuZXRkZXZfd29ya19zY2hlZGAuIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgY2FsbGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuCgpOb3csIEkgd2FudCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMuIFRoZSBzb3VyY2UgZmlsZXMsIGBuZXQvY29yZS9kZXYuY2AgYW5kIGBuZXQvY29yZS9uZXRkZXZfd29yay5jYCwgYXJlIGNvbXBpbGVkIGJ5IGRlZmF1bHQgZm9yIG5ldHdvcmtpbmcsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9jb3JlL01ha2VmaWxlYCBmb3IgYW55IHBvdGVudGlhbCBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzI0PXN0YXRpYyB2b2lkIHB2cmRtYV9uZXRkZXZpY2VfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTcyNS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyNjpcdHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmsgKm5ldGRldl93b3JrO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MjctXHRzdHJ1Y3QgcHZyZG1hX2RldiAqZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MjgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyOTpcdG5ldGRldl93b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmssIHdvcmspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzAtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzItXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2cHZyZG1hX2RldmljZV9saXN0LCBkZXZpY2VfbGluaykge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzM6XHRcdGlmICgobmV0ZGV2X3dvcmstXHUwMDNlZXZlbnQgPT0gTkVUREVWX1JFR0lTVEVSKSB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzQ6XHRcdCAgICAoZGV2LVx1MDAzZW5ldGRldiA9PSBuZXRkZXZfd29yay1cdTAwM2VldmVudF9uZXRkZXYpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczNS1cdFx0XHRwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X2hhbmRsZShkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNjpcdFx0XHRcdFx0XHQgICAgICBuZXRkZXZfd29yay1cdTAwM2VldmVudF9uZXRkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNzpcdFx0XHRcdFx0XHQgICAgICBuZXRkZXZfd29yay1cdTAwM2VldmVudCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczOC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTc0Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzQzOlx0a2ZyZWUobmV0ZGV2X3dvcmspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDQtfVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzQ2PXN0YXRpYyBpbnQgcHZyZG1hX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDktXHRzdHJ1Y3QgbmV0X2RldmljZSAqZXZlbnRfbmV0ZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1MDpcdHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmsgKm5ldGRldl93b3JrO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1MjpcdG5ldGRldl93b3JrID0ga21hbGxvY19vYmooKm5ldGRldl93b3JrLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzUzOlx0aWYgKCFuZXRkZXZfd29yaylcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzU0LVx0XHRyZXR1cm4gTk9USUZZX0JBRDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzU1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTY6XHRJTklUX1dPUksoXHUwMDI2bmV0ZGV2X3dvcmstXHUwMDNld29yaywgcHZyZG1hX25ldGRldmljZV9ldmVudF93b3JrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU3Olx0bmV0ZGV2X3dvcmstXHUwMDNlZXZlbnRfbmV0ZGV2ID0gZXZlbnRfbmV0ZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTg6XHRuZXRkZXZfd29yay1cdTAwM2VldmVudCA9IGV2ZW50O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTk6XHRxdWV1ZV93b3JrKGV2ZW50X3dxLCBcdTAwMjZuZXRkZXZfd29yay1cdTAwM2V3b3JrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xMzI9c3RydWN0IGl3bF9tZWlfZmlsdGVycyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE2My0gKlx0YWNjZXNzZWQgd2l0aG91dCB0aGUgbXV0ZXguXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6MTY0OiAqIEBuZXRkZXZfd29yazogdXNlZCB0byBkZWZlciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyBvZiB0aGUgbmV0ZGV2IHRvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMTY1LSAqXHRhdm9pZCB0YWtpbmcgdGhlIHJ0bmwgbG9jayBpbiB0aGUgU0FQIG1lc3NhZ2VzIGhhbmRsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xNzI9c3RydWN0IGl3bF9tZWkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xODktXHRzcGlubG9ja190IGRhdGFfcV9sb2NrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjE5MDpcdHN0cnVjdCB3b3JrX3N0cnVjdCBuZXRkZXZfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTEtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIG93bmVyc2hpcF9kd29yaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9NTk3PXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGl3bF9tZWlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTYzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo2Mzc6c3RhdGljIHZvaWQgaXdsX21laV9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTYzOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjM5LVx0c3RydWN0IGl3bF9tZWkgKm1laSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6NjQwOlx0XHRjb250YWluZXJfb2Yod2ssIHN0cnVjdCBpd2xfbWVpLCBuZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjQxLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9ODE2PXN0YXRpYyB2b2lkIGl3bF9tZWlfaGFuZGxlX2FtdF9zdGF0ZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTgzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo4MzM6XHRzY2hlZHVsZV93b3JrKFx1MDAyNm1laS1cdTAwM2VuZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtODM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xOTY0PXN0YXRpYyBpbnQgaXdsX21laV9wcm9iZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODEtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZtZWktXHUwMDNlZGF0YV9xX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjE5ODI6XHRJTklUX1dPUksoXHUwMDI2bWVpLVx1MDAzZW5ldGRldl93b3JrLCBpd2xfbWVpX25ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTgzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bWVpLVx1MDAzZW93bmVyc2hpcF9kd29yaywgaXdsX21laV9vd25lcnNoaXBfZHdvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0yMDUzPXN0YXRpYyB2b2lkIGl3bF9tZWlfcmVtb3ZlKHN0cnVjdCBtZWlfY2xfZGV2aWNlICpjbGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMjE2MC1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtZWktXHUwMDNlY3NhX3Rocm90dGxlX2VuZF93ayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6MjE2MTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bWVpLVx1MDAzZW5ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0yMTYyLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1laS1cdTAwM2Vvd25lcnNoaXBfZHdvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTY3PXN0cnVjdCBiYW1fZG11eCB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODUtXHRERUNMQVJFX0JJVE1BUChyZW1vdGVfY2hhbm5lbHMsIEJBTV9ETVVYX05VTV9DSCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NjpcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdpc3Rlcl9uZXRkZXZfd29yaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg3LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldnNbQkFNX0RNVVhfTlVNX0NIXTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDI5LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDMwOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzMS17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0MzI6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGJhbV9kbXV4LCByZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MzMtXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz01Mzk9c3RhdGljIHZvaWQgYmFtX2RtdXhfY21kX29wZW4oc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTUzLVx0XHQvKiBDYW5ub3Qgc2xlZXAgaGVyZSwgc2NoZWR1bGUgd29yayB0byByZWdpc3RlciB0aGUgbmV0ZGV2ICovXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1NTQ6XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NzY1PXN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MDQtXHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODA1Olx0SU5JVF9XT1JLKFx1MDAyNmRtdXgtXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmssIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwNi1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz04NTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU4LVx0LyogVW5yZWdpc3RlciBuZXR3b3JrIGludGVyZmFjZXMgKi9cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg1OTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NjAtXHRydG5sX2xvY2soKTtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTEwNjM9c3RydWN0IG5ldGRldl9uZXRfbm90aWZpZXIge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTEzNS0gKiB2b2lkICgqbmRvX3dvcmspKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTEzNjogKlx0UnVuIGRlZmVycmVkIHdvcmsgc2NoZWR1bGVkIHdpdGggbmV0ZGV2X3dvcmtfc2NoZWQoQGV2ZW50cykuXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzctICpcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTA9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDAtICpcdFx0XHRcdGRvZXMgbm90IGltcGxlbWVudCBuZG9fc2V0X3J4X21vZGUoKVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxOTQxOiAqXHRAd29ya19ub2RlOlx0XHRMaXN0IGVudHJ5IGZvciBhc3luYyBuZXRkZXZfd29yayBwcm9jZXNzaW5nXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDI6ICpcdEB3b3JrX3RyYWNrZXI6XHRcdFJlZmNvdW50IHRyYWNrZXIgZm9yIGFzeW5jIG5ldGRldl93b3JrXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDM6ICpcdEB3b3JrX3BlbmRpbmc6XHRcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxOTQ0OiAqXHRcdFx0XHRuZG9fd29yaygpIChzZWUgbmV0ZGV2X3dvcmtfc2NoZWQoKSlcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NTogKlx0QHdvcmtfY29yZV9wZW5kaW5nOlx0Q29yZS1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmsgKE5FVERFVl9XT1JLXyopXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDYtICpcdEByeF9tb2RlX2FkZHJfY2FjaGU6XHRSZWN5Y2xlZCBzbmFwc2hvdCBlbnRyaWVzIGZvciByeF9tb2RlIHdvcmtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTUyMTM9dm9pZCBkZXZfZ2V0X3RzdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyMTQtXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTU6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTY6dW5zaWduZWQgbG9uZyBuZXRkZXZfd29ya19jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNy1cbi0tXG5uZXQvODAyMXEvdmxhbi5jPTM2OD1zdGF0aWMgaW50IHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxuLS1cbm5ldC84MDIxcS92bGFuLmMtNDI0LVxubmV0LzgwMjFxL3ZsYW4uYzo0MjU6XHRcdFx0bmV0ZGV2X3dvcmtfc2NoZWQodmxhbmRldiwgVkxBTl9XT1JLX01UVSk7XG5uZXQvODAyMXEvdmxhbi5jLTQyNi1cdFx0fVxuLS1cbm5ldC84MDIxcS92bGFuLmMtNDMwLVx0XHR2bGFuX2dyb3VwX2Zvcl9lYWNoX2RldihncnAsIGksIHZsYW5kZXYpXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xubmV0LzgwMjFxL3ZsYW4uYy00MzItXHRcdGJyZWFrO1xuLS1cbm5ldC84MDIxcS92bGFuLmMtNDM2LVx0XHR2bGFuX2dyb3VwX2Zvcl9lYWNoX2RldihncnAsIGksIHZsYW5kZXYpXG5uZXQvODAyMXEvdmxhbi5jOjQzNzpcdFx0XHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfTElOS19TVEFURSk7XG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cdFx0YnJlYWs7XG4tLVxubmV0LzgwMjFxL3ZsYW4uaD0xMjY9dm9pZCB2bGFuX2ZpbHRlcl9kcm9wX3ZpZHMoc3RydWN0IHZsYW5faW5mbyAqdmxhbl9pbmZvLCBfX2JlMTYgcHJvdG8pO1xubmV0LzgwMjFxL3ZsYW4uaC0xMjctXG5uZXQvODAyMXEvdmxhbi5oOjEyODovKiBuZXRkZXZfd29yayBldmVudHMgcHJvcGFnYXRlZCBmcm9tIHRoZSByZWFsIGRldmljZSwgc2VlIHZsYW5fZGV2X3dvcmsoKS4gKi9cbm5ldC84MDIxcS92bGFuLmgtMTI5LWVudW0ge1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jPTI2Mz1zdGF0aWMgaW50IHZsYW5fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0yNzMtXHQvKiBUaGUgZXhwbGljaXQgb3BlbiBzdXBlcnNlZGVzIGFueSBkZWZlcnJlZCBsaW5rLXN0YXRlIHN5bmMgKi9cbm5ldC84MDIxcS92bGFuX2Rldi5jOjI3NDpcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3NS1cbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0zMDE9c3RhdGljIGludCB2bGFuX2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMzA2LVx0LyogVGhlIGV4cGxpY2l0IGNsb3NlIHN1cGVyc2VkZXMgYW55IGRlZmVycmVkIGxpbmstc3RhdGUgc3luYyAqL1xubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MzA3Olx0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgVkxBTl9XT1JLX0xJTktfU1RBVEUpO1xubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMzA4LVxuLS1cbm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XHRcdCAgICAgJiM0Mzs9IGRldi5vIGRldl9hcGkubyBkZXZfYWRkcl9saXN0cy5vIGRzdC5vIG5ldGV2ZW50Lm8gXFxcbi0tXG5uZXQvY29yZS9NYWtlZmlsZS0xNS1cdFx0XHRmaWJfbm90aWZpZXIubyB4ZHAubyBmbG93X29mZmxvYWQubyBncm8ubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTY6XHRcdFx0bmV0ZGV2LWdlbmwubyBuZXRkZXYtZ2VubC1nZW4ubyBuZXRkZXZfd29yay5vIGdzby5vXG5uZXQvY29yZS9NYWtlZmlsZS0xNy1cbi0tXG5uZXQvY29yZS9kZXYuYz0xMjQxMz12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0ODAtXHRcdGRldl9tZW1vcnlfcHJvdmlkZXJfdW5pbnN0YWxsKGRldik7XG5uZXQvY29yZS9kZXYuYzoxMjQ4MTpcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xubmV0L2NvcmUvZGV2LmMtMTI0ODItXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L2NvcmUvZGV2Lmg9MTcyPXZvaWQgbmV0aWZfcnhfbW9kZV9jYW5jZWxfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxubmV0L2NvcmUvZGV2LmgtMTc0LS8qIEV2ZW50cyBmb3IgdGhlIGFzeW5jIG5ldGRldiB3b3JrLCB0cmFja2VkIGluIG5ldGRldi1cdTAwM2V3b3JrX2NvcmVfcGVuZGluZy4gKi9cbm5ldC9jb3JlL2Rldi5oOjE3NTplbnVtIG5ldGRldl93b3JrX2NvcmUge1xubmV0L2NvcmUvZGV2LmgtMTc2LVx0TkVUREVWX1dPUktfUlhfTU9ERVx0PSBCSVQoMCksXHQvKiBydW4gdGhlIHJ4X21vZGUgdXBkYXRlICovXG4tLVxubmV0L2NvcmUvZGV2LmgtMTc4LVxubmV0L2NvcmUvZGV2Lmg6MTc5OnZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xubmV0L2NvcmUvZGV2LmgtMTgwLXVuc2lnbmVkIGxvbmdcbm5ldC9jb3JlL2Rldi5oOjE4MTpfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7XG5uZXQvY29yZS9kZXYuaDoxODI6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTgzLVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM9MTMzNT1zdGF0aWMgdm9pZCBuZXRpZl9yeF9tb2RlX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzYte1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxMzM3Olx0X19uZXRkZXZfd29ya19jb3JlX3NjaGVkKGRldiwgTkVUREVWX1dPUktfUlhfTU9ERSk7XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzgtfVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM9MTQwOD12b2lkIG5ldGlmX3J4X21vZGVfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDA5LXtcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM6MTQxMDpcdGlmIChfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgTkVUREVWX1dPUktfUlhfTU9ERSkpXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTE0MTEtXHRcdG5ldGlmX3J4X21vZGVfcnVuKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM6c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcHJvYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTU6LyogQG5ldGRldl93b3JrX2xvY2sgcHJvdGVjdHM6XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2OiAqICAtIEBuZXRkZXZfd29ya19saXN0XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3LSAqICAtIHdpdGhpbiB0aGUgbGlzdCBlbnRyaWVzIChzdHJ1Y3QgbmV0X2RldmljZSBmaWVsZHMpOlxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjItICovXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjIzOnN0YXRpYyBMSVNUX0hFQUQobmV0ZGV2X3dvcmtfbGlzdCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI0OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI1OnN0YXRpYyBERUNMQVJFX1dPUksobmV0ZGV2X3dvcmssIG5ldGRldl93b3JrX3Byb2MpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yNi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Mjc6c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjgtXHRcdFx0XHR1bnNpZ25lZCBsb25nIGNvcmUpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zMi1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzM6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM0LVx0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKSB7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjM1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMzYtXHRcdHJldHVybjtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM4LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSkpIHtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Mzk6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZXdvcmtfbm9kZSwgXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQwLVx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDMtXHRkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcgfD0gY29yZTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NDQ6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDUtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjQ2Olx0c2NoZWR1bGVfd29yayhcdTAwMjZuZXRkZXZfd29yayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQ3LX1cbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTQ5PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjUwOm5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNTEtXHRcdCAgICB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy01NC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NTU6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU2LVx0ZXZlbnRzID0gKnBlbmRpbmcgXHUwMDI2IG1hc2s7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02Mi1cdH1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NjM6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjQtXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02Ny1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Njg6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTY5LXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NzA6XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTcxLVx0ZGV2LVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03Ni1cdH1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Nzc6XHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzgtfVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODA6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODEte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo4MjpcdG5ldGRldl93b3JrX2VucXVldWUoZGV2LCBldmVudHMsIDApO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04My19XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg0OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfc2NoZWQpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04NS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODYtLyoqXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg3OiAqIG5ldGRldl93b3JrX2NhbmNlbCgpIC0gY2FuY2VsIHNlbGVjdGVkIHdvcmsgZm9yIGEgbmV0ZGV2XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTg4LSAqIEBkZXY6IG5ldF9kZXZpY2Vcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwMC0gKi9cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAxOnVuc2lnbmVkIGxvbmcgbmV0ZGV2X3dvcmtfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzaylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTAyLXtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAzOlx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19wZW5kaW5nLCBtYXNrKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA0LX1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTA1OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfY2FuY2VsKTtcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA2LVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDc6dm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwOC17XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwOTpcdG5ldGRldl93b3JrX2VucXVldWUoZGV2LCAwLCBldmVudHMpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTAtfVxuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTEyPXVuc2lnbmVkIGxvbmdcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTEzOl9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTQte1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMTU6XHRyZXR1cm4gbmV0ZGV2X3dvcmtfZGVxdWV1ZShkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX2NvcmVfcGVuZGluZywgbWFzayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNi19XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNy1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTE4OnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTE5LVx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMjktXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEzMDpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19wcm9jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTMxLXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEzOC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM5Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE0MDpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCkpIHtcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTQxOlx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNDItXHRcdFx0YnJlYWs7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0My1cdFx0fVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDQ6XHRcdGRldiA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2bmV0ZGV2X3dvcmtfbGlzdCwgc3RydWN0IG5ldF9kZXZpY2UsXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0NS1cdFx0XHRcdCAgICAgICB3b3JrX25vZGUpO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTUyLVx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNnRyYWNrZXIsIEdGUF9BVE9NSUMpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNTM6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNTQtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NS1cdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1NjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNTctXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTY4LVx0XHR9XG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2OTpcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3MC1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTcxOlx0XHRuZXRkZXZfd29ya19ydW4oZGV2LCBldmVudHMsIGNvcmUpO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNzItXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3ZsYW5fcmVhbF9kZXYuc2gtNy0jIFRoZSBrZXJuZWwgbWlycm9ycyBhIHJlYWwgZGV2aWNlJiMzOTtzIFVQL0RPV04sIE1UVSBhbmQgZmVhdHVyZSBjaGFuZ2VzIG9udG8gaXRzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfdmxhbl9yZWFsX2Rldi5zaDo4OiMgVkxBTnMuICBUaGlzIGlzIGRvbmUgYXN5bmNocm9ub3VzbHkgKG5ldGRldl93b3JrKTogZG9pbmcgaXQgc3luY2hyb25vdXNseSBmcm9tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfdmxhbl9yZWFsX2Rldi5zaC05LSMgdGhlIHJlYWwgZGV2aWNlJiMzOTtzIG5vdGlmaWVyIGNvdWxkIGRlYWRsb2NrLiAgSWYgdGhlIHJlYWwgZGV2aWNlIGlzIGJyb3VnaHQgdXBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb3JlIE5ldHdvcmsgRGV2aWNlIFdvcmtxdWV1ZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBsb29rIGF0IHNlZW0gdG8gYmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFdhaXQsIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBjYWxsZWQgZnJvbSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBzbyB0aGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpJdCBsb29rcyBsaWtlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGFyZSB0aGUgZnVuY3Rpb25zIHByaW1hcmlseSByZXNwb25zaWJsZSBmb3IgKmVucXVldWluZyogd29yayBvbnRvIHRoZSB3b3JrcXVldWUuIFNob3VsZCBJIGluY2x1ZGUgYHJ0bmxfZGVsZXRlX2xpbmtgIG9yIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWA/IE9rYXksIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNvcmUgZGV2aWNlIGNvZGUsIGluIGBuZXQvY29yZS9kZXYuY2AgYW5kIGRlY2xhcmVkIGluIGBuZXQvY29yZS9kZXYuaGAsIHNvIGl0IGlzbiYjMzk7dCBleHBvcnRlZC4gYG5ldGRldl93b3JrX3NjaGVkYCBpcyBleHBvcnRlZCwgdGhvdWdoLiBBbmQsIEkgc2VlIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGlzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Rldi5oYC4gU28sIEkmIzM5O2xsIGdvIHdpdGggYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGZvciBub3cuCgpXYWl0IGEgbWludXRlLCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaXMgYWN0dWFsbHkgYWRkZWQgYnkgdGhpcyBwYXRjaCwgc28gSSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBvbmUgdG9vLiAgQW5kIEkgc2VlIHRoYXQgYG5ldGRldl93b3JrX2VucXVldWVgIGlzIG1vZGlmaWVkLiBCdXQsIHNpbmNlIGl0JiMzOTtzIGRlY2xhcmVkIHN0YXRpYywgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciBteSB1bmRlcnN0YW5kaW5nIGFyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLiBBbmQsIG9mIGNvdXJzZSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCBhcyB3ZWxsLgoKQWxyaWdodCwgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbmV0L2NvcmUvZGV2LmNgLCBpdCYjMzk7cyBjb21waWxlZCBhcyBsb25nIGFzIGBDT05GSUdfTkVUYCBpcyBlbmFibGVkLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE5vIHVudXN1YWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHdvcnJ5IGFib3V0LgoKT25lIGZpbmFsIGNoZWNrLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBkZXZfaXNhbGl2ZShkZXYpYCBjYWxsIHdpdGhpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldl9pc2FsaXZlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5oPTQwOT1pbnQgbmV0X2h3dHN0YW1wX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjZmcpO1xuLS1cbm5ldC9jb3JlL2Rldi5oLTQxMS0vKiBDYWxsZXIgaG9sZHMgUlROTCwgbmV0ZGV2LVx1MDAzZWxvY2sgb3IgUkNVICovXG5uZXQvY29yZS9kZXYuaDo0MTI6c3RhdGljIGlubGluZSBib29sIGRldl9pc2FsaXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvY29yZS9kZXYuaC00MTMte1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTY5PXN0YXRpYyBpbnQgc3lzZnNfcnRubF9sb2NrKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTEwMi1cdCAqL1xubmV0L2NvcmUvbmV0LXN5c2ZzLmM6MTAzOlx0aWYgKCFkZXZfaXNhbGl2ZShuZGV2KSkge1xubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTEyMj1zdGF0aWMgc3NpemVfdCBuZXRkZXZfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTI5LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2NvcmUvbmV0LXN5c2ZzLmM6MTMwOlx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTMxLVx0XHRyZXQgPSAoKmZvcm1hdCkobmRldiwgYnVmKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0xODk9bmV0ZGV2X2xvY2tfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yMDYtXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyMDc6XHRpZiAoZGV2X2lzYWxpdmUobmV0ZGV2KSkge1xubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjA4LVx0XHRyZXQgPSAoKnNldCkobmV0ZGV2LCBuZXcpO1xuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jPTI1ND1zdGF0aWMgc3NpemVfdCBhZGRyZXNzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNjItXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyNjM6XHRpZiAoZGV2X2lzYWxpdmUobmRldikpXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNjQtXHRcdHJldCA9IHN5c2ZzX2Zvcm1hdF9tYWMoYnVmLCBuZGV2LVx1MDAzZWRldl9hZGRyLCBuZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0yNzI9c3RhdGljIHNzaXplX3QgYnJvYWRjYXN0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI3OC1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjI3OTpcdGlmIChkZXZfaXNhbGl2ZShuZGV2KSlcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI4MC1cdFx0cmV0ID0gc3lzZnNfZm9ybWF0X21hYyhidWYsIG5kZXYtXHUwMDNlYnJvYWRjYXN0LCBuZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi0tXG5uZXQvY29yZS9uZXQtc3lzZnMuYz03Mjg9c3RhdGljIHNzaXplX3QgdGhyZWFkZWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtNzM1LVxubmV0L2NvcmUvbmV0LXN5c2ZzLmM6NzM2Olx0aWYgKGRldl9pc2FsaXZlKG5ldGRldikpXG5uZXQvY29yZS9uZXQtc3lzZnMuYy03MzctXHRcdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBmbXRfZGVjLCBSRUFEX09OQ0UobmV0ZGV2LVx1MDAzZXRocmVhZGVkKSk7XG4tLVxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9ODAyPXN0YXRpYyBzc2l6ZV90IG5ldHN0YXRfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbm5ldC9jb3JlL25ldC1zeXNmcy5jLTgxMi1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjgxMzpcdGlmIChkZXZfaXNhbGl2ZShkZXYpKSB7XG5uZXQvY29yZS9uZXQtc3lzZnMuYy04MTQtXHRcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCB0ZW1wO1xuLS1cbm5ldC9jb3JlL25ldGRldl93b3JrLmM9Mjc9c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbi0tXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozNDpcdGlmICghZGV2X2lzYWxpdmUoZGV2KSkge1xubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zNS1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYz0xMzA9c3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcHJvYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNjUtXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE2NjpcdFx0XHRpZiAoIWRldl9pc2FsaXZlKGRldikpXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE2Ny1cdFx0XHRcdGNvcmUgPSBldmVudHMgPSAwO1xuLS1cbm5ldC9jb3JlL3J0bmV0bGluay5jPTQyNTY9c3RhdGljIGludCBydG5sX2dldGxpbmsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtNDMxMS1cdFx0cnRubF9sb2NrKCk7XG5uZXQvY29yZS9ydG5ldGxpbmsuYzo0MzEyOlx0XHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcbm5ldC9jb3JlL3J0bmV0bGluay5jLTQzMTMtXHRcdFx0ZXJyID0gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwNDgKCQkJCQkJCW91dHB1dDogMTMxCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhpcyBOZXR3b3JraW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGlzc3VlIGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gSXQgc2VlbXMgbGlrZSB3ZSBoYXZlIGEgcHJvYmxlbSB3aGVyZSB3b3JrIHJlbGF0ZWQgdG8gYSBuZXR3b3JrIGRldmljZSAobmV0ZGV2IHdvcmspIGlzIGVpdGhlciBnZXR0aW5nIHNjaGVkdWxlZCBmb3IgYSBkZXZpY2UgdGhhdCYjMzk7cyBhbHJlYWR5IGRlYWQg4oCTIHdoaWNoIGlzIG9idmlvdXNseSBiYWQg4oCTIG9yIG5vdCBiZWluZyBwcm9wZXJseSBjYW5jZWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC4gVGhpcyBpcyBjbGFzc2ljIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhdHRlbnRpb24uCgpGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgY2xlYXIgd2luLiBJdCYjMzk7cyB0aGUga2luZCBvZiBidWcgdGhhdCBjb3VsZCBsZWFkIHRvIHN1YnRsZSBjb3JydXB0aW9uLCByZXNvdXJjZSBsZWFrcywgb3IgZXZlbiBjcmFzaGVzIGlmIGxlZnQgdW5jaGVja2VkLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgZnV6emluZyB0aGlzIGlzIGEgZ29vZCBpZGVhIHRvIGNvbmZpcm0gaXRzIGVmZmVjdGl2ZW5lc3MuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAsIGBuZXRkZXZfd29ya19zY2hlZGAsIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLiBUaGVzZSBhcmUgdGhlIHBvaW50cyBvZiBpbnRlcmVzdCB3aGVyZSB0aGUgZml4IGlzIGxpa2VseSBpbXBsZW1lbnRlZC4gSSBkb24mIzM5O3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZyByZXF1aXJlbWVudHMsIHRoYW5rZnVsbHk7IGBDT05GSUdfTkVUYCBzaG91bGQgYmUgc3VmZmljaWVudC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiB0aGUgcGF0Y2ggZW5zdXJlcyBwZW5kaW5nIG5ldGRldiB3b3JrIGlzIGNhbmNlbGxlZCBkdXJpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBhbmQgaXQgcHJldmVudHMgc2NoZWR1bGluZyBuZXcgd29yayBmb3IgZGV2aWNlcyB0aGF0IGFyZSBubyBsb25nZXIgYWN0aXZlLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhZGlseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBDcmVhdGluZyBhbmQgZGVzdHJveWluZyB2ZXRoIG9yIGR1bW15IGludGVyZmFjZXMgdXNpbmcgbmV0bGluayBvcGVyYXRpb25zIGFyZSBjb21tb24gYW5kIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLCBzbyBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gVGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB3aGVuIGNyYWZ0aW5nIHRlc3QgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDAyOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19zY2hlZCYjMzQ7LAogICAgJiMzNDtfX25ldGRldl93b3JrX2NvcmVfc2NoZWQmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUxLjY0ODI1NzIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMDQyOTk0ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUxLjY0ODI2NjM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NDkwODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzMyODUyMjQ4YTgxODY3YzQxZjVjMjMyNjdmMTMxMjVhODM5MjBkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBlNTBlZDY3N2RlNzI1Li5mY2EyNTc5N2VlZWNhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtMTI0NzgsNiArMTI0NzgsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuIFxcdFxcdGRldl90Y3hfdW5pbnN0YWxsKGRldik7XFxuIFxcdFxcdGRldl94ZHBfdW5pbnN0YWxsKGRldik7XFxuIFxcdFxcdGRldl9tZW1vcnlfcHJvdmlkZXJfdW5pbnN0YWxsKGRldik7XFxuK1xcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG4gXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0XFx0YnBmX2Rldl9ib3VuZF9uZXRkZXZfdW5yZWdpc3RlcihkZXYpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxcbmluZGV4IDVkMGIwMzA1ZDNiYWEuLmI3NTdmYWVhZDRkMWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmhcXG4rKysgYi9uZXQvY29yZS9kZXYuaFxcbkBAIC0xNzksNiArMTc5LDcgQEAgZW51bSBuZXRkZXZfd29ya19jb3JlIHtcXG4gdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XFxuIHVuc2lnbmVkIGxvbmdcXG4gX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIFxcbiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLFxcbiBcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXFxuaW5kZXggMzEwOWZhZTEzMmFkMS4uZTcyMWEwNmQ1OGRmMSAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXFxuKysrIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbkBAIC0zMSw2ICszMSwxMCBAQCBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbitcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRldi1cXHUwMDNld29ya19ub2RlKSkge1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSwgXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xcbiBcXHRcXHRuZXRkZXZfaG9sZChkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuQEAgLTYxLDYgKzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcXG4gXFx0cmV0dXJuIGV2ZW50cztcXG4gfVxcbiBcXG4rdm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG4rXFx0ZGV2LVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xcbitcXHRkZXYtXFx1MDAzZXdvcmtfY29yZV9wZW5kaW5nID0gMDtcXG4rXFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSkpIHtcXG4rXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpO1xcbitcXHRcXHRuZXRkZXZfcHV0KGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya190cmFja2VyKTtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxuK31cXG4rXFxuIHZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXFxuIHtcXG4gXFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIGV2ZW50cywgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUyLjExNzU2ODY2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUxNTczNjc3ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMzMjg1MjI0OGE4MTg2N2M0MWY1YzIzMjY3ZjEzMTI1YTgzOTIwZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDAyOjU2OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xuaW5kZXggZTUwZWQ2NzdkZTcyNS4uZmNhMjU3OTdlZWVjYSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5jXG4rKysgYi9uZXQvY29yZS9kZXYuY1xuQEAgLTEyNDc4LDYgKzEyNDc4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdGN4X3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfeGRwX3VuaW5zdGFsbChkZXYpO1xuIFx0XHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xuK1x0XHRuZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7XG4gXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4gXHRcdGJwZl9kZXZfYm91bmRfbmV0ZGV2X3VucmVnaXN0ZXIoZGV2KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuaCBiL25ldC9jb3JlL2Rldi5oXG5pbmRleCA1ZDBiMDMwNWQzYmFhLi5iNzU3ZmFlYWQ0ZDFhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmhcbisrKyBiL25ldC9jb3JlL2Rldi5oXG5AQCAtMTc5LDYgKzE3OSw3IEBAIGVudW0gbmV0ZGV2X3dvcmtfY29yZSB7XG4gdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmU3MjFhMDZkNThkZjEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4rKysgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtMzEsNiArMzEsMTAgQEAgc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfZW5xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuK1x0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKSB7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUsIFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xuIFx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNmRldi1cdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuQEAgLTYxLDYgKzY1LDE4IEBAIG5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcbiBcdHJldHVybiBldmVudHM7XG4gfVxuIFxuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdHNwaW5fbG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbitcdGRldi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xuK1x0ZGV2LVx1MDAzZXdvcmtfY29yZV9wZW5kaW5nID0gMDtcbitcdGlmICghbGlzdF9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya19ub2RlKSkge1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRldi1cdTAwM2V3b3JrX25vZGUpO1xuK1x0XHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2ZGV2LVx1MDAzZXdvcmtfdHJhY2tlcik7XG4rXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcbit9XG4rXG4gdm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcbiB7XG4gXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjUyLjExNzU3MDI0OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDcwODE0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBOZXR3b3JraW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgY2FsbGluZyBpdCB3aXRoaW4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gVGhlcmUncyBhbHNvIGEgbmV3IGNoZWNrIGZvciBgIWRldl9pc2FsaXZlKGRldilgIGluIGBuZXRkZXZfd29ya19lbnF1ZXVlYC4gVGhpcyBsb29rcyBsaWtlIGEgZmFpcmx5IHNpZ25pZmljYW50IGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBoZXJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgYnV0IEknbGwgZm9jdXMgb24gdGhlIG1vcmUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBuZXRkZXZpY2UgdW5yZWdpc3RyYXRpb247IHRoYXQgaGFwcGVucyBhbGwgdGhlIHRpbWUsIHJpZ2h0PyAgRGVzdHJveWluZyB2ZXRoIHBhaXJzLCBkdW1teSBpbnRlcmZhY2VzLCB0dW5uZWxzLCBhbmQgc28gb24uLi5pdCdzIGEgZnJlcXVlbnQgb2NjdXJyZW5jZS4gIEFuZCwgdGhlbiBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgaXMgdXNlZCwgYXMgdGhlIG5hbWUgaW1wbGllcywgdG8gcXVldWUgdXAgd29yayBvbiBuZXRkZXZpY2VzLiBUaGUgaW5jbHVzaW9uIG9mIHRoYXQgY2hlY2ssIGAhZGV2X2lzYWxpdmUoZGV2KWAgaXMgcHJldHR5IGludGVyZXN0aW5nLiBJdCBtdXN0IG1lYW4gdGhlIHdvcmsgc2hvdWxkbid0IGJlIGV4ZWN1dGVkIGlmIHRoZSBkZXZpY2UgaGFzIGJlZW4gbWFya2VkIGFzIGRlYWQuXG5cbknigJlsbCBuZWVkIHRvIHRyYWNrIGRvd24gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU2OjU2Ljc2NDY1NDA3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIzOTc4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTEyNDA3PWJvb2wgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWVkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMjQxMi1cXG5uZXQvY29yZS9kZXYuYzoxMjQxMzp2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxubmV0L2NvcmUvZGV2LmMtMTI0MTQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMjU1OT12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG5uZXQvY29yZS9kZXYuYy0xMjU2MC17XFxubmV0L2NvcmUvZGV2LmM6MTI1NjE6XFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoaGVhZCwgMCwgTlVMTCk7XFxubmV0L2NvcmUvZGV2LmMtMTI1NjItfVxcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTg0PXZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXFxuLS1cXG5uZXQvY29yZS9kZXYuaC0xODctXFxubmV0L2NvcmUvZGV2Lmg6MTg4OnZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG5uZXQvY29yZS9kZXYuaC0xODktXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xcbi0tXFxubmV0L2NvcmUvcnRuZXRsaW5rLmM9MzYyMj1pbnQgcnRubF9kZWxldGVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTM2MzEtXFx0b3BzLVxcdTAwM2VkZWxsaW5rKGRldiwgXFx1MDAyNmxpc3Rfa2lsbCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmM6MzYzMjpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShcXHUwMDI2bGlzdF9raWxsLCBwb3J0aWQsIG5saCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzYzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTY6NTguNTg4NjQwNzExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNDQzOTUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCB3aGljaCBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLiBCdXQgaG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0ICpvbmx5KiBjb250YWlucyBzcGVjaWZpYyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gSG93ZXZlciwgdGhpcyBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGlzbid0IGRyaXZlci1zcGVjaWZpYzsgaXQncyBhIGNvcmUgbmV0d29yayBkZXZpY2UgdW5yZWdpc3RyYXRpb24gZnVuY3Rpb24uIEl0IGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgbmV0ZGV2aWNlIGlzIGRlc3Ryb3llZCwgd2hpY2ggY2FuIGhhcHBlbiB0aHJvdWdoIHZhcmlvdXMgbWVhbnMsIGxpa2UgdXNpbmcgcnRuZXRsaW5rLCBtZWFuaW5nIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzISBJdCBsb29rcyBsaWtlIHRoaXMgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBjYW5jZWxpbmcgb3IgcHJldmVudGluZyB0aGUgZW5xdWV1aW5nIG9mIHdvcmsgb24gYSBuZXRkZXYgdGhhdCBpcyBiZWluZyB1bnJlZ2lzdGVyZWQgYW5kIGlzIGFscmVhZHkgZGVhZC4gVGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuXG5cbkxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbnMgbWVudGlvbmVkIGFyZSBhY3R1YWxseSByZWxhdGVkIHRvIHRoaXMgZml4IGFuZCBub3QgYSByZWQgaGVycmluZy4gVGltZSB0byBjaGVjayBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCB0byBjb25maXJtIG15IGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MDMuMzAzMDgyNjcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Njg1NDQzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3dvcmtfZW5xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfd29yay5jPTI1PXN0YXRpYyBERUNMQVJFX1dPUksobmV0ZGV2X3dvcmssIG5ldGRldl93b3JrX3Byb2MpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjYtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19lbnF1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMjgtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3JlKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYz04MD12b2lkIG5ldGRldl93b3JrX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODEte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODI6XFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIGV2ZW50cywgMCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04My19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTEwNz12b2lkIF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwOC17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDk6XFx0bmV0ZGV2X3dvcmtfZW5xdWV1ZShkZXYsIDAsIGV2ZW50cyk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1NzowNS4xNzE2MzE3MDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMxMDQyMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBkaXNzZWN0aW5nIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgOlxuXG4qKkRlbHZpbmcgaW50byBOZXR3b3JrIERldmljZSBXb3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW50byBnZWFyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYG5ldGRldl93b3JrX3NjaGVkYCBhbmQgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFyZSBhY3R1YWxseSAqZG9pbmcqLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgZGVlcGx5IGludm9sdmVkIHdpdGggc2NoZWR1bGluZyB3b3JrIHJlbGF0ZWQgdG8gbmV0d29yayBkZXZpY2VzLCB3aGljaCBpcywgb2J2aW91c2x5LCBhIGNvcmUgYXJlYS4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGRpZmZlcmVudCBraW5kcyBvZiBuZXR3b3JrIGRldmljZSBhY3Rpdml0eSBhbmQgaG93IHRoZXNlIHR3byBmdW5jdGlvbnMgbWlnaHQgcGxheSBpbnRvIHRoYXQ6IGludGVycnVwdCBoYW5kbGluZywgcGFja2V0IHByb2Nlc3NpbmcsIERNQSBjb21wbGV0aW9uLCBldCBjZXRlcmEuIElzIG9uZSBtb3JlIGdlbmVyaWMsIG9yIGxvd2VyIGxldmVsIHRoYW4gdGhlIG90aGVyPyBEb2VzIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIHJlcHJlc2VudCB0aGUgY29yZSBzY2hlZHVsaW5nIG1lY2hhbmlzbSB0aGF0IHRoZSBoaWdoZXIgbGV2ZWwgYG5ldGRldl93b3JrX3NjaGVkYCB1dGlsaXplcz8gSSBuZWVkIHRvIGxvb2sgaW50byBob3cgdGhlIG5ldHdvcmtpbmcgc3RhY2sgaXMgY29uc3RydWN0ZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGhvb2tzIGFyZSBwbGFjZWQsIGhvdyB0aGV5J3JlIGNhbGxlZCwgYW5kIHdoYXQgY29udGV4dCB0aGV5J3JlIGNhbGxlZCBmcm9tLiBJJ20gZ29pbmcgdG8gd2FudCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCB3aGVyZSB0aGV5J3JlIGRlZmluZWQsIGFuZCB3aGVyZSB0aGV5J3JlIHVzZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgYnkgaWRlbnRpZnlpbmcgYWxsIGNhbGxlcnMgYW5kIHRoZW4gYW5hbHl6ZSB0aGUgY2FsbGluZyBjb250ZXh0LCB0aGF0IHdheSB0aGUgdXNlIGNhc2VzIGJlY29tZSB2ZXJ5IGFwcGFyZW50LCB2ZXJ5IHF1aWNrbHkuIE15IGluaXRpYWwgZ3Vlc3MgaXMgdGhhdCB0aGUgd29yayBxdWV1ZS9zY2hlZHVsaW5nIGlzIG5ldHdvcmsgZGV2aWNlIHJlbGF0ZWQgYW5kIGlzIGxpa2VseSBkcml2ZW4gYnkgYXN5bmNocm9ub3VzIGFjdGl2aXR5IGZyb20gaGFyZHdhcmUuIEknbSBwcm9iYWJseSBsb29raW5nIGF0IGEgbWVjaGFuaXNtIGZvciBkZWZlcnJpbmcgd29yayBmcm9tIGludGVycnVwdCBjb250ZXh0IHRvIGEgbW9yZSBzdWl0YWJsZSB0YXNrIGNvbnRleHQsIGFuZCBJJ2QgbGlrZSB0byBxdWlja2x5IGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQncyBzZWUgaG93IGRlZXAgd2UgbmVlZCB0byBnbyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQ0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MDguODAyNjc2NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MzEzMTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29ya19zY2hlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTEwNjM9c3RydWN0IG5ldGRldl9uZXRfbm90aWZpZXIge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM1LSAqIHZvaWQgKCpuZG9fd29yaykoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTEzNjogKlxcdFJ1biBkZWZlcnJlZCB3b3JrIHNjaGVkdWxlZCB3aXRoIG5ldGRldl93b3JrX3NjaGVkKEBldmVudHMpLlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTEzNy0gKlxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODEwPWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDMtICpcXHRAd29ya19wZW5kaW5nOlxcdFxcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlxcdFxcdFxcdFxcdG5kb193b3JrKCkgKHNlZSBuZXRkZXZfd29ya19zY2hlZCgpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTk0NS0gKlxcdEB3b3JrX2NvcmVfcGVuZGluZzpcXHRDb3JlLWRlZmluZWQgcGVuZGluZyBuZXRkZXZfd29yayAoTkVUREVWX1dPUktfKilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NTIxMz12b2lkIGRldl9nZXRfdHN0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTUyMTQtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1MjE1OnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNi11bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYz0zNjg9c3RhdGljIGludCB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCwgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDI0LVxcbm5ldC84MDIxcS92bGFuLmM6NDI1OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19NVFUpO1xcbm5ldC84MDIxcS92bGFuLmMtNDI2LVxcdFxcdH1cXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDMwLVxcdFxcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcXHRcXHRcXHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xcbm5ldC84MDIxcS92bGFuLmMtNDMyLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXFx0XFx0dmxhbl9ncm91cF9mb3JfZWFjaF9kZXYoZ3JwLCBpLCB2bGFuZGV2KVxcbm5ldC84MDIxcS92bGFuLmM6NDM3OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9Njg9dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTc5LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODA6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cylcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgxLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODMtfVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6ODQ6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19zY2hlZCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDI6NTc6MTAuNjY1ODEzODg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMzIxODEwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgV29yayBTY2hlZHVsaW5nIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGRldmljZSBmdW5jdGlvbmFsaXR5IOKAkyBzcGVjaWZpY2FsbHksIGhvdyBkcml2ZXJzLCBsaWtlIFZMQU4gZm9yIGluc3RhbmNlLCBzY2hlZHVsZSB3b3JrIHVzaW5nIGBuZXRkZXZfd29ya19zY2hlZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIG1vZGlmeWluZyBgbmV0ZGV2X3dvcmtfZW5xdWV1ZWAgdG8gaW5jb3Jwb3JhdGUgYSBjaGVjayBmb3IgYCFkZXZfaXNhbGl2ZShkZXYpYCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoZSBsYXR0ZXIgaXMgaW52b2tlZCBmcm9tIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBtb2RpZmljYXRpb24sIGEgZnVuZGFtZW50YWwgY2hhbmdlLiBHaXZlbiB0aGlzLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBhYm91dCBgcnRubF9kZWxldGVfbGlua2AgZm9yIGZvY3VzLCBidXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyByZWFsbHkgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBldmVuIHRob3VnaCBpdCdzIGEgdGVhcmRvd24gZnVuY3Rpb24uIFRoYXQgc2FpZCwgSSBzaG91bGQgZm9jdXMgb24gaG93IHRoYXQgaXMgYWxsIGxpbmtlZCB3aXRoIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBhbmQgYG5ldGRldl93b3JrX3NjaGVkYC4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBjYWxsaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC5cblxuTm93LCBJIHdhbnQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzLiBUaGUgc291cmNlIGZpbGVzLCBgbmV0L2NvcmUvZGV2LmNgIGFuZCBgbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY2AsIGFyZSBjb21waWxlZCBieSBkZWZhdWx0IGZvciBuZXR3b3JraW5nLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgZm9yIGFueSBwb3RlbnRpYWwgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjE2LjM4OTAzNTMwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMzY3ODk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29ya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jPTcyND1zdGF0aWMgdm9pZCBwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzI1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjcyNjpcXHRzdHJ1Y3QgcHZyZG1hX25ldGRldmljZV93b3JrICpuZXRkZXZfd29yaztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTcyNy1cXHRzdHJ1Y3QgcHZyZG1hX2RldiAqZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzI4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzI5OlxcdG5ldGRldl93b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBwdnJkbWFfbmV0ZGV2aWNlX3dvcmssIHdvcmspO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03MzItXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsIFxcdTAwMjZwdnJkbWFfZGV2aWNlX2xpc3QsIGRldmljZV9saW5rKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzM6XFx0XFx0aWYgKChuZXRkZXZfd29yay1cXHUwMDNlZXZlbnQgPT0gTkVUREVWX1JFR0lTVEVSKSB8fFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzM0OlxcdFxcdCAgICAoZGV2LVxcdTAwM2VuZXRkZXYgPT0gbmV0ZGV2X3dvcmstXFx1MDAzZWV2ZW50X25ldGRldikpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTczNS1cXHRcXHRcXHRwdnJkbWFfbmV0ZGV2aWNlX2V2ZW50X2hhbmRsZShkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3MzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbmV0ZGV2X3dvcmstXFx1MDAzZWV2ZW50X25ldGRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjczNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBuZXRkZXZfd29yay1cXHUwMDNlZXZlbnQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzM4LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NDItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NDM6XFx0a2ZyZWUobmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmMtNzQ0LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM9NzQ2PXN0YXRpYyBpbnQgcHZyZG1hX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jLTc0OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZXZlbnRfbmV0ZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTA6XFx0c3RydWN0IHB2cmRtYV9uZXRkZXZpY2Vfd29yayAqbmV0ZGV2X3dvcms7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTI6XFx0bmV0ZGV2X3dvcmsgPSBrbWFsbG9jX29iaigqbmV0ZGV2X3dvcmssIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzUzOlxcdGlmICghbmV0ZGV2X3dvcmspXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTQtXFx0XFx0cmV0dXJuIE5PVElGWV9CQUQ7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYzo3NTY6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXRkZXZfd29yay1cXHUwMDNld29yaywgcHZyZG1hX25ldGRldmljZV9ldmVudF93b3JrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9wdnJkbWFfbWFpbi5jOjc1NzpcXHRuZXRkZXZfd29yay1cXHUwMDNlZXZlbnRfbmV0ZGV2ID0gZXZlbnRfbmV0ZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU4OlxcdG5ldGRldl93b3JrLVxcdTAwM2VldmVudCA9IGV2ZW50O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL3B2cmRtYV9tYWluLmM6NzU5OlxcdHF1ZXVlX3dvcmsoZXZlbnRfd3EsIFxcdTAwMjZuZXRkZXZfd29yay1cXHUwMDNld29yayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvcHZyZG1hX21haW4uYy03NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MTMyPXN0cnVjdCBpd2xfbWVpX2ZpbHRlcnMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE2My0gKlxcdGFjY2Vzc2VkIHdpdGhvdXQgdGhlIG11dGV4LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxNjQ6ICogQG5ldGRldl93b3JrOiB1c2VkIHRvIGRlZmVyIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIG9mIHRoZSBuZXRkZXYgdG9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMTY1LSAqXFx0YXZvaWQgdGFraW5nIHRoZSBydG5sIGxvY2sgaW4gdGhlIFNBUCBtZXNzYWdlcyBoYW5kbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYz0xNzI9c3RydWN0IGl3bF9tZWkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE4OS1cXHRzcGlubG9ja190IGRhdGFfcV9sb2NrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxOTA6XFx0c3RydWN0IHdvcmtfc3RydWN0IG5ldGRldl93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy0xOTEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBvd25lcnNoaXBfZHdvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9NTk3PXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGl3bF9tZWlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtNjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzo2Mzc6c3RhdGljIHZvaWQgaXdsX21laV9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy02Mzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy02MzktXFx0c3RydWN0IGl3bF9tZWkgKm1laSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjY0MDpcXHRcXHRjb250YWluZXJfb2Yod2ssIHN0cnVjdCBpd2xfbWVpLCBuZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTY0MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jPTgxNj1zdGF0aWMgdm9pZCBpd2xfbWVpX2hhbmRsZV9hbXRfc3RhdGUoc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTgzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM6ODMzOlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm1laS1cXHUwMDNlbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYy04MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MTk2ND1zdGF0aWMgaW50IGl3bF9tZWlfcHJvYmUoc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODEtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm1laS1cXHUwMDNlZGF0YV9xX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL21haW4uYzoxOTgyOlxcdElOSVRfV09SSyhcXHUwMDI2bWVpLVxcdTAwM2VuZXRkZXZfd29yaywgaXdsX21laV9uZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTE5ODMtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1laS1cXHUwMDNlb3duZXJzaGlwX2R3b3JrLCBpd2xfbWVpX293bmVyc2hpcF9kd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmM9MjA1Mz1zdGF0aWMgdm9pZCBpd2xfbWVpX3JlbW92ZShzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21laS9tYWluLmMtMjE2MC1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1laS1cXHUwMDNlY3NhX3Rocm90dGxlX2VuZF93ayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jOjIxNjE6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bWVpLVxcdTAwM2VuZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvbWFpbi5jLTIxNjItXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtZWktXFx1MDAzZW93bmVyc2hpcF9kd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz02Nz1zdHJ1Y3QgYmFtX2RtdXgge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODUtXFx0REVDTEFSRV9CSVRNQVAocmVtb3RlX2NoYW5uZWxzLCBCQU1fRE1VWF9OVU1fQ0gpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg2OlxcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdpc3Rlcl9uZXRkZXZfd29yaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04Ny1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2c1tCQU1fRE1VWF9OVU1fQ0hdO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDExPXN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDI5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzMDpzdGF0aWMgdm9pZCBiYW1fZG11eF9yZWdpc3Rlcl9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDMxLXtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0MzI6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzMy1cXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTUzOT1zdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfb3BlbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU1My1cXHRcXHQvKiBDYW5ub3Qgc2xlZXAgaGVyZSwgc2NoZWR1bGUgd29yayB0byByZWdpc3RlciB0aGUgbmV0ZGV2ICovXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTU0OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmRtdXgtXFx1MDAzZXJlZ2lzdGVyX25ldGRldl93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NTUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NzY1PXN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwNC1cXHRJTklUX1dPUksoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODA1OlxcdElOSVRfV09SSyhcXHUwMDI2ZG11eC1cXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmssIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz04NTE9c3RhdGljIHZvaWQgYmFtX2RtdXhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NTgtXFx0LyogVW5yZWdpc3RlciBuZXR3b3JrIGludGVyZmFjZXMgKi9cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NTk6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZG11eC1cXHUwMDNlcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg2MC1cXHRydG5sX2xvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTA2Mz1zdHJ1Y3QgbmV0ZGV2X25ldF9ub3RpZmllciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTExMzUtICogdm9pZCAoKm5kb193b3JrKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoxMTM2OiAqXFx0UnVuIGRlZmVycmVkIHdvcmsgc2NoZWR1bGVkIHdpdGggbmV0ZGV2X3dvcmtfc2NoZWQoQGV2ZW50cykuXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0xMTM3LSAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MTA9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMTk0MC0gKlxcdFxcdFxcdFxcdGRvZXMgbm90IGltcGxlbWVudCBuZG9fc2V0X3J4X21vZGUoKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0MTogKlxcdEB3b3JrX25vZGU6XFx0XFx0TGlzdCBlbnRyeSBmb3IgYXN5bmMgbmV0ZGV2X3dvcmsgcHJvY2Vzc2luZ1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0MjogKlxcdEB3b3JrX3RyYWNrZXI6XFx0XFx0UmVmY291bnQgdHJhY2tlciBmb3IgYXN5bmMgbmV0ZGV2X3dvcmtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjE5NDM6ICpcXHRAd29ya19wZW5kaW5nOlxcdFxcdERyaXZlci1kZWZpbmVkIHBlbmRpbmcgbmV0ZGV2X3dvcmssIHBhc3NlZCB0b1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NDogKlxcdFxcdFxcdFxcdG5kb193b3JrKCkgKHNlZSBuZXRkZXZfd29ya19zY2hlZCgpKVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MTk0NTogKlxcdEB3b3JrX2NvcmVfcGVuZGluZzpcXHRDb3JlLWRlZmluZWQgcGVuZGluZyBuZXRkZXZfd29yayAoTkVUREVWX1dPUktfKilcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTE5NDYtICpcXHRAcnhfbW9kZV9hZGRyX2NhY2hlOlxcdFJlY3ljbGVkIHNuYXBzaG90IGVudHJpZXMgZm9yIHJ4X21vZGUgd29ya1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD01MjEzPXZvaWQgZGV2X2dldF90c3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNTIxNC1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjUyMTU6dm9pZCBuZXRkZXZfd29ya19zY2hlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50cyk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo1MjE2OnVuc2lnbmVkIGxvbmcgbmV0ZGV2X3dvcmtfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC01MjE3LVxcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYz0zNjg9c3RhdGljIGludCB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCwgdW5zaWduZWQgbG9uZyBldmVudCxcXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDI0LVxcbm5ldC84MDIxcS92bGFuLmM6NDI1OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19NVFUpO1xcbm5ldC84MDIxcS92bGFuLmMtNDI2LVxcdFxcdH1cXG4tLVxcbm5ldC84MDIxcS92bGFuLmMtNDMwLVxcdFxcdHZsYW5fZ3JvdXBfZm9yX2VhY2hfZGV2KGdycCwgaSwgdmxhbmRldilcXG5uZXQvODAyMXEvdmxhbi5jOjQzMTpcXHRcXHRcXHRuZXRkZXZfd29ya19zY2hlZCh2bGFuZGV2LCBWTEFOX1dPUktfRkVBVFVSRVMpO1xcbm5ldC84MDIxcS92bGFuLmMtNDMyLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW4uYy00MzYtXFx0XFx0dmxhbl9ncm91cF9mb3JfZWFjaF9kZXYoZ3JwLCBpLCB2bGFuZGV2KVxcbm5ldC84MDIxcS92bGFuLmM6NDM3OlxcdFxcdFxcdG5ldGRldl93b3JrX3NjaGVkKHZsYW5kZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbi5jLTQzOC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC84MDIxcS92bGFuLmg9MTI2PXZvaWQgdmxhbl9maWx0ZXJfZHJvcF92aWRzKHN0cnVjdCB2bGFuX2luZm8gKnZsYW5faW5mbywgX19iZTE2IHByb3RvKTtcXG5uZXQvODAyMXEvdmxhbi5oLTEyNy1cXG5uZXQvODAyMXEvdmxhbi5oOjEyODovKiBuZXRkZXZfd29yayBldmVudHMgcHJvcGFnYXRlZCBmcm9tIHRoZSByZWFsIGRldmljZSwgc2VlIHZsYW5fZGV2X3dvcmsoKS4gKi9cXG5uZXQvODAyMXEvdmxhbi5oLTEyOS1lbnVtIHtcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jPTI2Mz1zdGF0aWMgaW50IHZsYW5fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3My1cXHQvKiBUaGUgZXhwbGljaXQgb3BlbiBzdXBlcnNlZGVzIGFueSBkZWZlcnJlZCBsaW5rLXN0YXRlIHN5bmMgKi9cXG5uZXQvODAyMXEvdmxhbl9kZXYuYzoyNzQ6XFx0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgVkxBTl9XT1JLX0xJTktfU1RBVEUpO1xcbm5ldC84MDIxcS92bGFuX2Rldi5jLTI3NS1cXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jPTMwMT1zdGF0aWMgaW50IHZsYW5fZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTMwNi1cXHQvKiBUaGUgZXhwbGljaXQgY2xvc2Ugc3VwZXJzZWRlcyBhbnkgZGVmZXJyZWQgbGluay1zdGF0ZSBzeW5jICovXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MzA3OlxcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIFZMQU5fV09SS19MSU5LX1NUQVRFKTtcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0zMDgtXFxuLS1cXG5uZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVxcdFxcdCAgICAgKz0gZGV2Lm8gZGV2X2FwaS5vIGRldl9hZGRyX2xpc3RzLm8gZHN0Lm8gbmV0ZXZlbnQubyBcXFxcXFxuLS1cXG5uZXQvY29yZS9NYWtlZmlsZS0xNS1cXHRcXHRcXHRmaWJfbm90aWZpZXIubyB4ZHAubyBmbG93X29mZmxvYWQubyBncm8ubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTY6XFx0XFx0XFx0bmV0ZGV2LWdlbmwubyBuZXRkZXYtZ2VubC1nZW4ubyBuZXRkZXZfd29yay5vIGdzby5vXFxubmV0L2NvcmUvTWFrZWZpbGUtMTctXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMjQxMz12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMjQ4MC1cXHRcXHRkZXZfbWVtb3J5X3Byb3ZpZGVyX3VuaW5zdGFsbChkZXYpO1xcbm5ldC9jb3JlL2Rldi5jOjEyNDgxOlxcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG5uZXQvY29yZS9kZXYuYy0xMjQ4Mi1cXHRcXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTcyPXZvaWQgbmV0aWZfcnhfbW9kZV9jYW5jZWxfcmV0cnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5uZXQvY29yZS9kZXYuaC0xNzQtLyogRXZlbnRzIGZvciB0aGUgYXN5bmMgbmV0ZGV2IHdvcmssIHRyYWNrZWQgaW4gbmV0ZGV2LVxcdTAwM2V3b3JrX2NvcmVfcGVuZGluZy4gKi9cXG5uZXQvY29yZS9kZXYuaDoxNzU6ZW51bSBuZXRkZXZfd29ya19jb3JlIHtcXG5uZXQvY29yZS9kZXYuaC0xNzYtXFx0TkVUREVWX1dPUktfUlhfTU9ERVxcdD0gQklUKDApLFxcdC8qIHJ1biB0aGUgcnhfbW9kZSB1cGRhdGUgKi9cXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE3OC1cXG5uZXQvY29yZS9kZXYuaDoxNzk6dm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XFxubmV0L2NvcmUvZGV2LmgtMTgwLXVuc2lnbmVkIGxvbmdcXG5uZXQvY29yZS9kZXYuaDoxODE6X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spO1xcbm5ldC9jb3JlL2Rldi5oOjE4Mjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxubmV0L2NvcmUvZGV2LmgtMTgzLVxcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xMzM1PXN0YXRpYyB2b2lkIG5ldGlmX3J4X21vZGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzYte1xcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmM6MTMzNzpcXHRfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoZGV2LCBORVRERVZfV09SS19SWF9NT0RFKTtcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTEzMzgtfVxcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xNDA4PXZvaWQgbmV0aWZfcnhfbW9kZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDA5LXtcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjE0MTA6XFx0aWYgKF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCBORVRERVZfV09SS19SWF9NT0RFKSlcXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jLTE0MTEtXFx0XFx0bmV0aWZfcnhfbW9kZV9ydW4oZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTItXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMzpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19wcm9jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNC1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1Oi8qIEBuZXRkZXZfd29ya19sb2NrIHByb3RlY3RzOlxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTY6ICogIC0gQG5ldGRldl93b3JrX2xpc3RcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE3LSAqICAtIHdpdGhpbiB0aGUgbGlzdCBlbnRyaWVzIChzdHJ1Y3QgbmV0X2RldmljZSBmaWVsZHMpOlxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yMi0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjIzOnN0YXRpYyBMSVNUX0hFQUQobmV0ZGV2X3dvcmtfbGlzdCk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoyNDpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MjU6c3RhdGljIERFQ0xBUkVfV09SSyhuZXRkZXZfd29yaywgbmV0ZGV2X3dvcmtfcHJvYyk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yNi1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjI3OnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0yOC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGNvcmUpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMyLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzM6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM0LVxcdGlmICghZGV2X2lzYWxpdmUoZGV2KSkge1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMzYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0zOC1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozOTpcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZXdvcmtfbm9kZSwgXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNDAtXFx0XFx0bmV0ZGV2X2hvbGQoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy00My1cXHRkZXYtXFx1MDAzZXdvcmtfY29yZV9wZW5kaW5nIHw9IGNvcmU7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo0NDpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy00NS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjQ2OlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5ldGRldl93b3JrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTQ3LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9NDk9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjUwOm5ldGRldl93b3JrX2RlcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAqcGVuZGluZyxcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTUxLVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1hc2spXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU0LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NTU6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTU2LVxcdGV2ZW50cyA9ICpwZW5kaW5nIFxcdTAwMjYgbWFzaztcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjItXFx0fVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6NjM6XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNjQtXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTY3LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6Njg6dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy02OS17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo3MDpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtNzEtXFx0ZGV2LVxcdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03Ni1cXHR9XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo3NzpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OC19XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy03OS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjgwOnZvaWQgbmV0ZGV2X3dvcmtfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMpXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04MS17XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzo4MjpcXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgZXZlbnRzLCAwKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTgzLX1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg0OkVYUE9SVF9TWU1CT0wobmV0ZGV2X3dvcmtfc2NoZWQpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtODUtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04Ni0vKipcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjg3OiAqIG5ldGRldl93b3JrX2NhbmNlbCgpIC0gY2FuY2VsIHNlbGVjdGVkIHdvcmsgZm9yIGEgbmV0ZGV2XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy04OC0gKiBAZGV2OiBuZXRfZGV2aWNlXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwMC0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwMTp1bnNpZ25lZCBsb25nIG5ldGRldl93b3JrX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDIte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTAzOlxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19wZW5kaW5nLCBtYXNrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNC19XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMDU6RVhQT1JUX1NZTUJPTChuZXRkZXZfd29ya19jYW5jZWwpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA2LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTA3OnZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA4LXtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwOTpcXHRuZXRkZXZfd29ya19lbnF1ZXVlKGRldiwgMCwgZXZlbnRzKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExMC19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTExMj11bnNpZ25lZCBsb25nXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxMTM6X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTQte1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTE1OlxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTE2LX1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTExNy1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjExODpzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMTktXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgY29yZSlcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTI5LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTMwOnN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3Byb2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTMxLXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTM4LVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTM5OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDA6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm5ldGRldl93b3JrX2xpc3QpKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNDE6XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTQyLVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTQzLVxcdFxcdH1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE0NDpcXHRcXHRkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZuZXRkZXZfd29ya19saXN0LCBzdHJ1Y3QgbmV0X2RldmljZSxcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE0NS1cXHRcXHRcXHRcXHQgICAgICAgd29ya19ub2RlKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTUyLVxcdFxcdG5ldGRldl9ob2xkKGRldiwgXFx1MDAyNnRyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTUzOlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NC1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE1NS1cXHRcXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjE1NjpcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTU3LVxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrX25vZGUpKSB7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTE2OC1cXHRcXHR9XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNjk6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5ldGRldl93b3JrX2xvY2spO1xcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTcwLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM6MTcxOlxcdFxcdG5ldGRldl93b3JrX3J1bihkZXYsIGV2ZW50cywgY29yZSk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNzItXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF92bGFuX3JlYWxfZGV2LnNoLTctIyBUaGUga2VybmVsIG1pcnJvcnMgYSByZWFsIGRldmljZSdzIFVQL0RPV04sIE1UVSBhbmQgZmVhdHVyZSBjaGFuZ2VzIG9udG8gaXRzXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3ZsYW5fcmVhbF9kZXYuc2g6ODojIFZMQU5zLiAgVGhpcyBpcyBkb25lIGFzeW5jaHJvbm91c2x5IChuZXRkZXZfd29yayk6IGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgZnJvbVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF92bGFuX3JlYWxfZGV2LnNoLTktIyB0aGUgcmVhbCBkZXZpY2UncyBub3RpZmllciBjb3VsZCBkZWFkbG9jay4gIElmIHRoZSByZWFsIGRldmljZSBpcyBicm91Z2h0IHVwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjE4LjEyMjcyMjY3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDk5MTQ4NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29yZSBOZXR3b3JrIERldmljZSBXb3JrcXVldWUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcyBoZXJlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBsb29rIGF0IHNlZW0gdG8gYmUgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCwgYG5ldGRldl93b3JrX3NjaGVkYCwgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAsIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFdhaXQsIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBjYWxsZWQgZnJvbSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBzbyB0aGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC5cblxuSXQgbG9va3MgbGlrZSBgbmV0ZGV2X3dvcmtfc2NoZWRgIGFuZCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYCBhcmUgdGhlIGZ1bmN0aW9ucyBwcmltYXJpbHkgcmVzcG9uc2libGUgZm9yICplbnF1ZXVpbmcqIHdvcmsgb250byB0aGUgd29ya3F1ZXVlLiBTaG91bGQgSSBpbmNsdWRlIGBydG5sX2RlbGV0ZV9saW5rYCBvciBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgPyBPa2F5LCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGlzIGRlZmluZWQgd2l0aGluIHRoZSBjb3JlIGRldmljZSBjb2RlLCBpbiBgbmV0L2NvcmUvZGV2LmNgIGFuZCBkZWNsYXJlZCBpbiBgbmV0L2NvcmUvZGV2LmhgLCBzbyBpdCBpc24ndCBleHBvcnRlZC4gYG5ldGRldl93b3JrX3NjaGVkYCBpcyBleHBvcnRlZCwgdGhvdWdoLiBBbmQsIEkgc2VlIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgIGlzIGRlZmluZWQgaW4gYG5ldC9jb3JlL2Rldi5oYC4gU28sIEknbGwgZ28gd2l0aCBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfc2NoZWRgLCBhbmQgYF9fbmV0ZGV2X3dvcmtfY29yZV9zY2hlZGAgZm9yIG5vdy5cblxuV2FpdCBhIG1pbnV0ZSwgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGlzIGFjdHVhbGx5IGFkZGVkIGJ5IHRoaXMgcGF0Y2gsIHNvIEkgbmVlZCB0byBpbmNsdWRlIHRoYXQgb25lIHRvby4gIEFuZCBJIHNlZSB0aGF0IGBuZXRkZXZfd29ya19lbnF1ZXVlYCBpcyBtb2RpZmllZC4gQnV0LCBzaW5jZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciBteSB1bmRlcnN0YW5kaW5nIGFyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGBuZXRkZXZfd29ya19zY2hlZGAgYW5kIGBfX25ldGRldl93b3JrX2NvcmVfc2NoZWRgLiBBbmQsIG9mIGNvdXJzZSwgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCBhcyB3ZWxsLlxuXG5BbHJpZ2h0LCBsZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbmV0L2NvcmUvZGV2LmNgLCBpdCdzIGNvbXBpbGVkIGFzIGxvbmcgYXMgYENPTkZJR19ORVRgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZC4gTm8gdW51c3VhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gd29ycnkgYWJvdXQuXG5cbk9uZSBmaW5hbCBjaGVjaywgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBgZGV2X2lzYWxpdmUoZGV2KWAgY2FsbCB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzg3NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1NzoyNC42MjE4NzQ2MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjI5OTM1NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2lzYWxpdmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2Lmg9NDA5PWludCBuZXRfaHd0c3RhbXBfdmFsaWRhdGUoY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNmZyk7XFxuLS1cXG5uZXQvY29yZS9kZXYuaC00MTEtLyogQ2FsbGVyIGhvbGRzIFJUTkwsIG5ldGRldi1cXHUwMDNlbG9jayBvciBSQ1UgKi9cXG5uZXQvY29yZS9kZXYuaDo0MTI6c3RhdGljIGlubGluZSBib29sIGRldl9pc2FsaXZlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2NvcmUvZGV2LmgtNDEzLXtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTY5PXN0YXRpYyBpbnQgc3lzZnNfcnRubF9sb2NrKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTAyLVxcdCAqL1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjEwMzpcXHRpZiAoIWRldl9pc2FsaXZlKG5kZXYpKSB7XFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTA0LVxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYz0xMjI9c3RhdGljIHNzaXplX3QgbmV0ZGV2X3Nob3coY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMTI5LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoxMzA6XFx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTEzMS1cXHRcXHRyZXQgPSAoKmZvcm1hdCkobmRldiwgYnVmKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTE4OT1uZXRkZXZfbG9ja19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjA2LVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjIwNzpcXHRpZiAoZGV2X2lzYWxpdmUobmV0ZGV2KSkge1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTIwOC1cXHRcXHRyZXQgPSAoKnNldCkobmV0ZGV2LCBuZXcpO1xcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9MjU0PXN0YXRpYyBzc2l6ZV90IGFkZHJlc3Nfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjYyLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzoyNjM6XFx0aWYgKGRldl9pc2FsaXZlKG5kZXYpKVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTI2NC1cXHRcXHRyZXQgPSBzeXNmc19mb3JtYXRfbWFjKGJ1ZiwgbmRldi1cXHUwMDNlZGV2X2FkZHIsIG5kZXYtXFx1MDAzZWFkZHJfbGVuKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTI3Mj1zdGF0aWMgc3NpemVfdCBicm9hZGNhc3Rfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYy0yNzgtXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9jb3JlL25ldC1zeXNmcy5jOjI3OTpcXHRpZiAoZGV2X2lzYWxpdmUobmRldikpXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtMjgwLVxcdFxcdHJldCA9IHN5c2ZzX2Zvcm1hdF9tYWMoYnVmLCBuZGV2LVxcdTAwM2Vicm9hZGNhc3QsIG5kZXYtXFx1MDAzZWFkZHJfbGVuKTtcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jPTcyOD1zdGF0aWMgc3NpemVfdCB0aHJlYWRlZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldC1zeXNmcy5jLTczNS1cXG5uZXQvY29yZS9uZXQtc3lzZnMuYzo3MzY6XFx0aWYgKGRldl9pc2FsaXZlKG5ldGRldikpXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtNzM3LVxcdFxcdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBmbXRfZGVjLCBSRUFEX09OQ0UobmV0ZGV2LVxcdTAwM2V0aHJlYWRlZCkpO1xcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmM9ODAyPXN0YXRpYyBzc2l6ZV90IG5ldHN0YXRfc2hvdyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxubmV0L2NvcmUvbmV0LXN5c2ZzLmMtODEyLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYzo4MTM6XFx0aWYgKGRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9uZXQtc3lzZnMuYy04MTQtXFx0XFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHRlbXA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jPTI3PXN0YXRpYyB2b2lkIG5ldGRldl93b3JrX2VucXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTMzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmV0ZGV2X3dvcmtfbG9jayk7XFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzozNDpcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTM1LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZuZXRkZXZfd29ya19sb2NrKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmM9MTMwPXN0YXRpYyB2b2lkIG5ldGRldl93b3JrX3Byb2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xNjUtXFxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYzoxNjY6XFx0XFx0XFx0aWYgKCFkZXZfaXNhbGl2ZShkZXYpKVxcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTY3LVxcdFxcdFxcdFxcdGNvcmUgPSBldmVudHMgPSAwO1xcbi0tXFxubmV0L2NvcmUvcnRuZXRsaW5rLmM9NDI1Nj1zdGF0aWMgaW50IHJ0bmxfZ2V0bGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTQzMTEtXFx0XFx0cnRubF9sb2NrKCk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmM6NDMxMjpcXHRcXHRpZiAoIWRldl9pc2FsaXZlKGRldikpIHtcXG5uZXQvY29yZS9ydG5ldGxpbmsuYy00MzEzLVxcdFxcdFxcdGVyciA9IC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDAyOjU3OjI2LjM4NDg3NDMxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzMwNjMyODI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgTmV0d29ya2luZyBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcHJldHR5IGZ1bmRhbWVudGFsIGlzc3VlIGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBJdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBwcm9ibGVtIHdoZXJlIHdvcmsgcmVsYXRlZCB0byBhIG5ldHdvcmsgZGV2aWNlIChuZXRkZXYgd29yaykgaXMgZWl0aGVyIGdldHRpbmcgc2NoZWR1bGVkIGZvciBhIGRldmljZSB0aGF0J3MgYWxyZWFkeSBkZWFkIOKAkyB3aGljaCBpcyBvYnZpb3VzbHkgYmFkIOKAkyBvciBub3QgYmVpbmcgcHJvcGVybHkgY2FuY2VsbGVkIHdoZW4gdGhlIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuIFRoaXMgaXMgY2xhc3NpYyBjb3JlIG5ldHdvcmtpbmcgc3R1ZmYsIHNvIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYXR0ZW50aW9uLlxuXG5Gcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgY2xlYXIgd2luLiBJdCdzIHRoZSBraW5kIG9mIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gc3VidGxlIGNvcnJ1cHRpb24sIHJlc291cmNlIGxlYWtzLCBvciBldmVuIGNyYXNoZXMgaWYgbGVmdCB1bmNoZWNrZWQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBmdXp6aW5nIHRoaXMgaXMgYSBnb29kIGlkZWEgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZXNlIGtleSBzeW1ib2xzOiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLCBgbmV0ZGV2X3dvcmtfc2NoZWRgLCBgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkYCwgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhlc2UgYXJlIHRoZSBwb2ludHMgb2YgaW50ZXJlc3Qgd2hlcmUgdGhlIGZpeCBpcyBsaWtlbHkgaW1wbGVtZW50ZWQuIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZyByZXF1aXJlbWVudHMsIHRoYW5rZnVsbHk7IGBDT05GSUdfTkVUYCBzaG91bGQgYmUgc3VmZmljaWVudC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IHRoZSBwYXRjaCBlbnN1cmVzIHBlbmRpbmcgbmV0ZGV2IHdvcmsgaXMgY2FuY2VsbGVkIGR1cmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24sIGFuZCBpdCBwcmV2ZW50cyBzY2hlZHVsaW5nIG5ldyB3b3JrIGZvciBkZXZpY2VzIHRoYXQgYXJlIG5vIGxvbmdlciBhY3RpdmUuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFkaWx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHZldGggb3IgZHVtbXkgaW50ZXJmYWNlcyB1c2luZyBuZXRsaW5rIG9wZXJhdGlvbnMgYXJlIGNvbW1vbiBhbmQgZWZmZWN0aXZlIHRlc3QgY2FzZXMsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIFRoaXMgaXMgc29tZXRoaW5nIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVuIGNyYWZ0aW5nIHRlc3QgY2FzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDQ4LCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwMjo1Nzo0My42OTEyMDU5MTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19zY2hlZFwiLFxuICAgIFwiX19uZXRkZXZfd29ya19jb3JlX3NjaGVkXCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGNvZGUgdG8gY2FuY2VsIHBlbmRpbmcgbmV0ZGV2IHdvcmsgd2hlbiBhIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQgYW5kIHByZXZlbnRzIGVucXVldWluZyBuZXcgd29yayBmb3IgZGVhZCBkZXZpY2VzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHN0YW5kYXJkIG5ldGxpbmsgb3BlcmF0aW9ucyAoZS5nLiwgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgdmV0aCBvciBkdW1teSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgICBcIm5ldGRldl93b3JrX3NjaGVkXCIsXG4gICAgXCJfX25ldGRldl93b3JrX2NvcmVfc2NoZWRcIixcbiAgICBcIm5ldGRldl93b3JrX2NhbmNlbF9hbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgY29kZSB0byBjYW5jZWwgcGVuZGluZyBuZXRkZXYgd29yayB3aGVuIGEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgZW5xdWV1aW5nIG5ldyB3b3JrIGZvciBkZWFkIGRldmljZXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgc3RhbmRhcmQgbmV0bGluayBvcGVyYXRpb25zIChlLmcuLCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSB2ZXRoIG9yIGR1bW15KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow6fgd8[1] Phase: Succeeded StartedAt: 2026-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 02:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 02:57:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2] Phase: Succeeded StartedAt: 2026-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 02:58:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 02:57:54 +0000 UTC FinishedAt: 2026-08-06 02:57:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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-workflow6fgd8/series-workflow6fgd8-convert-artifact-4273598119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 02:58:04 +0000 UTC FinishedAt: 2026-08-06 03:15:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 02:58:04 +0000 UTC FinishedAt: 2026-08-06 03:15:37 +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:*f9807e31-950d-4510-86a8-da5607c8536d,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-workflow6fgd8/series-workflow6fgd8-convert-artifact-4273598119/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": "b71876de-dc6a-4d55-97f4-8cb18340f119", "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-workflow6fgd8/series-workflow6fgd8-build-action-3451010621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 02:58:04 +0000 UTC FinishedAt: 2026-08-06 03:15:27 +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:*f9807e31-950d-4510-86a8-da5607c8536d,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-workflow6fgd8/series-workflow6fgd8-convert-artifact-4273598119/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": "b71876de-dc6a-4d55-97f4-8cb18340f119", "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-workflow6fgd8/series-workflow6fgd8-build-action-3451010621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:37 +0000 UTC FinishedAt: 2026-08-06 03:15:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:37 +0000 UTC FinishedAt: 2026-08-06 03:15:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:37 +0000 UTC FinishedAt: 2026-08-06 03:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:37 +0000 UTC FinishedAt: 2026-08-06 03:15:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-workflow6fgd8/series-workflow6fgd8-convert-artifact-89943382/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:47 +0000 UTC FinishedAt: 2026-08-06 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:15:47 +0000 UTC FinishedAt: 2026-08-06 03:17:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b71876de-dc6a-4d55-97f4-8cb18340f119,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-workflow6fgd8/series-workflow6fgd8-build-action-3451010621/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-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:17:56 +0000 UTC FinishedAt: 2026-08-06 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:17:56 +0000 UTC FinishedAt: 2026-08-06 03:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:17:56 +0000 UTC FinishedAt: 2026-08-06 03:34:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:17:56 +0000 UTC FinishedAt: 2026-08-06 03:34:33 +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:*f9807e31-950d-4510-86a8-da5607c8536d,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-workflow6fgd8/series-workflow6fgd8-convert-artifact-89943382/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": "bbbcad43-fe5d-42bb-bbab-02c05b7aee75", "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-workflow6fgd8/series-workflow6fgd8-build-action-907088730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:17:56 +0000 UTC FinishedAt: 2026-08-06 03:34:23 +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:*f9807e31-950d-4510-86a8-da5607c8536d,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-workflow6fgd8/series-workflow6fgd8-convert-artifact-89943382/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": "bbbcad43-fe5d-42bb-bbab-02c05b7aee75", "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-workflow6fgd8/series-workflow6fgd8-build-action-907088730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:34:33 +0000 UTC FinishedAt: 2026-08-06 03:34:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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-08-06 03:34:33 +0000 UTC FinishedAt: 2026-08-06 03:34:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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: Succeeded StartedAt: 2026-08-06 03:34:33 +0000 UTC FinishedAt: 2026-08-06 03:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","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: Succeeded StartedAt: 2026-08-06 03:34:33 +0000 UTC FinishedAt: 2026-08-06 03:36:16 +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:*bbbcad43-fe5d-42bb-bbab-02c05b7aee75,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-workflow6fgd8/series-workflow6fgd8-build-action-907088730/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-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*b71876de-dc6a-4d55-97f4-8cb18340f119,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbbcad43-fe5d-42bb-bbab-02c05b7aee75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,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-workflow6fgd8/series-workflow6fgd8-build-action-3451010621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,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-workflow6fgd8/series-workflow6fgd8-build-action-907088730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 03:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 03:36:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},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-workflow6fgd8/series-workflow6fgd8-convert-artifact-2741786107/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 03:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 03:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 03:36:26 +0000 UTC FinishedAt: 2026-08-06 03:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 03:36:36 +0000 UTC FinishedAt: 2026-08-06 06:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6fgd8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","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":["unregister_netdevice_many_notify","netdev_work_sched","__netdev_work_core_sched","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","series_id":"72c63ef9-2b1f-4c84-8806-dc8f2c79a802","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 03:36:36 +0000 UTC FinishedAt: 2026-08-06 06:37:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b71876de-dc6a-4d55-97f4-8cb18340f119,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbbcad43-fe5d-42bb-bbab-02c05b7aee75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-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-workflow6fgd8/series-workflow6fgd8-build-action-3451010621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,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-workflow6fgd8/series-workflow6fgd8-build-action-907088730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.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-workflow6fgd8/series-workflow6fgd8-convert-artifact-2741786107/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}