Name: series-workflowrw4v2 Phase: Succeeded StartedAt: 2026-08-31 08:26:14 +0000 UTC FinishedAt: 2026-08-31 12:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[0] Phase: Succeeded StartedAt: 2026-08-31 08:26:14 +0000 UTC FinishedAt: 2026-08-31 09:11:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 08:26:14 +0000 UTC FinishedAt: 2026-08-31 09:11:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_CORE", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_CORE", "INET" ], "series_id": "7dc37d1f-e11f-4a49-b188-97d80f34d5a2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_enslave", "bond_release", "bond_alb_initialize", "bond_update_slave_arr", "bond_opt_tryset_rtnl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX0NPUkUmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfZW5zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Ym9uZF9hbGJfaW5pdGlhbGl6ZSYjMzQ7LAogICAgJiMzNDtib25kX3VwZGF0ZV9zbGF2ZV9hcnImIzM0OywKICAgICYjMzQ7Ym9uZF9vcHRfdHJ5c2V0X3J0bmwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbmluZGV4IDgzOWY3NDgyZGMxODIuLmQyZmI2N2E0N2NmOTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuQEAgLTg3NSw3ICYjNDM7ODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbiBcbiBcdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuLVx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2O1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTEyNDUsNyAmIzQzOzEyNDUsNyBAQCBzdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXG4gXHR9XG4gXG4gXHRpZiAobm90aWZpZWQgfHwgZm9yY2UpXG4tXHRcdGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLS07XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xuIH1cbiBcbiAvKipcbkBAIC0yMjg0LDcgJiM0MzsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250JiM0MzsmIzQzOztcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAmIzQzOyAxKTtcbiBcdG5ldGRldl9jb21wdXRlX21hc3Rlcl91cHBlcl9mZWF0dXJlcyhib25kLVx1MDAzZWRldiwgdHJ1ZSk7XG4gXHRib25kX3NldF9jYXJyaWVyKGJvbmQpO1xuIFxuQEAgLTI1MzMsNyAmIzQzOzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXG4gXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQtLTtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAtIDEpO1xuIFxuIFx0aWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLVx1MDAzZWRldik7XG5AQCAtNDM4NSwxMyAmIzQzOzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF9pbnRlcnZhbCkgeyAgLyogYXJwIGludGVydmFsLCBpbiBtaWxsaXNlY29uZHMuICovXG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFycF93b3JrLCAwKTtcbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0fVxuIFxuIFx0aWYgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFkX3dvcmssIDApO1xuIFx0XHQvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi9cbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xuIFx0XHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xuIFxuIFx0XHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuQEAgLTQ0MTMsNyAmIzQzOzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIFx0c3RydWN0IHNsYXZlICpzbGF2ZTtcbiBcbiBcdGJvbmRfd29ya19jYW5jZWxfYWxsKGJvbmQpO1xuLVx0Ym9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYgPSAwO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xuIFxuIFx0LyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqL1xuQEAgLTUxMTgsNyAmIzQzOzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbiBcdFx0aWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtXHUwMDNlYXJyW2lkeF0pIHtcbiBcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW2lkeF0gPVxuIFx0XHRcdFx0c2xhdmVzLVx1MDAzZWFycltzbGF2ZXMtXHUwMDNlY291bnQgLSAxXTtcbi1cdFx0XHRzbGF2ZXMtXHUwMDNlY291bnQtLTtcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShzbGF2ZXMtXHUwMDNlY291bnQsIHNsYXZlcy1cdTAwM2Vjb3VudCAtIDEpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbmluZGV4IDM2YjhkODkzODdlZTUuLjllZmFkZWZmNmEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG5AQCAtMTE0NywxMSAmIzQzOzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHQgKi9cbiBcdFx0aWYgKCFuZXd2YWwtXHUwMDNldmFsdWUpIHtcbiBcdFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKVxuLVx0XHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gTlVMTDtcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmspO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG4tXHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlbWlpX3dvcmspO1xuIFx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFycF93b3JrLCAwKTtcbiBcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX0NPUkUmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfZW5zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Ym9uZF9hbGJfaW5pdGlhbGl6ZSYjMzQ7LAogICAgJiMzNDtib25kX3VwZGF0ZV9zbGF2ZV9hcnImIzM0OywKICAgICYjMzQ7Ym9uZF9vcHRfdHJ5c2V0X3J0bmwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYwppbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jCkBAIC04NzUsNyAmIzQzOzg3NSw3IEBAIHN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtib25kLSZndDttb2RlX2xvY2spOwogCiAJLyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBBUlBzICovCi0JYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwppbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKQEAgLTEyNDUsNyAmIzQzOzEyNDUsNyBAQCBzdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpCiAJfQogCiAJaWYgKG5vdGlmaWVkIHx8IGZvcmNlKQotCQlib25kLSZndDtzZW5kX3BlZXJfbm90aWYtLTsKJiM0MzsJCVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2VuZF9wZWVyX25vdGlmLCBib25kLSZndDtzZW5kX3BlZXJfbm90aWYgLSAxKTsKIH0KIAogLyoqCkBAIC0yMjg0LDcgJiM0MzsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsCiAJCX0KIAl9CiAKLQlib25kLSZndDtzbGF2ZV9jbnQmIzQzOyYjNDM7OwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NsYXZlX2NudCwgYm9uZC0mZ3Q7c2xhdmVfY250ICYjNDM7IDEpOwogCW5ldGRldl9jb21wdXRlX21hc3Rlcl91cHBlcl9mZWF0dXJlcyhib25kLSZndDtkZXYsIHRydWUpOwogCWJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7CiAKQEAgLTI1MzMsNyAmIzQzOzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsCiAKIAl1bmJsb2NrX25ldHBvbGxfdHgoKTsKIAlzeW5jaHJvbml6ZV9yY3UoKTsKLQlib25kLSZndDtzbGF2ZV9jbnQtLTsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtzbGF2ZV9jbnQsIGJvbmQtJmd0O3NsYXZlX2NudCAtIDEpOwogCiAJaWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHsKIAkJY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLSZndDtkZXYpOwpAQCAtNDM4NSwxMyAmIzQzOzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCiAJaWYgKGJvbmQtJmd0O3BhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqLwogCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmssIDApOwotCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7CiYjNDM7CQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTsKIAl9CiAKIAlpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHsKIAkJcXVldWVfZGVsYXllZF93b3JrKGJvbmQtJmd0O3dxLCAmYW1wO2JvbmQtJmd0O2FkX3dvcmssIDApOwogCQkvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi8KLQkJYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IGJvbmRfM2FkX2xhY3BkdV9yZWN2OwomIzQzOwkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7CiAJCWJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7CiAKIAkJYm9uZF9mb3JfZWFjaF9zbGF2ZShib25kLCBzbGF2ZSwgaXRlcikKQEAgLTQ0MTMsNyAmIzQzOzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCXN0cnVjdCBzbGF2ZSAqc2xhdmU7CiAKIAlib25kX3dvcmtfY2FuY2VsX2FsbChib25kKTsKLQlib25kLSZndDtzZW5kX3BlZXJfbm90aWYgPSAwOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiwgMCk7CiAJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBOVUxMKTsKIAogCS8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi8KQEAgLTUxMTgsNyAmIzQzOzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcywKIAkJaWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtJmd0O2FycltpZHhdKSB7CiAJCQlzbGF2ZXMtJmd0O2FycltpZHhdID0KIAkJCQlzbGF2ZXMtJmd0O2FycltzbGF2ZXMtJmd0O2NvdW50IC0gMV07Ci0JCQlzbGF2ZXMtJmd0O2NvdW50LS07CiYjNDM7CQkJV1JJVEVfT05DRShzbGF2ZXMtJmd0O2NvdW50LCBzbGF2ZXMtJmd0O2NvdW50IC0gMSk7CiAJCQlicmVhazsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCmluZGV4IDM2YjhkODkzODdlZTUuLjllZmFkZWZmNmEyMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYwpAQCAtMTE0NywxMSAmIzQzOzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLAogCQkgKi8KIAkJaWYgKCFuZXd2YWwtJmd0O3ZhbHVlKSB7CiAJCQlpZiAoYm9uZC0mZ3Q7cGFyYW1zLmFycF92YWxpZGF0ZSkKLQkJCQlib25kLSZndDtyZWN2X3Byb2JlID0gTlVMTDsKJiM0MzsJCQkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBOVUxMKTsKIAkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2JvbmQtJmd0O2FycF93b3JrKTsKIAkJfSBlbHNlIHsKIAkJCS8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovCi0JCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7CiYjNDM7CQkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7CiAJCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtib25kLSZndDttaWlfd29yayk7CiAJCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmssIDApOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgQ29uY3VycmVuY3kgQW5ub3RhdGlvbj8qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyBhY3Jvc3MgYGJvbmRfYWxiLmNgLCBgYm9uZF9tYWluLmNgLCBhbmQgYGJvbmRfb3B0aW9ucy5jYCB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhleSYjMzk7cmUgY29uc2lzdGVudGx5IHJlcGxhY2luZyBzdHJhaWdodGZvcndhcmQgYXNzaWdubWVudHMgYW5kIGluY3JlbWVudHMvZGVjcmVtZW50cyAobGlrZSBgYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IC4uLmAsIGV0Yy4pIHdpdGggYFdSSVRFX09OQ0UoLi4uKWAuIEhtbSwgdGhpcyBzbWVsbHMgbGlrZSBhIGRhdGEgcmFjZSBmaXguIFNwZWNpZmljYWxseSwgS0NTQU4gaXMgcHJvYmFibHkgYmVpbmcgYWRkcmVzc2VkIG9yLCBhdCBsZWFzdCwgY29tcGlsZXIgcmVvcmRlcmluZyBvciBzdG9yZSB0ZWFyaW5nIGlzIGJlaW5nIHByZXZlbnRlZC4KCkJ1dCwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgZG9lcyB0aGlzIGNoYW5nZSB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gbG9naWM/IElzIHRoaXMgYSBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbm5vdGF0aW9uLCBtZXJlbHkgYWRkaW5nIGBXUklURV9PTkNFYCB0byBpbmRpY2F0ZSBhIGNvbmN1cnJlbnQgcmVhZD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhcmVmdWxseS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCBkb2VzbiYjMzk7dCBtZWV0IGFueSBvZiB0aGUgJiMzNDtub3Qgd29ydGggZnV6emluZyYjMzQ7IGNyaXRlcmlhLCB3aGljaCBpbmNsdWRlcyBjaGFuZ2VzIHRoYXQgb25seSBkZWFsIHdpdGggZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBJICp0aGluayogdGhhdCBkYXRhIHJhY2UgZml4ZXMsIGFuZCBhbm5vdGF0aW9ucyB3aXRoIGBXUklURV9PTkNFYC9gUkVBRF9PTkNFYCwgYXJlIHJlbGV2YW50IHRvIGZ1enppbmcuCgpJJiMzOTttIHRoaW5raW5nIHRoaXMgbGlrZWx5ICppcyogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2UgZG91Ymx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgZ2l0IGxvZy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBtb3JlIGRldGFpbGVkIGV4cGxhbmF0aW9uIHRoZXJlLiBJJiMzOTtsbCBmaXJlIHVwIGEgdG9vbCBvciBqdXN0IHJlYWQgdGhyb3VnaCB0aGUgaGlzdG9yeSBhbmQgbG9vayBmb3IgYSBjb21taXQgZGVzY3JpcHRpb24uIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGZ1enppbmcgaXQgaWYgaXQmIzM5O3MgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5ub3RhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXUklURV9PTkNFXFwoYm9uZC1cdTAwM2VyZWN2X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9ODU1PXN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3Ny1cdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjg3ODpcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3OS1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzNDc9c3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4Ny1cdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzg4Olx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM5My1cdFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzOTQ6XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzOTUtXHRcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00NDEwPXN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDE2LVx0V1JJVEVfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiwgMCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ0MTc6XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ0MTgtXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xMTI4PXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExNDktXHRcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTE1MDpcdFx0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1MS1cdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUzLVx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjExNTQ6XHRcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1NS1cdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VtaWlfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlciBpbnRvIGBib25kX21haW4uY2AgYW5kIE1lbW9yeSBPcmRlcmluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBhIGhhbmRsZSBvbiB0aGUgYmFzaWMgZmxvdyBvZiBgYm9uZF9tYWluLmNgLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgY29uY3VycmVuY3kuIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gaG93IHRoZXkmIzM5O3JlICphY3R1YWxseSogdXNpbmcgdGhvc2UgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBtYWNyb3MuIEl0JiMzOTtzIG5vdCBlbm91Z2ggdG8ga25vdyB0aGV5JiMzOTtyZSAqdGhlcmUqOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIGNyaXRpY2FsIHRvIHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmcm9tIHJlb3JkZXJpbmcgbWVtb3J5IGFjY2Vzc2VzIGFuZCBpbnRyb2R1Y2luZyBkYXRhIHJhY2VzLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBBcmUgdGhleSBiZWluZyB1c2VkIGFyb3VuZCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBmbGFncywgb3IgY291bnRlcnMgdGhhdCBuZWVkIGF0b21pY2l0eT8gQW5kIGFyZSB0aGV5IGJlaW5nIHVzZWQgKmNvbnNpc3RlbnRseSo/IEEgc2luZ2xlIG1pc3NlZCBgUkVBRF9PTkNFYCBvciBgV1JJVEVfT05DRWAgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyB0aGF0IGFyZSBhIG5pZ2h0bWFyZSB0byB0cmFjayBkb3duLCBzbyBJIG5lZWQgdG8gc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBhcmUgZ3VhcmFudGVlaW5nIG1lbW9yeSBvcmRlcmluZyB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2FnZSBpcyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBwb3NzaWJsZSBpbXByb3ZlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UkVBRF9PTkNFXFwoYm9uZC1cdTAwM2VyZWN2X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE2MDM9c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgYm9uZF9oYW5kbGVfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTYyMTpcdHJlY3ZfcHJvYmUgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMi1cdGlmIChyZWN2X3Byb2JlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2UgY3J1Y2lhbCB2YXJpYWJsZXMsIGBib25kLSZndDtzZW5kX3BlZXJfbm90aWZgIGFuZCBgYm9uZC0mZ3Q7c2xhdmVfY250YCwgYW5kIHByb2JhYmx5IGEgZmV3IG90aGVycyB3aGlsZSBJJiMzOTttIGF0IGl0LiBJJiMzOTttIGdvaW5nIHRvIHVzZSBgUkVBRF9PTkNFKClgIHRvIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIG1vc3QgdXAtdG8tZGF0ZSBhbmQgY29uc2lzdGVudCB2YWx1ZXMsIHdoaWNoIGlzIGVzcGVjaWFsbHkgY3JpdGljYWwgaW4gdGhpcyBjb25jdXJyZW50IGVudmlyb25tZW50LiBUaGlzIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgcHJvZ3JhbSBpcyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSRUFEX09OQ0VcXChib25kLVx1MDAzZXNsYXZlX2NudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00OTYwPXN0YXRpYyBzdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9yb3VuZHJvYmluX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ5ODktbm9uX2lnbXA6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ5OTA6XHRzbGF2ZV9jbnQgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00OTkxLVx0aWYgKGxpa2VseShzbGF2ZV9jbnQpKSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00OTk4PXN0YXRpYyBzdHJ1Y3Qgc2xhdmUgKmJvbmRfeGRwX3htaXRfcm91bmRyb2Jpbl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDMwLW5vbl9pZ21wOlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MDMxOlx0c2xhdmVfY250ID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250KTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTAzMi1cdGlmIChsaWtlbHkoc2xhdmVfY250KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipDaGVja2luZyBDcml0aWNhbCBTZW5kIE5vdGlmaWNhdGlvbiBhbmQgU2xhdmUgQ291bnQgVmFsdWVzKioKCkFscmlnaHQsIGJlZm9yZSB3ZSBwcm9jZWVkIGZ1cnRoZXIsIGl0JiMzOTtzIGNyaXRpY2FsIHRvIGVuc3VyZSB3ZSBhcmUgY29ycmVjdGx5IHVuZGVyc3RhbmRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN5c3RlbSwgc28gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgdHdvIGNydWNpYWwgdmFyaWFibGVzOiBgUkVBRF9PTkNFKGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZilgIGFuZCBgUkVBRF9PTkNFKHNsYXZlcy0mZ3Q7Y291bnQpYC4gVGhlc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBwaWVjZXMgb2YgaW5mb3JtYXRpb24gaW4gdGhpcyBjb250ZXh0LiBUaGUgZmlyc3QsIGBib25kLSZndDtzZW5kX3BlZXJfbm90aWZgLCBzaWduYWxzIHdoZXRoZXIgYSBub3RpZmljYXRpb24gbmVlZHMgdG8gYmUgc2VudCB0byBhIHBlZXIgcmVnYXJkaW5nIHRoaXMgYm9uZC4gVGhlIGxhdHRlciwgYHNsYXZlcy0mZ3Q7Y291bnRgLCB0ZWxscyB1cyBob3cgbWFueSBzbGF2ZXMgYXJlIGFjdGl2ZSB3aXRoaW4gYSBnaXZlbiBjb250ZXh0LiBJJiMzOTttIHVzaW5nIGBSRUFEX09OQ0VgIGhlcmUgYmVjYXVzZSBJIG5lZWQgdG8gZ3VhcmFudGVlIHRoYXQgSSYjMzk7bSBzZWVpbmcgYSBjb25zaXN0ZW50IGFuZCBjdXJyZW50IHNuYXBzaG90IG9mIHRoZXNlIHZhcmlhYmxlcy4gSW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LCB0aGlzIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGF2b2lkIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVhZGluZyBzdGFsZSBkYXRhIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbWlzYmVoYXZlIGFuZCBwb3RlbnRpYWxseSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgb3BlcmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYm90aCBvZiB0aGVzZSByZWFkcy4gT25jZSBJIGhhdmUgdGhlIHZhbHVlcywgSSBjYW4gc2FmZWx5IHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQURfT05DRVxcKC4qc2VuZF9wZWVyX25vdGlmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTE0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE1Olx0aWYgKGNvbW1pdCB8fCBSRUFEX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYpKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTYtXHRcdC8qIFJhY2UgYXZvaWRhbmNlIHdpdGggYm9uZF9jbG9zZSBjYW5jZWwgb2Ygd29ya3F1ZXVlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zODQzPXN0YXRpYyB2b2lkIGJvbmRfYWN0aXZlYmFja3VwX2FycF9tb24oc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODcyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozODczOlx0aWYgKFJFQURfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZikgfHwgc2hvdWxkX25vdGlmeV9ydG5sKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM4NzQtXHRcdGlmICghcnRubF90cnlsb2NrKCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJlZm9yZSB3ZSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBwYXJ0aWN1bGFyIHByb2JsZW0sIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCwgZXNwZWNpYWxseSBhcm91bmQgY29uY3VycmVuY3kuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayB0aGF0IGNyaXRpY2FsIHNlY3Rpb24gd2hlcmUgd2UmIzM5O3JlIHRyYWNraW5nIHRoZSBudW1iZXIgb2Ygc2xhdmVzLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYFJFQURfT05DRShzbGF2ZXMtJmd0O2NvdW50KWAgb3Igd2hhdGV2ZXIgZXF1aXZhbGVudCBtZWNoYW5pc20gd2UmIzM5O3JlIHVzaW5nIHRvIGdldCB0aGF0IGNvdW50LiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHJlYWQgaXMgYXRvbWljIG9yIHByb3Blcmx5IHByb3RlY3RlZCwgb3RoZXJ3aXNlLCB3ZSYjMzk7cmUgYnVpbGRpbmcgb24gc2hha3kgZ3JvdW5kLiBJdCYjMzk7cyBhIHF1aWNrIHNhbml0eSBjaGVjayBidXQgYSByZWFsbHkgaW1wb3J0YW50IG9uZS4gSeKAmW0gY29uY2VybmVkIGFib3V0IGEgcmFjZSBjb25kaXRpb24uIEl04oCZcyBiZXR0ZXIgdG8gYmUgc3VyZSBub3cgdGhhbiB0byBzcGVuZCBob3VycyBjaGFzaW5nIGEgZ2hvc3QgbGF0ZXIuIExldOKAmXMgbWFrZSBzdXJlIHRoaXMgcmVhZCBpcyByb2NrIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSRUFEX09OQ0VcXCguKmNvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTM3MD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF90bGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzk3LVx0XHRcdFx0c2xhdmVzID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXHUwMDNldXNhYmxlX3NsYXZlcyk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTM5ODpcdFx0XHRcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzOTktXHRcdFx0XHRpZiAobGlrZWx5KGNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTQxOD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9hbGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTEzLVx0XHRcdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1MTQ6XHRcdFx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUxNS1cdFx0XHRpZiAobGlrZWx5KGNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE5Mi1cdFx0dXNhYmxlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTE5MzpcdFx0aWYgKCF1c2FibGUgfHwgIVJFQURfT05DRSh1c2FibGUtXHUwMDNlY291bnQpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTk0LVx0XHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyMzA9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0XzNhZF94b3Jfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIzOC1cdGhhc2ggPSBib25kX3htaXRfaGFzaChib25kLCBza2IpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjM5Olx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNDAtXHRpZiAodW5saWtlbHkoIWNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyNDc9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF8zYWRfeG9yX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNTUtXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTI1NjpcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MjU3LVx0aWYgKHVubGlrZWx5KCFjb3VudCkpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01MzE2PXN0YXRpYyBuZXRkZXZfdHhfdCBib25kX3htaXRfYnJvYWRjYXN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MzMwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MzMxOlx0c2xhdmVzX2NvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2xhdmVzX2NvdW50OyBpJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTUwMz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9fYm9uZF9za19nZXRfbG93ZXJfZGV2KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTUxMS1cdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1NTEyOlx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU1MTMtXHRpZiAodW5saWtlbHkoIWNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9MTk4PXN0YXRpYyB2b2lkIGJvbmRfaW5mb19zaG93X3NsYXZlKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzMtXHRcdFx0c2VxX3ByaW50ZihzZXEsIFwmIzM0O0FjdG9yIENodXJuZWQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNDpcdFx0XHRcdCAgIFJFQURfT05DRShwb3J0LVx1MDAzZWNodXJuX2FjdG9yX2NvdW50KSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjM1LVx0XHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtQYXJ0bmVyIENodXJuZWQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNjpcdFx0XHRcdCAgIFJFQURfT05DRShwb3J0LVx1MDAzZWNodXJuX3BhcnRuZXJfY291bnQpKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBXUklURV9PTkNFYCBjYWxscywgbWlycm9yaW5nIGV4aXN0aW5nIGBSRUFEX09OQ0VgIHVzYWdlIGluIHRoZSBib25kaW5nIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcnVuIHRocm91Z2ggdGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNoYW5nZSBxdWFsaWZpZXMgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgdGhpcyBjb25zdGl0dXRlIGEgbW9kaWZpY2F0aW9uIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy9kcml2ZXJzPyBXYWl0LCB0aGUgYm9uZGluZyBkcml2ZXIgaXMgYSBzb2Z0d2FyZSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBhbmQgaXMgY29tbW9ubHkgZnV6emVkLgoKTGV0JiMzOTtzIGNhcmVmdWxseSByZS1yZWFkIHRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEsIGZvY3VzaW5nIG9uIHRoZSBleGNsdXNpb25zOiBEb2N1bWVudGF0aW9uL0tjb25maWcgY2hhbmdlcywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBub24tZnVuY3Rpb25hbCBudW1lcmljIGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gUUVNVSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgYW5kIHRlYXJkb3duIGNhbGxiYWNrcy4KCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd246IElzIHRoZSBib25kaW5nIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzISBCb25kaW5nIGlzIGEgc3RhbmRhcmQgdmlydHVhbCBuZXRkZXZpY2UgZHJpdmVyIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rL3J0bmwgY2FsbHMuCgpOb3cgdGhlIGtleSBxdWVzdGlvbjogRG9lcyBgV1JJVEVfT05DRWAgaW50cm9kdWNlIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0JiMzOTtzIG5vdCBkb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBhIGNvbnN0YW50LCBvciB1bnJlYWNoYWJsZSBjb2RlLCBvciBhIHRlYXJkb3duIGNhbGxiYWNrLiBTbyBpdCAqc2hvdWxkKiBjb3VudCBhcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGhlcmUsIG9mIGNvdXJzZSwgaXMgdGhhdCBpdCBpcyBiZWluZyB1c2VkIHRvIHByZXZlbnQgZGF0YSByYWNlcywgc3RvcmUgdGVhcmluZywgb3IgY29tcGlsZXIgcmVvcmRlcmluZyEgU3l6a2FsbGVyIHdpdGggS0NTQU4sIFRocmVhZFNhbml0aXplciwgb3IgZ2VuZXJhbCBuZXQgZnV6emluZyBjYW4gbm93IHBvdGVudGlhbGx5IHJldmVhbCBjb25jdXJyZW5jeSBidWdzIGluIGJvbmRpbmchIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFdSSVRFX09OQ0VgICppbXBsaWVzKiBmdW5jdGlvbmFsIGltcGFjdCBvbiBkYXRhIGFjY2Vzcy4KClRoZSBjcml0ZXJpYSBjbGVhcmx5IHN0YXRlOiBhbnkgcGF0Y2ggbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljL2RyaXZlcnMsICp1bmxlc3MqIGl0IGZhbGxzIGludG8gb25lIG9mIHRoZSAqc2l4KiBleHBsaWNpdCBleGNsdXNpb25zLCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgZnV6emluZy4gVGhpcyBkb2VzbiYjMzk7dCBzZWVtIHRvIGZhbGwgaW50byAqYW55KiBvZiB0aG9zZSBleGNsdXNpb25zLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCAqc2hvdWxkKiBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkxldCYjMzk7cyBjaGVjayB0aGUgcmVxdWlyZWQgY29uZmlnIG9wdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Qk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSAmIzQzOz0gYm9uZGluZy5vXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xMjY2PXZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzMyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMzMzOlx0XHRcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfQk9ORElOR19GQUlMT1ZFUiwgYm9uZC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg4OD1pbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIwOTQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIwOTU6XHRzbGF2ZV9kZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfQk9ORElORztcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5Ni1cdC8qIGluaXRpYWxpemUgc2xhdmUgc3RhdHMgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIzNzUtXHRpZiAoIW5ldGlmX2lzX2JvbmRfbWFzdGVyKHNsYXZlX2RldikpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIzNzY6XHRcdHNsYXZlX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9CT05ESU5HO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yMzc3LVx0ZGV2X2Nsb3NlKHNsYXZlX2Rldik7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0yNDI1PXN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI1OTYtXHRpZiAoIW5ldGlmX2lzX2JvbmRfbWFzdGVyKHNsYXZlX2RldikpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjI1OTc6XHRcdHNsYXZlX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9CT05ESU5HO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNTk4LVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDA3MD1zdGF0aWMgaW50IGJvbmRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQwNzctXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQwNzg6XHRpZiAoIShldmVudF9kZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0JPTkRJTkcpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MDc5LVx0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTk0PXZvaWQgYm9uZF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02MDE2LVx0Ym9uZF9kZXYtXHUwMDNlZmxhZ3MgfD0gSUZGX01BU1RFUjtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NjAxNzpcdGJvbmRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0JPTkRJTkcgfCBJRkZfVU5JQ0FTVF9GTFQgfCBJRkZfTk9fUVVFVUU7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwMTgtXHRib25kX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfihJRkZfWE1JVF9EU1RfUkVMRUFTRSB8IElGRl9UWF9TS0JfU0hBUklORyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTA5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYm9uZGluZyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgLiBJIGtub3cgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbGl2ZXMg4oCTIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBjb25maWcgZmxhZ3MsIGFsbCB0aGUganVpY3kgZGV0YWlscyB0aGF0IGNvbnRyb2wgaG93IHRoaXMgZHJpdmVyIGJlaGF2ZXMgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgcG9zc2libGUgYW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgYmVmb3JlIEkgY2FuIG1ha2UgYW55IGluZm9ybWVkIGRlY2lzaW9ucyBvciByZWNvbW1lbmRhdGlvbnMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgZ29pbmcgdG8gdGVsbCBtZSB0aGUgcmVhbCBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT50aGUgZmlsZSBkb2VzIG5vdCBleGlzdDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipMb2NhdGluZyB0aGUgQm9uZGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBgQ09ORklHX0JPTkRJTkdgIHN5bWJvbCBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgdGFzayBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEl0IGNvdWxkIGJlIGluIGEgdG9wLWxldmVsIGZpbGUsIGEgZmVhdHVyZS1zcGVjaWZpYyBLY29uZmlnLCBvciBldmVuIGluZGlyZWN0bHkgdGhyb3VnaCBhIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsIGhlcmUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZmluZGAgY29tbWFuZCwgcGVyaGFwcyBuYXJyb3dpbmcgaXQgZG93biB3aXRoIHNvbWUgZ3JlcCBmaWx0ZXJpbmcgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZmlsZXMgc3BlY2lmaWNhbGx5LiBUaGVuLCBJIGNhbiBpbnNwZWN0IHRoZSByZWxldmFudCBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBDT05GSUdfQk9ORElOR2Agc3ltYm9sLiBEZXBlbmRpbmcgb24gaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIHRoZSBjb21wbGV4aXR5LCBJIG1pZ2h0IG5lZWQgdG8gdHJhY2UgdGhyb3VnaCBhIGZldyBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2Vzcywgd3JpdHRlbiBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZzoKCioqRXhhbWluaW5nIHRoZSBLZXJuZWwgTmV0d29yayBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSBhbmQgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgNDEuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgY3J1Y2lhbCBvcHRpb25zLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIgSSYjMzk7bSByZXNlYXJjaGluZyBvciBhIGdlbmVyYWwgYXJlYSB0aGF0IHJlcXVpcmVzIG9wdGltaXphdGlvbi4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjb25kaXRpb25hbCBsb2dpYywgbWF5YmUgc29tZSBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBvdGhlciBwcmVyZXF1aXNpdGVzLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtYXAgb2YgdGhpcyBzZWN0aW9uIG9mIHRoZSBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE5FVF9DT1JFXG4gIDMzOlx0XHRkZWZhdWx0IHlcbiAgMzQ6XHRcdGJvb2wgXCYjMzQ7TmV0d29yayBjb3JlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG8gbm90IGludGVuZCB0byB1c2UgYW55IG9mIHRoZVxuICAzNzpcdFx0ICBuZXR3b3JraW5nIGNvcmUgZHJpdmVycyAoaS5lLiBWTEFOLCBicmlkZ2luZywgYm9uZGluZywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRpZiBORVRfQ09SRVxuICA0MDpcdFxuICA0MTpcdGNvbmZpZyBCT05ESU5HXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgNDQ6XHRcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byAmIzM5O2JvbmQmIzM5OyBtdWx0aXBsZSBFdGhlcm5ldFxuICA0NzpcdFx0ICBDaGFubmVscyB0b2dldGhlci4gVGhpcyBpcyBjYWxsZWQgJiMzOTtFdGhlcmNoYW5uZWwmIzM5OyBieSBDaXNjbyxcbiAgNDg6XHRcdCAgJiMzOTtUcnVua2luZyYjMzk7IGJ5IFN1biwgODAyLjNhZCBieSB0aGUgSUVFRSwgYW5kICYjMzk7Qm9uZGluZyYjMzk7IGluIExpbnV4LlxuICA0OTpcdFxuICA1MDpcdFx0ICBUaGUgZHJpdmVyIHN1cHBvcnRzIG11bHRpcGxlIGJvbmRpbmcgbW9kZXMgdG8gYWxsb3cgZm9yIGJvdGggaGlnaFxuICA1MTpcdFx0ICBwZXJmb3JtYW5jZSBhbmQgaGlnaCBhdmFpbGFiaWxpdHkgb3BlcmF0aW9uLlxuICA1MjpcdFxuICA1MzpcdFx0ICBSZWZlciB0byBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnJzdFx1MDAzZSBmb3IgbW9yZVxuICA1NDpcdFx0ICBpbmZvcm1hdGlvbi5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA1NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBib25kaW5nLlxuICA1ODpcdFxuICA1OTpcdGNvbmZpZyBEVU1NWVxuICA2MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgbmV0IGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDYxOlx0XHRoZWxwXG4gIDYyOlx0XHQgIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBiaXQtYnVja2V0IGRldmljZSAoaS5lLiB0cmFmZmljIHlvdSBzZW5kIHRvXG4gIDYzOlx0XHQgIHRoaXMgZGV2aWNlIGlzIGNvbnNpZ25lZCBpbnRvIG9ibGl2aW9uKSB3aXRoIGEgY29uZmlndXJhYmxlIElQXG4gIDY0Olx0XHQgIGFkZHJlc3MuIEl0IGlzIG1vc3QgY29tbW9ubHkgdXNlZCBpbiBvcmRlciB0byBtYWtlIHlvdXIgY3VycmVudGx5XG4gIDY1Olx0XHQgIGluYWN0aXZlIFNMSVAgYWRkcmVzcyBzZWVtIGxpa2UgYSByZWFsIGFkZHJlc3MgZm9yIGxvY2FsIHByb2dyYW1zLlxuICA2NjpcdFx0ICBJZiB5b3UgdXNlIFNMSVAgb3IgUFBQLCB5b3UgbWlnaHQgd2FudCB0byBzYXkgWSBoZXJlLiBJdCB3b24mIzM5O3RcbiAgNjc6XHRcdCAgZW5sYXJnZSB5b3VyIGtlcm5lbC4gV2hhdCBhIGRlYWwuIFJlYWQgYWJvdXQgaXQgaW4gdGhlIE5ldHdvcmtcbiAgNjg6XHRcdCAgQWRtaW5pc3RyYXRvciYjMzk7cyBHdWlkZSwgYXZhaWxhYmxlIGZyb21cbiAgNjk6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjZ3VpZGVcdTAwM2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDAxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIG9uIHdoYXQgSSYjMzk7ZCBiZSBsb29raW5nIGZvciBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEJvbmRpbmcgTWFrZWZpbGUqKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZWAuIE15IGltbWVkaWF0ZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyBydW5uaW5nLiBXaHkgYW0gSSBsb29raW5nIGF0IHRoaXM/IElzIHRoZXJlIGEgcmVwb3J0ZWQgaXNzdWUgd2l0aCBib25kaW5nPyBBIG5ldyBmZWF0dXJlPyBQZXJmb3JtYW5jZSBjb25jZXJucz8gSSBuZWVkIGNvbnRleHQsIG9mIGNvdXJzZSwgYnV0IGp1c3QgaGl0dGluZyB0aGUgTWFrZWZpbGUsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLgoKRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZS4gSSBrbm93IHRoZSBnZW5lcmFsIGxheW91dCBvZiB0aGUga2VybmVsJiMzOTtzIE1ha2VmaWxlcywgc28gSSYjMzk7bGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBgb2JqLWAsIGBjY2ZsYWdzLWAsIGBLQlVJTERfQ0ZMQUdTYCwgYGluY2x1ZGVgLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgKGBpZmRlZmAsIGBpZm5lcWApLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgKGAqLmNgLCBgKi5vYCkgYW5kIGhlYWRlciBkZXBlbmRlbmNpZXMuCgpCZXlvbmQgdGhlIGJhc2ljIHN0cnVjdHVyZSwgSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIG1vZHVsZXMgYmVpbmcgYnVpbHQ/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9uIG9yIGhhcmR3YXJlPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBmbGFncyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgYm9uZGluZz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG9zc2libHkgc2VlaW5nIGAtRGAgZGVmaW5lcywgd2hpY2ggdGVsbCBtZSBhYm91dCBjb21waWxlLXRpbWUgZmVhdHVyZSB0b2dnbGVzLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZGVwZW5kZW5jaWVzIGxpc3RlZC4gSWYgdGhlIGJvbmRpbmcgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgKGUuZy4sIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWMgTklDIGRyaXZlcnMpLCB0aGF0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLiBBcmUgdGhlcmUgY3Jvc3MtZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY2F1c2UgYnVpbGQgaXNzdWVzIG9yIHJ1bnRpbWUgY29uZmxpY3RzPwoKRmluYWxseSwgaWYgdGhpcyAqaXMqIHJlbGF0ZWQgdG8gYW4gaXNzdWUsIEkmIzM5O2xsIGJlIGh1bnRpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBzcGVjaWZpYyBkZWJ1Z2dpbmcgb3IgbG9nZ2luZyBmbGFncy4gQXJlIHRoZXJlIGFueSBgLURgIGRlZmluZXMgcmVsYXRlZCB0byB2ZXJib3NlIG91dHB1dCBvciBkZWJ1Z2dpbmc/IFRoYXQmIzM5O3MgZ29sZGVuLCBwYXJ0aWN1bGFybHkgaWYgdGhpcyBpcyByZWxhdGVkIHRvIGEgcHJvYmxlbS4gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgYW55IHNwZWNpZmljIHRlc3QgdGFyZ2V0cyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGhlbHAgbWUgcmVwcm9kdWNlIG9yIGFuYWx5emUgdGhlIGlzc3VlLiBUaGUgZ29hbCwgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYm9uZGluZyBkcml2ZXImIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gZGl2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBCb25kaW5nIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuICAgNzpcdFxuICAgODpcdGJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuICAgOTpcdFxuICAxMDpcdHByb2MtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IGJvbmRfcHJvY2ZzLm9cbiAgMTE6XHRib25kaW5nLW9ianMgJiM0Mzs9ICQocHJvYy15KVxuICAxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjb25maWd1cmF0aW9uLXdpc2UgaW4gdGhlc2UgbW9kaWZpZWQgZmlsZXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHNjYW4gZm9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IGBORVRfQ09SRWAsIGBJTkVUYCwgYW5kIGBCT05ESU5HYC4gQXJlIGBORVRfQ09SRWAgYW5kIGBJTkVUYCBzdGFuZGFyZCBkZWZpbmVzPyBgQk9ORElOR2AgZGVmaW5pdGVseSBkZXBlbmRzIG9uIGBJTkVUYCwgYW5kIGBORVRfQ09SRWAgaXMgaXRzIHBhcmVudCBtZW51LCBjb3JyZWN0PwoKTm93LCBJJiMzOTtsbCBzY3J1dGluaXplIGBCT05ESU5HYCBtb3JlIGNsb3NlbHkuCgpOZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhlIHBhdGNoLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNgLiBMZXQgbWUgcmV2aWV3IHRoZSBjb2RlLCBhbmQgaW4gcGFydGljdWxhciwgdGhlIGZ1bmN0aW9uIGBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClgLiBIbW0uLi4gaXMgYHJsYl9pbml0aWFsaXplYCBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCYjMzk7cyBrZXkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaGFzIGFueSBleHRlcm5hbCBjYWxsZXJzLCBhbmQgaWYgdGhlcmUgaXMgYSBrbm93biBlbnRyeSBwb2ludC4gSSYjMzk7bGwgY2hlY2sgYGJvbmRfYWxiLmNgIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JsYl9pbml0aWFsaXplJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9ODM0PXN0YXRpYyB2b2lkIHJsYl9wdXJnZV9zcmNfaXAoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhcnBfcGt0ICphcnApXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg1NC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzo4NTU6c3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xMzA2PWludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMTQtXHRpZiAocmxiX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzE1Olx0XHRyZXMgPSBybGJfaW5pdGlhbGl6ZShib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE2LVx0XHRpZiAocmVzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzQyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBib25kX2FsYl9pbml0aWFsaXplYCBGdW5jdGlvbioqCgpSaWdodCwgYGJvbmRfYWxiX2luaXRpYWxpemVgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBtZWFucyBpdCYjMzk7cyBwb3RlbnRpYWxseSB2aXNpYmxlIGFuZCBjYWxsYWJsZSBmcm9tIG91dHNpZGUgaXRzIGxpa2VseSBtb2R1bGUsIHdoaWNoIGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIGZvciBtYWludGFpbmFiaWxpdHksIGVuY2Fwc3VsYXRpb24sIGFuZCBldmVuIHBvdGVudGlhbCB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtXaGVyZSB0aGUgaGVjayBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD8mIzM0OyBXZSBuZWVkIHRvIHRyYWNrIGRvd24gaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UgcGF0dGVybnMgYW5kIGVuc3VyZSBldmVyeXRoaW5nIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBMZXQmIzM5O3MgdHJhY2UgYmFjayB0aGUgY2FsbHMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBUaW1lIHRvIGJyZWFrIG91dCB0aGUgZ3JlcCBvciBteSBJREUmIzM5O3MgY2FsbCBoaWVyYXJjaHkgZmVhdHVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTI4ND1zdGF0aWMgYm9vbCBhbGJfZGV0ZXJtaW5lX25kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjEzMDY6aW50IGJvbmRfYWxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCBybGJfZW5hYmxlZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzNDc9c3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3My1cdGlmIChib25kX2lzX2xiKGJvbmQpKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzNzQ6XHRcdC8qIGJvbmRfYWxiX2luaXRpYWxpemUgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSB0aW1lclxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzc1LVx0XHQgKiBpcyBzdGFydGVkLlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzc2LVx0XHQgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM3NzpcdFx0aWYgKGJvbmRfYWxiX2luaXRpYWxpemUoYm9uZCwgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfQUxCKSkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzgtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjk2CgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgRGlmZioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTttIHNlZWluZyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQ6IGBybGJfaW5pdGlhbGl6ZWAgaW4gYGJvbmRfYWxiLmNgLCBjYWxsZWQgYnkgYGJvbmRfYWxiX2luaXRpYWxpemVgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBib25kX29wZW5gLiBUaGF0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiBjaGFpbi4gVGhlbiB0aGVyZSYjMzk7cyBgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzYCwgYGJvbmRfZW5zbGF2ZWAsIGBfX2JvbmRfcmVsZWFzZV9vbmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9za2lwX3NsYXZlYCwgYW5kIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCDigJMgYSBnb29kIG1peCBvZiBjb3JlIGJvbmRpbmcgZnVuY3Rpb25hbGl0eS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyDigJMgc3BlY2lmaWNhbGx5IGBib25kX2Vuc2xhdmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAsIGFuZCBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAgLSBhcmUgbm9uLXN0YXRpYywgZXhwb3J0ZWQgc3ltYm9scywgb3IgcGVyaGFwcyBuZXRsaW5rIG9wZXJhdGlvbnMuIFRoYXQgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIGlmIHRoaXMgY2hhbmdlIGhhcyBpbXBsaWNhdGlvbnMgZm9yIG90aGVyIG1vZHVsZXMgb3IgdGhlIHVzZXIgc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuCgpOZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgcG90ZW50aWFsbHkgY3JpdGljYWwgZnVuY3Rpb25zOiBgYm9uZF9lbnNsYXZlYCwgYF9fYm9uZF9yZWxlYXNlX29uZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGFuZCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEEgcXVpY2sgY2hlY2sgb2YgdGhlc2Ugc2hvdWxkIHRlbGwgbWUgd2hhdCYjMzk7cyBjaGFuZ2VkIGFuZCBob3cuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoYm9uZF9vcGVufGJvbmRfY2xvc2V8Ym9uZF9lbnNsYXZlfGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXR8Ym9uZF9za2lwX3NsYXZlfF9fYm9uZF9yZWxlYXNlX29uZSkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xNTMyPXZvaWQgYm9uZF9hbGJfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1ODctXHRcdFx0LyogZGV2X3NldF9wcm9taXNjdWl0eSByZXF1aXJlcyBydG5sIGFuZFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1ODg6XHRcdFx0ICogbm90aGluZyBlbHNlLiAgQXZvaWQgcmFjZSB3aXRoIGJvbmRfY2xvc2UuXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTU4OS1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4Ny1cdC8qIFRoZSBzZW5kX3BlZXJfbm90aWYgaXMgc2V0IGJ5IGFjdGl2ZS1iYWNrdXAgb3IgODAyM2FkXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjExODg6XHQgKiBtb2RlLCBhbmQgY2xlYXJlZCBpbiBib25kX2Nsb3NlKCkgd2hlbiBjaGFuZ2luZyBtb2RlLlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTg5LVx0ICogSXQgaXMgc2FmZSB0byBvbmx5IGNoZWNrIGJvbmQgbW9kZSBoZXJlLlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg2NT12b2lkIGJvbmRfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFx1MDAzY3NsYXZlXHUwMDNlIHRvIGJvbmQgZGV2aWNlIFx1MDAzY21hc3Rlclx1MDAzZSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODg4OmludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjQyNC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjQyNTpzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjYtXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI2MDY9aW50IGJvbmRfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MDcte1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA4Olx0cmV0dXJuIF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA5LX1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI2MTQ9c3RhdGljIGludCBib25kX3JlbGVhc2VfYW5kX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYxOS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjYyMDpcdHJldCA9IF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MjEtXHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2ICFib25kX2hhc19zbGF2ZXMoYm9uZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0yODk1PXN0YXRpYyB2b2lkIGJvbmRfbWlpX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjkxNS1cdGlmIChjb21taXQgfHwgUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmKSkge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE2Olx0XHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgY2FuY2VsIG9mIHdvcmtxdWV1ZSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTE3LVx0XHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zODQzPXN0YXRpYyB2b2lkIGJvbmRfYWN0aXZlYmFja3VwX2FycF9tb24oc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODU3LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozODU4Olx0XHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgZmx1c2ggb2Ygd29ya3F1ZXVlICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM4NTktXHRcdGlmICghcnRubF90cnlsb2NrKCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM5NDU9c3RhdGljIGludCBib25kX3NsYXZlX25ldGRldl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzk3MS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozOTcyOlx0XHRcdF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM5NzMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMyMD12b2lkIGJvbmRfd29ya19pbml0X2FsbChzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMS17XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjI6XHQvKiBuZG9fc3RvcCwgYm9uZF9jbG9zZSgpIHdpbGwgdHJ5IHRvIGZsdXNoIHRoZSB3b3JrIHVuZGVyXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMjMtXHQgKiB0aGUgcnRubCBsb2NrLiBUaGUgd29ya3F1ZXVlIG11c3Qgbm90IGJsb2NrIG9uIHJ0bmwgbG9ja1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMzNj12b2lkIGJvbmRfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM0Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM0NzpzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDgte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQwOS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxMDpzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDExLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ1ODU9c3RhdGljIGludCBib25kX2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NjQwLVx0Y2FzZSBTSU9DQk9OREVOU0xBVkU6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ2NDE6XHRcdHJlcyA9IGJvbmRfZW5zbGF2ZShib25kX2Rldiwgc2xhdmVfZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDY0Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01MDgzPXN0YXRpYyB2b2lkIGJvbmRfc2xhdmVfYXJyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwMy1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTEwNDpzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwNS1cdFx0XHQgICAgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTExLVx0ICogb25seSBwb3NzaWJsZSB3aGVuIHRoZSBjYWxsIGlzIGluaXRpYXRlZCBmcm9tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUxMTI6XHQgKiBfX2JvbmRfcmVsZWFzZV9vbmUoKS4gSW4gdGhpcyBzaXR1YXRpb247IG92ZXJ3cml0ZSB0aGVcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTExMy1cdCAqIHNraXBzbGF2ZSBlbnRyeSBpbiB0aGUgYXJyYXkgd2l0aCB0aGUgbGFzdCBlbnRyeSBmcm9tIHRoZVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE2MD1pbnQgYm9uZF91cGRhdGVfc2xhdmVfYXJyKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNraXBzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMTgtXHRpZiAocmV0ICE9IDAgXHUwMDI2XHUwMDI2IHNraXBzbGF2ZSkge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjE5Olx0XHRib25kX3NraXBfc2xhdmUocnRubF9kZXJlZmVyZW5jZShib25kLVx1MDAzZWFsbF9zbGF2ZXMpLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MjIwLVx0XHRcdFx0c2tpcHNsYXZlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTIyMTpcdFx0Ym9uZF9za2lwX3NsYXZlKHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKSxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIyMi1cdFx0XHRcdHNraXBzbGF2ZSk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk0Ni1cdC5uZG9fdW5pbml0XHRcdD0gYm9uZF91bmluaXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDc6XHQubmRvX29wZW5cdFx0PSBib25kX29wZW4sXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDg6XHQubmRvX3N0b3BcdFx0PSBib25kX2Nsb3NlLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ5LVx0Lm5kb19zdGFydF94bWl0XHRcdD0gYm9uZF9zdGFydF94bWl0LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk2Ni0jZW5kaWZcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk2NzpcdC5uZG9fYWRkX3NsYXZlXHRcdD0gYm9uZF9lbnNsYXZlLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTY4LVx0Lm5kb19kZWxfc2xhdmVcdFx0PSBib25kX3JlbGVhc2UsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02MDYxPXN0YXRpYyB2b2lkIGJvbmRfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwNzAtXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo2MDcxOlx0XHRfX2JvbmRfcmVsZWFzZV9vbmUoYm9uZF9kZXYsIHNsYXZlLVx1MDAzZWRldiwgdHJ1ZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwNzItXHRuZXRkZXZfaW5mbyhib25kX2RldiwgXCYjMzQ7UmVsZWFzZWQgYWxsIHNsYXZlc1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0zMT1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzItXHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGJvbmRfb3B0X3ZhbHVlICpuZXd2YWwpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMzpzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTM0LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0yNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBib25kX29wdGlvbiBib25kX29wdHNbQk9ORF9PUFRfTEFTVF0gPSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0zMTYtXHRcdC52YWx1ZXMgPSBib25kX2ludG1heF90YmwsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjMxNzpcdFx0LnNldCA9IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzE4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTkxMD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTM5LVx0LyogV2hlbiBjaGFuZ2luZyBtb2RlLCB0aGUgYm9uZCBkZXZpY2UgaXMgZG93biwgd2UgbWF5IHJlZHVjZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzo5NDA6XHQgKiB0aGUgYm9uZF9iY2FzdF9uZWlnaF9lbmFibGVkIGluIGJvbmRfY2xvc2UoKSBpZiBicm9hZGNhc3RfbmVpZ2hib3JcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTQxLVx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTExOD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjctICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjExMjg6c3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTI5LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTE3ODY9c3RhdGljIGludCBib25kX29wdGlvbl9zbGF2ZXNfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTgxMS1cdFx0c2xhdmVfZGJnKGJvbmQtXHUwMDNlZGV2LCBkZXYsIFwmIzM0O0Vuc2xhdmluZyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxODEyOlx0XHRyZXQgPSBib25kX2Vuc2xhdmUoYm9uZC1cdTAwM2VkZXYsIGRldiwgTlVMTCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE4MTMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbjogQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByaWdodC4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIHRoZSBwcmltZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUga2V5IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIOKAkyBmb3IgdGhpcyBhbmFseXNpcy4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGxpc3QgdG8gc3RhcnQgd2l0aCwgaW5jbHVkaW5nIGBib25kX2Vuc2xhdmVgLCBgYm9uZF9yZWxlYXNlYCwgYW5kIGBib25kX2FsYl9pbml0aWFsaXplYCwgdGhvc2UgYXJlIG9idmlvdXMgY2FuZGlkYXRlcy4gR29vZCBjaG9pY2VzLiBgYm9uZF91cGRhdGVfc2xhdmVfYXJyYCBpcyBhbm90aGVyIHNvbGlkIGNvbnRlbmRlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBhcm91bmQgYGJvbmRfb3B0X3RyeXNldGAgb3IsIHBlcmhhcHMgYmV0dGVyLCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEkgbmVlZCB0byB2ZXJpZnksIGFuZCBxdWlja2x5LiBJcyBgYm9uZF9vcHRfdHJ5c2V0YCBhY3R1YWxseSBleHBvcnRlZD8gSXMgaXQgKm5vbi1zdGF0aWMqPyBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIGBib25kX29wdGlvbnMuY2AgdG8gYmUgc3VyZS4gSXQgY291bGQgYmUgY3J1Y2lhbCwgb3IgaXQgY291bGQgYmUgYSBkZWFkIGVuZC4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBnZXR0aW5nIGFsbCB0aGUgcmlnaHQgZGF0YSBwb2ludHMgaGVyZS4gTm8gc3RvbmUgdW50dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X10mIzQzOyBib25kXy4qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjIxND1zdGF0aWMgdm9pZCBhZF9tYXJrZXJfcmVzcG9uc2VfcmVjZWl2ZWQoc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzYtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjIzNzp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzgte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ3LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNDg6dm9pZCBib25kXzNhZF9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDkte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjcxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzI6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI3My17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyNjp2b2lkIGJvbmRfM2FkX3VuYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDg4LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0ODk6dm9pZCBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3Moc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1MjA9c3RhdGljIGJvb2wgYm9uZF9hZ2dfdGltZXJfYWR2YW5jZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0OC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTQ5OnZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUwLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjcxMD1zdGF0aWMgdm9pZCBhZF91cGRhdGVfYWN0b3Jfa2V5cyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzU0OnZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgwLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODE6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODIte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODM4LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4Mzk6aW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NDAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODgxPWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkxNDppbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MjQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkyNTppbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNi1cdFx0XHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1Ni0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU3OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4MS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTgyOnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfYWN0aXZlKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5ODMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMDE6c2l6ZV90IGJvbmRfM2FkX3N0YXRzX3NpemUodm9pZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxMy1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDE0OmludCBib25kXzNhZF9zdGF0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kXzNhZF9zdGF0cyAqc3RhdHMpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTMwNS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTMwNy17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjctXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTMyODp2b2lkIGJvbmRfYWxiX2RlaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzI5LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTM3MD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF90bGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDA4LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE0MDk6bmV0ZGV2X3R4X3QgYm9uZF90bGJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTQxMC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTE0MTg9c3RydWN0IHNsYXZlICpib25kX3htaXRfYWxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyMi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTIzOm5ldGRldl90eF90IGJvbmRfYWxiX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1MjQte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1MzI6dm9pZCBib25kX2FsYl9tb25pdG9yKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTYzNS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjM2OmludCBib25kX2FsYl9pbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY1LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE2NjY6dm9pZCBib25kX2FsYl9kZWluaXRfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTY2Ny17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2NzktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTY4MDp2b2lkIGJvbmRfYWxiX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2ODEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNzE3LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3MTg6dm9pZCBib25kX2FsYl9oYW5kbGVfYWN0aXZlX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpuZXdfc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTcxOS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3ODYtLyogQ2FsbGVkIHdpdGggUlROTCAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3ODc6aW50IGJvbmRfYWxiX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTc4OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE4MzEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTgzMjp2b2lkIGJvbmRfYWxiX2NsZWFyX3ZsYW4oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIHNob3J0IHZsYW5faWQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTgzMy17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz01ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUoYm9uZF9kZWJ1Z19ybGJfaGFzaCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU1LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzo1Njp2b2lkIGJvbmRfZGVidWdfcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTY0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzo2NTp2b2lkIGJvbmRfZGVidWdfdW5yZWdpc3RlcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjcwOnZvaWQgYm9uZF9kZWJ1Z19yZXJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy03MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz03OT12b2lkIF9faW5pdCBib25kX2NyZWF0ZV9kZWJ1Z2ZzKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy04Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6ODc6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy04OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05NS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6OTY6dm9pZCBib25kX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05Ny17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05OS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6MTAwOnZvaWQgYm9uZF9kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDQ6dm9pZCBib25kX2RlYnVnX3JlcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTEwNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz0xMDg9dm9pZCBfX2luaXQgYm9uZF9jcmVhdGVfZGVidWdmcyh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTExLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMTI6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMTMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjcyPWNvbnN0IGNoYXIgKmJvbmRfbW9kZV9uYW1lKGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjk2LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTc6bmV0ZGV2X3R4X3QgYm9uZF9kZXZfcXVldWVfeG1pdChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjk4LVx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMjU9Ym9vbCBfX2JvbmRfeGRwX2NoZWNrKGludCBtb2RlLCBpbnQgeG1pdF9wb2xpY3kpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zNDMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM0NDpib29sIGJvbmRfeGRwX2NoZWNrKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1kZXZfb3BzIGJvbmRfeGZybWRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy03NTUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjc1NjppbnQgYm9uZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNzU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTIwOC0vKiBVc2UgdGhpcyB0byB1cGRhdGUgc2VuZF9wZWVyX25vdGlmIHdoZW4gUlROTCBtYXkgYmUgaGVsZCBpbiBvdGhlciBwbGFjZXMuICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEyMDk6dm9pZCBib25kX3BlZXJfbm90aWZ5X3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyMTAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTIzOD1zdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjY1LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMjY2OnZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyNjcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM2OS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTM3MDp2b2lkIGJvbmRfc2VsZWN0X2FjdGl2ZV9zbGF2ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM3MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xODA1PXN0YXRpYyB2b2lkIGJvbmRfbmV0ZGV2X25vdGlmeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODIyOnZvaWQgYm9uZF9xdWV1ZV9zbGF2ZV9ldmVudChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4MjYtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4Mjc6dm9pZCBib25kX2xvd2VyX3N0YXRlX2NoYW5nZWQoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTgyOC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xODU2PXN0YXRpYyB2b2lkIGJvbmRfZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg2NC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTg2NTp2b2lkIGJvbmRfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg4Ny0vKiBlbnNsYXZlIGRldmljZSBcdTAwM2NzbGF2ZVx1MDAzZSB0byBib25kIGRldmljZSBcdTAwM2NtYXN0ZXJcdTAwM2UgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTg4ODppbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg4OS1cdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI0MjU9c3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYwNS0vKiBBIHdyYXBwZXIgdXNlZCBiZWNhdXNlIG9mIG5kb19kZWxfbGluayAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA2OmludCBib25kX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTMwMTQ9c3RhdGljIHZvaWQgYm9uZF9hcnBfc2VuZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBpbnQgYXJwX29wLCBfX2JlMzIgZGVzdF9pcCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTMwNDUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjMwNDY6c3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTMwNDctXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MzM3ND1zdGF0aWMgaW50IGJvbmRfbmFfcmN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzQyMi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MzQyMzppbnQgYm9uZF9yY3ZfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjQtXHRcdCAgICAgIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzA1PXN0YXRpYyB1MzIgYm9uZF94bWl0X2hhc2hfeGRwKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMTktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjA6dm9pZCBib25kX3dvcmtfaW5pdF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMjEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMzNS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDMzNjp2b2lkIGJvbmRfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzM3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUwNjA9c3RhdGljIG5ldGRldl90eF90IGJvbmRfeG1pdF9hY3RpdmViYWNrdXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUwNzYtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUwNzc6dm9pZCBib25kX3NsYXZlX2Fycl93b3JrX3JlYXJtKHN0cnVjdCBib25kaW5nICpib25kLCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUxNDc9c3RhdGljIHZvaWQgYm9uZF9yZXNldF9zbGF2ZV9hcnIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTU5LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTYwOmludCBib25kX3VwZGF0ZV9zbGF2ZV9hcnIoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2tpcHNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU5ODQ9c3RhdGljIHZvaWQgYm9uZF9kZXN0cnVjdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5OTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5OTQ6dm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk5NS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02NTEwPXVuc2lnbmVkIGludCBib25kX2dldF9udW1fdHhfcXVldWVzKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02NTE5LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo2NTIwOmludCBib25kX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTY1MjEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM9MTAwOD1pbnQgX19pbml0IGJvbmRfbmV0bGlua19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy0xMDEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzoxMDEzOnZvaWQgYm9uZF9uZXRsaW5rX2Zpbmkodm9pZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxNC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz04NDQ9aW50IF9fYm9uZF9vcHRfc2V0X25vdGlmeShzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTg2Ny0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6ODY4OmludCBib25kX29wdF90cnlzZXRfcnRubChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgdW5zaWduZWQgaW50IG9wdGlvbiwgY2hhciAqYnVmKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04Njkte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTIxMz1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pcF90YXJnZXRfcmVtKHN0cnVjdCBib25kaW5nICpib25kLCBfX2JlMzIgdGFyZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTI1MS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTI1Mjp2b2lkIGJvbmRfb3B0aW9uX2FycF9pcF90YXJnZXRzX2NsZWFyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMjUzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTEzMTE9c3RhdGljIHZvaWQgc2xhdmVfc2V0X25zX21hZGRycyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSwgYm9vbCBhZGQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMzM1OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfYWRkKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM2LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEzNDEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzNDI6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19kZWwoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEzNDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTM4OD1zdGF0aWMgdm9pZCBfYm9uZF9vcHRpb25zX25zX2lwNl90YXJnZXRfc2V0KHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgc2xvdCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0MDQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0MDU6dm9pZCBib25kX29wdGlvbl9uc19pcDZfdGFyZ2V0c19jbGVhcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQwNi17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xNDUzPXN0YXRpYyB2b2lkIHNsYXZlX3NldF9uc19tYWRkcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGJvb2wgYWRkKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxNDU1OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfYWRkKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU2LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxNDU3OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfZGVsKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU4LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYz0yODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBib25kX2luZm9fc2VxX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjI5MTp2b2lkIGJvbmRfY3JlYXRlX3Byb2NfZW50cnkoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA2LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjMwNzp2b2lkIGJvbmRfcmVtb3ZlX3Byb2NfZW50cnkoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYz04NTI9dm9pZCBfX25ldF9leGl0IGJvbmRfZGVzdHJveV9zeXNmcyhzdHJ1Y3QgYm9uZF9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg1OS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jOjg2MDp2b2lkIGJvbmRfcHJlcGFyZV9zeXNmc19ncm91cChzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg2MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM9MTMzPWNvbnN0IHN0cnVjdCBzeXNmc19vcHMgc2xhdmVfc3lzZnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzNi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jOjEzNzppbnQgYm9uZF9zeXNmc19zbGF2ZV9hZGQoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzOC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmMtMTQxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTQyOnZvaWQgYm9uZF9zeXNmc19zbGF2ZV9kZWwoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTE0My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjgyCgkJCQkJCQlvdXRwdXQ6IDE0NAoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFdGhlcm5ldCBCb25kaW5nIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgcHJvY2VzcyB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBmdW5jdGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgLiBCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTt2ZSBnb3QgYSBzZWxlY3Rpb24gb2YgY29uZmlndXJhdGlvbnMsICYjMzQ7Qk9ORElORyYjMzQ7LCAmIzM0O05FVF9DT1JFJiMzNDssIGFuZCAmIzM0O0lORVQmIzM0Oy4gVGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCB3aWxsIGVuc3VyZSB0aGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBJIG5lZWQgYXJlIHByZXNlbnQgZm9yIG15IGV2YWx1YXRpb24uIE5vdywgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucywgSSBzZWUgdGhlIGZvbGxvd2luZyBgRm9jdXNTeW1ib2xzYDogJiMzNDtib25kX2Vuc2xhdmUmIzM0OywgJiMzNDtib25kX3JlbGVhc2UmIzM0OywgJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssICYjMzQ7Ym9uZF91cGRhdGVfc2xhdmVfYXJyJiMzNDssIGFuZCAmIzM0O2JvbmRfb3B0X3RyeXNldF9ydG5sJiMzNDsuCgpUaGUgcmF0aW9uYWxlIGhlcmUgaXMgY3J1Y2lhbC4gVGhpcyBwYXRjaCBpcyBhYm91dCBpbnRyb2R1Y2luZyBgV1JJVEVfT05DRSgpYCB3cmFwcGVycyB3aXRoaW4gdGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgZGF0YSByYWNlcyBhbmQgc3RvcmUgdGVhcmluZyB0aGF0IGNhbiBvY2N1ciB3aGVuIHlvdSBoYXZlIGNvbmN1cnJlbnQgcmVhZCBvcGVyYXRpb25zLCB3aGljaCBpcyB2ZXJ5IGNvbW1vbiBpbiBuZXR3b3JraW5nLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IHRoZSB1cGRhdGVzIHRvIGBib25kLSZndDtyZWN2X3Byb2JlYCwgYGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZmAsIGBib25kLSZndDtzbGF2ZV9jbnRgLCBhbmQgYHNsYXZlcy0mZ3Q7Y291bnRgLiBUaGlzIGJvbmRpbmcgZHJpdmVyIGlzIHNvbWV0aGluZyBJJiMzOTttIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQmIzM5O3MgYSB2aXJ0dWFsIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCB3aGljaCBJIGtub3cgaXMgaGVhdmlseSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIG1lZXRzIGFsbCB0aGUgbmVjZXNzYXJ5IGNyaXRlcmlhOiBpcyBpdCBgV29ydGhGdXp6aW5nYCwgd2hpY2ggSSBzZWUgaXMgdHJ1ZT8gQXJlIHRoZSBgRm9jdXNTeW1ib2xzYCB2YWxpZCBhbmQgbm9uLWhvdHBhdGggZW50cnkgcG9pbnRzIGluIHRoZSBib25kaW5nIGRyaXZlciwgd2hpY2ggc2VlbXMgYWNjdXJhdGU/IEFyZSB0aGUgYEVuYWJsZUNvbmZpZ3NgIGV4YWN0bHkgdGhlIGNvcnJlY3QgZGVwZW5kZW5jaWVzLCB3aXRob3V0IHRoZSBuZWVkIGZvciB0aGUgYENPTkZJR19gIHByZWZpeCwgYWdhaW4sIHllcy4gVGhlIHJlYXNvbmluZyBpcyBhbHNvIGNvbmNpc2UgYW5kIGNsZWFybHkgZXhwbGFpbnMgdGhlIHJhdGlvbmFsZSwgc28gSSBjYW4gc2VlIHRoaXMgY2xlYXJseS4gSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBnby4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7LAogICAgJiMzNDtORVRfQ09SRSYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssCiAgICAmIzM0O2JvbmRfdXBkYXRlX3NsYXZlX2FyciYjMzQ7LAogICAgJiMzNDtib25kX29wdF90cnlzZXRfcnRubCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgY29uY3VycmVudCBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIG5ldHdvcmsgZHJpdmVyIGJ5IHVzaW5nIFdSSVRFX09OQ0UoKSB3aGVuIG1vZGlmeWluZyByZWN2X3Byb2JlLCBzZW5kX3BlZXJfbm90aWYsIHNsYXZlX2NudCwgYW5kIHNsYXZlIGFycmF5IGNvdW50LiBUaGUgRXRoZXJuZXQgYm9uZGluZyBkcml2ZXIgaXMgc3RhbmRhcmQgdmlydHVhbCBuZXR3b3JraW5nIGxvZ2ljIHJlYWNoYWJsZSBpbiBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9DT1JFJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7Ym9uZF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2JvbmRfYWxiX2luaXRpYWxpemUmIzM0OywKICAgICYjMzQ7Ym9uZF91cGRhdGVfc2xhdmVfYXJyJiMzNDssCiAgICAmIzM0O2JvbmRfb3B0X3RyeXNldF9ydG5sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBjb25jdXJyZW50IGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgbmV0d29yayBkcml2ZXIgYnkgdXNpbmcgV1JJVEVfT05DRSgpIHdoZW4gbW9kaWZ5aW5nIHJlY3ZfcHJvYmUsIHNlbmRfcGVlcl9ub3RpZiwgc2xhdmVfY250LCBhbmQgc2xhdmUgYXJyYXkgY291bnQuIFRoZSBFdGhlcm5ldCBib25kaW5nIGRyaXZlciBpcyBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgbG9naWMgcmVhY2hhYmxlIGluIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA5OjA5OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jCmluZGV4IDgzOWY3NDgyZGMxODIuLmQyZmI2N2E0N2NmOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMKQEAgLTg3NSw3ICYjNDM7ODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIAlzcGluX3VubG9ja19iaCgmYW1wO2JvbmQtJmd0O21vZGVfbG9jayk7CiAKIAkvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi8KLQlib25kLSZndDtyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2OwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIHJsYl9hcnBfcmVjdik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IGVmOWViMGM1M2M2NjEuLjk0N2Q5MmE2NjliNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTI0NSw3ICYjNDM7MTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSkKIAl9CiAKIAlpZiAobm90aWZpZWQgfHwgZm9yY2UpCi0JCWJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZi0tOwomIzQzOwkJV1JJVEVfT05DRShib25kLSZndDtzZW5kX3BlZXJfbm90aWYsIGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiAtIDEpOwogfQogCiAvKioKQEAgLTIyODQsNyAmIzQzOzIyODQsNyBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldiwKIAkJfQogCX0KIAotCWJvbmQtJmd0O3NsYXZlX2NudCYjNDM7JiM0Mzs7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2xhdmVfY250LCBib25kLSZndDtzbGF2ZV9jbnQgJiM0MzsgMSk7CiAJbmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtJmd0O2RldiwgdHJ1ZSk7CiAJYm9uZF9zZXRfY2Fycmllcihib25kKTsKIApAQCAtMjUzMyw3ICYjNDM7MjUzMyw3IEBAIHN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldiwKIAogCXVuYmxvY2tfbmV0cG9sbF90eCgpOwogCXN5bmNocm9uaXplX3JjdSgpOwotCWJvbmQtJmd0O3NsYXZlX2NudC0tOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NsYXZlX2NudCwgYm9uZC0mZ3Q7c2xhdmVfY250IC0gMSk7CiAKIAlpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkgewogCQljYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtJmd0O2Rldik7CkBAIC00Mzg1LDEzICYjNDM7NDM4NSwxMyBAQCBzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiAKIAlpZiAoYm9uZC0mZ3Q7cGFyYW1zLmFycF9pbnRlcnZhbCkgeyAgLyogYXJwIGludGVydmFsLCBpbiBtaWxsaXNlY29uZHMuICovCiAJCXF1ZXVlX2RlbGF5ZWRfd29yayhib25kLSZndDt3cSwgJmFtcDtib25kLSZndDthcnBfd29yaywgMCk7Ci0JCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTsKJiM0MzsJCVdSSVRFX09OQ0UoYm9uZC0mZ3Q7cmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpOwogCX0KIAogCWlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkgewogCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YWRfd29yaywgMCk7CiAJCS8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgTEFDUERVcyAqLwotCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7CiYjNDM7CQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfM2FkX2xhY3BkdV9yZWN2KTsKIAkJYm9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLCAxKTsKIAogCQlib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKQpAQCAtNDQxMyw3ICYjNDM7NDQxMyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiAJc3RydWN0IHNsYXZlICpzbGF2ZTsKIAogCWJvbmRfd29ya19jYW5jZWxfYWxsKGJvbmQpOwotCWJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiA9IDA7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2VuZF9wZWVyX25vdGlmLCAwKTsKIAlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIE5VTEwpOwogCiAJLyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqLwpAQCAtNTExOCw3ICYjNDM7NTExOCw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLAogCQlpZiAoc2tpcHNsYXZlID09IHNsYXZlcy0mZ3Q7YXJyW2lkeF0pIHsKIAkJCXNsYXZlcy0mZ3Q7YXJyW2lkeF0gPQogCQkJCXNsYXZlcy0mZ3Q7YXJyW3NsYXZlcy0mZ3Q7Y291bnQgLSAxXTsKLQkJCXNsYXZlcy0mZ3Q7Y291bnQtLTsKJiM0MzsJCQlXUklURV9PTkNFKHNsYXZlcy0mZ3Q7Y291bnQsIHNsYXZlcy0mZ3Q7Y291bnQgLSAxKTsKIAkJCWJyZWFrOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCkBAIC0xMTQ3LDExICYjNDM7MTE0NywxMSBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJCSAqLwogCQlpZiAoIW5ld3ZhbC0mZ3Q7dmFsdWUpIHsKIAkJCWlmIChib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlKQotCQkJCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBOVUxMOwomIzQzOwkJCQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIE5VTEwpOwogCQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmspOwogCQl9IGVsc2UgewogCQkJLyogYXJwX3ZhbGlkYXRlIGNhbiBiZSBzZXQgb25seSBpbiBhY3RpdmUtYmFja3VwIG1vZGUgKi8KLQkJCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTsKJiM0MzsJCQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTsKIAkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2JvbmQtJmd0O21paV93b3JrKTsKIAkJCXF1ZXVlX2RlbGF5ZWRfd29yayhib25kLSZndDt3cSwgJmFtcDtib25kLSZndDthcnBfd29yaywgMCk7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTAKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEZ1enppbmcgQXNzZXNzbWVudCBmb3IgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBib25kaW5nIGRyaXZlciBmaWxlcyDigJMgYGJvbmRfYWxiLmNgLCBgYm9uZF9tYWluLmNgLCBhbmQgYGJvbmRfb3B0aW9ucy5jYC4gTG9va3MgbGlrZSBpdCYjMzk7cyBjb252ZXJ0aW5nIHNvbWUgcGxhaW4gYXNzaWdubWVudHMgdG8gYFdSSVRFX09OQ0UoLi4uKWAgY2FsbHMgZm9yIGZpZWxkcyBsaWtlIGBib25kLSZndDtyZWN2X3Byb2JlYCwgYGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZmAsIGBib25kLSZndDtzbGF2ZV9jbnRgLCBhbmQgYHNsYXZlcy0mZ3Q7Y291bnRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBjb25jdXJyZW5jeSDigJMgZGF0YSByYWNlcywgbGlrZWx5IGZvciBLQ1NBTiBwdXJwb3NlcyBvciB0byB0aWdodGVuIHVwIGNvbXBpbGVyIGJlaGF2aW9yIHdpdGggbG9ja2xlc3MgcmVhZGVycy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHJ1biB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IGlzIHRoaXMgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFyZSB3ZSB0b3VjaGluZyBrZXJuZWwgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB3aGVyZSBwYWRkaW5nIG9yIGZpZWxkcyBtaWdodCBub3QgYmUgaW5pdGlhbGl6ZWQ/IEFueSBuZXcgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGFsbG9jYXRpb25zIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1iZXJzPyBBbnkgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/CgpOb3BlLCBpdCBkb2VzbiYjMzk7dCBzZWVtIGxpa2UgYW55IG9mIHRob3NlIHBvdGVudGlhbCBpc3N1ZXMgYXJlIHByZXNlbnQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggKmV4aXN0aW5nKiBmaWVsZHMgd2l0aGluIGBzdHJ1Y3QgYm9uZGluZ2AgYW5kIGBzdHJ1Y3QgYm9uZF91cF9zbGF2ZWAuIFRoZSBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudHMgKGZ1bmN0aW9uIHBvaW50ZXJzIG9yIHplcm8pIG9yIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMgb2YgZXhpc3RpbmcgdmFsdWVzLiBObyBmcmVzaCBtZW1vcnkgYWxsb2NhdGlvbiBvciBwb3RlbnRpYWwgdXNlLWJlZm9yZS1pbml0aWFsaXphdGlvbiBzaXR1YXRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGNvbnNpZGVyIHRoZSBhcHBsaWNhYmlsaXR5IG9mIEtNU0FOIHZlcnN1cyBLQVNBTi9LQ1NBTi4gVGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBjb25jdXJyZW5jeSBmaXhlcyBmb2N1c2VkIG9uIHRoZSBib25kaW5nIGRyaXZlciYjMzk7cyBkYXRhIHN0cnVjdHVyZXMuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzICppbnRyb2R1Y2VkKiBvciAqZXhwb3NlZCogYnkgdGhpcyBwYXRjaC4gS0FTQU4gYW5kIEtDU0FOIGFyZSByZWxldmFudCBiZWNhdXNlIHRoaXMgaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgZGF0YSByYWNlcyBhbmQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgZGVhbHMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeSAqdXNlKiBhbmQgdGhhdCYjMzk7cyBub3Qgd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdCBoZXJlLgoKVGhlcmVmb3JlLCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRpbWUgdG8gZmluYWxpemUgdGhlIHJlc3VsdHMgYW5kIGdldCB0aGUgb3V0cHV0IHJlYWR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHBsYWluIHdyaXRlcyB3aXRoIFdSSVRFX09OQ0UgYW5ub3RhdGlvbnMgb24gc3RydWN0IGJvbmRpbmcgZmllbGRzIChgcmVjdl9wcm9iZWAsIGBzZW5kX3BlZXJfbm90aWZgLCBgc2xhdmVfY250YCkgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxuXG5UaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBhbHRlciBidWZmZXIgYm91bmRzIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBzZW50IHRvIHVzZXJzcGFjZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeS4gU2luY2UgdGhlIHBhdGNoIHN0cmljdGx5IGFkZHJlc3NlcyBjb25jdXJyZW5jeS9kYXRhIHJhY2VzIHdpdGhvdXQgZXhwb3Npbmcgb3IgdG91Y2hpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOTowOTo1My4wMTE0MDUzMzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0MzYwNDY5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiLFxuICAgIFwiTkVUX0NPUkVcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kX2Vuc2xhdmVcIixcbiAgICBcImJvbmRfcmVsZWFzZVwiLFxuICAgIFwiYm9uZF9hbGJfaW5pdGlhbGl6ZVwiLFxuICAgIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsXG4gICAgXCJib25kX29wdF90cnlzZXRfcnRubFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgcGxhaW4gd3JpdGVzIHdpdGggV1JJVEVfT05DRSBhbm5vdGF0aW9ucyBvbiBzdHJ1Y3QgYm9uZGluZyBmaWVsZHMgKGByZWN2X3Byb2JlYCwgYHNlbmRfcGVlcl9ub3RpZmAsIGBzbGF2ZV9jbnRgKSBhbmQgYHNsYXZlcy1cXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxcblxcblRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGFsdGVyIGJ1ZmZlciBib3VuZHMgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LiBTaW5jZSB0aGUgcGF0Y2ggc3RyaWN0bHkgYWRkcmVzc2VzIGNvbmN1cnJlbmN5L2RhdGEgcmFjZXMgd2l0aG91dCBleHBvc2luZyBvciB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MDk6NTMuMDExNDA5ODA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc3ODY0NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcXG5pbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xcbkBAIC04NzUsNyArODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmJvbmQtXFx1MDAzZW1vZGVfbG9jayk7XFxuIFxcbiBcXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cXG4tXFx0Ym9uZC1cXHUwMDNlcmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjtcXG4rXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTEyNDUsNyArMTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSlcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKG5vdGlmaWVkIHx8IGZvcmNlKVxcbi1cXHRcXHRib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYtLTtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYsIGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtMjI4NCw3ICsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0Ym9uZC1cXHUwMDNlc2xhdmVfY250Kys7XFxuK1xcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlc2xhdmVfY250LCBib25kLVxcdTAwM2VzbGF2ZV9jbnQgKyAxKTtcXG4gXFx0bmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtXFx1MDAzZWRldiwgdHJ1ZSk7XFxuIFxcdGJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7XFxuIFxcbkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuIFxcbiBcXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcXG4gXFx0c3luY2hyb25pemVfcmN1KCk7XFxuLVxcdGJvbmQtXFx1MDAzZXNsYXZlX2NudC0tO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXNsYXZlX2NudCwgYm9uZC1cXHUwMDNlc2xhdmVfY250IC0gMSk7XFxuIFxcbiBcXHRpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkge1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtXFx1MDAzZWRldik7XFxuQEAgLTQzODUsMTMgKzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbiBcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqL1xcbiBcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhcnBfd29yaywgMCk7XFxuLVxcdFxcdGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xcbiBcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhZF93b3JrLCAwKTtcXG4gXFx0XFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXFxuLVxcdFxcdGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUgPSBib25kXzNhZF9sYWNwZHVfcmVjdjtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XFxuIFxcdFxcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XFxuIFxcbiBcXHRcXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxcbkBAIC00NDEzLDcgKzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbiBcXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xcbiBcXG4gXFx0Ym9uZF93b3JrX2NhbmNlbF9hbGwoYm9uZCk7XFxuLVxcdGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZiA9IDA7XFxuK1xcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlc2VuZF9wZWVyX25vdGlmLCAwKTtcXG4gXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcXG4gXFxuIFxcdC8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi9cXG5AQCAtNTExOCw3ICs1MTE4LDcgQEAgc3RhdGljIHZvaWQgYm9uZF9za2lwX3NsYXZlKHN0cnVjdCBib25kX3VwX3NsYXZlICpzbGF2ZXMsXFxuIFxcdFxcdGlmIChza2lwc2xhdmUgPT0gc2xhdmVzLVxcdTAwM2VhcnJbaWR4XSkge1xcbiBcXHRcXHRcXHRzbGF2ZXMtXFx1MDAzZWFycltpZHhdID1cXG4gXFx0XFx0XFx0XFx0c2xhdmVzLVxcdTAwM2VhcnJbc2xhdmVzLVxcdTAwM2Vjb3VudCAtIDFdO1xcbi1cXHRcXHRcXHRzbGF2ZXMtXFx1MDAzZWNvdW50LS07XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2xhdmVzLVxcdTAwM2Vjb3VudCwgc2xhdmVzLVxcdTAwM2Vjb3VudCAtIDEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbkBAIC0xMTQ3LDExICsxMTQ3LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghbmV3dmFsLVxcdTAwM2V2YWx1ZSkge1xcbiBcXHRcXHRcXHRpZiAoYm9uZC1cXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcXG4tXFx0XFx0XFx0XFx0Ym9uZC1cXHUwMDNlcmVjdl9wcm9iZSA9IE5VTEw7XFxuK1xcdFxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XFxuIFxcdFxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmspO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHQvKiBhcnBfdmFsaWRhdGUgY2FuIGJlIHNldCBvbmx5IGluIGFjdGl2ZS1iYWNrdXAgbW9kZSAqL1xcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbiBcXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmJvbmQtXFx1MDAzZW1paV93b3JrKTtcXG4gXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXFx1MDAzZXdxLCBcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmssIDApO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjA5OjU0LjQ5MDA2NTQyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODk3ODU1NzU3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiLFxuICAgIFwiTkVUX0NPUkVcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kX2Vuc2xhdmVcIixcbiAgICBcImJvbmRfcmVsZWFzZVwiLFxuICAgIFwiYm9uZF9hbGJfaW5pdGlhbGl6ZVwiLFxuICAgIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsXG4gICAgXCJib25kX29wdF90cnlzZXRfcnRubFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBjb25jdXJyZW50IGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgbmV0d29yayBkcml2ZXIgYnkgdXNpbmcgV1JJVEVfT05DRSgpIHdoZW4gbW9kaWZ5aW5nIHJlY3ZfcHJvYmUsIHNlbmRfcGVlcl9ub3RpZiwgc2xhdmVfY250LCBhbmQgc2xhdmUgYXJyYXkgY291bnQuIFRoZSBFdGhlcm5ldCBib25kaW5nIGRyaXZlciBpcyBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgbG9naWMgcmVhY2hhYmxlIGluIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuaW5kZXggODM5Zjc0ODJkYzE4Mi4uZDJmYjY3YTQ3Y2Y5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG5AQCAtODc1LDcgKzg3NSw3IEBAIHN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZib25kLVx1MDAzZW1vZGVfbG9jayk7XG4gXG4gXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cbi1cdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTEyNDUsNyArMTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSlcbiBcdH1cbiBcbiBcdGlmIChub3RpZmllZCB8fCBmb3JjZSlcbi1cdFx0Ym9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYtLTtcbitcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiwgYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYgLSAxKTtcbiB9XG4gXG4gLyoqXG5AQCAtMjI4NCw3ICsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250Kys7XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCArIDEpO1xuIFx0bmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtXHUwMDNlZGV2LCB0cnVlKTtcbiBcdGJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7XG4gXG5AQCAtMjUzMyw3ICsyNTMzLDcgQEAgc3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuIFxuIFx0dW5ibG9ja19uZXRwb2xsX3R4KCk7XG4gXHRzeW5jaHJvbml6ZV9yY3UoKTtcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250LS07XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAtIDEpO1xuIFxuIFx0aWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLVx1MDAzZWRldik7XG5AQCAtNDM4NSwxMyArNDM4NSwxMyBAQCBzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXG4gXHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSB7ICAvKiBhcnAgaW50ZXJ2YWwsIGluIG1pbGxpc2Vjb25kcy4gKi9cbiBcdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuLVx0XHRib25kLVx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcbitcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbiBcdH1cbiBcbiBcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuIFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhZF93b3JrLCAwKTtcbiBcdFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXG4tXHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IGJvbmRfM2FkX2xhY3BkdV9yZWN2O1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xuIFx0XHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xuIFxuIFx0XHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuQEAgLTQ0MTMsNyArNDQxMyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xuIFxuIFx0Ym9uZF93b3JrX2NhbmNlbF9hbGwoYm9uZCk7XG4tXHRib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiA9IDA7XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCAwKTtcbiBcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbiBcbiBcdC8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi9cbkBAIC01MTE4LDcgKzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbiBcdFx0aWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtXHUwMDNlYXJyW2lkeF0pIHtcbiBcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW2lkeF0gPVxuIFx0XHRcdFx0c2xhdmVzLVx1MDAzZWFycltzbGF2ZXMtXHUwMDNlY291bnQgLSAxXTtcbi1cdFx0XHRzbGF2ZXMtXHUwMDNlY291bnQtLTtcbitcdFx0XHRXUklURV9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCwgc2xhdmVzLVx1MDAzZWNvdW50IC0gMSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbkBAIC0xMTQ3LDExICsxMTQ3LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0ICovXG4gXHRcdGlmICghbmV3dmFsLVx1MDAzZXZhbHVlKSB7XG4gXHRcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcbi1cdFx0XHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IE5VTEw7XG4rXHRcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmspO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG4tXHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4rXHRcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbiBcdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VtaWlfd29yayk7XG4gXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOTowOTo1NC40OTAwNjc0NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTAwNjM3MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoOiBBIENvbmN1cnJlbmN5IEFubm90YXRpb24/KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgYWNyb3NzIGBib25kX2FsYi5jYCwgYGJvbmRfbWFpbi5jYCwgYW5kIGBib25kX29wdGlvbnMuY2Agd2l0aGluIHRoZSBib25kaW5nIGRyaXZlci4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkncmUgY29uc2lzdGVudGx5IHJlcGxhY2luZyBzdHJhaWdodGZvcndhcmQgYXNzaWdubWVudHMgYW5kIGluY3JlbWVudHMvZGVjcmVtZW50cyAobGlrZSBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlID0gLi4uYCwgZXRjLikgd2l0aCBgV1JJVEVfT05DRSguLi4pYC4gSG1tLCB0aGlzIHNtZWxscyBsaWtlIGEgZGF0YSByYWNlIGZpeC4gU3BlY2lmaWNhbGx5LCBLQ1NBTiBpcyBwcm9iYWJseSBiZWluZyBhZGRyZXNzZWQgb3IsIGF0IGxlYXN0LCBjb21waWxlciByZW9yZGVyaW5nIG9yIHN0b3JlIHRlYXJpbmcgaXMgYmVpbmcgcHJldmVudGVkLlxuXG5CdXQsIGFuZCB0aGlzIGlzIGNydWNpYWwsIGRvZXMgdGhpcyBjaGFuZ2UgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGxvZ2ljPyBJcyB0aGlzIGEgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5ub3RhdGlvbiwgbWVyZWx5IGFkZGluZyBgV1JJVEVfT05DRWAgdG8gaW5kaWNhdGUgYSBjb25jdXJyZW50IHJlYWQ/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjYXJlZnVsbHkuIExldCdzIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IG1lZXQgYW55IG9mIHRoZSBcIm5vdCB3b3J0aCBmdXp6aW5nXCIgY3JpdGVyaWEsIHdoaWNoIGluY2x1ZGVzIGNoYW5nZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzLCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIGNvZGUgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBvciB0ZWFyZG93biBjYWxsYmFja3MuIEkgKnRoaW5rKiB0aGF0IGRhdGEgcmFjZSBmaXhlcywgYW5kIGFubm90YXRpb25zIHdpdGggYFdSSVRFX09OQ0VgL2BSRUFEX09OQ0VgLCBhcmUgcmVsZXZhbnQgdG8gZnV6emluZy5cblxuSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5ICppcyogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2UgZG91Ymx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgZ2l0IGxvZy4gTWF5YmUgdGhlcmUncyBhIG1vcmUgZGV0YWlsZWQgZXhwbGFuYXRpb24gdGhlcmUuIEknbGwgZmlyZSB1cCBhIHRvb2wgb3IganVzdCByZWFkIHRocm91Z2ggdGhlIGhpc3RvcnkgYW5kIGxvb2sgZm9yIGEgY29tbWl0IGRlc2NyaXB0aW9uLiBJJ20gbGVhbmluZyB0b3dhcmRzIGZ1enppbmcgaXQgaWYgaXQncyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbm5vdGF0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDAuNTkwNzA2ODcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTIxNzI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJXUklURV9PTkNFXFxcXChib25kLVxcdTAwM2VyZWN2X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTg1NT1zdGF0aWMgaW50IHJsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3Ny1cXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6ODc4OlxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgcmxiX2FycF9yZWN2KTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtODc5LVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzQ3PXN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4Ny1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhcnBfd29yaywgMCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzg4OlxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzOTMtXFx0XFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzk0OlxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM5NS1cXHRcXHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00NDEwPXN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ0MTYtXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxNzpcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTEyOD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExNDktXFx0XFx0XFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTUwOlxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUxLVxcdFxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUzLVxcdFxcdFxcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTU0OlxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1NS1cXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmJvbmQtXFx1MDAzZW1paV93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDAuNzE1OTMzMjg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjExMjk2NjMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYGJvbmRfbWFpbi5jYCBhbmQgTWVtb3J5IE9yZGVyaW5nKipcblxuT2theSwgc28gSSd2ZSBhbHJlYWR5IGdvdCBhIGhhbmRsZSBvbiB0aGUgYmFzaWMgZmxvdyBvZiBgYm9uZF9tYWluLmNgLCBhbmQgSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIGNvbmN1cnJlbmN5LiBOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGhvdyB0aGV5J3JlICphY3R1YWxseSogdXNpbmcgdGhvc2UgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBtYWNyb3MuIEl0J3Mgbm90IGVub3VnaCB0byBrbm93IHRoZXkncmUgKnRoZXJlKjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIGNyaXRpY2FsIHRvIHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmcm9tIHJlb3JkZXJpbmcgbWVtb3J5IGFjY2Vzc2VzIGFuZCBpbnRyb2R1Y2luZyBkYXRhIHJhY2VzLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBBcmUgdGhleSBiZWluZyB1c2VkIGFyb3VuZCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBmbGFncywgb3IgY291bnRlcnMgdGhhdCBuZWVkIGF0b21pY2l0eT8gQW5kIGFyZSB0aGV5IGJlaW5nIHVzZWQgKmNvbnNpc3RlbnRseSo/IEEgc2luZ2xlIG1pc3NlZCBgUkVBRF9PTkNFYCBvciBgV1JJVEVfT05DRWAgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyB0aGF0IGFyZSBhIG5pZ2h0bWFyZSB0byB0cmFjayBkb3duLCBzbyBJIG5lZWQgdG8gc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBhcmUgZ3VhcmFudGVlaW5nIG1lbW9yeSBvcmRlcmluZyB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2FnZSBpcyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBwb3NzaWJsZSBpbXByb3ZlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDowNi44Mjg5MDE4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU3MTg2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXChib25kLVxcdTAwM2VyZWN2X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xNjAzPXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGJvbmRfaGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE2MjE6XFx0cmVjdl9wcm9iZSA9IFJFQURfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE2MjItXFx0aWYgKHJlY3ZfcHJvYmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDYuOTE0NjI0OTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM5OTEzMDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2UgY3J1Y2lhbCB2YXJpYWJsZXMsIGBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZmAgYW5kIGBib25kLVx1MDAzZXNsYXZlX2NudGAsIGFuZCBwcm9iYWJseSBhIGZldyBvdGhlcnMgd2hpbGUgSSdtIGF0IGl0LiBJJ20gZ29pbmcgdG8gdXNlIGBSRUFEX09OQ0UoKWAgdG8gZW5zdXJlIEknbSBnZXR0aW5nIHRoZSBtb3N0IHVwLXRvLWRhdGUgYW5kIGNvbnNpc3RlbnQgdmFsdWVzLCB3aGljaCBpcyBlc3BlY2lhbGx5IGNyaXRpY2FsIGluIHRoaXMgY29uY3VycmVudCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHByb2dyYW0gaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQsIGJlZm9yZSBJIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMC4zMTM3NTgyMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NjY0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXChib25kLVxcdTAwM2VzbGF2ZV9jbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ5NjA9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0X3JvdW5kcm9iaW5fc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00OTg5LW5vbl9pZ21wOlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDk5MDpcXHRzbGF2ZV9jbnQgPSBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlc2xhdmVfY250KTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ5OTEtXFx0aWYgKGxpa2VseShzbGF2ZV9jbnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ5OTg9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF9yb3VuZHJvYmluX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTAzMC1ub25faWdtcDpcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUwMzE6XFx0c2xhdmVfY250ID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNsYXZlX2NudCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDMyLVxcdGlmIChsaWtlbHkoc2xhdmVfY250KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMC40MTAzMjg5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTU2NDIwODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipDaGVja2luZyBDcml0aWNhbCBTZW5kIE5vdGlmaWNhdGlvbiBhbmQgU2xhdmUgQ291bnQgVmFsdWVzKipcblxuQWxyaWdodCwgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgaXQncyBjcml0aWNhbCB0byBlbnN1cmUgd2UgYXJlIGNvcnJlY3RseSB1bmRlcnN0YW5kaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzeXN0ZW0sIHNvIEknbSBkb3VibGUtY2hlY2tpbmcgdHdvIGNydWNpYWwgdmFyaWFibGVzOiBgUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmKWAgYW5kIGBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHRoaXMgY29udGV4dC4gVGhlIGZpcnN0LCBgYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWZgLCBzaWduYWxzIHdoZXRoZXIgYSBub3RpZmljYXRpb24gbmVlZHMgdG8gYmUgc2VudCB0byBhIHBlZXIgcmVnYXJkaW5nIHRoaXMgYm9uZC4gVGhlIGxhdHRlciwgYHNsYXZlcy1cdTAwM2Vjb3VudGAsIHRlbGxzIHVzIGhvdyBtYW55IHNsYXZlcyBhcmUgYWN0aXZlIHdpdGhpbiBhIGdpdmVuIGNvbnRleHQuIEknbSB1c2luZyBgUkVBRF9PTkNFYCBoZXJlIGJlY2F1c2UgSSBuZWVkIHRvIGd1YXJhbnRlZSB0aGF0IEknbSBzZWVpbmcgYSBjb25zaXN0ZW50IGFuZCBjdXJyZW50IHNuYXBzaG90IG9mIHRoZXNlIHZhcmlhYmxlcy4gSW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LCB0aGlzIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGF2b2lkIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVhZGluZyBzdGFsZSBkYXRhIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbWlzYmVoYXZlIGFuZCBwb3RlbnRpYWxseSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgb3BlcmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYm90aCBvZiB0aGVzZSByZWFkcy4gT25jZSBJIGhhdmUgdGhlIHZhbHVlcywgSSBjYW4gc2FmZWx5IHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMi45NjY3NTIxMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDA0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJFQURfT05DRVxcXFwoLipzZW5kX3BlZXJfbm90aWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE1OlxcdGlmIChjb21taXQgfHwgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZikpIHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTYtXFx0XFx0LyogUmFjZSBhdm9pZGFuY2Ugd2l0aCBib25kX2Nsb3NlIGNhbmNlbCBvZiB3b3JrcXVldWUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9Mzg0Mz1zdGF0aWMgdm9pZCBib25kX2FjdGl2ZWJhY2t1cF9hcnBfbW9uKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODcyLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6Mzg3MzpcXHRpZiAoUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZikgfHwgc2hvdWxkX25vdGlmeV9ydG5sKSB7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODc0LVxcdFxcdGlmICghcnRubF90cnlsb2NrKCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MTMuMDMxNzYzMDY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2Mjc4OTA5NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIENvbmN1cnJlbmN5IElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIHdlIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHBhcnRpY3VsYXIgcHJvYmxlbSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwsIGVzcGVjaWFsbHkgYXJvdW5kIGNvbmN1cnJlbmN5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkb3VibGUtY2hlY2sgdGhhdCBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIHdlJ3JlIHRyYWNraW5nIHRoZSBudW1iZXIgb2Ygc2xhdmVzLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYFJFQURfT05DRShzbGF2ZXMtXHUwMDNlY291bnQpYCBvciB3aGF0ZXZlciBlcXVpdmFsZW50IG1lY2hhbmlzbSB3ZSdyZSB1c2luZyB0byBnZXQgdGhhdCBjb3VudC4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCByZWFkIGlzIGF0b21pYyBvciBwcm9wZXJseSBwcm90ZWN0ZWQsIG90aGVyd2lzZSwgd2UncmUgYnVpbGRpbmcgb24gc2hha3kgZ3JvdW5kLiBJdCdzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBhIHJlYWxseSBpbXBvcnRhbnQgb25lLiBJ4oCZbSBjb25jZXJuZWQgYWJvdXQgYSByYWNlIGNvbmRpdGlvbi4gSXTigJlzIGJldHRlciB0byBiZSBzdXJlIG5vdyB0aGFuIHRvIHNwZW5kIGhvdXJzIGNoYXNpbmcgYSBnaG9zdCBsYXRlci4gTGV04oCZcyBtYWtlIHN1cmUgdGhpcyByZWFkIGlzIHJvY2sgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzOTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoyOS4zMTA2NzQ3MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTkwMTAzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXCguKmNvdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzNzA9c3RydWN0IHNsYXZlICpib25kX3htaXRfdGxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzk3LVxcdFxcdFxcdFxcdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVxcdTAwM2V1c2FibGVfc2xhdmVzKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTM5ODpcXHRcXHRcXHRcXHRjb3VudCA9IHNsYXZlcyA/IFJFQURfT05DRShzbGF2ZXMtXFx1MDAzZWNvdW50KSA6IDA7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzOTktXFx0XFx0XFx0XFx0aWYgKGxpa2VseShjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTQxOD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9hbGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1MTMtXFx0XFx0XFx0c2xhdmVzID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTE0OlxcdFxcdFxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUxNS1cXHRcXHRcXHRpZiAobGlrZWx5KGNvdW50KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTE3Nj1zdGF0aWMgYm9vbCBib25kX3Nob3VsZF9ub3RpZnlfcGVlcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTExOTItXFx0XFx0dXNhYmxlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMTkzOlxcdFxcdGlmICghdXNhYmxlIHx8ICFSRUFEX09OQ0UodXNhYmxlLVxcdTAwM2Vjb3VudCkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTk0LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTIzMD1zdGF0aWMgc3RydWN0IHNsYXZlICpib25kX3htaXRfM2FkX3hvcl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMzgtXFx0aGFzaCA9IGJvbmRfeG1pdF9oYXNoKGJvbmQsIHNrYik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjM5OlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNDAtXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyNDc9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF8zYWRfeG9yX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTI1NS1cXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjU2OlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNTctXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUzMTY9c3RhdGljIG5ldGRldl90eF90IGJvbmRfeG1pdF9icm9hZGNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTMzMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUzMzE6XFx0c2xhdmVzX2NvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUzMzItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNsYXZlc19jb3VudDsgaSsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU1MDM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpfX2JvbmRfc2tfZ2V0X2xvd2VyX2RldihzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTUxMS1cXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1NTEyOlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU1MTMtXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9MTk4PXN0YXRpYyB2b2lkIGJvbmRfaW5mb19zaG93X3NsYXZlKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTIzMy1cXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIkFjdG9yIENodXJuZWQgQ291bnQ6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYzoyMzQ6XFx0XFx0XFx0XFx0ICAgUkVBRF9PTkNFKHBvcnQtXFx1MDAzZWNodXJuX2FjdG9yX2NvdW50KSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTIzNS1cXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlBhcnRuZXIgQ2h1cm5lZCBDb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNjpcXHRcXHRcXHRcXHQgICBSRUFEX09OQ0UocG9ydC1cXHUwMDNlY2h1cm5fcGFydG5lcl9jb3VudCkpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEwOjMwLjYwOTY4OTYxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzMwMjIwODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogQm9uZGluZyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFdSSVRFX09OQ0VgIGNhbGxzLCBtaXJyb3JpbmcgZXhpc3RpbmcgYFJFQURfT05DRWAgdXNhZ2UgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBydW4gdGhyb3VnaCB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIHF1YWxpZmllcyBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBkb2VzIHRoaXMgY29uc3RpdHV0ZSBhIG1vZGlmaWNhdGlvbiB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMvZHJpdmVycz8gV2FpdCwgdGhlIGJvbmRpbmcgZHJpdmVyIGlzIGEgc29mdHdhcmUgdmlydHVhbCBuZXR3b3JrIGRyaXZlciwgYW5kIGlzIGNvbW1vbmx5IGZ1enplZC5cblxuTGV0J3MgY2FyZWZ1bGx5IHJlLXJlYWQgdGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYSwgZm9jdXNpbmcgb24gdGhlIGV4Y2x1c2lvbnM6IERvY3VtZW50YXRpb24vS2NvbmZpZyBjaGFuZ2VzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIG51bWVyaWMgY2hhbmdlcywgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBRRU1VLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBhbmQgdGVhcmRvd24gY2FsbGJhY2tzLlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd246IElzIHRoZSBib25kaW5nIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzISBCb25kaW5nIGlzIGEgc3RhbmRhcmQgdmlydHVhbCBuZXRkZXZpY2UgZHJpdmVyIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rL3J0bmwgY2FsbHMuXG5cbk5vdyB0aGUga2V5IHF1ZXN0aW9uOiBEb2VzIGBXUklURV9PTkNFYCBpbnRyb2R1Y2UgYSBmdW5jdGlvbmFsIGNoYW5nZT8gSXQncyBub3QgZG9jdW1lbnRhdGlvbiwgbG9nZ2luZywgYSBjb25zdGFudCwgb3IgdW5yZWFjaGFibGUgY29kZSwgb3IgYSB0ZWFyZG93biBjYWxsYmFjay4gU28gaXQgKnNob3VsZCogY291bnQgYXMgd29ydGggZnV6emluZy4gVGhlIGtleSBoZXJlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgaXQgaXMgYmVpbmcgdXNlZCB0byBwcmV2ZW50IGRhdGEgcmFjZXMsIHN0b3JlIHRlYXJpbmcsIG9yIGNvbXBpbGVyIHJlb3JkZXJpbmchIFN5emthbGxlciB3aXRoIEtDU0FOLCBUaHJlYWRTYW5pdGl6ZXIsIG9yIGdlbmVyYWwgbmV0IGZ1enppbmcgY2FuIG5vdyBwb3RlbnRpYWxseSByZXZlYWwgY29uY3VycmVuY3kgYnVncyBpbiBib25kaW5nISBUaGUgaW50cm9kdWN0aW9uIG9mIGBXUklURV9PTkNFYCAqaW1wbGllcyogZnVuY3Rpb25hbCBpbXBhY3Qgb24gZGF0YSBhY2Nlc3MuXG5cblRoZSBjcml0ZXJpYSBjbGVhcmx5IHN0YXRlOiBhbnkgcGF0Y2ggbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljL2RyaXZlcnMsICp1bmxlc3MqIGl0IGZhbGxzIGludG8gb25lIG9mIHRoZSAqc2l4KiBleHBsaWNpdCBleGNsdXNpb25zLCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgZnV6emluZy4gVGhpcyBkb2Vzbid0IHNlZW0gdG8gZmFsbCBpbnRvICphbnkqIG9mIHRob3NlIGV4Y2x1c2lvbnMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggKnNob3VsZCogYmUgbWFya2VkIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkxldCdzIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWcgb3B0aW9ucyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODA1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDozOS45Mzk5MTQ1MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTIyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSArPSBib25kaW5nLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTEyNjY9dm9pZCBib25kX2NoYW5nZV9hY3RpdmVfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqbmV3X2FjdGl2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTMzMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEzMzM6XFx0XFx0XFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSLCBib25kLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg4OD1pbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIwOTU6XFx0c2xhdmVfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5Ni1cXHQvKiBpbml0aWFsaXplIHNsYXZlIHN0YXRzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIzNzUtXFx0aWYgKCFuZXRpZl9pc19ib25kX21hc3RlcihzbGF2ZV9kZXYpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjM3NjpcXHRcXHRzbGF2ZV9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjM3Ny1cXHRkZXZfY2xvc2Uoc2xhdmVfZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjQyNT1zdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI1OTYtXFx0aWYgKCFuZXRpZl9pc19ib25kX21hc3RlcihzbGF2ZV9kZXYpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjU5NzpcXHRcXHRzbGF2ZV9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjU5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDA3MD1zdGF0aWMgaW50IGJvbmRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDA3Ny1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQwNzg6XFx0aWYgKCEoZXZlbnRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0JPTkRJTkcpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDA3OS1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU5OTQ9dm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjAxNi1cXHRib25kX2Rldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX01BU1RFUjtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjYwMTc6XFx0Ym9uZF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0JPTkRJTkcgfCBJRkZfVU5JQ0FTVF9GTFQgfCBJRkZfTk9fUVVFVUU7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02MDE4LVxcdGJvbmRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH4oSUZGX1hNSVRfRFNUX1JFTEVBU0UgfCBJRkZfVFhfU0tCX1NIQVJJTkcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo0MC4wMTg0NDI4MzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTI1NzI1NDQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBib25kaW5nIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AuIEkga25vdyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGxpdmVzIOKAkyB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29uZmlnIGZsYWdzLCBhbGwgdGhlIGp1aWN5IGRldGFpbHMgdGhhdCBjb250cm9sIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgcG9zc2libGUgYW5kIHdoYXQncyByZXF1aXJlZCBiZWZvcmUgSSBjYW4gbWFrZSBhbnkgaW5mb3JtZWQgZGVjaXNpb25zIG9yIHJlY29tbWVuZGF0aW9ucy4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byB0ZWxsIG1lIHRoZSByZWFsIHN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEwOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEwOjQ5LjI3NTY5OTgwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY2MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo0OS4yNzU3NjMzNDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQwNTY4MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkxvY2F0aW5nIHRoZSBCb25kaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGUgYENPTkZJR19CT05ESU5HYCBzeW1ib2wgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHRhc2sgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBJdCBjb3VsZCBiZSBpbiBhIHRvcC1sZXZlbCBmaWxlLCBhIGZlYXR1cmUtc3BlY2lmaWMgS2NvbmZpZywgb3IgZXZlbiBpbmRpcmVjdGx5IHRocm91Z2ggYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gYmUgbWV0aG9kaWNhbCBoZXJlLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZmluZGAgY29tbWFuZCwgcGVyaGFwcyBuYXJyb3dpbmcgaXQgZG93biB3aXRoIHNvbWUgZ3JlcCBmaWx0ZXJpbmcgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZmlsZXMgc3BlY2lmaWNhbGx5LiBUaGVuLCBJIGNhbiBpbnNwZWN0IHRoZSByZWxldmFudCBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBDT05GSUdfQk9ORElOR2Agc3ltYm9sLiBEZXBlbmRpbmcgb24gaG93IGl0J3MgZGVmaW5lZCBhbmQgdGhlIGNvbXBsZXhpdHksIEkgbWlnaHQgbmVlZCB0byB0cmFjZSB0aHJvdWdoIGEgZmV3IGluY2x1ZGVzIG9yIGRlcGVuZGVuY2llcyB0byBmdWxseSBncmFzcCBpdHMgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwNiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6NTQuNjgxNDQ4NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODMwNjY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6NTQuOTI5NzYzOTE2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4ODk5NzE2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2Vzcywgd3JpdHRlbiBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZzpcblxuKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA0MS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgb3B0aW9ucywgcGVyaGFwcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZHJpdmVyIEknbSByZXNlYXJjaGluZyBvciBhIGdlbmVyYWwgYXJlYSB0aGF0IHJlcXVpcmVzIG9wdGltaXphdGlvbi4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSdtIGFudGljaXBhdGluZyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljLCBtYXliZSBzb21lIG5lc3RlZCBgaWZgIHN0YXRlbWVudHMgYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIG90aGVyIHByZXJlcXVpc2l0ZXMuIFVsdGltYXRlbHksIEkgd2FudCB0byBmb3JtIGEgbWVudGFsIG1hcCBvZiB0aGlzIHNlY3Rpb24gb2YgdGhlIEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo1Ni44MTk3Mzg1NThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgTkVUX0NPUkVcXG4gIDMzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzQ6XFx0XFx0Ym9vbCBcXFwiTmV0d29yayBjb3JlIGRyaXZlciBzdXBwb3J0XFxcIlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIGFueSBvZiB0aGVcXG4gIDM3OlxcdFxcdCAgbmV0d29ya2luZyBjb3JlIGRyaXZlcnMgKGkuZS4gVkxBTiwgYnJpZGdpbmcsIGJvbmRpbmcsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGlmIE5FVF9DT1JFXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBCT05ESU5HXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSAnWScgb3IgJ00nIGlmIHlvdSB3aXNoIHRvIGJlIGFibGUgdG8gJ2JvbmQnIG11bHRpcGxlIEV0aGVybmV0XFxuICA0NzpcXHRcXHQgIENoYW5uZWxzIHRvZ2V0aGVyLiBUaGlzIGlzIGNhbGxlZCAnRXRoZXJjaGFubmVsJyBieSBDaXNjbyxcXG4gIDQ4OlxcdFxcdCAgJ1RydW5raW5nJyBieSBTdW4sIDgwMi4zYWQgYnkgdGhlIElFRUUsIGFuZCAnQm9uZGluZycgaW4gTGludXguXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgVGhlIGRyaXZlciBzdXBwb3J0cyBtdWx0aXBsZSBib25kaW5nIG1vZGVzIHRvIGFsbG93IGZvciBib3RoIGhpZ2hcXG4gIDUxOlxcdFxcdCAgcGVyZm9ybWFuY2UgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IG9wZXJhdGlvbi5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBSZWZlciB0byBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy5yc3RcXHUwMDNlIGZvciBtb3JlXFxuICA1NDpcXHRcXHQgIGluZm9ybWF0aW9uLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDU3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYm9uZGluZy5cXG4gIDU4OlxcdFxcbiAgNTk6XFx0Y29uZmlnIERVTU1ZXFxuICA2MDpcXHRcXHR0cmlzdGF0ZSBcXFwiRHVtbXkgbmV0IGRyaXZlciBzdXBwb3J0XFxcIlxcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgYml0LWJ1Y2tldCBkZXZpY2UgKGkuZS4gdHJhZmZpYyB5b3Ugc2VuZCB0b1xcbiAgNjM6XFx0XFx0ICB0aGlzIGRldmljZSBpcyBjb25zaWduZWQgaW50byBvYmxpdmlvbikgd2l0aCBhIGNvbmZpZ3VyYWJsZSBJUFxcbiAgNjQ6XFx0XFx0ICBhZGRyZXNzLiBJdCBpcyBtb3N0IGNvbW1vbmx5IHVzZWQgaW4gb3JkZXIgdG8gbWFrZSB5b3VyIGN1cnJlbnRseVxcbiAgNjU6XFx0XFx0ICBpbmFjdGl2ZSBTTElQIGFkZHJlc3Mgc2VlbSBsaWtlIGEgcmVhbCBhZGRyZXNzIGZvciBsb2NhbCBwcm9ncmFtcy5cXG4gIDY2OlxcdFxcdCAgSWYgeW91IHVzZSBTTElQIG9yIFBQUCwgeW91IG1pZ2h0IHdhbnQgdG8gc2F5IFkgaGVyZS4gSXQgd29uJ3RcXG4gIDY3OlxcdFxcdCAgZW5sYXJnZSB5b3VyIGtlcm5lbC4gV2hhdCBhIGRlYWwuIFJlYWQgYWJvdXQgaXQgaW4gdGhlIE5ldHdvcmtcXG4gIDY4OlxcdFxcdCAgQWRtaW5pc3RyYXRvcidzIEd1aWRlLCBhdmFpbGFibGUgZnJvbVxcbiAgNjk6XFx0XFx0ICBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjZ3VpZGVcXHUwMDNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo1Ni44MTk4MTc0MjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMzNzc0NTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBmb2N1c2luZyBvbiB3aGF0IEknZCBiZSBsb29raW5nIGZvciBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQm9uZGluZyBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgLiBNeSBpbW1lZGlhdGUgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgcnVubmluZy4gV2h5IGFtIEkgbG9va2luZyBhdCB0aGlzPyBJcyB0aGVyZSBhIHJlcG9ydGVkIGlzc3VlIHdpdGggYm9uZGluZz8gQSBuZXcgZmVhdHVyZT8gUGVyZm9ybWFuY2UgY29uY2VybnM/IEkgbmVlZCBjb250ZXh0LCBvZiBjb3Vyc2UsIGJ1dCBqdXN0IGhpdHRpbmcgdGhlIE1ha2VmaWxlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLlxuXG5GaXJzdCwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdHJ1Y3R1cmUuIEkga25vdyB0aGUgZ2VuZXJhbCBsYXlvdXQgb2YgdGhlIGtlcm5lbCdzIE1ha2VmaWxlcywgc28gSSdsbCBiZSBxdWlja2x5IHNjYW5uaW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IGBvYmotYCwgYGNjZmxhZ3MtYCwgYEtCVUlMRF9DRkxBR1NgLCBgaW5jbHVkZWAsIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyAoYGlmZGVmYCwgYGlmbmVxYCkuIEknbGwgYmUgbG9va2luZyBmb3Igc291cmNlIGZpbGVzIChgKi5jYCwgYCoub2ApIGFuZCBoZWFkZXIgZGVwZW5kZW5jaWVzLlxuXG5CZXlvbmQgdGhlIGJhc2ljIHN0cnVjdHVyZSwgSSdtIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgbW9kdWxlcyBiZWluZyBidWlsdD8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgYmFzZWQgb24ga2VybmVsIHZlcnNpb24gb3IgaGFyZHdhcmU/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIGZsYWdzIHBhc3NlZCB0byB0aGUgY29tcGlsZXIgc3BlY2lmaWNhbGx5IGZvciBib25kaW5nPyBJJ20gYW50aWNpcGF0aW5nIHBvc3NpYmx5IHNlZWluZyBgLURgIGRlZmluZXMsIHdoaWNoIHRlbGwgbWUgYWJvdXQgY29tcGlsZS10aW1lIGZlYXR1cmUgdG9nZ2xlcy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgbGlzdGVkLiBJZiB0aGUgYm9uZGluZyBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyAoZS5nLiwgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpYyBOSUMgZHJpdmVycyksIHRoYXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZC4gQXJlIHRoZXJlIGNyb3NzLWRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGJ1aWxkIGlzc3VlcyBvciBydW50aW1lIGNvbmZsaWN0cz9cblxuRmluYWxseSwgaWYgdGhpcyAqaXMqIHJlbGF0ZWQgdG8gYW4gaXNzdWUsIEknbGwgYmUgaHVudGluZyBmb3IgY2x1ZXMgcmVnYXJkaW5nIHNwZWNpZmljIGRlYnVnZ2luZyBvciBsb2dnaW5nIGZsYWdzLiBBcmUgdGhlcmUgYW55IGAtRGAgZGVmaW5lcyByZWxhdGVkIHRvIHZlcmJvc2Ugb3V0cHV0IG9yIGRlYnVnZ2luZz8gVGhhdCdzIGdvbGRlbiwgcGFydGljdWxhcmx5IGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhIHByb2JsZW0uIEknbGwgYWxzbyBjaGVjayBmb3IgYW55IHNwZWNpZmljIHRlc3QgdGFyZ2V0cyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGhlbHAgbWUgcmVwcm9kdWNlIG9yIGFuYWx5emUgdGhlIGlzc3VlLiBUaGUgZ29hbCwgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYm9uZGluZyBkcml2ZXIncyBiZWhhdmlvci4gVGltZSB0byBkaXZlIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDAuMTU3NTY1NTI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBCb25kaW5nIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuICAgNzpcXHRcXG4gICA4OlxcdGJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xcbiAgIDk6XFx0XFxuICAxMDpcXHRwcm9jLSQoQ09ORklHX1BST0NfRlMpICs9IGJvbmRfcHJvY2ZzLm9cXG4gIDExOlxcdGJvbmRpbmctb2JqcyArPSAkKHByb2MteSlcXG4gIDEyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTowMC4xNTc2NjQxNzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMwMzk4NzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCBhbmQgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjb25maWd1cmF0aW9uLXdpc2UgaW4gdGhlc2UgbW9kaWZpZWQgZmlsZXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3Mgc2NhbiBmb3IgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIG9yIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgYXQgYE5FVF9DT1JFYCwgYElORVRgLCBhbmQgYEJPTkRJTkdgLiBBcmUgYE5FVF9DT1JFYCBhbmQgYElORVRgIHN0YW5kYXJkIGRlZmluZXM/IGBCT05ESU5HYCBkZWZpbml0ZWx5IGRlcGVuZHMgb24gYElORVRgLCBhbmQgYE5FVF9DT1JFYCBpcyBpdHMgcGFyZW50IG1lbnUsIGNvcnJlY3Q/XG5cbk5vdywgSSdsbCBzY3J1dGluaXplIGBCT05ESU5HYCBtb3JlIGNsb3NlbHkuXG5cbk5leHQsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiB0aGUgcGF0Y2guIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jYC4gTGV0IG1lIHJldmlldyB0aGUgY29kZSwgYW5kIGluIHBhcnRpY3VsYXIsIHRoZSBmdW5jdGlvbiBgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpYC4gSG1tLi4uIGlzIGBybGJfaW5pdGlhbGl6ZWAgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBrZXkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaGFzIGFueSBleHRlcm5hbCBjYWxsZXJzLCBhbmQgaWYgdGhlcmUgaXMgYSBrbm93biBlbnRyeSBwb2ludC4gSSdsbCBjaGVjayBgYm9uZF9hbGIuY2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTowMi40NjE2NTQyMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzMwMDE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybGJfaW5pdGlhbGl6ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz04MzQ9c3RhdGljIHZvaWQgcmxiX3B1cmdlX3NyY19pcChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFycF9wa3QgKmFycClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjg1NTpzdGF0aWMgaW50IHJsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzMDY9aW50IGJvbmRfYWxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCBybGJfZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE0LVxcdGlmIChybGJfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzE1OlxcdFxcdHJlcyA9IHJsYl9pbml0aWFsaXplKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE2LVxcdFxcdGlmIChyZXMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDIuNjE0OTU5MDEyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxNzMxMTk2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAgRnVuY3Rpb24qKlxuXG5SaWdodCwgYGJvbmRfYWxiX2luaXRpYWxpemVgIGlzbid0IHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0J3MgcG90ZW50aWFsbHkgdmlzaWJsZSBhbmQgY2FsbGFibGUgZnJvbSBvdXRzaWRlIGl0cyBsaWtlbHkgbW9kdWxlLCB3aGljaCBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBmb3IgbWFpbnRhaW5hYmlsaXR5LCBlbmNhcHN1bGF0aW9uLCBhbmQgZXZlbiBwb3RlbnRpYWwgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQ/XCIgV2UgbmVlZCB0byB0cmFjayBkb3duIGl0cyBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlIHBhdHRlcm5zIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC4gTGV0J3MgdHJhY2UgYmFjayB0aGUgY2FsbHMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBUaW1lIHRvIGJyZWFrIG91dCB0aGUgZ3JlcCBvciBteSBJREUncyBjYWxsIGhpZXJhcmNoeSBmZWF0dXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzQyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDcuNzg5MTEyMzU1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcyMTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzQ3PXN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3My1cXHRpZiAoYm9uZF9pc19sYihib25kKSkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM3NDpcXHRcXHQvKiBib25kX2FsYl9pbml0aWFsaXplIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgdGltZXJcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzUtXFx0XFx0ICogaXMgc3RhcnRlZC5cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzYtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzc3OlxcdFxcdGlmIChib25kX2FsYl9pbml0aWFsaXplKGJvbmQsIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFX0FMQikpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3OC1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDcuODcxODM5MTg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg0MTM4NTYxNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEaWZmKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJJ20gc2VlaW5nIGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHJsYl9pbml0aWFsaXplYCBpbiBgYm9uZF9hbGIuY2AsIGNhbGxlZCBieSBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGJvbmRfb3BlbmAuIFRoYXQncyB0aGUgaW5pdGlhbGl6YXRpb24gY2hhaW4uIFRoZW4gdGhlcmUncyBgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzYCwgYGJvbmRfZW5zbGF2ZWAsIGBfX2JvbmRfcmVsZWFzZV9vbmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9za2lwX3NsYXZlYCwgYW5kIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCDigJMgYSBnb29kIG1peCBvZiBjb3JlIGJvbmRpbmcgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zIOKAkyBzcGVjaWZpY2FsbHkgYGJvbmRfZW5zbGF2ZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCwgYW5kIGBib25kX2FsYl9pbml0aWFsaXplYCAtIGFyZSBub24tc3RhdGljLCBleHBvcnRlZCBzeW1ib2xzLCBvciBwZXJoYXBzIG5ldGxpbmsgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIGltbWVkaWF0ZWx5IHRlbGwgbWUgaWYgdGhpcyBjaGFuZ2UgaGFzIGltcGxpY2F0aW9ucyBmb3Igb3RoZXIgbW9kdWxlcyBvciB0aGUgdXNlciBzcGFjZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgbmV3IGxvZ2ljLlxuXG5OZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgcG90ZW50aWFsbHkgY3JpdGljYWwgZnVuY3Rpb25zOiBgYm9uZF9lbnNsYXZlYCwgYF9fYm9uZF9yZWxlYXNlX29uZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGFuZCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEEgcXVpY2sgY2hlY2sgb2YgdGhlc2Ugc2hvdWxkIHRlbGwgbWUgd2hhdCdzIGNoYW5nZWQgYW5kIGhvdy4gSXQncyB0aW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyOTYsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MTYuMjg1Njk5MjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTEyOTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoYm9uZF9vcGVufGJvbmRfY2xvc2V8Ym9uZF9lbnNsYXZlfGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXR8Ym9uZF9za2lwX3NsYXZlfF9fYm9uZF9yZWxlYXNlX29uZSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTUzMj12b2lkIGJvbmRfYWxiX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1ODctXFx0XFx0XFx0LyogZGV2X3NldF9wcm9taXNjdWl0eSByZXF1aXJlcyBydG5sIGFuZFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTg4OlxcdFxcdFxcdCAqIG5vdGhpbmcgZWxzZS4gIEF2b2lkIHJhY2Ugd2l0aCBib25kX2Nsb3NlLlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTg5LVxcdFxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xMTc2PXN0YXRpYyBib29sIGJvbmRfc2hvdWxkX25vdGlmeV9wZWVycyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4Ny1cXHQvKiBUaGUgc2VuZF9wZWVyX25vdGlmIGlzIHNldCBieSBhY3RpdmUtYmFja3VwIG9yIDgwMjNhZFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTE4ODpcXHQgKiBtb2RlLCBhbmQgY2xlYXJlZCBpbiBib25kX2Nsb3NlKCkgd2hlbiBjaGFuZ2luZyBtb2RlLlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4OS1cXHQgKiBJdCBpcyBzYWZlIHRvIG9ubHkgY2hlY2sgYm9uZCBtb2RlIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE4NjU9dm9pZCBib25kX3hkcF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFxcdTAwM2NzbGF2ZVxcdTAwM2UgdG8gYm9uZCBkZXZpY2UgXFx1MDAzY21hc3RlclxcdTAwM2UgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4ODg6aW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjQtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNDI1OnN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldixcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjYtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjYwNj1pbnQgYm9uZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MDcte1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjYwODpcXHRyZXR1cm4gX19ib25kX3JlbGVhc2Vfb25lKGJvbmRfZGV2LCBzbGF2ZV9kZXYsIGZhbHNlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjYxND1zdGF0aWMgaW50IGJvbmRfcmVsZWFzZV9hbmRfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjIwOlxcdHJldCA9IF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjIxLVxcdGlmIChyZXQgPT0gMCBcXHUwMDI2XFx1MDAyNiAhYm9uZF9oYXNfc2xhdmVzKGJvbmQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTUtXFx0aWYgKGNvbW1pdCB8fCBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlc2VuZF9wZWVyX25vdGlmKSkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjkxNjpcXHRcXHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgY2FuY2VsIG9mIHdvcmtxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjkxNy1cXHRcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM4NDM9c3RhdGljIHZvaWQgYm9uZF9hY3RpdmViYWNrdXBfYXJwX21vbihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzg1Ny1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM4NTg6XFx0XFx0LyogUmFjZSBhdm9pZGFuY2Ugd2l0aCBib25kX2Nsb3NlIGZsdXNoIG9mIHdvcmtxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzg1OS1cXHRcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM5NDU9c3RhdGljIGludCBib25kX3NsYXZlX25ldGRldl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zOTcxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM5NzI6XFx0XFx0XFx0X19ib25kX3JlbGVhc2Vfb25lKGJvbmRfZGV2LCBzbGF2ZV9kZXYsIGZhbHNlLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM5NzMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzMjA9dm9pZCBib25kX3dvcmtfaW5pdF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzIxLXtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjI6XFx0LyogbmRvX3N0b3AsIGJvbmRfY2xvc2UoKSB3aWxsIHRyeSB0byBmbHVzaCB0aGUgd29yayB1bmRlclxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMy1cXHQgKiB0aGUgcnRubCBsb2NrLiBUaGUgd29ya3F1ZXVlIG11c3Qgbm90IGJsb2NrIG9uIHJ0bmwgbG9ja1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzM2PXZvaWQgYm9uZF93b3JrX2NhbmNlbF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzQ3OnN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDA5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxMDpzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ1ODU9c3RhdGljIGludCBib25kX2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ2NDAtXFx0Y2FzZSBTSU9DQk9OREVOU0xBVkU6XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0NjQxOlxcdFxcdHJlcyA9IGJvbmRfZW5zbGF2ZShib25kX2Rldiwgc2xhdmVfZGV2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ2NDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUwODM9c3RhdGljIHZvaWQgYm9uZF9zbGF2ZV9hcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUxMDMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTA0OnN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwNS1cXHRcXHRcXHQgICAgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUxMTEtXFx0ICogb25seSBwb3NzaWJsZSB3aGVuIHRoZSBjYWxsIGlzIGluaXRpYXRlZCBmcm9tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTEyOlxcdCAqIF9fYm9uZF9yZWxlYXNlX29uZSgpLiBJbiB0aGlzIHNpdHVhdGlvbjsgb3ZlcndyaXRlIHRoZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTExMy1cXHQgKiBza2lwc2xhdmUgZW50cnkgaW4gdGhlIGFycmF5IHdpdGggdGhlIGxhc3QgZW50cnkgZnJvbSB0aGVcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE2MD1pbnQgYm9uZF91cGRhdGVfc2xhdmVfYXJyKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNraXBzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIxOC1cXHRpZiAocmV0ICE9IDAgXFx1MDAyNlxcdTAwMjYgc2tpcHNsYXZlKSB7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjE5OlxcdFxcdGJvbmRfc2tpcF9zbGF2ZShydG5sX2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZWFsbF9zbGF2ZXMpLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIyMC1cXHRcXHRcXHRcXHRza2lwc2xhdmUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTIyMTpcXHRcXHRib25kX3NraXBfc2xhdmUocnRubF9kZXJlZmVyZW5jZShib25kLVxcdTAwM2V1c2FibGVfc2xhdmVzKSxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMjItXFx0XFx0XFx0XFx0c2tpcHNsYXZlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJvbmRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk0Ni1cXHQubmRvX3VuaW5pdFxcdFxcdD0gYm9uZF91bmluaXQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTQ3OlxcdC5uZG9fb3BlblxcdFxcdD0gYm9uZF9vcGVuLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk0ODpcXHQubmRvX3N0b3BcXHRcXHQ9IGJvbmRfY2xvc2UsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ5LVxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gYm9uZF9zdGFydF94bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTY2LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk2NzpcXHQubmRvX2FkZF9zbGF2ZVxcdFxcdD0gYm9uZF9lbnNsYXZlLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk2OC1cXHQubmRvX2RlbF9zbGF2ZVxcdFxcdD0gYm9uZF9yZWxlYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02MDYxPXN0YXRpYyB2b2lkIGJvbmRfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjA3MC1cXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NjA3MTpcXHRcXHRfX2JvbmRfcmVsZWFzZV9vbmUoYm9uZF9kZXYsIHNsYXZlLVxcdTAwM2VkZXYsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjA3Mi1cXHRuZXRkZXZfaW5mbyhib25kX2RldiwgXFxcIlJlbGVhc2VkIGFsbCBzbGF2ZXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0zMT1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTMyLVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMzpzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0zNC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTI2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGJvbmRfb3B0aW9uIGJvbmRfb3B0c1tCT05EX09QVF9MQVNUXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzE2LVxcdFxcdC52YWx1ZXMgPSBib25kX2ludG1heF90YmwsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMTc6XFx0XFx0LnNldCA9IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTMxOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz05MTA9c3RhdGljIGludCBib25kX29wdGlvbl9tb2RlX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTM5LVxcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjk0MDpcXHQgKiB0aGUgYm9uZF9iY2FzdF9uZWlnaF9lbmFibGVkIGluIGJvbmRfY2xvc2UoKSBpZiBicm9hZGNhc3RfbmVpZ2hib3JcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTk0MS1cXHQgKiBlbmFibGVkIGluIDgwMjNhZCBtb2RlLiBUaGVyZWZvcmUsIG9ubHkgY2xlYXIgYnJvYWRjYXN0X25laWdoYm9yXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTExMTg9c3RhdGljIGludCBib25kX29wdGlvbl91c2VfY2Fycmllcl9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTI4OnN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjktXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJvbmRfb3B0X3ZhbHVlICpuZXd2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTE3ODY9c3RhdGljIGludCBib25kX29wdGlvbl9zbGF2ZXNfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xODExLVxcdFxcdHNsYXZlX2RiZyhib25kLVxcdTAwM2VkZXYsIGRldiwgXFxcIkVuc2xhdmluZyBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTgxMjpcXHRcXHRyZXQgPSBib25kX2Vuc2xhdmUoYm9uZC1cXHUwMDNlZGV2LCBkZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTgxMy1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MTYuNDEwODMzMDY4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMzM0ODE4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb246IEEgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByaWdodC4gV2UncmUgbG9va2luZyBmb3IgdGhlIHByaW1lIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBrZXkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMg4oCTIGZvciB0aGlzIGFuYWx5c2lzLiBJJ3ZlIGdvdCBhIGRlY2VudCBsaXN0IHRvIHN0YXJ0IHdpdGgsIGluY2x1ZGluZyBgYm9uZF9lbnNsYXZlYCwgYGJvbmRfcmVsZWFzZWAsIGFuZCBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAsIHRob3NlIGFyZSBvYnZpb3VzIGNhbmRpZGF0ZXMuIEdvb2QgY2hvaWNlcy4gYGJvbmRfdXBkYXRlX3NsYXZlX2FycmAgaXMgYW5vdGhlciBzb2xpZCBjb250ZW5kZXIuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYXJvdW5kIGBib25kX29wdF90cnlzZXRgIG9yLCBwZXJoYXBzIGJldHRlciwgYGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRgLiBJIG5lZWQgdG8gdmVyaWZ5LCBhbmQgcXVpY2tseS4gSXMgYGJvbmRfb3B0X3RyeXNldGAgYWN0dWFsbHkgZXhwb3J0ZWQ/IElzIGl0ICpub24tc3RhdGljKj8gSSByZWFsbHkgbmVlZCB0byBjaGVjayBgYm9uZF9vcHRpb25zLmNgIHRvIGJlIHN1cmUuIEl0IGNvdWxkIGJlIGNydWNpYWwsIG9yIGl0IGNvdWxkIGJlIGEgZGVhZCBlbmQuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBnZXR0aW5nIGFsbCB0aGUgcmlnaHQgZGF0YSBwb2ludHMgaGVyZS4gTm8gc3RvbmUgdW50dXJuZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjIwLjU0NDMxOTI3N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNDY4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfXSsgYm9uZF8uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIyMTQ9c3RhdGljIHZvaWQgYWRfbWFya2VyX3Jlc3BvbnNlX3JlY2VpdmVkKHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzYtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyMzc6dm9pZCBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgdGltZW91dClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI0Ny0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0ODp2b2lkIGJvbmRfM2FkX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzI6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjY6dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4OC0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ4OTp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjUyMD1zdGF0aWMgYm9vbCBib25kX2FnZ190aW1lcl9hZHZhbmNlKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NDgtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NDk6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNzEwPXN0YXRpYyB2b2lkIGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTMtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTQ6dm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODAtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODE6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODM4LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODM5OmludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Mjg4MT1pbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTQ6aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTI0LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTI1OmludCBib25kXzNhZF9sYWNwZHVfcmVjdihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNi1cXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU3OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4MS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjk4Mjp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAwMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MzAwMTpzaXplX3QgYm9uZF8zYWRfc3RhdHNfc2l6ZSh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDEzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDE0OmludCBib25kXzNhZF9zdGF0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kXzNhZF9zdGF0cyAqc3RhdHMpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjctXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjEzMjg6dm9pZCBib25kX2FsYl9kZWluaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzNzA9c3RydWN0IHNsYXZlICpib25kX3htaXRfdGxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDA4LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNDA5Om5ldGRldl90eF90IGJvbmRfdGxiX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xNDE4PXN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0X2FsYl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTUyMzpuZXRkZXZfdHhfdCBib25kX2FsYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUzMS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTUzMjp2b2lkIGJvbmRfYWxiX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjM1LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjM2OmludCBib25kX2FsYl9pbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY1LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjY2OnZvaWQgYm9uZF9hbGJfZGVpbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjc5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjgwOnZvaWQgYm9uZF9hbGJfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3MTctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3MTg6dm9pZCBib25kX2FsYl9oYW5kbGVfYWN0aXZlX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpuZXdfc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3MTkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3ODYtLyogQ2FsbGVkIHdpdGggUlROTCAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNzg3OmludCBib25kX2FsYl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCB2b2lkICphZGRyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xODMxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxODMyOnZvaWQgYm9uZF9hbGJfY2xlYXJfdmxhbihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgdW5zaWduZWQgc2hvcnQgdmxhbl9pZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTgzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jPTU0PURFRklORV9TSE9XX0FUVFJJQlVURShib25kX2RlYnVnX3JsYl9oYXNoKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6NTY6dm9pZCBib25kX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy02NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjY1OnZvaWQgYm9uZF9kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy02OS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjcwOnZvaWQgYm9uZF9kZWJ1Z19yZXJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz03OT12b2lkIF9faW5pdCBib25kX2NyZWF0ZV9kZWJ1Z2ZzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTg2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6ODc6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtODgte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05NS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjk2OnZvaWQgYm9uZF9kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtOTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDA6dm9pZCBib25kX2RlYnVnX3VucmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDQ6dm9pZCBib25kX2RlYnVnX3JlcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz0xMDg9dm9pZCBfX2luaXQgYm9uZF9jcmVhdGVfZGVidWdmcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMTEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMTI6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjcyPWNvbnN0IGNoYXIgKmJvbmRfbW9kZV9uYW1lKGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTYtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTc6bmV0ZGV2X3R4X3QgYm9uZF9kZXZfcXVldWVfeG1pdChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5OC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMjU9Ym9vbCBfX2JvbmRfeGRwX2NoZWNrKGludCBtb2RlLCBpbnQgeG1pdF9wb2xpY3kpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0My1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM0NDpib29sIGJvbmRfeGRwX2NoZWNrKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgbW9kZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1kZXZfb3BzIGJvbmRfeGZybWRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTc1NS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjc1NjppbnQgYm9uZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjA4LS8qIFVzZSB0aGlzIHRvIHVwZGF0ZSBzZW5kX3BlZXJfbm90aWYgd2hlbiBSVE5MIG1heSBiZSBoZWxkIGluIG90aGVyIHBsYWNlcy4gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEyMDk6dm9pZCBib25kX3BlZXJfbm90aWZ5X3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTIzOD1zdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyNjUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMjY2OnZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM2OS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEzNzA6dm9pZCBib25kX3NlbGVjdF9hY3RpdmVfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTgwNT1zdGF0aWMgdm9pZCBib25kX25ldGRldl9ub3RpZnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTgyMjp2b2lkIGJvbmRfcXVldWVfc2xhdmVfZXZlbnQoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODI2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTgyNzp2b2lkIGJvbmRfbG93ZXJfc3RhdGVfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTgyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE4NTY9c3RhdGljIHZvaWQgYm9uZF9ldGhlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODY1OnZvaWQgYm9uZF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFxcdTAwM2NzbGF2ZVxcdTAwM2UgdG8gYm9uZCBkZXZpY2UgXFx1MDAzY21hc3RlclxcdTAwM2UgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4ODg6aW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI0MjU9c3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA1LS8qIEEgd3JhcHBlciB1c2VkIGJlY2F1c2Ugb2YgbmRvX2RlbF9saW5rICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA2OmludCBib25kX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTMwMTQ9c3RhdGljIHZvaWQgYm9uZF9hcnBfc2VuZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBpbnQgYXJwX29wLCBfX2JlMzIgZGVzdF9pcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzA0NS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjMwNDY6c3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zMDQ3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMzc0PXN0YXRpYyBpbnQgYm9uZF9uYV9yY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozNDIzOmludCBib25kX3Jjdl92YWxpZGF0ZShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjQtXFx0XFx0ICAgICAgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMwNT1zdGF0aWMgdTMyIGJvbmRfeG1pdF9oYXNoX3hkcChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzIwOnZvaWQgYm9uZF93b3JrX2luaXRfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMzUtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzM2OnZvaWQgYm9uZF93b3JrX2NhbmNlbF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTA2MD1zdGF0aWMgbmV0ZGV2X3R4X3QgYm9uZF94bWl0X2FjdGl2ZWJhY2t1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTA3Nzp2b2lkIGJvbmRfc2xhdmVfYXJyX3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE0Nz1zdGF0aWMgdm9pZCBib25kX3Jlc2V0X3NsYXZlX2FycihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTE1OS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUxNjA6aW50IGJvbmRfdXBkYXRlX3NsYXZlX2FycihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk4ND1zdGF0aWMgdm9pZCBib25kX2Rlc3RydWN0b3Ioc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTkzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk5NDp2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTY1MTA9dW5zaWduZWQgaW50IGJvbmRfZ2V0X251bV90eF9xdWV1ZXModm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjUxOS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjY1MjA6aW50IGJvbmRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTY1MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz0xMDA4PWludCBfX2luaXQgYm9uZF9uZXRsaW5rX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jOjEwMTM6dm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTg0ND1pbnQgX19ib25kX29wdF9zZXRfbm90aWZ5KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04NjctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzo4Njg6aW50IGJvbmRfb3B0X3RyeXNldF9ydG5sKHN0cnVjdCBib25kaW5nICpib25kLCB1bnNpZ25lZCBpbnQgb3B0aW9uLCBjaGFyICpidWYpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xMjEzPXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2lwX3RhcmdldF9yZW0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIF9fYmUzMiB0YXJnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEyNTEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMjUyOnZvaWQgYm9uZF9vcHRpb25fYXJwX2lwX3RhcmdldHNfY2xlYXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTMxMT1zdGF0aWMgdm9pZCBzbGF2ZV9zZXRfbnNfbWFkZHJzKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBib29sIGFkZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTMzNC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzMzU6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19hZGQoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTM0MS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzNDI6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19kZWwoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTM4OD1zdGF0aWMgdm9pZCBfYm9uZF9vcHRpb25zX25zX2lwNl90YXJnZXRfc2V0KHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgc2xvdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQwNC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0MDU6dm9pZCBib25kX29wdGlvbl9uc19pcDZfdGFyZ2V0c19jbGVhcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xNDUzPXN0YXRpYyB2b2lkIHNsYXZlX3NldF9uc19tYWRkcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGJvb2wgYWRkKSB7fVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQ1NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0NTU6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19hZGQoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpIHt9XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTQ1Nzp2b2lkIGJvbmRfc2xhdmVfbnNfbWFkZHJzX2RlbChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSkge31cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0NTgtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9Mjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYm9uZF9pbmZvX3NlcV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkwLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYzoyOTE6dm9pZCBib25kX2NyZWF0ZV9wcm9jX2VudHJ5KHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yOTIte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTMwNi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM6MzA3OnZvaWQgYm9uZF9yZW1vdmVfcHJvY19lbnRyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jPTg1Mj12b2lkIF9fbmV0X2V4aXQgYm9uZF9kZXN0cm95X3N5c2ZzKHN0cnVjdCBib25kX25ldCAqYm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYy04NTktICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzLmM6ODYwOnZvaWQgYm9uZF9wcmVwYXJlX3N5c2ZzX2dyb3VwKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYz0xMzM9Y29uc3Qgc3RydWN0IHN5c2ZzX29wcyBzbGF2ZV9zeXNmc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xMzYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTM3OmludCBib25kX3N5c2ZzX3NsYXZlX2FkZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xNDEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTQyOnZvaWQgYm9uZF9zeXNmc19zbGF2ZV9kZWwoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMToyMC42MTg1OTA4NDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUyMzg3MDg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFdGhlcm5ldCBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHByb2Nlc3MgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYC4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSd2ZSBnb3QgYSBzZWxlY3Rpb24gb2YgY29uZmlndXJhdGlvbnMsIFwiQk9ORElOR1wiLCBcIk5FVF9DT1JFXCIsIGFuZCBcIklORVRcIi4gVGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCB3aWxsIGVuc3VyZSB0aGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBJIG5lZWQgYXJlIHByZXNlbnQgZm9yIG15IGV2YWx1YXRpb24uIE5vdywgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucywgSSBzZWUgdGhlIGZvbGxvd2luZyBgRm9jdXNTeW1ib2xzYDogXCJib25kX2Vuc2xhdmVcIiwgXCJib25kX3JlbGVhc2VcIiwgXCJib25kX2FsYl9pbml0aWFsaXplXCIsIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsIGFuZCBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCIuXG5cblRoZSByYXRpb25hbGUgaGVyZSBpcyBjcnVjaWFsLiBUaGlzIHBhdGNoIGlzIGFib3V0IGludHJvZHVjaW5nIGBXUklURV9PTkNFKClgIHdyYXBwZXJzIHdpdGhpbiB0aGUgRXRoZXJuZXQgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBkYXRhIHJhY2VzIGFuZCBzdG9yZSB0ZWFyaW5nIHRoYXQgY2FuIG9jY3VyIHdoZW4geW91IGhhdmUgY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMsIHdoaWNoIGlzIHZlcnkgY29tbW9uIGluIG5ldHdvcmtpbmcuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCB0aGUgdXBkYXRlcyB0byBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlYCwgYGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmYCwgYGJvbmQtXHUwMDNlc2xhdmVfY250YCwgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgLiBUaGlzIGJvbmRpbmcgZHJpdmVyIGlzIHNvbWV0aGluZyBJJ20gdmVyeSBmYW1pbGlhciB3aXRoLiBJdCdzIGEgdmlydHVhbCBuZXR3b3JraW5nIHN1YnN5c3RlbSwgd2hpY2ggSSBrbm93IGlzIGhlYXZpbHkgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgbWVldHMgYWxsIHRoZSBuZWNlc3NhcnkgY3JpdGVyaWE6IGlzIGl0IGBXb3J0aEZ1enppbmdgLCB3aGljaCBJIHNlZSBpcyB0cnVlPyBBcmUgdGhlIGBGb2N1c1N5bWJvbHNgIHZhbGlkIGFuZCBub24taG90cGF0aCBlbnRyeSBwb2ludHMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLCB3aGljaCBzZWVtcyBhY2N1cmF0ZT8gQXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgZXhhY3RseSB0aGUgY29ycmVjdCBkZXBlbmRlbmNpZXMsIHdpdGhvdXQgdGhlIG5lZWQgZm9yIHRoZSBgQ09ORklHX2AgcHJlZml4LCBhZ2FpbiwgeWVzLiBUaGUgcmVhc29uaW5nIGlzIGFsc28gY29uY2lzZSBhbmQgY2xlYXJseSBleHBsYWlucyB0aGUgcmF0aW9uYWxlLCBzbyBJIGNhbiBzZWUgdGhpcyBjbGVhcmx5LiBJIHRoaW5rIHdlJ3JlIGdvb2QgdG8gZ28uXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY4MiwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMTQyNDY0MjQyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMTcyNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfQ09SRVwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZW5zbGF2ZVwiLFxuICAgIFwiYm9uZF9yZWxlYXNlXCIsXG4gICAgXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gICAgXCJib25kX3VwZGF0ZV9zbGF2ZV9hcnJcIixcbiAgICBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfQ09SRVwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZW5zbGF2ZVwiLFxuICAgIFwiYm9uZF9yZWxlYXNlXCIsXG4gICAgXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gICAgXCJib25kX3VwZGF0ZV9zbGF2ZV9hcnJcIixcbiAgICBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMjc1NjQ2MzhaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTcxNzk0MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMjc2NDQ0MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxOTE3MDk5MTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgcGxhaW4gd3JpdGVzIHdpdGggV1JJVEVfT05DRSBhbm5vdGF0aW9ucyBvbiBzdHJ1Y3QgYm9uZGluZyBmaWVsZHMgKGByZWN2X3Byb2JlYCwgYHNlbmRfcGVlcl9ub3RpZmAsIGBzbGF2ZV9jbnRgKSBhbmQgYHNsYXZlcy1cXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxcblxcblRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGFsdGVyIGJ1ZmZlciBib3VuZHMgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LiBTaW5jZSB0aGUgcGF0Y2ggc3RyaWN0bHkgYWRkcmVzc2VzIGNvbmN1cnJlbmN5L2RhdGEgcmFjZXMgd2l0aG91dCBleHBvc2luZyBvciB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjA5OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG5pbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbkBAIC04NzUsNyArODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbiBcbiBcdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuLVx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2O1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIHJsYl9hcnBfcmVjdik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IGVmOWViMGM1M2M2NjEuLjk0N2Q5MmE2NjliNjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTI0NSw3ICsxMjQ1LDcgQEAgc3RhdGljIHZvaWQgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzKHN0cnVjdCBib25kaW5nICpib25kLCBib29sIGZvcmNlKVxuIFx0fVxuIFxuIFx0aWYgKG5vdGlmaWVkIHx8IGZvcmNlKVxuLVx0XHRib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZi0tO1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xuIH1cbiBcbiAvKipcbkBAIC0yMjg0LDcgKzIyODQsNyBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbiBcdFx0fVxuIFx0fVxuIFxuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQrKztcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQsIGJvbmQtXHUwMDNlc2xhdmVfY250ICsgMSk7XG4gXHRuZXRkZXZfY29tcHV0ZV9tYXN0ZXJfdXBwZXJfZmVhdHVyZXMoYm9uZC1cdTAwM2VkZXYsIHRydWUpO1xuIFx0Ym9uZF9zZXRfY2Fycmllcihib25kKTtcbiBcbkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXG4gXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQtLTtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQsIGJvbmQtXHUwMDNlc2xhdmVfY250IC0gMSk7XG4gXG4gXHRpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkge1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtXHUwMDNlZGV2KTtcbkBAIC00Mzg1LDEzICs0Mzg1LDEzIEBAIHN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcbiBcdGlmIChib25kLVx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqL1xuIFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yaywgMCk7XG4tXHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IGJvbmRfcmN2X3ZhbGlkYXRlO1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0fVxuIFxuIFx0aWYgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFkX3dvcmssIDApO1xuIFx0XHQvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi9cbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7XG4rXHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XG4gXHRcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XG4gXG4gXHRcdGJvbmRfZm9yX2VhY2hfc2xhdmUoYm9uZCwgc2xhdmUsIGl0ZXIpXG5AQCAtNDQxMyw3ICs0NDEzLDcgQEAgc3RhdGljIGludCBib25kX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XG4gXG4gXHRib25kX3dvcmtfY2FuY2VsX2FsbChib25kKTtcbi1cdGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmID0gMDtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xuIFxuIFx0LyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqL1xuQEAgLTUxMTgsNyArNTExOCw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLFxuIFx0XHRpZiAoc2tpcHNsYXZlID09IHNsYXZlcy1cdTAwM2VhcnJbaWR4XSkge1xuIFx0XHRcdHNsYXZlcy1cdTAwM2VhcnJbaWR4XSA9XG4gXHRcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW3NsYXZlcy1cdTAwM2Vjb3VudCAtIDFdO1xuLVx0XHRcdHNsYXZlcy1cdTAwM2Vjb3VudC0tO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50LCBzbGF2ZXMtXHUwMDNlY291bnQgLSAxKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG5pbmRleCAzNmI4ZDg5Mzg3ZWU1Li45ZWZhZGVmZjZhMjIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTExNDcsMTEgKzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHQgKi9cbiBcdFx0aWYgKCFuZXd2YWwtXHUwMDNldmFsdWUpIHtcbiBcdFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKVxuLVx0XHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gTlVMTDtcbitcdFx0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbiBcdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0LyogYXJwX3ZhbGlkYXRlIGNhbiBiZSBzZXQgb25seSBpbiBhY3RpdmUtYmFja3VwIG1vZGUgKi9cbi1cdFx0XHRib25kLVx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcbitcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZib25kLVx1MDAzZW1paV93b3JrKTtcbiBcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yaywgMCk7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjI0LjI3NjQ0NTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxNzA5NjMzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRnV6emluZyBBc3Nlc3NtZW50IGZvciBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgZ290IGEgcGF0Y2ggdG91Y2hpbmcgdGhlIGJvbmRpbmcgZHJpdmVyIGZpbGVzIOKAkyBgYm9uZF9hbGIuY2AsIGBib25kX21haW4uY2AsIGFuZCBgYm9uZF9vcHRpb25zLmNgLiBMb29rcyBsaWtlIGl0J3MgY29udmVydGluZyBzb21lIHBsYWluIGFzc2lnbm1lbnRzIHRvIGBXUklURV9PTkNFKC4uLilgIGNhbGxzIGZvciBmaWVsZHMgbGlrZSBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlYCwgYGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmYCwgYGJvbmQtXHUwMDNlc2xhdmVfY250YCwgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBjb25jdXJyZW5jeSDigJMgZGF0YSByYWNlcywgbGlrZWx5IGZvciBLQ1NBTiBwdXJwb3NlcyBvciB0byB0aWdodGVuIHVwIGNvbXBpbGVyIGJlaGF2aW9yIHdpdGggbG9ja2xlc3MgcmVhZGVycy5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcnVuIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogaXMgdGhpcyBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gQXJlIHdlIHRvdWNoaW5nIGtlcm5lbCBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHdoZXJlIHBhZGRpbmcgb3IgZmllbGRzIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZD8gQW55IG5ldyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgYWxsb2NhdGlvbnMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbWJlcnM/IEFueSBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeT9cblxuTm9wZSwgaXQgZG9lc24ndCBzZWVtIGxpa2UgYW55IG9mIHRob3NlIHBvdGVudGlhbCBpc3N1ZXMgYXJlIHByZXNlbnQuIFdlJ3JlIGRlYWxpbmcgd2l0aCAqZXhpc3RpbmcqIGZpZWxkcyB3aXRoaW4gYHN0cnVjdCBib25kaW5nYCBhbmQgYHN0cnVjdCBib25kX3VwX3NsYXZlYC4gVGhlIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50cyAoZnVuY3Rpb24gcG9pbnRlcnMgb3IgemVybykgb3Igc2ltcGxlIGFyaXRobWV0aWMgbWFuaXB1bGF0aW9ucyBvZiBleGlzdGluZyB2YWx1ZXMuIE5vIGZyZXNoIG1lbW9yeSBhbGxvY2F0aW9uIG9yIHBvdGVudGlhbCB1c2UtYmVmb3JlLWluaXRpYWxpemF0aW9uIHNpdHVhdGlvbnMuXG5cbk5vdywgbGV0J3Mgc3BlY2lmaWNhbGx5IGNvbnNpZGVyIHRoZSBhcHBsaWNhYmlsaXR5IG9mIEtNU0FOIHZlcnN1cyBLQVNBTi9LQ1NBTi4gVGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBjb25jdXJyZW5jeSBmaXhlcyBmb2N1c2VkIG9uIHRoZSBib25kaW5nIGRyaXZlcidzIGRhdGEgc3RydWN0dXJlcy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgKmludHJvZHVjZWQqIG9yICpleHBvc2VkKiBieSB0aGlzIHBhdGNoLiBLQVNBTiBhbmQgS0NTQU4gYXJlIHJlbGV2YW50IGJlY2F1c2UgdGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBkYXRhIHJhY2VzIGFuZCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5ICp1c2UqIGFuZCB0aGF0J3Mgbm90IHdoYXQgd2UncmUgbG9va2luZyBhdCBoZXJlLlxuXG5UaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgTmVlZHNLTVNBTmAgaXMgYGZhbHNlYC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgcmVzdWx0cyBhbmQgZ2V0IHRoZSBvdXRwdXQgcmVhZHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTAsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6NDMuNDQ3NDEyOTc1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVxcdTAwM2Vjb3VudGAgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgZGF0YSByYWNlcyBhbmQgY29tcGlsZXIgcmVvcmRlcmluZyB3aXRoIGNvbmN1cnJlbnQgcmVhZGVycy4gXFxuXFxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVxcdTAwM2Vjb3VudGAgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgZGF0YSByYWNlcyBhbmQgY29tcGlsZXIgcmVvcmRlcmluZyB3aXRoIGNvbmN1cnJlbnQgcmVhZGVycy4gXFxuXFxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 08:26:14 +0000 UTC FinishedAt: 2026-08-31 09:11:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_CORE", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a8455260b2e9c024d1872ac1c094793d55a7e537", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_CORE", "INET" ], "series_id": "7dc37d1f-e11f-4a49-b188-97d80f34d5a2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_enslave", "bond_release", "bond_alb_initialize", "bond_update_slave_arr", "bond_opt_tryset_rtnl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX0NPUkUmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfZW5zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Ym9uZF9hbGJfaW5pdGlhbGl6ZSYjMzQ7LAogICAgJiMzNDtib25kX3VwZGF0ZV9zbGF2ZV9hcnImIzM0OywKICAgICYjMzQ7Ym9uZF9vcHRfdHJ5c2V0X3J0bmwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbmluZGV4IDgzOWY3NDgyZGMxODIuLmQyZmI2N2E0N2NmOTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuQEAgLTg3NSw3ICYjNDM7ODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbiBcbiBcdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuLVx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2O1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTEyNDUsNyAmIzQzOzEyNDUsNyBAQCBzdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXG4gXHR9XG4gXG4gXHRpZiAobm90aWZpZWQgfHwgZm9yY2UpXG4tXHRcdGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLS07XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xuIH1cbiBcbiAvKipcbkBAIC0yMjg0LDcgJiM0MzsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250JiM0MzsmIzQzOztcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAmIzQzOyAxKTtcbiBcdG5ldGRldl9jb21wdXRlX21hc3Rlcl91cHBlcl9mZWF0dXJlcyhib25kLVx1MDAzZWRldiwgdHJ1ZSk7XG4gXHRib25kX3NldF9jYXJyaWVyKGJvbmQpO1xuIFxuQEAgLTI1MzMsNyAmIzQzOzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXG4gXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQtLTtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAtIDEpO1xuIFxuIFx0aWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLVx1MDAzZWRldik7XG5AQCAtNDM4NSwxMyAmIzQzOzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF9pbnRlcnZhbCkgeyAgLyogYXJwIGludGVydmFsLCBpbiBtaWxsaXNlY29uZHMuICovXG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFycF93b3JrLCAwKTtcbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0fVxuIFxuIFx0aWYgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFkX3dvcmssIDApO1xuIFx0XHQvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi9cbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7XG4mIzQzO1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xuIFx0XHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xuIFxuIFx0XHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuQEAgLTQ0MTMsNyAmIzQzOzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIFx0c3RydWN0IHNsYXZlICpzbGF2ZTtcbiBcbiBcdGJvbmRfd29ya19jYW5jZWxfYWxsKGJvbmQpO1xuLVx0Ym9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYgPSAwO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xuIFxuIFx0LyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqL1xuQEAgLTUxMTgsNyAmIzQzOzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbiBcdFx0aWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtXHUwMDNlYXJyW2lkeF0pIHtcbiBcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW2lkeF0gPVxuIFx0XHRcdFx0c2xhdmVzLVx1MDAzZWFycltzbGF2ZXMtXHUwMDNlY291bnQgLSAxXTtcbi1cdFx0XHRzbGF2ZXMtXHUwMDNlY291bnQtLTtcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShzbGF2ZXMtXHUwMDNlY291bnQsIHNsYXZlcy1cdTAwM2Vjb3VudCAtIDEpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbmluZGV4IDM2YjhkODkzODdlZTUuLjllZmFkZWZmNmEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG5AQCAtMTE0NywxMSAmIzQzOzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHQgKi9cbiBcdFx0aWYgKCFuZXd2YWwtXHUwMDNldmFsdWUpIHtcbiBcdFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKVxuLVx0XHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gTlVMTDtcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmspO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG4tXHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlbWlpX3dvcmspO1xuIFx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFycF93b3JrLCAwKTtcbiBcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX0NPUkUmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfZW5zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Ym9uZF9hbGJfaW5pdGlhbGl6ZSYjMzQ7LAogICAgJiMzNDtib25kX3VwZGF0ZV9zbGF2ZV9hcnImIzM0OywKICAgICYjMzQ7Ym9uZF9vcHRfdHJ5c2V0X3J0bmwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYwppbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jCkBAIC04NzUsNyAmIzQzOzg3NSw3IEBAIHN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtib25kLSZndDttb2RlX2xvY2spOwogCiAJLyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBBUlBzICovCi0JYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwppbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKQEAgLTEyNDUsNyAmIzQzOzEyNDUsNyBAQCBzdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpCiAJfQogCiAJaWYgKG5vdGlmaWVkIHx8IGZvcmNlKQotCQlib25kLSZndDtzZW5kX3BlZXJfbm90aWYtLTsKJiM0MzsJCVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2VuZF9wZWVyX25vdGlmLCBib25kLSZndDtzZW5kX3BlZXJfbm90aWYgLSAxKTsKIH0KIAogLyoqCkBAIC0yMjg0LDcgJiM0MzsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsCiAJCX0KIAl9CiAKLQlib25kLSZndDtzbGF2ZV9jbnQmIzQzOyYjNDM7OwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NsYXZlX2NudCwgYm9uZC0mZ3Q7c2xhdmVfY250ICYjNDM7IDEpOwogCW5ldGRldl9jb21wdXRlX21hc3Rlcl91cHBlcl9mZWF0dXJlcyhib25kLSZndDtkZXYsIHRydWUpOwogCWJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7CiAKQEAgLTI1MzMsNyAmIzQzOzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsCiAKIAl1bmJsb2NrX25ldHBvbGxfdHgoKTsKIAlzeW5jaHJvbml6ZV9yY3UoKTsKLQlib25kLSZndDtzbGF2ZV9jbnQtLTsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtzbGF2ZV9jbnQsIGJvbmQtJmd0O3NsYXZlX2NudCAtIDEpOwogCiAJaWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHsKIAkJY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLSZndDtkZXYpOwpAQCAtNDM4NSwxMyAmIzQzOzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCiAJaWYgKGJvbmQtJmd0O3BhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqLwogCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmssIDApOwotCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7CiYjNDM7CQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTsKIAl9CiAKIAlpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHsKIAkJcXVldWVfZGVsYXllZF93b3JrKGJvbmQtJmd0O3dxLCAmYW1wO2JvbmQtJmd0O2FkX3dvcmssIDApOwogCQkvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi8KLQkJYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IGJvbmRfM2FkX2xhY3BkdV9yZWN2OwomIzQzOwkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7CiAJCWJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7CiAKIAkJYm9uZF9mb3JfZWFjaF9zbGF2ZShib25kLCBzbGF2ZSwgaXRlcikKQEAgLTQ0MTMsNyAmIzQzOzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCXN0cnVjdCBzbGF2ZSAqc2xhdmU7CiAKIAlib25kX3dvcmtfY2FuY2VsX2FsbChib25kKTsKLQlib25kLSZndDtzZW5kX3BlZXJfbm90aWYgPSAwOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiwgMCk7CiAJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBOVUxMKTsKIAogCS8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi8KQEAgLTUxMTgsNyAmIzQzOzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcywKIAkJaWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtJmd0O2FycltpZHhdKSB7CiAJCQlzbGF2ZXMtJmd0O2FycltpZHhdID0KIAkJCQlzbGF2ZXMtJmd0O2FycltzbGF2ZXMtJmd0O2NvdW50IC0gMV07Ci0JCQlzbGF2ZXMtJmd0O2NvdW50LS07CiYjNDM7CQkJV1JJVEVfT05DRShzbGF2ZXMtJmd0O2NvdW50LCBzbGF2ZXMtJmd0O2NvdW50IC0gMSk7CiAJCQlicmVhazsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCmluZGV4IDM2YjhkODkzODdlZTUuLjllZmFkZWZmNmEyMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYwpAQCAtMTE0NywxMSAmIzQzOzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLAogCQkgKi8KIAkJaWYgKCFuZXd2YWwtJmd0O3ZhbHVlKSB7CiAJCQlpZiAoYm9uZC0mZ3Q7cGFyYW1zLmFycF92YWxpZGF0ZSkKLQkJCQlib25kLSZndDtyZWN2X3Byb2JlID0gTlVMTDsKJiM0MzsJCQkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBOVUxMKTsKIAkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2JvbmQtJmd0O2FycF93b3JrKTsKIAkJfSBlbHNlIHsKIAkJCS8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovCi0JCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7CiYjNDM7CQkJV1JJVEVfT05DRShib25kLSZndDtyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7CiAJCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtib25kLSZndDttaWlfd29yayk7CiAJCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmssIDApOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgQ29uY3VycmVuY3kgQW5ub3RhdGlvbj8qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyBhY3Jvc3MgYGJvbmRfYWxiLmNgLCBgYm9uZF9tYWluLmNgLCBhbmQgYGJvbmRfb3B0aW9ucy5jYCB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhleSYjMzk7cmUgY29uc2lzdGVudGx5IHJlcGxhY2luZyBzdHJhaWdodGZvcndhcmQgYXNzaWdubWVudHMgYW5kIGluY3JlbWVudHMvZGVjcmVtZW50cyAobGlrZSBgYm9uZC0mZ3Q7cmVjdl9wcm9iZSA9IC4uLmAsIGV0Yy4pIHdpdGggYFdSSVRFX09OQ0UoLi4uKWAuIEhtbSwgdGhpcyBzbWVsbHMgbGlrZSBhIGRhdGEgcmFjZSBmaXguIFNwZWNpZmljYWxseSwgS0NTQU4gaXMgcHJvYmFibHkgYmVpbmcgYWRkcmVzc2VkIG9yLCBhdCBsZWFzdCwgY29tcGlsZXIgcmVvcmRlcmluZyBvciBzdG9yZSB0ZWFyaW5nIGlzIGJlaW5nIHByZXZlbnRlZC4KCkJ1dCwgYW5kIHRoaXMgaXMgY3J1Y2lhbCwgZG9lcyB0aGlzIGNoYW5nZSB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gbG9naWM/IElzIHRoaXMgYSBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbm5vdGF0aW9uLCBtZXJlbHkgYWRkaW5nIGBXUklURV9PTkNFYCB0byBpbmRpY2F0ZSBhIGNvbmN1cnJlbnQgcmVhZD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhcmVmdWxseS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCBkb2VzbiYjMzk7dCBtZWV0IGFueSBvZiB0aGUgJiMzNDtub3Qgd29ydGggZnV6emluZyYjMzQ7IGNyaXRlcmlhLCB3aGljaCBpbmNsdWRlcyBjaGFuZ2VzIHRoYXQgb25seSBkZWFsIHdpdGggZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBJICp0aGluayogdGhhdCBkYXRhIHJhY2UgZml4ZXMsIGFuZCBhbm5vdGF0aW9ucyB3aXRoIGBXUklURV9PTkNFYC9gUkVBRF9PTkNFYCwgYXJlIHJlbGV2YW50IHRvIGZ1enppbmcuCgpJJiMzOTttIHRoaW5raW5nIHRoaXMgbGlrZWx5ICppcyogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2UgZG91Ymx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgZ2l0IGxvZy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBtb3JlIGRldGFpbGVkIGV4cGxhbmF0aW9uIHRoZXJlLiBJJiMzOTtsbCBmaXJlIHVwIGEgdG9vbCBvciBqdXN0IHJlYWQgdGhyb3VnaCB0aGUgaGlzdG9yeSBhbmQgbG9vayBmb3IgYSBjb21taXQgZGVzY3JpcHRpb24uIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGZ1enppbmcgaXQgaWYgaXQmIzM5O3MgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5ub3RhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXUklURV9PTkNFXFwoYm9uZC1cdTAwM2VyZWN2X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9ODU1PXN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3Ny1cdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjg3ODpcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3OS1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzNDc9c3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4Ny1cdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzg4Olx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM5My1cdFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzOTQ6XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzOTUtXHRcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00NDEwPXN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDE2LVx0V1JJVEVfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiwgMCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ0MTc6XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ0MTgtXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xMTI4PXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExNDktXHRcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTE1MDpcdFx0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1MS1cdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUzLVx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjExNTQ6XHRcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1NS1cdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VtaWlfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlciBpbnRvIGBib25kX21haW4uY2AgYW5kIE1lbW9yeSBPcmRlcmluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBhIGhhbmRsZSBvbiB0aGUgYmFzaWMgZmxvdyBvZiBgYm9uZF9tYWluLmNgLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgY29uY3VycmVuY3kuIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gaG93IHRoZXkmIzM5O3JlICphY3R1YWxseSogdXNpbmcgdGhvc2UgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBtYWNyb3MuIEl0JiMzOTtzIG5vdCBlbm91Z2ggdG8ga25vdyB0aGV5JiMzOTtyZSAqdGhlcmUqOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIGNyaXRpY2FsIHRvIHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmcm9tIHJlb3JkZXJpbmcgbWVtb3J5IGFjY2Vzc2VzIGFuZCBpbnRyb2R1Y2luZyBkYXRhIHJhY2VzLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBBcmUgdGhleSBiZWluZyB1c2VkIGFyb3VuZCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBmbGFncywgb3IgY291bnRlcnMgdGhhdCBuZWVkIGF0b21pY2l0eT8gQW5kIGFyZSB0aGV5IGJlaW5nIHVzZWQgKmNvbnNpc3RlbnRseSo/IEEgc2luZ2xlIG1pc3NlZCBgUkVBRF9PTkNFYCBvciBgV1JJVEVfT05DRWAgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyB0aGF0IGFyZSBhIG5pZ2h0bWFyZSB0byB0cmFjayBkb3duLCBzbyBJIG5lZWQgdG8gc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBhcmUgZ3VhcmFudGVlaW5nIG1lbW9yeSBvcmRlcmluZyB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2FnZSBpcyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBwb3NzaWJsZSBpbXByb3ZlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UkVBRF9PTkNFXFwoYm9uZC1cdTAwM2VyZWN2X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE2MDM9c3RhdGljIHJ4X2hhbmRsZXJfcmVzdWx0X3QgYm9uZF9oYW5kbGVfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTYyMTpcdHJlY3ZfcHJvYmUgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMi1cdGlmIChyZWN2X3Byb2JlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2UgY3J1Y2lhbCB2YXJpYWJsZXMsIGBib25kLSZndDtzZW5kX3BlZXJfbm90aWZgIGFuZCBgYm9uZC0mZ3Q7c2xhdmVfY250YCwgYW5kIHByb2JhYmx5IGEgZmV3IG90aGVycyB3aGlsZSBJJiMzOTttIGF0IGl0LiBJJiMzOTttIGdvaW5nIHRvIHVzZSBgUkVBRF9PTkNFKClgIHRvIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIG1vc3QgdXAtdG8tZGF0ZSBhbmQgY29uc2lzdGVudCB2YWx1ZXMsIHdoaWNoIGlzIGVzcGVjaWFsbHkgY3JpdGljYWwgaW4gdGhpcyBjb25jdXJyZW50IGVudmlyb25tZW50LiBUaGlzIGlzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgcHJvZ3JhbSBpcyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSRUFEX09OQ0VcXChib25kLVx1MDAzZXNsYXZlX2NudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00OTYwPXN0YXRpYyBzdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9yb3VuZHJvYmluX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ5ODktbm9uX2lnbXA6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ5OTA6XHRzbGF2ZV9jbnQgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00OTkxLVx0aWYgKGxpa2VseShzbGF2ZV9jbnQpKSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00OTk4PXN0YXRpYyBzdHJ1Y3Qgc2xhdmUgKmJvbmRfeGRwX3htaXRfcm91bmRyb2Jpbl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDMwLW5vbl9pZ21wOlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MDMxOlx0c2xhdmVfY250ID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250KTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTAzMi1cdGlmIChsaWtlbHkoc2xhdmVfY250KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipDaGVja2luZyBDcml0aWNhbCBTZW5kIE5vdGlmaWNhdGlvbiBhbmQgU2xhdmUgQ291bnQgVmFsdWVzKioKCkFscmlnaHQsIGJlZm9yZSB3ZSBwcm9jZWVkIGZ1cnRoZXIsIGl0JiMzOTtzIGNyaXRpY2FsIHRvIGVuc3VyZSB3ZSBhcmUgY29ycmVjdGx5IHVuZGVyc3RhbmRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN5c3RlbSwgc28gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgdHdvIGNydWNpYWwgdmFyaWFibGVzOiBgUkVBRF9PTkNFKGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZilgIGFuZCBgUkVBRF9PTkNFKHNsYXZlcy0mZ3Q7Y291bnQpYC4gVGhlc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBwaWVjZXMgb2YgaW5mb3JtYXRpb24gaW4gdGhpcyBjb250ZXh0LiBUaGUgZmlyc3QsIGBib25kLSZndDtzZW5kX3BlZXJfbm90aWZgLCBzaWduYWxzIHdoZXRoZXIgYSBub3RpZmljYXRpb24gbmVlZHMgdG8gYmUgc2VudCB0byBhIHBlZXIgcmVnYXJkaW5nIHRoaXMgYm9uZC4gVGhlIGxhdHRlciwgYHNsYXZlcy0mZ3Q7Y291bnRgLCB0ZWxscyB1cyBob3cgbWFueSBzbGF2ZXMgYXJlIGFjdGl2ZSB3aXRoaW4gYSBnaXZlbiBjb250ZXh0LiBJJiMzOTttIHVzaW5nIGBSRUFEX09OQ0VgIGhlcmUgYmVjYXVzZSBJIG5lZWQgdG8gZ3VhcmFudGVlIHRoYXQgSSYjMzk7bSBzZWVpbmcgYSBjb25zaXN0ZW50IGFuZCBjdXJyZW50IHNuYXBzaG90IG9mIHRoZXNlIHZhcmlhYmxlcy4gSW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LCB0aGlzIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGF2b2lkIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVhZGluZyBzdGFsZSBkYXRhIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbWlzYmVoYXZlIGFuZCBwb3RlbnRpYWxseSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgb3BlcmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYm90aCBvZiB0aGVzZSByZWFkcy4gT25jZSBJIGhhdmUgdGhlIHZhbHVlcywgSSBjYW4gc2FmZWx5IHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQURfT05DRVxcKC4qc2VuZF9wZWVyX25vdGlmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTE0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE1Olx0aWYgKGNvbW1pdCB8fCBSRUFEX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYpKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTYtXHRcdC8qIFJhY2UgYXZvaWRhbmNlIHdpdGggYm9uZF9jbG9zZSBjYW5jZWwgb2Ygd29ya3F1ZXVlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zODQzPXN0YXRpYyB2b2lkIGJvbmRfYWN0aXZlYmFja3VwX2FycF9tb24oc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODcyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozODczOlx0aWYgKFJFQURfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZikgfHwgc2hvdWxkX25vdGlmeV9ydG5sKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM4NzQtXHRcdGlmICghcnRubF90cnlsb2NrKCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJlZm9yZSB3ZSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBwYXJ0aWN1bGFyIHByb2JsZW0sIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCwgZXNwZWNpYWxseSBhcm91bmQgY29uY3VycmVuY3kuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayB0aGF0IGNyaXRpY2FsIHNlY3Rpb24gd2hlcmUgd2UmIzM5O3JlIHRyYWNraW5nIHRoZSBudW1iZXIgb2Ygc2xhdmVzLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYFJFQURfT05DRShzbGF2ZXMtJmd0O2NvdW50KWAgb3Igd2hhdGV2ZXIgZXF1aXZhbGVudCBtZWNoYW5pc20gd2UmIzM5O3JlIHVzaW5nIHRvIGdldCB0aGF0IGNvdW50LiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHJlYWQgaXMgYXRvbWljIG9yIHByb3Blcmx5IHByb3RlY3RlZCwgb3RoZXJ3aXNlLCB3ZSYjMzk7cmUgYnVpbGRpbmcgb24gc2hha3kgZ3JvdW5kLiBJdCYjMzk7cyBhIHF1aWNrIHNhbml0eSBjaGVjayBidXQgYSByZWFsbHkgaW1wb3J0YW50IG9uZS4gSeKAmW0gY29uY2VybmVkIGFib3V0IGEgcmFjZSBjb25kaXRpb24uIEl04oCZcyBiZXR0ZXIgdG8gYmUgc3VyZSBub3cgdGhhbiB0byBzcGVuZCBob3VycyBjaGFzaW5nIGEgZ2hvc3QgbGF0ZXIuIExldOKAmXMgbWFrZSBzdXJlIHRoaXMgcmVhZCBpcyByb2NrIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSRUFEX09OQ0VcXCguKmNvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTM3MD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF90bGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzk3LVx0XHRcdFx0c2xhdmVzID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXHUwMDNldXNhYmxlX3NsYXZlcyk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTM5ODpcdFx0XHRcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzOTktXHRcdFx0XHRpZiAobGlrZWx5KGNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTQxOD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9hbGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTEzLVx0XHRcdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1MTQ6XHRcdFx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUxNS1cdFx0XHRpZiAobGlrZWx5KGNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE5Mi1cdFx0dXNhYmxlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTE5MzpcdFx0aWYgKCF1c2FibGUgfHwgIVJFQURfT05DRSh1c2FibGUtXHUwMDNlY291bnQpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTk0LVx0XHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyMzA9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0XzNhZF94b3Jfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIzOC1cdGhhc2ggPSBib25kX3htaXRfaGFzaChib25kLCBza2IpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjM5Olx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNDAtXHRpZiAodW5saWtlbHkoIWNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyNDc9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF8zYWRfeG9yX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNTUtXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTI1NjpcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MjU3LVx0aWYgKHVubGlrZWx5KCFjb3VudCkpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01MzE2PXN0YXRpYyBuZXRkZXZfdHhfdCBib25kX3htaXRfYnJvYWRjYXN0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MzMwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MzMxOlx0c2xhdmVzX2NvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCkgOiAwO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2xhdmVzX2NvdW50OyBpJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTUwMz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9fYm9uZF9za19nZXRfbG93ZXJfZGV2KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTUxMS1cdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1NTEyOlx0Y291bnQgPSBzbGF2ZXMgPyBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KSA6IDA7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU1MTMtXHRpZiAodW5saWtlbHkoIWNvdW50KSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9MTk4PXN0YXRpYyB2b2lkIGJvbmRfaW5mb19zaG93X3NsYXZlKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzMtXHRcdFx0c2VxX3ByaW50ZihzZXEsIFwmIzM0O0FjdG9yIENodXJuZWQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNDpcdFx0XHRcdCAgIFJFQURfT05DRShwb3J0LVx1MDAzZWNodXJuX2FjdG9yX2NvdW50KSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjM1LVx0XHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtQYXJ0bmVyIENodXJuZWQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNjpcdFx0XHRcdCAgIFJFQURfT05DRShwb3J0LVx1MDAzZWNodXJuX3BhcnRuZXJfY291bnQpKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBbmFseXNpczogQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBXUklURV9PTkNFYCBjYWxscywgbWlycm9yaW5nIGV4aXN0aW5nIGBSRUFEX09OQ0VgIHVzYWdlIGluIHRoZSBib25kaW5nIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcnVuIHRocm91Z2ggdGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNoYW5nZSBxdWFsaWZpZXMgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgdGhpcyBjb25zdGl0dXRlIGEgbW9kaWZpY2F0aW9uIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy9kcml2ZXJzPyBXYWl0LCB0aGUgYm9uZGluZyBkcml2ZXIgaXMgYSBzb2Z0d2FyZSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLCBhbmQgaXMgY29tbW9ubHkgZnV6emVkLgoKTGV0JiMzOTtzIGNhcmVmdWxseSByZS1yZWFkIHRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEsIGZvY3VzaW5nIG9uIHRoZSBleGNsdXNpb25zOiBEb2N1bWVudGF0aW9uL0tjb25maWcgY2hhbmdlcywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBub24tZnVuY3Rpb25hbCBudW1lcmljIGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gUUVNVSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgYW5kIHRlYXJkb3duIGNhbGxiYWNrcy4KCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd246IElzIHRoZSBib25kaW5nIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzISBCb25kaW5nIGlzIGEgc3RhbmRhcmQgdmlydHVhbCBuZXRkZXZpY2UgZHJpdmVyIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rL3J0bmwgY2FsbHMuCgpOb3cgdGhlIGtleSBxdWVzdGlvbjogRG9lcyBgV1JJVEVfT05DRWAgaW50cm9kdWNlIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0JiMzOTtzIG5vdCBkb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBhIGNvbnN0YW50LCBvciB1bnJlYWNoYWJsZSBjb2RlLCBvciBhIHRlYXJkb3duIGNhbGxiYWNrLiBTbyBpdCAqc2hvdWxkKiBjb3VudCBhcyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGhlcmUsIG9mIGNvdXJzZSwgaXMgdGhhdCBpdCBpcyBiZWluZyB1c2VkIHRvIHByZXZlbnQgZGF0YSByYWNlcywgc3RvcmUgdGVhcmluZywgb3IgY29tcGlsZXIgcmVvcmRlcmluZyEgU3l6a2FsbGVyIHdpdGggS0NTQU4sIFRocmVhZFNhbml0aXplciwgb3IgZ2VuZXJhbCBuZXQgZnV6emluZyBjYW4gbm93IHBvdGVudGlhbGx5IHJldmVhbCBjb25jdXJyZW5jeSBidWdzIGluIGJvbmRpbmchIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFdSSVRFX09OQ0VgICppbXBsaWVzKiBmdW5jdGlvbmFsIGltcGFjdCBvbiBkYXRhIGFjY2Vzcy4KClRoZSBjcml0ZXJpYSBjbGVhcmx5IHN0YXRlOiBhbnkgcGF0Y2ggbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljL2RyaXZlcnMsICp1bmxlc3MqIGl0IGZhbGxzIGludG8gb25lIG9mIHRoZSAqc2l4KiBleHBsaWNpdCBleGNsdXNpb25zLCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgZnV6emluZy4gVGhpcyBkb2VzbiYjMzk7dCBzZWVtIHRvIGZhbGwgaW50byAqYW55KiBvZiB0aG9zZSBleGNsdXNpb25zLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCAqc2hvdWxkKiBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkxldCYjMzk7cyBjaGVjayB0aGUgcmVxdWlyZWQgY29uZmlnIG9wdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Qk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSAmIzQzOz0gYm9uZGluZy5vXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xMjY2PXZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzMyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMzMzOlx0XHRcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfQk9ORElOR19GQUlMT1ZFUiwgYm9uZC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg4OD1pbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIwOTQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIwOTU6XHRzbGF2ZV9kZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfQk9ORElORztcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5Ni1cdC8qIGluaXRpYWxpemUgc2xhdmUgc3RhdHMgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIzNzUtXHRpZiAoIW5ldGlmX2lzX2JvbmRfbWFzdGVyKHNsYXZlX2RldikpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIzNzY6XHRcdHNsYXZlX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9CT05ESU5HO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yMzc3LVx0ZGV2X2Nsb3NlKHNsYXZlX2Rldik7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0yNDI1PXN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI1OTYtXHRpZiAoIW5ldGlmX2lzX2JvbmRfbWFzdGVyKHNsYXZlX2RldikpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjI1OTc6XHRcdHNsYXZlX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfklGRl9CT05ESU5HO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNTk4LVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDA3MD1zdGF0aWMgaW50IGJvbmRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQwNzctXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQwNzg6XHRpZiAoIShldmVudF9kZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX0JPTkRJTkcpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MDc5LVx0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTk0PXZvaWQgYm9uZF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02MDE2LVx0Ym9uZF9kZXYtXHUwMDNlZmxhZ3MgfD0gSUZGX01BU1RFUjtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NjAxNzpcdGJvbmRfZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0JPTkRJTkcgfCBJRkZfVU5JQ0FTVF9GTFQgfCBJRkZfTk9fUVVFVUU7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwMTgtXHRib25kX2Rldi1cdTAwM2Vwcml2X2ZsYWdzIFx1MDAyNj0gfihJRkZfWE1JVF9EU1RfUkVMRUFTRSB8IElGRl9UWF9TS0JfU0hBUklORyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTA5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYm9uZGluZyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgLiBJIGtub3cgdGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbGl2ZXMg4oCTIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBjb25maWcgZmxhZ3MsIGFsbCB0aGUganVpY3kgZGV0YWlscyB0aGF0IGNvbnRyb2wgaG93IHRoaXMgZHJpdmVyIGJlaGF2ZXMgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgcG9zc2libGUgYW5kIHdoYXQmIzM5O3MgcmVxdWlyZWQgYmVmb3JlIEkgY2FuIG1ha2UgYW55IGluZm9ybWVkIGRlY2lzaW9ucyBvciByZWNvbW1lbmRhdGlvbnMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgZ29pbmcgdG8gdGVsbCBtZSB0aGUgcmVhbCBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT50aGUgZmlsZSBkb2VzIG5vdCBleGlzdDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipMb2NhdGluZyB0aGUgQm9uZGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBgQ09ORklHX0JPTkRJTkdgIHN5bWJvbCBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgdGFzayBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEl0IGNvdWxkIGJlIGluIGEgdG9wLWxldmVsIGZpbGUsIGEgZmVhdHVyZS1zcGVjaWZpYyBLY29uZmlnLCBvciBldmVuIGluZGlyZWN0bHkgdGhyb3VnaCBhIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsIGhlcmUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZmluZGAgY29tbWFuZCwgcGVyaGFwcyBuYXJyb3dpbmcgaXQgZG93biB3aXRoIHNvbWUgZ3JlcCBmaWx0ZXJpbmcgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZmlsZXMgc3BlY2lmaWNhbGx5LiBUaGVuLCBJIGNhbiBpbnNwZWN0IHRoZSByZWxldmFudCBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBDT05GSUdfQk9ORElOR2Agc3ltYm9sLiBEZXBlbmRpbmcgb24gaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIHRoZSBjb21wbGV4aXR5LCBJIG1pZ2h0IG5lZWQgdG8gdHJhY2UgdGhyb3VnaCBhIGZldyBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2Vzcywgd3JpdHRlbiBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZzoKCioqRXhhbWluaW5nIHRoZSBLZXJuZWwgTmV0d29yayBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSBhbmQgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgNDEuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgY3J1Y2lhbCBvcHRpb25zLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIgSSYjMzk7bSByZXNlYXJjaGluZyBvciBhIGdlbmVyYWwgYXJlYSB0aGF0IHJlcXVpcmVzIG9wdGltaXphdGlvbi4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBjb25kaXRpb25hbCBsb2dpYywgbWF5YmUgc29tZSBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBvdGhlciBwcmVyZXF1aXNpdGVzLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtYXAgb2YgdGhpcyBzZWN0aW9uIG9mIHRoZSBLY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcdHRyaXN0YXRlXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE5FVF9DT1JFXG4gIDMzOlx0XHRkZWZhdWx0IHlcbiAgMzQ6XHRcdGJvb2wgXCYjMzQ7TmV0d29yayBjb3JlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG8gbm90IGludGVuZCB0byB1c2UgYW55IG9mIHRoZVxuICAzNzpcdFx0ICBuZXR3b3JraW5nIGNvcmUgZHJpdmVycyAoaS5lLiBWTEFOLCBicmlkZ2luZywgYm9uZGluZywgZXRjLilcbiAgMzg6XHRcbiAgMzk6XHRpZiBORVRfQ09SRVxuICA0MDpcdFxuICA0MTpcdGNvbmZpZyBCT05ESU5HXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCb25kaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgNDQ6XHRcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byAmIzM5O2JvbmQmIzM5OyBtdWx0aXBsZSBFdGhlcm5ldFxuICA0NzpcdFx0ICBDaGFubmVscyB0b2dldGhlci4gVGhpcyBpcyBjYWxsZWQgJiMzOTtFdGhlcmNoYW5uZWwmIzM5OyBieSBDaXNjbyxcbiAgNDg6XHRcdCAgJiMzOTtUcnVua2luZyYjMzk7IGJ5IFN1biwgODAyLjNhZCBieSB0aGUgSUVFRSwgYW5kICYjMzk7Qm9uZGluZyYjMzk7IGluIExpbnV4LlxuICA0OTpcdFxuICA1MDpcdFx0ICBUaGUgZHJpdmVyIHN1cHBvcnRzIG11bHRpcGxlIGJvbmRpbmcgbW9kZXMgdG8gYWxsb3cgZm9yIGJvdGggaGlnaFxuICA1MTpcdFx0ICBwZXJmb3JtYW5jZSBhbmQgaGlnaCBhdmFpbGFiaWxpdHkgb3BlcmF0aW9uLlxuICA1MjpcdFxuICA1MzpcdFx0ICBSZWZlciB0byBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnJzdFx1MDAzZSBmb3IgbW9yZVxuICA1NDpcdFx0ICBpbmZvcm1hdGlvbi5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA1NzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBib25kaW5nLlxuICA1ODpcdFxuICA1OTpcdGNvbmZpZyBEVU1NWVxuICA2MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgbmV0IGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gIDYxOlx0XHRoZWxwXG4gIDYyOlx0XHQgIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBiaXQtYnVja2V0IGRldmljZSAoaS5lLiB0cmFmZmljIHlvdSBzZW5kIHRvXG4gIDYzOlx0XHQgIHRoaXMgZGV2aWNlIGlzIGNvbnNpZ25lZCBpbnRvIG9ibGl2aW9uKSB3aXRoIGEgY29uZmlndXJhYmxlIElQXG4gIDY0Olx0XHQgIGFkZHJlc3MuIEl0IGlzIG1vc3QgY29tbW9ubHkgdXNlZCBpbiBvcmRlciB0byBtYWtlIHlvdXIgY3VycmVudGx5XG4gIDY1Olx0XHQgIGluYWN0aXZlIFNMSVAgYWRkcmVzcyBzZWVtIGxpa2UgYSByZWFsIGFkZHJlc3MgZm9yIGxvY2FsIHByb2dyYW1zLlxuICA2NjpcdFx0ICBJZiB5b3UgdXNlIFNMSVAgb3IgUFBQLCB5b3UgbWlnaHQgd2FudCB0byBzYXkgWSBoZXJlLiBJdCB3b24mIzM5O3RcbiAgNjc6XHRcdCAgZW5sYXJnZSB5b3VyIGtlcm5lbC4gV2hhdCBhIGRlYWwuIFJlYWQgYWJvdXQgaXQgaW4gdGhlIE5ldHdvcmtcbiAgNjg6XHRcdCAgQWRtaW5pc3RyYXRvciYjMzk7cyBHdWlkZSwgYXZhaWxhYmxlIGZyb21cbiAgNjk6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjZ3VpZGVcdTAwM2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDAxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIG9uIHdoYXQgSSYjMzk7ZCBiZSBsb29raW5nIGZvciBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEJvbmRpbmcgTWFrZWZpbGUqKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZWAuIE15IGltbWVkaWF0ZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyBydW5uaW5nLiBXaHkgYW0gSSBsb29raW5nIGF0IHRoaXM/IElzIHRoZXJlIGEgcmVwb3J0ZWQgaXNzdWUgd2l0aCBib25kaW5nPyBBIG5ldyBmZWF0dXJlPyBQZXJmb3JtYW5jZSBjb25jZXJucz8gSSBuZWVkIGNvbnRleHQsIG9mIGNvdXJzZSwgYnV0IGp1c3QgaGl0dGluZyB0aGUgTWFrZWZpbGUsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLgoKRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZS4gSSBrbm93IHRoZSBnZW5lcmFsIGxheW91dCBvZiB0aGUga2VybmVsJiMzOTtzIE1ha2VmaWxlcywgc28gSSYjMzk7bGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBgb2JqLWAsIGBjY2ZsYWdzLWAsIGBLQlVJTERfQ0ZMQUdTYCwgYGluY2x1ZGVgLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgKGBpZmRlZmAsIGBpZm5lcWApLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMgKGAqLmNgLCBgKi5vYCkgYW5kIGhlYWRlciBkZXBlbmRlbmNpZXMuCgpCZXlvbmQgdGhlIGJhc2ljIHN0cnVjdHVyZSwgSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIG1vZHVsZXMgYmVpbmcgYnVpbHQ/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9uIG9yIGhhcmR3YXJlPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBmbGFncyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgYm9uZGluZz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG9zc2libHkgc2VlaW5nIGAtRGAgZGVmaW5lcywgd2hpY2ggdGVsbCBtZSBhYm91dCBjb21waWxlLXRpbWUgZmVhdHVyZSB0b2dnbGVzLgoKSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgZGVwZW5kZW5jaWVzIGxpc3RlZC4gSWYgdGhlIGJvbmRpbmcgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgKGUuZy4sIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWMgTklDIGRyaXZlcnMpLCB0aGF0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLiBBcmUgdGhlcmUgY3Jvc3MtZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY2F1c2UgYnVpbGQgaXNzdWVzIG9yIHJ1bnRpbWUgY29uZmxpY3RzPwoKRmluYWxseSwgaWYgdGhpcyAqaXMqIHJlbGF0ZWQgdG8gYW4gaXNzdWUsIEkmIzM5O2xsIGJlIGh1bnRpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBzcGVjaWZpYyBkZWJ1Z2dpbmcgb3IgbG9nZ2luZyBmbGFncy4gQXJlIHRoZXJlIGFueSBgLURgIGRlZmluZXMgcmVsYXRlZCB0byB2ZXJib3NlIG91dHB1dCBvciBkZWJ1Z2dpbmc/IFRoYXQmIzM5O3MgZ29sZGVuLCBwYXJ0aWN1bGFybHkgaWYgdGhpcyBpcyByZWxhdGVkIHRvIGEgcHJvYmxlbS4gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgYW55IHNwZWNpZmljIHRlc3QgdGFyZ2V0cyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGhlbHAgbWUgcmVwcm9kdWNlIG9yIGFuYWx5emUgdGhlIGlzc3VlLiBUaGUgZ29hbCwgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYm9uZGluZyBkcml2ZXImIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gZGl2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBCb25kaW5nIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuICAgNzpcdFxuICAgODpcdGJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuICAgOTpcdFxuICAxMDpcdHByb2MtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IGJvbmRfcHJvY2ZzLm9cbiAgMTE6XHRib25kaW5nLW9ianMgJiM0Mzs9ICQocHJvYy15KVxuICAxMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjb25maWd1cmF0aW9uLXdpc2UgaW4gdGhlc2UgbW9kaWZpZWQgZmlsZXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHNjYW4gZm9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBsb29rIGF0IGBORVRfQ09SRWAsIGBJTkVUYCwgYW5kIGBCT05ESU5HYC4gQXJlIGBORVRfQ09SRWAgYW5kIGBJTkVUYCBzdGFuZGFyZCBkZWZpbmVzPyBgQk9ORElOR2AgZGVmaW5pdGVseSBkZXBlbmRzIG9uIGBJTkVUYCwgYW5kIGBORVRfQ09SRWAgaXMgaXRzIHBhcmVudCBtZW51LCBjb3JyZWN0PwoKTm93LCBJJiMzOTtsbCBzY3J1dGluaXplIGBCT05ESU5HYCBtb3JlIGNsb3NlbHkuCgpOZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhlIHBhdGNoLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNgLiBMZXQgbWUgcmV2aWV3IHRoZSBjb2RlLCBhbmQgaW4gcGFydGljdWxhciwgdGhlIGZ1bmN0aW9uIGBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClgLiBIbW0uLi4gaXMgYHJsYl9pbml0aWFsaXplYCBkZWNsYXJlZCBhcyBhIHN0YXRpYyBmdW5jdGlvbj8gVGhhdCYjMzk7cyBrZXkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaGFzIGFueSBleHRlcm5hbCBjYWxsZXJzLCBhbmQgaWYgdGhlcmUgaXMgYSBrbm93biBlbnRyeSBwb2ludC4gSSYjMzk7bGwgY2hlY2sgYGJvbmRfYWxiLmNgIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JsYl9pbml0aWFsaXplJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9ODM0PXN0YXRpYyB2b2lkIHJsYl9wdXJnZV9zcmNfaXAoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhcnBfcGt0ICphcnApXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg1NC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzo4NTU6c3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xMzA2PWludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMTQtXHRpZiAocmxiX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzE1Olx0XHRyZXMgPSBybGJfaW5pdGlhbGl6ZShib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE2LVx0XHRpZiAocmVzKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzQyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBib25kX2FsYl9pbml0aWFsaXplYCBGdW5jdGlvbioqCgpSaWdodCwgYGJvbmRfYWxiX2luaXRpYWxpemVgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBtZWFucyBpdCYjMzk7cyBwb3RlbnRpYWxseSB2aXNpYmxlIGFuZCBjYWxsYWJsZSBmcm9tIG91dHNpZGUgaXRzIGxpa2VseSBtb2R1bGUsIHdoaWNoIGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIGZvciBtYWludGFpbmFiaWxpdHksIGVuY2Fwc3VsYXRpb24sIGFuZCBldmVuIHBvdGVudGlhbCB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4gTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtXaGVyZSB0aGUgaGVjayBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD8mIzM0OyBXZSBuZWVkIHRvIHRyYWNrIGRvd24gaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UgcGF0dGVybnMgYW5kIGVuc3VyZSBldmVyeXRoaW5nIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBMZXQmIzM5O3MgdHJhY2UgYmFjayB0aGUgY2FsbHMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBUaW1lIHRvIGJyZWFrIG91dCB0aGUgZ3JlcCBvciBteSBJREUmIzM5O3MgY2FsbCBoaWVyYXJjaHkgZmVhdHVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTI4ND1zdGF0aWMgYm9vbCBhbGJfZGV0ZXJtaW5lX25kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjEzMDY6aW50IGJvbmRfYWxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCBybGJfZW5hYmxlZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzNDc9c3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3My1cdGlmIChib25kX2lzX2xiKGJvbmQpKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzNzQ6XHRcdC8qIGJvbmRfYWxiX2luaXRpYWxpemUgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSB0aW1lclxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzc1LVx0XHQgKiBpcyBzdGFydGVkLlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00Mzc2LVx0XHQgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM3NzpcdFx0aWYgKGJvbmRfYWxiX2luaXRpYWxpemUoYm9uZCwgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfQUxCKSkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzgtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjk2CgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgRGlmZioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTttIHNlZWluZyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHRvdWNoZWQ6IGBybGJfaW5pdGlhbGl6ZWAgaW4gYGJvbmRfYWxiLmNgLCBjYWxsZWQgYnkgYGJvbmRfYWxiX2luaXRpYWxpemVgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBib25kX29wZW5gLiBUaGF0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiBjaGFpbi4gVGhlbiB0aGVyZSYjMzk7cyBgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzYCwgYGJvbmRfZW5zbGF2ZWAsIGBfX2JvbmRfcmVsZWFzZV9vbmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9za2lwX3NsYXZlYCwgYW5kIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCDigJMgYSBnb29kIG1peCBvZiBjb3JlIGJvbmRpbmcgZnVuY3Rpb25hbGl0eS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyDigJMgc3BlY2lmaWNhbGx5IGBib25kX2Vuc2xhdmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAsIGFuZCBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAgLSBhcmUgbm9uLXN0YXRpYywgZXhwb3J0ZWQgc3ltYm9scywgb3IgcGVyaGFwcyBuZXRsaW5rIG9wZXJhdGlvbnMuIFRoYXQgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIGlmIHRoaXMgY2hhbmdlIGhhcyBpbXBsaWNhdGlvbnMgZm9yIG90aGVyIG1vZHVsZXMgb3IgdGhlIHVzZXIgc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuCgpOZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgcG90ZW50aWFsbHkgY3JpdGljYWwgZnVuY3Rpb25zOiBgYm9uZF9lbnNsYXZlYCwgYF9fYm9uZF9yZWxlYXNlX29uZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGFuZCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEEgcXVpY2sgY2hlY2sgb2YgdGhlc2Ugc2hvdWxkIHRlbGwgbWUgd2hhdCYjMzk7cyBjaGFuZ2VkIGFuZCBob3cuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoYm9uZF9vcGVufGJvbmRfY2xvc2V8Ym9uZF9lbnNsYXZlfGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXR8Ym9uZF9za2lwX3NsYXZlfF9fYm9uZF9yZWxlYXNlX29uZSkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xNTMyPXZvaWQgYm9uZF9hbGJfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1ODctXHRcdFx0LyogZGV2X3NldF9wcm9taXNjdWl0eSByZXF1aXJlcyBydG5sIGFuZFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1ODg6XHRcdFx0ICogbm90aGluZyBlbHNlLiAgQXZvaWQgcmFjZSB3aXRoIGJvbmRfY2xvc2UuXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTU4OS1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4Ny1cdC8qIFRoZSBzZW5kX3BlZXJfbm90aWYgaXMgc2V0IGJ5IGFjdGl2ZS1iYWNrdXAgb3IgODAyM2FkXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjExODg6XHQgKiBtb2RlLCBhbmQgY2xlYXJlZCBpbiBib25kX2Nsb3NlKCkgd2hlbiBjaGFuZ2luZyBtb2RlLlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTg5LVx0ICogSXQgaXMgc2FmZSB0byBvbmx5IGNoZWNrIGJvbmQgbW9kZSBoZXJlLlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg2NT12b2lkIGJvbmRfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFx1MDAzY3NsYXZlXHUwMDNlIHRvIGJvbmQgZGV2aWNlIFx1MDAzY21hc3Rlclx1MDAzZSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODg4OmludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjQyNC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjQyNTpzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjYtXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI2MDY9aW50IGJvbmRfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MDcte1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA4Olx0cmV0dXJuIF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA5LX1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI2MTQ9c3RhdGljIGludCBib25kX3JlbGVhc2VfYW5kX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYxOS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjYyMDpcdHJldCA9IF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MjEtXHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2ICFib25kX2hhc19zbGF2ZXMoYm9uZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0yODk1PXN0YXRpYyB2b2lkIGJvbmRfbWlpX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjkxNS1cdGlmIChjb21taXQgfHwgUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmKSkge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE2Olx0XHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgY2FuY2VsIG9mIHdvcmtxdWV1ZSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTE3LVx0XHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zODQzPXN0YXRpYyB2b2lkIGJvbmRfYWN0aXZlYmFja3VwX2FycF9tb24oc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODU3LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozODU4Olx0XHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgZmx1c2ggb2Ygd29ya3F1ZXVlICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM4NTktXHRcdGlmICghcnRubF90cnlsb2NrKCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM5NDU9c3RhdGljIGludCBib25kX3NsYXZlX25ldGRldl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzk3MS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozOTcyOlx0XHRcdF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM5NzMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMyMD12b2lkIGJvbmRfd29ya19pbml0X2FsbChzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMS17XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjI6XHQvKiBuZG9fc3RvcCwgYm9uZF9jbG9zZSgpIHdpbGwgdHJ5IHRvIGZsdXNoIHRoZSB3b3JrIHVuZGVyXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMjMtXHQgKiB0aGUgcnRubCBsb2NrLiBUaGUgd29ya3F1ZXVlIG11c3Qgbm90IGJsb2NrIG9uIHJ0bmwgbG9ja1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMzNj12b2lkIGJvbmRfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM0Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM0NzpzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDgte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQwOS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxMDpzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDExLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ1ODU9c3RhdGljIGludCBib25kX2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NjQwLVx0Y2FzZSBTSU9DQk9OREVOU0xBVkU6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQ2NDE6XHRcdHJlcyA9IGJvbmRfZW5zbGF2ZShib25kX2Rldiwgc2xhdmVfZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDY0Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01MDgzPXN0YXRpYyB2b2lkIGJvbmRfc2xhdmVfYXJyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwMy1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTEwNDpzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwNS1cdFx0XHQgICAgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTExLVx0ICogb25seSBwb3NzaWJsZSB3aGVuIHRoZSBjYWxsIGlzIGluaXRpYXRlZCBmcm9tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUxMTI6XHQgKiBfX2JvbmRfcmVsZWFzZV9vbmUoKS4gSW4gdGhpcyBzaXR1YXRpb247IG92ZXJ3cml0ZSB0aGVcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTExMy1cdCAqIHNraXBzbGF2ZSBlbnRyeSBpbiB0aGUgYXJyYXkgd2l0aCB0aGUgbGFzdCBlbnRyeSBmcm9tIHRoZVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE2MD1pbnQgYm9uZF91cGRhdGVfc2xhdmVfYXJyKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNraXBzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMTgtXHRpZiAocmV0ICE9IDAgXHUwMDI2XHUwMDI2IHNraXBzbGF2ZSkge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjE5Olx0XHRib25kX3NraXBfc2xhdmUocnRubF9kZXJlZmVyZW5jZShib25kLVx1MDAzZWFsbF9zbGF2ZXMpLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MjIwLVx0XHRcdFx0c2tpcHNsYXZlKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTIyMTpcdFx0Ym9uZF9za2lwX3NsYXZlKHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2V1c2FibGVfc2xhdmVzKSxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIyMi1cdFx0XHRcdHNraXBzbGF2ZSk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm9uZF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk0Ni1cdC5uZG9fdW5pbml0XHRcdD0gYm9uZF91bmluaXQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDc6XHQubmRvX29wZW5cdFx0PSBib25kX29wZW4sXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDg6XHQubmRvX3N0b3BcdFx0PSBib25kX2Nsb3NlLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ5LVx0Lm5kb19zdGFydF94bWl0XHRcdD0gYm9uZF9zdGFydF94bWl0LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk2Ni0jZW5kaWZcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk2NzpcdC5uZG9fYWRkX3NsYXZlXHRcdD0gYm9uZF9lbnNsYXZlLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTY4LVx0Lm5kb19kZWxfc2xhdmVcdFx0PSBib25kX3JlbGVhc2UsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02MDYxPXN0YXRpYyB2b2lkIGJvbmRfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwNzAtXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo2MDcxOlx0XHRfX2JvbmRfcmVsZWFzZV9vbmUoYm9uZF9kZXYsIHNsYXZlLVx1MDAzZWRldiwgdHJ1ZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTYwNzItXHRuZXRkZXZfaW5mbyhib25kX2RldiwgXCYjMzQ7UmVsZWFzZWQgYWxsIHNsYXZlc1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0zMT1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzItXHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGJvbmRfb3B0X3ZhbHVlICpuZXd2YWwpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMzpzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTM0LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0yNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBib25kX29wdGlvbiBib25kX29wdHNbQk9ORF9PUFRfTEFTVF0gPSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0zMTYtXHRcdC52YWx1ZXMgPSBib25kX2ludG1heF90YmwsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjMxNzpcdFx0LnNldCA9IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzE4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTkxMD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTM5LVx0LyogV2hlbiBjaGFuZ2luZyBtb2RlLCB0aGUgYm9uZCBkZXZpY2UgaXMgZG93biwgd2UgbWF5IHJlZHVjZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzo5NDA6XHQgKiB0aGUgYm9uZF9iY2FzdF9uZWlnaF9lbmFibGVkIGluIGJvbmRfY2xvc2UoKSBpZiBicm9hZGNhc3RfbmVpZ2hib3JcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTQxLVx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTExOD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjctICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjExMjg6c3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTI5LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTE3ODY9c3RhdGljIGludCBib25kX29wdGlvbl9zbGF2ZXNfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTgxMS1cdFx0c2xhdmVfZGJnKGJvbmQtXHUwMDNlZGV2LCBkZXYsIFwmIzM0O0Vuc2xhdmluZyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxODEyOlx0XHRyZXQgPSBib25kX2Vuc2xhdmUoYm9uZC1cdTAwM2VkZXYsIGRldiwgTlVMTCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE4MTMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbjogQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByaWdodC4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIHRoZSBwcmltZSBmb2N1cyBzeW1ib2xzIOKAkyB0aGUga2V5IG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIOKAkyBmb3IgdGhpcyBhbmFseXNpcy4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGxpc3QgdG8gc3RhcnQgd2l0aCwgaW5jbHVkaW5nIGBib25kX2Vuc2xhdmVgLCBgYm9uZF9yZWxlYXNlYCwgYW5kIGBib25kX2FsYl9pbml0aWFsaXplYCwgdGhvc2UgYXJlIG9idmlvdXMgY2FuZGlkYXRlcy4gR29vZCBjaG9pY2VzLiBgYm9uZF91cGRhdGVfc2xhdmVfYXJyYCBpcyBhbm90aGVyIHNvbGlkIGNvbnRlbmRlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBhcm91bmQgYGJvbmRfb3B0X3RyeXNldGAgb3IsIHBlcmhhcHMgYmV0dGVyLCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEkgbmVlZCB0byB2ZXJpZnksIGFuZCBxdWlja2x5LiBJcyBgYm9uZF9vcHRfdHJ5c2V0YCBhY3R1YWxseSBleHBvcnRlZD8gSXMgaXQgKm5vbi1zdGF0aWMqPyBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIGBib25kX29wdGlvbnMuY2AgdG8gYmUgc3VyZS4gSXQgY291bGQgYmUgY3J1Y2lhbCwgb3IgaXQgY291bGQgYmUgYSBkZWFkIGVuZC4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBnZXR0aW5nIGFsbCB0aGUgcmlnaHQgZGF0YSBwb2ludHMgaGVyZS4gTm8gc3RvbmUgdW50dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X10mIzQzOyBib25kXy4qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjIxND1zdGF0aWMgdm9pZCBhZF9tYXJrZXJfcmVzcG9uc2VfcmVjZWl2ZWQoc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzYtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjIzNzp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzgte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ3LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNDg6dm9pZCBib25kXzNhZF9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDkte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjcxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzI6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI3My17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyNjp2b2lkIGJvbmRfM2FkX3VuYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDg4LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0ODk6dm9pZCBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3Moc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1MjA9c3RhdGljIGJvb2wgYm9uZF9hZ2dfdGltZXJfYWR2YW5jZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0OC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTQ5OnZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUwLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjcxMD1zdGF0aWMgdm9pZCBhZF91cGRhdGVfYWN0b3Jfa2V5cyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzU0OnZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgwLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODE6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODIte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODM4LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4Mzk6aW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NDAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODgxPWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkxNDppbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MjQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkyNTppbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNi1cdFx0XHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1Ni0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU3OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4MS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTgyOnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfYWN0aXZlKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5ODMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMDE6c2l6ZV90IGJvbmRfM2FkX3N0YXRzX3NpemUodm9pZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxMy1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDE0OmludCBib25kXzNhZF9zdGF0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kXzNhZF9zdGF0cyAqc3RhdHMpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTMwNS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTMwNy17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjctXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTMyODp2b2lkIGJvbmRfYWxiX2RlaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzI5LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTM3MD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF90bGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDA4LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE0MDk6bmV0ZGV2X3R4X3QgYm9uZF90bGJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTQxMC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTE0MTg9c3RydWN0IHNsYXZlICpib25kX3htaXRfYWxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyMi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTIzOm5ldGRldl90eF90IGJvbmRfYWxiX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1MjQte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE1MzI6dm9pZCBib25kX2FsYl9tb25pdG9yKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTYzNS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjM2OmludCBib25kX2FsYl9pbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY1LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE2NjY6dm9pZCBib25kX2FsYl9kZWluaXRfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTY2Ny17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2NzktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTY4MDp2b2lkIGJvbmRfYWxiX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2ODEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNzE3LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3MTg6dm9pZCBib25kX2FsYl9oYW5kbGVfYWN0aXZlX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpuZXdfc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTcxOS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3ODYtLyogQ2FsbGVkIHdpdGggUlROTCAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3ODc6aW50IGJvbmRfYWxiX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTc4OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE4MzEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTgzMjp2b2lkIGJvbmRfYWxiX2NsZWFyX3ZsYW4oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIHNob3J0IHZsYW5faWQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTgzMy17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz01ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUoYm9uZF9kZWJ1Z19ybGJfaGFzaCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU1LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzo1Njp2b2lkIGJvbmRfZGVidWdfcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTY0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzo2NTp2b2lkIGJvbmRfZGVidWdfdW5yZWdpc3RlcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjcwOnZvaWQgYm9uZF9kZWJ1Z19yZXJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy03MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz03OT12b2lkIF9faW5pdCBib25kX2NyZWF0ZV9kZWJ1Z2ZzKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy04Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6ODc6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy04OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05NS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6OTY6dm9pZCBib25kX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05Ny17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05OS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6MTAwOnZvaWQgYm9uZF9kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDQ6dm9pZCBib25kX2RlYnVnX3JlcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTEwNS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz0xMDg9dm9pZCBfX2luaXQgYm9uZF9jcmVhdGVfZGVidWdmcyh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTExLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMTI6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMTMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjcyPWNvbnN0IGNoYXIgKmJvbmRfbW9kZV9uYW1lKGludCBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjk2LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTc6bmV0ZGV2X3R4X3QgYm9uZF9kZXZfcXVldWVfeG1pdChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjk4LVx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMjU9Ym9vbCBfX2JvbmRfeGRwX2NoZWNrKGludCBtb2RlLCBpbnQgeG1pdF9wb2xpY3kpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zNDMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM0NDpib29sIGJvbmRfeGRwX2NoZWNrKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1kZXZfb3BzIGJvbmRfeGZybWRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy03NTUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjc1NjppbnQgYm9uZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNzU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTIwOC0vKiBVc2UgdGhpcyB0byB1cGRhdGUgc2VuZF9wZWVyX25vdGlmIHdoZW4gUlROTCBtYXkgYmUgaGVsZCBpbiBvdGhlciBwbGFjZXMuICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEyMDk6dm9pZCBib25kX3BlZXJfbm90aWZ5X3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyMTAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTIzOD1zdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjY1LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMjY2OnZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyNjcte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM2OS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTM3MDp2b2lkIGJvbmRfc2VsZWN0X2FjdGl2ZV9zbGF2ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM3MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xODA1PXN0YXRpYyB2b2lkIGJvbmRfbmV0ZGV2X25vdGlmeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODIyOnZvaWQgYm9uZF9xdWV1ZV9zbGF2ZV9ldmVudChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4MjYtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4Mjc6dm9pZCBib25kX2xvd2VyX3N0YXRlX2NoYW5nZWQoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTgyOC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xODU2PXN0YXRpYyB2b2lkIGJvbmRfZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg2NC1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTg2NTp2b2lkIGJvbmRfeGRwX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjYte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg4Ny0vKiBlbnNsYXZlIGRldmljZSBcdTAwM2NzbGF2ZVx1MDAzZSB0byBib25kIGRldmljZSBcdTAwM2NtYXN0ZXJcdTAwM2UgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTg4ODppbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTg4OS1cdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI0MjU9c3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYwNS0vKiBBIHdyYXBwZXIgdXNlZCBiZWNhdXNlIG9mIG5kb19kZWxfbGluayAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA2OmludCBib25kX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTMwMTQ9c3RhdGljIHZvaWQgYm9uZF9hcnBfc2VuZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBpbnQgYXJwX29wLCBfX2JlMzIgZGVzdF9pcCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTMwNDUtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjMwNDY6c3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTMwNDctXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MzM3ND1zdGF0aWMgaW50IGJvbmRfbmFfcmN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzQyMi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MzQyMzppbnQgYm9uZF9yY3ZfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjQtXHRcdCAgICAgIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzA1PXN0YXRpYyB1MzIgYm9uZF94bWl0X2hhc2hfeGRwKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMTktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjA6dm9pZCBib25kX3dvcmtfaW5pdF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMjEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMzNS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDMzNjp2b2lkIGJvbmRfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzM3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUwNjA9c3RhdGljIG5ldGRldl90eF90IGJvbmRfeG1pdF9hY3RpdmViYWNrdXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUwNzYtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUwNzc6dm9pZCBib25kX3NsYXZlX2Fycl93b3JrX3JlYXJtKHN0cnVjdCBib25kaW5nICpib25kLCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUxNDc9c3RhdGljIHZvaWQgYm9uZF9yZXNldF9zbGF2ZV9hcnIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTU5LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTYwOmludCBib25kX3VwZGF0ZV9zbGF2ZV9hcnIoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2tpcHNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU5ODQ9c3RhdGljIHZvaWQgYm9uZF9kZXN0cnVjdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5OTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5OTQ6dm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk5NS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02NTEwPXVuc2lnbmVkIGludCBib25kX2dldF9udW1fdHhfcXVldWVzKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02NTE5LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo2NTIwOmludCBib25kX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTY1MjEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM9MTAwOD1pbnQgX19pbml0IGJvbmRfbmV0bGlua19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy0xMDEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzoxMDEzOnZvaWQgYm9uZF9uZXRsaW5rX2Zpbmkodm9pZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxNC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz04NDQ9aW50IF9fYm9uZF9vcHRfc2V0X25vdGlmeShzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTg2Ny0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6ODY4OmludCBib25kX29wdF90cnlzZXRfcnRubChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgdW5zaWduZWQgaW50IG9wdGlvbiwgY2hhciAqYnVmKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04Njkte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTIxMz1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pcF90YXJnZXRfcmVtKHN0cnVjdCBib25kaW5nICpib25kLCBfX2JlMzIgdGFyZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTI1MS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTI1Mjp2b2lkIGJvbmRfb3B0aW9uX2FycF9pcF90YXJnZXRzX2NsZWFyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMjUzLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTEzMTE9c3RhdGljIHZvaWQgc2xhdmVfc2V0X25zX21hZGRycyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSwgYm9vbCBhZGQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMzM1OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfYWRkKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM2LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEzNDEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzNDI6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19kZWwoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEzNDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTM4OD1zdGF0aWMgdm9pZCBfYm9uZF9vcHRpb25zX25zX2lwNl90YXJnZXRfc2V0KHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgc2xvdCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0MDQtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0MDU6dm9pZCBib25kX29wdGlvbl9uc19pcDZfdGFyZ2V0c19jbGVhcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQwNi17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xNDUzPXN0YXRpYyB2b2lkIHNsYXZlX3NldF9uc19tYWRkcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGJvb2wgYWRkKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU0LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxNDU1OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfYWRkKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU2LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxNDU3OnZvaWQgYm9uZF9zbGF2ZV9uc19tYWRkcnNfZGVsKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKSB7fVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU4LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYz0yODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBib25kX2luZm9fc2VxX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkwLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjI5MTp2b2lkIGJvbmRfY3JlYXRlX3Byb2NfZW50cnkoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA2LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjMwNzp2b2lkIGJvbmRfcmVtb3ZlX3Byb2NfZW50cnkoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA4LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYz04NTI9dm9pZCBfX25ldF9leGl0IGJvbmRfZGVzdHJveV9zeXNmcyhzdHJ1Y3QgYm9uZF9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg1OS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jOjg2MDp2b2lkIGJvbmRfcHJlcGFyZV9zeXNmc19ncm91cChzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg2MS17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM9MTMzPWNvbnN0IHN0cnVjdCBzeXNmc19vcHMgc2xhdmVfc3lzZnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzNi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jOjEzNzppbnQgYm9uZF9zeXNmc19zbGF2ZV9hZGQoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzOC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmMtMTQxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTQyOnZvaWQgYm9uZF9zeXNmc19zbGF2ZV9kZWwoc3RydWN0IHNsYXZlICpzbGF2ZSlcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTE0My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjgyCgkJCQkJCQlvdXRwdXQ6IDE0NAoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFdGhlcm5ldCBCb25kaW5nIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgcHJvY2VzcyB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBmdW5jdGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgLiBCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTt2ZSBnb3QgYSBzZWxlY3Rpb24gb2YgY29uZmlndXJhdGlvbnMsICYjMzQ7Qk9ORElORyYjMzQ7LCAmIzM0O05FVF9DT1JFJiMzNDssIGFuZCAmIzM0O0lORVQmIzM0Oy4gVGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCB3aWxsIGVuc3VyZSB0aGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBJIG5lZWQgYXJlIHByZXNlbnQgZm9yIG15IGV2YWx1YXRpb24uIE5vdywgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucywgSSBzZWUgdGhlIGZvbGxvd2luZyBgRm9jdXNTeW1ib2xzYDogJiMzNDtib25kX2Vuc2xhdmUmIzM0OywgJiMzNDtib25kX3JlbGVhc2UmIzM0OywgJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssICYjMzQ7Ym9uZF91cGRhdGVfc2xhdmVfYXJyJiMzNDssIGFuZCAmIzM0O2JvbmRfb3B0X3RyeXNldF9ydG5sJiMzNDsuCgpUaGUgcmF0aW9uYWxlIGhlcmUgaXMgY3J1Y2lhbC4gVGhpcyBwYXRjaCBpcyBhYm91dCBpbnRyb2R1Y2luZyBgV1JJVEVfT05DRSgpYCB3cmFwcGVycyB3aXRoaW4gdGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgZGF0YSByYWNlcyBhbmQgc3RvcmUgdGVhcmluZyB0aGF0IGNhbiBvY2N1ciB3aGVuIHlvdSBoYXZlIGNvbmN1cnJlbnQgcmVhZCBvcGVyYXRpb25zLCB3aGljaCBpcyB2ZXJ5IGNvbW1vbiBpbiBuZXR3b3JraW5nLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IHRoZSB1cGRhdGVzIHRvIGBib25kLSZndDtyZWN2X3Byb2JlYCwgYGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZmAsIGBib25kLSZndDtzbGF2ZV9jbnRgLCBhbmQgYHNsYXZlcy0mZ3Q7Y291bnRgLiBUaGlzIGJvbmRpbmcgZHJpdmVyIGlzIHNvbWV0aGluZyBJJiMzOTttIHZlcnkgZmFtaWxpYXIgd2l0aC4gSXQmIzM5O3MgYSB2aXJ0dWFsIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCB3aGljaCBJIGtub3cgaXMgaGVhdmlseSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIG1lZXRzIGFsbCB0aGUgbmVjZXNzYXJ5IGNyaXRlcmlhOiBpcyBpdCBgV29ydGhGdXp6aW5nYCwgd2hpY2ggSSBzZWUgaXMgdHJ1ZT8gQXJlIHRoZSBgRm9jdXNTeW1ib2xzYCB2YWxpZCBhbmQgbm9uLWhvdHBhdGggZW50cnkgcG9pbnRzIGluIHRoZSBib25kaW5nIGRyaXZlciwgd2hpY2ggc2VlbXMgYWNjdXJhdGU/IEFyZSB0aGUgYEVuYWJsZUNvbmZpZ3NgIGV4YWN0bHkgdGhlIGNvcnJlY3QgZGVwZW5kZW5jaWVzLCB3aXRob3V0IHRoZSBuZWVkIGZvciB0aGUgYENPTkZJR19gIHByZWZpeCwgYWdhaW4sIHllcy4gVGhlIHJlYXNvbmluZyBpcyBhbHNvIGNvbmNpc2UgYW5kIGNsZWFybHkgZXhwbGFpbnMgdGhlIHJhdGlvbmFsZSwgc28gSSBjYW4gc2VlIHRoaXMgY2xlYXJseS4gSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBnby4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7LAogICAgJiMzNDtORVRfQ09SRSYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtib25kX2FsYl9pbml0aWFsaXplJiMzNDssCiAgICAmIzM0O2JvbmRfdXBkYXRlX3NsYXZlX2FyciYjMzQ7LAogICAgJiMzNDtib25kX29wdF90cnlzZXRfcnRubCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgY29uY3VycmVudCBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIG5ldHdvcmsgZHJpdmVyIGJ5IHVzaW5nIFdSSVRFX09OQ0UoKSB3aGVuIG1vZGlmeWluZyByZWN2X3Byb2JlLCBzZW5kX3BlZXJfbm90aWYsIHNsYXZlX2NudCwgYW5kIHNsYXZlIGFycmF5IGNvdW50LiBUaGUgRXRoZXJuZXQgYm9uZGluZyBkcml2ZXIgaXMgc3RhbmRhcmQgdmlydHVhbCBuZXR3b3JraW5nIGxvZ2ljIHJlYWNoYWJsZSBpbiBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9DT1JFJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7Ym9uZF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2JvbmRfYWxiX2luaXRpYWxpemUmIzM0OywKICAgICYjMzQ7Ym9uZF91cGRhdGVfc2xhdmVfYXJyJiMzNDssCiAgICAmIzM0O2JvbmRfb3B0X3RyeXNldF9ydG5sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBjb25jdXJyZW50IGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgbmV0d29yayBkcml2ZXIgYnkgdXNpbmcgV1JJVEVfT05DRSgpIHdoZW4gbW9kaWZ5aW5nIHJlY3ZfcHJvYmUsIHNlbmRfcGVlcl9ub3RpZiwgc2xhdmVfY250LCBhbmQgc2xhdmUgYXJyYXkgY291bnQuIFRoZSBFdGhlcm5ldCBib25kaW5nIGRyaXZlciBpcyBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgbG9naWMgcmVhY2hhYmxlIGluIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA5OjA5OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jCmluZGV4IDgzOWY3NDgyZGMxODIuLmQyZmI2N2E0N2NmOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMKQEAgLTg3NSw3ICYjNDM7ODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIAlzcGluX3VubG9ja19iaCgmYW1wO2JvbmQtJmd0O21vZGVfbG9jayk7CiAKIAkvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi8KLQlib25kLSZndDtyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2OwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIHJsYl9hcnBfcmVjdik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IGVmOWViMGM1M2M2NjEuLjk0N2Q5MmE2NjliNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTI0NSw3ICYjNDM7MTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSkKIAl9CiAKIAlpZiAobm90aWZpZWQgfHwgZm9yY2UpCi0JCWJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZi0tOwomIzQzOwkJV1JJVEVfT05DRShib25kLSZndDtzZW5kX3BlZXJfbm90aWYsIGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiAtIDEpOwogfQogCiAvKioKQEAgLTIyODQsNyAmIzQzOzIyODQsNyBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldiwKIAkJfQogCX0KIAotCWJvbmQtJmd0O3NsYXZlX2NudCYjNDM7JiM0Mzs7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2xhdmVfY250LCBib25kLSZndDtzbGF2ZV9jbnQgJiM0MzsgMSk7CiAJbmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtJmd0O2RldiwgdHJ1ZSk7CiAJYm9uZF9zZXRfY2Fycmllcihib25kKTsKIApAQCAtMjUzMyw3ICYjNDM7MjUzMyw3IEBAIHN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldiwKIAogCXVuYmxvY2tfbmV0cG9sbF90eCgpOwogCXN5bmNocm9uaXplX3JjdSgpOwotCWJvbmQtJmd0O3NsYXZlX2NudC0tOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3NsYXZlX2NudCwgYm9uZC0mZ3Q7c2xhdmVfY250IC0gMSk7CiAKIAlpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkgewogCQljYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtJmd0O2Rldik7CkBAIC00Mzg1LDEzICYjNDM7NDM4NSwxMyBAQCBzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiAKIAlpZiAoYm9uZC0mZ3Q7cGFyYW1zLmFycF9pbnRlcnZhbCkgeyAgLyogYXJwIGludGVydmFsLCBpbiBtaWxsaXNlY29uZHMuICovCiAJCXF1ZXVlX2RlbGF5ZWRfd29yayhib25kLSZndDt3cSwgJmFtcDtib25kLSZndDthcnBfd29yaywgMCk7Ci0JCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTsKJiM0MzsJCVdSSVRFX09OQ0UoYm9uZC0mZ3Q7cmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpOwogCX0KIAogCWlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkgewogCQlxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC0mZ3Q7d3EsICZhbXA7Ym9uZC0mZ3Q7YWRfd29yaywgMCk7CiAJCS8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgTEFDUERVcyAqLwotCQlib25kLSZndDtyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7CiYjNDM7CQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfM2FkX2xhY3BkdV9yZWN2KTsKIAkJYm9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLCAxKTsKIAogCQlib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKQpAQCAtNDQxMyw3ICYjNDM7NDQxMyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiAJc3RydWN0IHNsYXZlICpzbGF2ZTsKIAogCWJvbmRfd29ya19jYW5jZWxfYWxsKGJvbmQpOwotCWJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZiA9IDA7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7c2VuZF9wZWVyX25vdGlmLCAwKTsKIAlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIE5VTEwpOwogCiAJLyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqLwpAQCAtNTExOCw3ICYjNDM7NTExOCw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLAogCQlpZiAoc2tpcHNsYXZlID09IHNsYXZlcy0mZ3Q7YXJyW2lkeF0pIHsKIAkJCXNsYXZlcy0mZ3Q7YXJyW2lkeF0gPQogCQkJCXNsYXZlcy0mZ3Q7YXJyW3NsYXZlcy0mZ3Q7Y291bnQgLSAxXTsKLQkJCXNsYXZlcy0mZ3Q7Y291bnQtLTsKJiM0MzsJCQlXUklURV9PTkNFKHNsYXZlcy0mZ3Q7Y291bnQsIHNsYXZlcy0mZ3Q7Y291bnQgLSAxKTsKIAkJCWJyZWFrOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCkBAIC0xMTQ3LDExICYjNDM7MTE0NywxMSBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJCSAqLwogCQlpZiAoIW5ld3ZhbC0mZ3Q7dmFsdWUpIHsKIAkJCWlmIChib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlKQotCQkJCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBOVUxMOwomIzQzOwkJCQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIE5VTEwpOwogCQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7Ym9uZC0mZ3Q7YXJwX3dvcmspOwogCQl9IGVsc2UgewogCQkJLyogYXJwX3ZhbGlkYXRlIGNhbiBiZSBzZXQgb25seSBpbiBhY3RpdmUtYmFja3VwIG1vZGUgKi8KLQkJCWJvbmQtJmd0O3JlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTsKJiM0MzsJCQlXUklURV9PTkNFKGJvbmQtJmd0O3JlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTsKIAkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2JvbmQtJmd0O21paV93b3JrKTsKIAkJCXF1ZXVlX2RlbGF5ZWRfd29yayhib25kLSZndDt3cSwgJmFtcDtib25kLSZndDthcnBfd29yaywgMCk7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTAKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEZ1enppbmcgQXNzZXNzbWVudCBmb3IgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBib25kaW5nIGRyaXZlciBmaWxlcyDigJMgYGJvbmRfYWxiLmNgLCBgYm9uZF9tYWluLmNgLCBhbmQgYGJvbmRfb3B0aW9ucy5jYC4gTG9va3MgbGlrZSBpdCYjMzk7cyBjb252ZXJ0aW5nIHNvbWUgcGxhaW4gYXNzaWdubWVudHMgdG8gYFdSSVRFX09OQ0UoLi4uKWAgY2FsbHMgZm9yIGZpZWxkcyBsaWtlIGBib25kLSZndDtyZWN2X3Byb2JlYCwgYGJvbmQtJmd0O3NlbmRfcGVlcl9ub3RpZmAsIGBib25kLSZndDtzbGF2ZV9jbnRgLCBhbmQgYHNsYXZlcy0mZ3Q7Y291bnRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBjb25jdXJyZW5jeSDigJMgZGF0YSByYWNlcywgbGlrZWx5IGZvciBLQ1NBTiBwdXJwb3NlcyBvciB0byB0aWdodGVuIHVwIGNvbXBpbGVyIGJlaGF2aW9yIHdpdGggbG9ja2xlc3MgcmVhZGVycy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHJ1biB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IGlzIHRoaXMgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEFyZSB3ZSB0b3VjaGluZyBrZXJuZWwgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB3aGVyZSBwYWRkaW5nIG9yIGZpZWxkcyBtaWdodCBub3QgYmUgaW5pdGlhbGl6ZWQ/IEFueSBuZXcgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGFsbG9jYXRpb25zIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1iZXJzPyBBbnkgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/CgpOb3BlLCBpdCBkb2VzbiYjMzk7dCBzZWVtIGxpa2UgYW55IG9mIHRob3NlIHBvdGVudGlhbCBpc3N1ZXMgYXJlIHByZXNlbnQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggKmV4aXN0aW5nKiBmaWVsZHMgd2l0aGluIGBzdHJ1Y3QgYm9uZGluZ2AgYW5kIGBzdHJ1Y3QgYm9uZF91cF9zbGF2ZWAuIFRoZSBhc3NpZ25lZCB2YWx1ZXMgYXJlIGVpdGhlciBjb25zdGFudHMgKGZ1bmN0aW9uIHBvaW50ZXJzIG9yIHplcm8pIG9yIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMgb2YgZXhpc3RpbmcgdmFsdWVzLiBObyBmcmVzaCBtZW1vcnkgYWxsb2NhdGlvbiBvciBwb3RlbnRpYWwgdXNlLWJlZm9yZS1pbml0aWFsaXphdGlvbiBzaXR1YXRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGNvbnNpZGVyIHRoZSBhcHBsaWNhYmlsaXR5IG9mIEtNU0FOIHZlcnN1cyBLQVNBTi9LQ1NBTi4gVGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBjb25jdXJyZW5jeSBmaXhlcyBmb2N1c2VkIG9uIHRoZSBib25kaW5nIGRyaXZlciYjMzk7cyBkYXRhIHN0cnVjdHVyZXMuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzICppbnRyb2R1Y2VkKiBvciAqZXhwb3NlZCogYnkgdGhpcyBwYXRjaC4gS0FTQU4gYW5kIEtDU0FOIGFyZSByZWxldmFudCBiZWNhdXNlIHRoaXMgaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgZGF0YSByYWNlcyBhbmQgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgZGVhbHMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeSAqdXNlKiBhbmQgdGhhdCYjMzk7cyBub3Qgd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdCBoZXJlLgoKVGhlcmVmb3JlLCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFRpbWUgdG8gZmluYWxpemUgdGhlIHJlc3VsdHMgYW5kIGdldCB0aGUgb3V0cHV0IHJlYWR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVx1MDAzZWNvdW50YCBpbiB0aGUgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCBkYXRhIHJhY2VzIGFuZCBjb21waWxlciByZW9yZGVyaW5nIHdpdGggY29uY3VycmVudCByZWFkZXJzLiBcblxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHBsYWluIHdyaXRlcyB3aXRoIFdSSVRFX09OQ0UgYW5ub3RhdGlvbnMgb24gc3RydWN0IGJvbmRpbmcgZmllbGRzIChgcmVjdl9wcm9iZWAsIGBzZW5kX3BlZXJfbm90aWZgLCBgc2xhdmVfY250YCkgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxuXG5UaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvIG5vdCBhbHRlciBidWZmZXIgYm91bmRzIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBzZW50IHRvIHVzZXJzcGFjZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeS4gU2luY2UgdGhlIHBhdGNoIHN0cmljdGx5IGFkZHJlc3NlcyBjb25jdXJyZW5jeS9kYXRhIHJhY2VzIHdpdGhvdXQgZXhwb3Npbmcgb3IgdG91Y2hpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOTowOTo1My4wMTE0MDUzMzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0MzYwNDY5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiLFxuICAgIFwiTkVUX0NPUkVcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kX2Vuc2xhdmVcIixcbiAgICBcImJvbmRfcmVsZWFzZVwiLFxuICAgIFwiYm9uZF9hbGJfaW5pdGlhbGl6ZVwiLFxuICAgIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsXG4gICAgXCJib25kX29wdF90cnlzZXRfcnRubFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgcGxhaW4gd3JpdGVzIHdpdGggV1JJVEVfT05DRSBhbm5vdGF0aW9ucyBvbiBzdHJ1Y3QgYm9uZGluZyBmaWVsZHMgKGByZWN2X3Byb2JlYCwgYHNlbmRfcGVlcl9ub3RpZmAsIGBzbGF2ZV9jbnRgKSBhbmQgYHNsYXZlcy1cXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxcblxcblRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGFsdGVyIGJ1ZmZlciBib3VuZHMgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LiBTaW5jZSB0aGUgcGF0Y2ggc3RyaWN0bHkgYWRkcmVzc2VzIGNvbmN1cnJlbmN5L2RhdGEgcmFjZXMgd2l0aG91dCBleHBvc2luZyBvciB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MDk6NTMuMDExNDA5ODA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc3ODY0NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcXG5pbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xcbkBAIC04NzUsNyArODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmJvbmQtXFx1MDAzZW1vZGVfbG9jayk7XFxuIFxcbiBcXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cXG4tXFx0Ym9uZC1cXHUwMDNlcmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjtcXG4rXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTEyNDUsNyArMTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSlcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKG5vdGlmaWVkIHx8IGZvcmNlKVxcbi1cXHRcXHRib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYtLTtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYsIGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtMjI4NCw3ICsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0Ym9uZC1cXHUwMDNlc2xhdmVfY250Kys7XFxuK1xcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlc2xhdmVfY250LCBib25kLVxcdTAwM2VzbGF2ZV9jbnQgKyAxKTtcXG4gXFx0bmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtXFx1MDAzZWRldiwgdHJ1ZSk7XFxuIFxcdGJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7XFxuIFxcbkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuIFxcbiBcXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcXG4gXFx0c3luY2hyb25pemVfcmN1KCk7XFxuLVxcdGJvbmQtXFx1MDAzZXNsYXZlX2NudC0tO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXNsYXZlX2NudCwgYm9uZC1cXHUwMDNlc2xhdmVfY250IC0gMSk7XFxuIFxcbiBcXHRpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkge1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtXFx1MDAzZWRldik7XFxuQEAgLTQzODUsMTMgKzQzODUsMTMgQEAgc3RhdGljIGludCBib25kX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbiBcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqL1xcbiBcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhcnBfd29yaywgMCk7XFxuLVxcdFxcdGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBib25kX3Jjdl92YWxpZGF0ZSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xcbiBcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhZF93b3JrLCAwKTtcXG4gXFx0XFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXFxuLVxcdFxcdGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUgPSBib25kXzNhZF9sYWNwZHVfcmVjdjtcXG4rXFx0XFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XFxuIFxcdFxcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XFxuIFxcbiBcXHRcXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxcbkBAIC00NDEzLDcgKzQ0MTMsNyBAQCBzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbiBcXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xcbiBcXG4gXFx0Ym9uZF93b3JrX2NhbmNlbF9hbGwoYm9uZCk7XFxuLVxcdGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZiA9IDA7XFxuK1xcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlc2VuZF9wZWVyX25vdGlmLCAwKTtcXG4gXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcXG4gXFxuIFxcdC8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi9cXG5AQCAtNTExOCw3ICs1MTE4LDcgQEAgc3RhdGljIHZvaWQgYm9uZF9za2lwX3NsYXZlKHN0cnVjdCBib25kX3VwX3NsYXZlICpzbGF2ZXMsXFxuIFxcdFxcdGlmIChza2lwc2xhdmUgPT0gc2xhdmVzLVxcdTAwM2VhcnJbaWR4XSkge1xcbiBcXHRcXHRcXHRzbGF2ZXMtXFx1MDAzZWFycltpZHhdID1cXG4gXFx0XFx0XFx0XFx0c2xhdmVzLVxcdTAwM2VhcnJbc2xhdmVzLVxcdTAwM2Vjb3VudCAtIDFdO1xcbi1cXHRcXHRcXHRzbGF2ZXMtXFx1MDAzZWNvdW50LS07XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2xhdmVzLVxcdTAwM2Vjb3VudCwgc2xhdmVzLVxcdTAwM2Vjb3VudCAtIDEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbkBAIC0xMTQ3LDExICsxMTQ3LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghbmV3dmFsLVxcdTAwM2V2YWx1ZSkge1xcbiBcXHRcXHRcXHRpZiAoYm9uZC1cXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcXG4tXFx0XFx0XFx0XFx0Ym9uZC1cXHUwMDNlcmVjdl9wcm9iZSA9IE5VTEw7XFxuK1xcdFxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XFxuIFxcdFxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmspO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHQvKiBhcnBfdmFsaWRhdGUgY2FuIGJlIHNldCBvbmx5IGluIGFjdGl2ZS1iYWNrdXAgbW9kZSAqL1xcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbiBcXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmJvbmQtXFx1MDAzZW1paV93b3JrKTtcXG4gXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXFx1MDAzZXdxLCBcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmssIDApO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjA5OjU0LjQ5MDA2NTQyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODk3ODU1NzU3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiLFxuICAgIFwiTkVUX0NPUkVcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kX2Vuc2xhdmVcIixcbiAgICBcImJvbmRfcmVsZWFzZVwiLFxuICAgIFwiYm9uZF9hbGJfaW5pdGlhbGl6ZVwiLFxuICAgIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsXG4gICAgXCJib25kX29wdF90cnlzZXRfcnRubFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBjb25jdXJyZW50IGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgbmV0d29yayBkcml2ZXIgYnkgdXNpbmcgV1JJVEVfT05DRSgpIHdoZW4gbW9kaWZ5aW5nIHJlY3ZfcHJvYmUsIHNlbmRfcGVlcl9ub3RpZiwgc2xhdmVfY250LCBhbmQgc2xhdmUgYXJyYXkgY291bnQuIFRoZSBFdGhlcm5ldCBib25kaW5nIGRyaXZlciBpcyBzdGFuZGFyZCB2aXJ0dWFsIG5ldHdvcmtpbmcgbG9naWMgcmVhY2hhYmxlIGluIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIyMjBiODEyN2JmNGQ4YTc1OTFiOTRhNWZjYmVjMTZkYTY5NWMyYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOTowOTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuaW5kZXggODM5Zjc0ODJkYzE4Mi4uZDJmYjY3YTQ3Y2Y5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG5AQCAtODc1LDcgKzg3NSw3IEBAIHN0YXRpYyBpbnQgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZib25kLVx1MDAzZW1vZGVfbG9jayk7XG4gXG4gXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cbi1cdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IHJsYl9hcnBfcmVjdjtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBybGJfYXJwX3JlY3YpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCBlZjllYjBjNTNjNjYxLi45NDdkOTJhNjY5YjY3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTEyNDUsNyArMTI0NSw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfcGVlcl9ub3RpZnlfbWF5X2V2ZW50cyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgYm9vbCBmb3JjZSlcbiBcdH1cbiBcbiBcdGlmIChub3RpZmllZCB8fCBmb3JjZSlcbi1cdFx0Ym9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYtLTtcbitcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiwgYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYgLSAxKTtcbiB9XG4gXG4gLyoqXG5AQCAtMjI4NCw3ICsyMjg0LDcgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250Kys7XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCArIDEpO1xuIFx0bmV0ZGV2X2NvbXB1dGVfbWFzdGVyX3VwcGVyX2ZlYXR1cmVzKGJvbmQtXHUwMDNlZGV2LCB0cnVlKTtcbiBcdGJvbmRfc2V0X2NhcnJpZXIoYm9uZCk7XG4gXG5AQCAtMjUzMyw3ICsyNTMzLDcgQEAgc3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuIFxuIFx0dW5ibG9ja19uZXRwb2xsX3R4KCk7XG4gXHRzeW5jaHJvbml6ZV9yY3UoKTtcbi1cdGJvbmQtXHUwMDNlc2xhdmVfY250LS07XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2xhdmVfY250LCBib25kLVx1MDAzZXNsYXZlX2NudCAtIDEpO1xuIFxuIFx0aWYgKCFib25kX2hhc19zbGF2ZXMoYm9uZCkpIHtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9DSEFOR0VBRERSLCBib25kLVx1MDAzZWRldik7XG5AQCAtNDM4NSwxMyArNDM4NSwxMyBAQCBzdGF0aWMgaW50IGJvbmRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXG4gXHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSB7ICAvKiBhcnAgaW50ZXJ2YWwsIGluIG1pbGxpc2Vjb25kcy4gKi9cbiBcdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuLVx0XHRib25kLVx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcbitcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbiBcdH1cbiBcbiBcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuIFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhZF93b3JrLCAwKTtcbiBcdFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXG4tXHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IGJvbmRfM2FkX2xhY3BkdV9yZWN2O1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xuIFx0XHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xuIFxuIFx0XHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxuQEAgLTQ0MTMsNyArNDQxMyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xuIFxuIFx0Ym9uZF93b3JrX2NhbmNlbF9hbGwoYm9uZCk7XG4tXHRib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiA9IDA7XG4rXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCAwKTtcbiBcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbiBcbiBcdC8qIFdhaXQgZm9yIGFueSBpbi1mbGlnaHQgUlggaGFuZGxlcnMgKi9cbkBAIC01MTE4LDcgKzUxMTgsNyBAQCBzdGF0aWMgdm9pZCBib25kX3NraXBfc2xhdmUoc3RydWN0IGJvbmRfdXBfc2xhdmUgKnNsYXZlcyxcbiBcdFx0aWYgKHNraXBzbGF2ZSA9PSBzbGF2ZXMtXHUwMDNlYXJyW2lkeF0pIHtcbiBcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW2lkeF0gPVxuIFx0XHRcdFx0c2xhdmVzLVx1MDAzZWFycltzbGF2ZXMtXHUwMDNlY291bnQgLSAxXTtcbi1cdFx0XHRzbGF2ZXMtXHUwMDNlY291bnQtLTtcbitcdFx0XHRXUklURV9PTkNFKHNsYXZlcy1cdTAwM2Vjb3VudCwgc2xhdmVzLVx1MDAzZWNvdW50IC0gMSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggMzZiOGQ4OTM4N2VlNS4uOWVmYWRlZmY2YTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmNcbkBAIC0xMTQ3LDExICsxMTQ3LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0ICovXG4gXHRcdGlmICghbmV3dmFsLVx1MDAzZXZhbHVlKSB7XG4gXHRcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSlcbi1cdFx0XHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IE5VTEw7XG4rXHRcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XG4gXHRcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmspO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXG4tXHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF9yY3ZfdmFsaWRhdGU7XG4rXHRcdFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIGJvbmRfcmN2X3ZhbGlkYXRlKTtcbiBcdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VtaWlfd29yayk7XG4gXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKGJvbmQtXHUwMDNld3EsIFx1MDAyNmJvbmQtXHUwMDNlYXJwX3dvcmssIDApO1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOTowOTo1NC40OTAwNjc0NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MTAwNjM3MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoOiBBIENvbmN1cnJlbmN5IEFubm90YXRpb24/KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgYWNyb3NzIGBib25kX2FsYi5jYCwgYGJvbmRfbWFpbi5jYCwgYW5kIGBib25kX29wdGlvbnMuY2Agd2l0aGluIHRoZSBib25kaW5nIGRyaXZlci4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkncmUgY29uc2lzdGVudGx5IHJlcGxhY2luZyBzdHJhaWdodGZvcndhcmQgYXNzaWdubWVudHMgYW5kIGluY3JlbWVudHMvZGVjcmVtZW50cyAobGlrZSBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlID0gLi4uYCwgZXRjLikgd2l0aCBgV1JJVEVfT05DRSguLi4pYC4gSG1tLCB0aGlzIHNtZWxscyBsaWtlIGEgZGF0YSByYWNlIGZpeC4gU3BlY2lmaWNhbGx5LCBLQ1NBTiBpcyBwcm9iYWJseSBiZWluZyBhZGRyZXNzZWQgb3IsIGF0IGxlYXN0LCBjb21waWxlciByZW9yZGVyaW5nIG9yIHN0b3JlIHRlYXJpbmcgaXMgYmVpbmcgcHJldmVudGVkLlxuXG5CdXQsIGFuZCB0aGlzIGlzIGNydWNpYWwsIGRvZXMgdGhpcyBjaGFuZ2UgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGxvZ2ljPyBJcyB0aGlzIGEgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5ub3RhdGlvbiwgbWVyZWx5IGFkZGluZyBgV1JJVEVfT05DRWAgdG8gaW5kaWNhdGUgYSBjb25jdXJyZW50IHJlYWQ/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjYXJlZnVsbHkuIExldCdzIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IG1lZXQgYW55IG9mIHRoZSBcIm5vdCB3b3J0aCBmdXp6aW5nXCIgY3JpdGVyaWEsIHdoaWNoIGluY2x1ZGVzIGNoYW5nZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzLCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIGNvZGUgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBvciB0ZWFyZG93biBjYWxsYmFja3MuIEkgKnRoaW5rKiB0aGF0IGRhdGEgcmFjZSBmaXhlcywgYW5kIGFubm90YXRpb25zIHdpdGggYFdSSVRFX09OQ0VgL2BSRUFEX09OQ0VgLCBhcmUgcmVsZXZhbnQgdG8gZnV6emluZy5cblxuSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5ICppcyogd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2UgZG91Ymx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgZ2l0IGxvZy4gTWF5YmUgdGhlcmUncyBhIG1vcmUgZGV0YWlsZWQgZXhwbGFuYXRpb24gdGhlcmUuIEknbGwgZmlyZSB1cCBhIHRvb2wgb3IganVzdCByZWFkIHRocm91Z2ggdGhlIGhpc3RvcnkgYW5kIGxvb2sgZm9yIGEgY29tbWl0IGRlc2NyaXB0aW9uLiBJJ20gbGVhbmluZyB0b3dhcmRzIGZ1enppbmcgaXQgaWYgaXQncyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbm5vdGF0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDAuNTkwNzA2ODcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTIxNzI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJXUklURV9PTkNFXFxcXChib25kLVxcdTAwM2VyZWN2X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTg1NT1zdGF0aWMgaW50IHJsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTg3Ny1cXHQvKiByZWdpc3RlciB0byByZWNlaXZlIEFSUHMgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6ODc4OlxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgcmxiX2FycF9yZWN2KTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtODc5LVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzQ3PXN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4Ny1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cXHUwMDNld3EsIFxcdTAwMjZib25kLVxcdTAwM2VhcnBfd29yaywgMCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzg4OlxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzOTMtXFx0XFx0LyogcmVnaXN0ZXIgdG8gcmVjZWl2ZSBMQUNQRFVzICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzk0OlxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF8zYWRfbGFjcGR1X3JlY3YpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM5NS1cXHRcXHRib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKGJvbmQsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00NDEwPXN0YXRpYyBpbnQgYm9uZF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ0MTYtXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxNzpcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTEyOD1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExNDktXFx0XFx0XFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTUwOlxcdFxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUxLVxcdFxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Ym9uZC1cXHUwMDNlYXJwX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMTUzLVxcdFxcdFxcdC8qIGFycF92YWxpZGF0ZSBjYW4gYmUgc2V0IG9ubHkgaW4gYWN0aXZlLWJhY2t1cCBtb2RlICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTU0OlxcdFxcdFxcdFdSSVRFX09OQ0UoYm9uZC1cXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTE1NS1cXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmJvbmQtXFx1MDAzZW1paV93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDAuNzE1OTMzMjg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjExMjk2NjMwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYGJvbmRfbWFpbi5jYCBhbmQgTWVtb3J5IE9yZGVyaW5nKipcblxuT2theSwgc28gSSd2ZSBhbHJlYWR5IGdvdCBhIGhhbmRsZSBvbiB0aGUgYmFzaWMgZmxvdyBvZiBgYm9uZF9tYWluLmNgLCBhbmQgSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIGNvbmN1cnJlbmN5LiBOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGhvdyB0aGV5J3JlICphY3R1YWxseSogdXNpbmcgdGhvc2UgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBtYWNyb3MuIEl0J3Mgbm90IGVub3VnaCB0byBrbm93IHRoZXkncmUgKnRoZXJlKjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIGNyaXRpY2FsIHRvIHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmcm9tIHJlb3JkZXJpbmcgbWVtb3J5IGFjY2Vzc2VzIGFuZCBpbnRyb2R1Y2luZyBkYXRhIHJhY2VzLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLiBBcmUgdGhleSBiZWluZyB1c2VkIGFyb3VuZCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBmbGFncywgb3IgY291bnRlcnMgdGhhdCBuZWVkIGF0b21pY2l0eT8gQW5kIGFyZSB0aGV5IGJlaW5nIHVzZWQgKmNvbnNpc3RlbnRseSo/IEEgc2luZ2xlIG1pc3NlZCBgUkVBRF9PTkNFYCBvciBgV1JJVEVfT05DRWAgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncyB0aGF0IGFyZSBhIG5pZ2h0bWFyZSB0byB0cmFjayBkb3duLCBzbyBJIG5lZWQgdG8gc2VlIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2ZWxvcGVycyBhcmUgZ3VhcmFudGVlaW5nIG1lbW9yeSBvcmRlcmluZyB3aXRoaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2FnZSBpcyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBwb3NzaWJsZSBpbXByb3ZlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDowNi44Mjg5MDE4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU3MTg2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXChib25kLVxcdTAwM2VyZWN2X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xNjAzPXN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IGJvbmRfaGFuZGxlX2ZyYW1lKHN0cnVjdCBza19idWZmICoqcHNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTYyMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE2MjE6XFx0cmVjdl9wcm9iZSA9IFJFQURfT05DRShib25kLVxcdTAwM2VyZWN2X3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE2MjItXFx0aWYgKHJlY3ZfcHJvYmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MDYuOTE0NjI0OTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM5OTEzMDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2UgY3J1Y2lhbCB2YXJpYWJsZXMsIGBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZmAgYW5kIGBib25kLVx1MDAzZXNsYXZlX2NudGAsIGFuZCBwcm9iYWJseSBhIGZldyBvdGhlcnMgd2hpbGUgSSdtIGF0IGl0LiBJJ20gZ29pbmcgdG8gdXNlIGBSRUFEX09OQ0UoKWAgdG8gZW5zdXJlIEknbSBnZXR0aW5nIHRoZSBtb3N0IHVwLXRvLWRhdGUgYW5kIGNvbnNpc3RlbnQgdmFsdWVzLCB3aGljaCBpcyBlc3BlY2lhbGx5IGNyaXRpY2FsIGluIHRoaXMgY29uY3VycmVudCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHByb2dyYW0gaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQsIGJlZm9yZSBJIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMC4zMTM3NTgyMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NjY0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXChib25kLVxcdTAwM2VzbGF2ZV9jbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ5NjA9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0X3JvdW5kcm9iaW5fc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00OTg5LW5vbl9pZ21wOlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDk5MDpcXHRzbGF2ZV9jbnQgPSBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlc2xhdmVfY250KTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ5OTEtXFx0aWYgKGxpa2VseShzbGF2ZV9jbnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ5OTg9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF9yb3VuZHJvYmluX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTAzMC1ub25faWdtcDpcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUwMzE6XFx0c2xhdmVfY250ID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNsYXZlX2NudCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDMyLVxcdGlmIChsaWtlbHkoc2xhdmVfY250KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMC40MTAzMjg5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTU2NDIwODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipDaGVja2luZyBDcml0aWNhbCBTZW5kIE5vdGlmaWNhdGlvbiBhbmQgU2xhdmUgQ291bnQgVmFsdWVzKipcblxuQWxyaWdodCwgYmVmb3JlIHdlIHByb2NlZWQgZnVydGhlciwgaXQncyBjcml0aWNhbCB0byBlbnN1cmUgd2UgYXJlIGNvcnJlY3RseSB1bmRlcnN0YW5kaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzeXN0ZW0sIHNvIEknbSBkb3VibGUtY2hlY2tpbmcgdHdvIGNydWNpYWwgdmFyaWFibGVzOiBgUkVBRF9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmKWAgYW5kIGBSRUFEX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50KWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHRoaXMgY29udGV4dC4gVGhlIGZpcnN0LCBgYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWZgLCBzaWduYWxzIHdoZXRoZXIgYSBub3RpZmljYXRpb24gbmVlZHMgdG8gYmUgc2VudCB0byBhIHBlZXIgcmVnYXJkaW5nIHRoaXMgYm9uZC4gVGhlIGxhdHRlciwgYHNsYXZlcy1cdTAwM2Vjb3VudGAsIHRlbGxzIHVzIGhvdyBtYW55IHNsYXZlcyBhcmUgYWN0aXZlIHdpdGhpbiBhIGdpdmVuIGNvbnRleHQuIEknbSB1c2luZyBgUkVBRF9PTkNFYCBoZXJlIGJlY2F1c2UgSSBuZWVkIHRvIGd1YXJhbnRlZSB0aGF0IEknbSBzZWVpbmcgYSBjb25zaXN0ZW50IGFuZCBjdXJyZW50IHNuYXBzaG90IG9mIHRoZXNlIHZhcmlhYmxlcy4gSW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50LCB0aGlzIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIHRvIGF2b2lkIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVhZGluZyBzdGFsZSBkYXRhIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbWlzYmVoYXZlIGFuZCBwb3RlbnRpYWxseSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgb3BlcmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYm90aCBvZiB0aGVzZSByZWFkcy4gT25jZSBJIGhhdmUgdGhlIHZhbHVlcywgSSBjYW4gc2FmZWx5IHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoxMi45NjY3NTIxMDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDA0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJFQURfT05DRVxcXFwoLipzZW5kX3BlZXJfbm90aWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTE1OlxcdGlmIChjb21taXQgfHwgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZikpIHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTYtXFx0XFx0LyogUmFjZSBhdm9pZGFuY2Ugd2l0aCBib25kX2Nsb3NlIGNhbmNlbCBvZiB3b3JrcXVldWUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9Mzg0Mz1zdGF0aWMgdm9pZCBib25kX2FjdGl2ZWJhY2t1cF9hcnBfbW9uKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODcyLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6Mzg3MzpcXHRpZiAoUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXNlbmRfcGVlcl9ub3RpZikgfHwgc2hvdWxkX25vdGlmeV9ydG5sKSB7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zODc0LVxcdFxcdGlmICghcnRubF90cnlsb2NrKCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6MTMuMDMxNzYzMDY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2Mjc4OTA5NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIENvbmN1cnJlbmN5IElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIHdlIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHBhcnRpY3VsYXIgcHJvYmxlbSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwsIGVzcGVjaWFsbHkgYXJvdW5kIGNvbmN1cnJlbmN5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkb3VibGUtY2hlY2sgdGhhdCBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIHdlJ3JlIHRyYWNraW5nIHRoZSBudW1iZXIgb2Ygc2xhdmVzLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYFJFQURfT05DRShzbGF2ZXMtXHUwMDNlY291bnQpYCBvciB3aGF0ZXZlciBlcXVpdmFsZW50IG1lY2hhbmlzbSB3ZSdyZSB1c2luZyB0byBnZXQgdGhhdCBjb3VudC4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCByZWFkIGlzIGF0b21pYyBvciBwcm9wZXJseSBwcm90ZWN0ZWQsIG90aGVyd2lzZSwgd2UncmUgYnVpbGRpbmcgb24gc2hha3kgZ3JvdW5kLiBJdCdzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBhIHJlYWxseSBpbXBvcnRhbnQgb25lLiBJ4oCZbSBjb25jZXJuZWQgYWJvdXQgYSByYWNlIGNvbmRpdGlvbi4gSXTigJlzIGJldHRlciB0byBiZSBzdXJlIG5vdyB0aGFuIHRvIHNwZW5kIGhvdXJzIGNoYXNpbmcgYSBnaG9zdCBsYXRlci4gTGV04oCZcyBtYWtlIHN1cmUgdGhpcyByZWFkIGlzIHJvY2sgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzOTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDoyOS4zMTA2NzQ3MjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTkwMTAzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUkVBRF9PTkNFXFxcXCguKmNvdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzNzA9c3RydWN0IHNsYXZlICpib25kX3htaXRfdGxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzk3LVxcdFxcdFxcdFxcdHNsYXZlcyA9IHJjdV9kZXJlZmVyZW5jZShib25kLVxcdTAwM2V1c2FibGVfc2xhdmVzKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTM5ODpcXHRcXHRcXHRcXHRjb3VudCA9IHNsYXZlcyA/IFJFQURfT05DRShzbGF2ZXMtXFx1MDAzZWNvdW50KSA6IDA7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzOTktXFx0XFx0XFx0XFx0aWYgKGxpa2VseShjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTQxOD1zdHJ1Y3Qgc2xhdmUgKmJvbmRfeG1pdF9hbGJfc2xhdmVfZ2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1MTMtXFx0XFx0XFx0c2xhdmVzID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZXVzYWJsZV9zbGF2ZXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTE0OlxcdFxcdFxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUxNS1cXHRcXHRcXHRpZiAobGlrZWx5KGNvdW50KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTE3Nj1zdGF0aWMgYm9vbCBib25kX3Nob3VsZF9ub3RpZnlfcGVlcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTExOTItXFx0XFx0dXNhYmxlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMTkzOlxcdFxcdGlmICghdXNhYmxlIHx8ICFSRUFEX09OQ0UodXNhYmxlLVxcdTAwM2Vjb3VudCkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMTk0LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTIzMD1zdGF0aWMgc3RydWN0IHNsYXZlICpib25kX3htaXRfM2FkX3hvcl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMzgtXFx0aGFzaCA9IGJvbmRfeG1pdF9oYXNoKGJvbmQsIHNrYik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjM5OlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNDAtXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUyNDc9c3RhdGljIHN0cnVjdCBzbGF2ZSAqYm9uZF94ZHBfeG1pdF8zYWRfeG9yX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTI1NS1cXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjU2OlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyNTctXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUzMTY9c3RhdGljIG5ldGRldl90eF90IGJvbmRfeG1pdF9icm9hZGNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTMzMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUzMzE6XFx0c2xhdmVzX2NvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUzMzItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNsYXZlc19jb3VudDsgaSsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU1MDM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpfX2JvbmRfc2tfZ2V0X2xvd2VyX2RldihzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTUxMS1cXHRzbGF2ZXMgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNldXNhYmxlX3NsYXZlcyk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1NTEyOlxcdGNvdW50ID0gc2xhdmVzID8gUkVBRF9PTkNFKHNsYXZlcy1cXHUwMDNlY291bnQpIDogMDtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU1MTMtXFx0aWYgKHVubGlrZWx5KCFjb3VudCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9MTk4PXN0YXRpYyB2b2lkIGJvbmRfaW5mb19zaG93X3NsYXZlKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTIzMy1cXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIkFjdG9yIENodXJuZWQgQ291bnQ6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYzoyMzQ6XFx0XFx0XFx0XFx0ICAgUkVBRF9PTkNFKHBvcnQtXFx1MDAzZWNodXJuX2FjdG9yX2NvdW50KSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTIzNS1cXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlBhcnRuZXIgQ2h1cm5lZCBDb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jOjIzNjpcXHRcXHRcXHRcXHQgICBSRUFEX09OQ0UocG9ydC1cXHUwMDNlY2h1cm5fcGFydG5lcl9jb3VudCkpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yMzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEwOjMwLjYwOTY4OTYxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzMwMjIwODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogQm9uZGluZyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYFdSSVRFX09OQ0VgIGNhbGxzLCBtaXJyb3JpbmcgZXhpc3RpbmcgYFJFQURfT05DRWAgdXNhZ2UgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBydW4gdGhyb3VnaCB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIHF1YWxpZmllcyBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBkb2VzIHRoaXMgY29uc3RpdHV0ZSBhIG1vZGlmaWNhdGlvbiB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMvZHJpdmVycz8gV2FpdCwgdGhlIGJvbmRpbmcgZHJpdmVyIGlzIGEgc29mdHdhcmUgdmlydHVhbCBuZXR3b3JrIGRyaXZlciwgYW5kIGlzIGNvbW1vbmx5IGZ1enplZC5cblxuTGV0J3MgY2FyZWZ1bGx5IHJlLXJlYWQgdGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYSwgZm9jdXNpbmcgb24gdGhlIGV4Y2x1c2lvbnM6IERvY3VtZW50YXRpb24vS2NvbmZpZyBjaGFuZ2VzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG5vbi1mdW5jdGlvbmFsIG51bWVyaWMgY2hhbmdlcywgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBRRU1VLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBhbmQgdGVhcmRvd24gY2FsbGJhY2tzLlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd246IElzIHRoZSBib25kaW5nIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzISBCb25kaW5nIGlzIGEgc3RhbmRhcmQgdmlydHVhbCBuZXRkZXZpY2UgZHJpdmVyIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rL3J0bmwgY2FsbHMuXG5cbk5vdyB0aGUga2V5IHF1ZXN0aW9uOiBEb2VzIGBXUklURV9PTkNFYCBpbnRyb2R1Y2UgYSBmdW5jdGlvbmFsIGNoYW5nZT8gSXQncyBub3QgZG9jdW1lbnRhdGlvbiwgbG9nZ2luZywgYSBjb25zdGFudCwgb3IgdW5yZWFjaGFibGUgY29kZSwgb3IgYSB0ZWFyZG93biBjYWxsYmFjay4gU28gaXQgKnNob3VsZCogY291bnQgYXMgd29ydGggZnV6emluZy4gVGhlIGtleSBoZXJlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgaXQgaXMgYmVpbmcgdXNlZCB0byBwcmV2ZW50IGRhdGEgcmFjZXMsIHN0b3JlIHRlYXJpbmcsIG9yIGNvbXBpbGVyIHJlb3JkZXJpbmchIFN5emthbGxlciB3aXRoIEtDU0FOLCBUaHJlYWRTYW5pdGl6ZXIsIG9yIGdlbmVyYWwgbmV0IGZ1enppbmcgY2FuIG5vdyBwb3RlbnRpYWxseSByZXZlYWwgY29uY3VycmVuY3kgYnVncyBpbiBib25kaW5nISBUaGUgaW50cm9kdWN0aW9uIG9mIGBXUklURV9PTkNFYCAqaW1wbGllcyogZnVuY3Rpb25hbCBpbXBhY3Qgb24gZGF0YSBhY2Nlc3MuXG5cblRoZSBjcml0ZXJpYSBjbGVhcmx5IHN0YXRlOiBhbnkgcGF0Y2ggbW9kaWZ5aW5nIHJlYWNoYWJsZSBjb3JlIGxvZ2ljL2RyaXZlcnMsICp1bmxlc3MqIGl0IGZhbGxzIGludG8gb25lIG9mIHRoZSAqc2l4KiBleHBsaWNpdCBleGNsdXNpb25zLCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgZnV6emluZy4gVGhpcyBkb2Vzbid0IHNlZW0gdG8gZmFsbCBpbnRvICphbnkqIG9mIHRob3NlIGV4Y2x1c2lvbnMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggKnNob3VsZCogYmUgbWFya2VkIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkxldCdzIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWcgb3B0aW9ucyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODA1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDozOS45Mzk5MTQ1MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTIyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSArPSBib25kaW5nLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTEyNjY9dm9pZCBib25kX2NoYW5nZV9hY3RpdmVfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqbmV3X2FjdGl2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTMzMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEzMzM6XFx0XFx0XFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSLCBib25kLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTg4OD1pbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjIwOTU6XFx0c2xhdmVfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjA5Ni1cXHQvKiBpbml0aWFsaXplIHNsYXZlIHN0YXRzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTIzNzUtXFx0aWYgKCFuZXRpZl9pc19ib25kX21hc3RlcihzbGF2ZV9kZXYpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjM3NjpcXHRcXHRzbGF2ZV9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjM3Ny1cXHRkZXZfY2xvc2Uoc2xhdmVfZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjQyNT1zdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI1OTYtXFx0aWYgKCFuZXRpZl9pc19ib25kX21hc3RlcihzbGF2ZV9kZXYpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjU5NzpcXHRcXHRzbGF2ZV9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9CT05ESU5HO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjU5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDA3MD1zdGF0aWMgaW50IGJvbmRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDA3Ny1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQwNzg6XFx0aWYgKCEoZXZlbnRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX0JPTkRJTkcpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDA3OS1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTU5OTQ9dm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjAxNi1cXHRib25kX2Rldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX01BU1RFUjtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjYwMTc6XFx0Ym9uZF9kZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0JPTkRJTkcgfCBJRkZfVU5JQ0FTVF9GTFQgfCBJRkZfTk9fUVVFVUU7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy02MDE4LVxcdGJvbmRfZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjY9IH4oSUZGX1hNSVRfRFNUX1JFTEVBU0UgfCBJRkZfVFhfU0tCX1NIQVJJTkcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo0MC4wMTg0NDI4MzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTI1NzI1NDQwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBib25kaW5nIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AuIEkga25vdyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGxpdmVzIOKAkyB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29uZmlnIGZsYWdzLCBhbGwgdGhlIGp1aWN5IGRldGFpbHMgdGhhdCBjb250cm9sIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgcG9zc2libGUgYW5kIHdoYXQncyByZXF1aXJlZCBiZWZvcmUgSSBjYW4gbWFrZSBhbnkgaW5mb3JtZWQgZGVjaXNpb25zIG9yIHJlY29tbWVuZGF0aW9ucy4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byB0ZWxsIG1lIHRoZSByZWFsIHN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEwOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEwOjQ5LjI3NTY5OTgwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY2MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo0OS4yNzU3NjMzNDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQwNTY4MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkxvY2F0aW5nIHRoZSBCb25kaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGUgYENPTkZJR19CT05ESU5HYCBzeW1ib2wgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHRhc2sgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBJdCBjb3VsZCBiZSBpbiBhIHRvcC1sZXZlbCBmaWxlLCBhIGZlYXR1cmUtc3BlY2lmaWMgS2NvbmZpZywgb3IgZXZlbiBpbmRpcmVjdGx5IHRocm91Z2ggYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gYmUgbWV0aG9kaWNhbCBoZXJlLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZmluZGAgY29tbWFuZCwgcGVyaGFwcyBuYXJyb3dpbmcgaXQgZG93biB3aXRoIHNvbWUgZ3JlcCBmaWx0ZXJpbmcgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZmlsZXMgc3BlY2lmaWNhbGx5LiBUaGVuLCBJIGNhbiBpbnNwZWN0IHRoZSByZWxldmFudCBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBDT05GSUdfQk9ORElOR2Agc3ltYm9sLiBEZXBlbmRpbmcgb24gaG93IGl0J3MgZGVmaW5lZCBhbmQgdGhlIGNvbXBsZXhpdHksIEkgbWlnaHQgbmVlZCB0byB0cmFjZSB0aHJvdWdoIGEgZmV3IGluY2x1ZGVzIG9yIGRlcGVuZGVuY2llcyB0byBmdWxseSBncmFzcCBpdHMgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwNiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6NTQuNjgxNDQ4NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODMwNjY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTA6NTQuOTI5NzYzOTE2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4ODk5NzE2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2Vzcywgd3JpdHRlbiBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZzpcblxuKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA0MS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQuIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgb3B0aW9ucywgcGVyaGFwcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZHJpdmVyIEknbSByZXNlYXJjaGluZyBvciBhIGdlbmVyYWwgYXJlYSB0aGF0IHJlcXVpcmVzIG9wdGltaXphdGlvbi4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSdtIGFudGljaXBhdGluZyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljLCBtYXliZSBzb21lIG5lc3RlZCBgaWZgIHN0YXRlbWVudHMgYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIG90aGVyIHByZXJlcXVpc2l0ZXMuIFVsdGltYXRlbHksIEkgd2FudCB0byBmb3JtIGEgbWVudGFsIG1hcCBvZiB0aGlzIHNlY3Rpb24gb2YgdGhlIEtjb25maWcgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo1Ni44MTk3Mzg1NThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgTkVUX0NPUkVcXG4gIDMzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzQ6XFx0XFx0Ym9vbCBcXFwiTmV0d29yayBjb3JlIGRyaXZlciBzdXBwb3J0XFxcIlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIGFueSBvZiB0aGVcXG4gIDM3OlxcdFxcdCAgbmV0d29ya2luZyBjb3JlIGRyaXZlcnMgKGkuZS4gVkxBTiwgYnJpZGdpbmcsIGJvbmRpbmcsIGV0Yy4pXFxuICAzODpcXHRcXG4gIDM5OlxcdGlmIE5FVF9DT1JFXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBCT05ESU5HXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSAnWScgb3IgJ00nIGlmIHlvdSB3aXNoIHRvIGJlIGFibGUgdG8gJ2JvbmQnIG11bHRpcGxlIEV0aGVybmV0XFxuICA0NzpcXHRcXHQgIENoYW5uZWxzIHRvZ2V0aGVyLiBUaGlzIGlzIGNhbGxlZCAnRXRoZXJjaGFubmVsJyBieSBDaXNjbyxcXG4gIDQ4OlxcdFxcdCAgJ1RydW5raW5nJyBieSBTdW4sIDgwMi4zYWQgYnkgdGhlIElFRUUsIGFuZCAnQm9uZGluZycgaW4gTGludXguXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgVGhlIGRyaXZlciBzdXBwb3J0cyBtdWx0aXBsZSBib25kaW5nIG1vZGVzIHRvIGFsbG93IGZvciBib3RoIGhpZ2hcXG4gIDUxOlxcdFxcdCAgcGVyZm9ybWFuY2UgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IG9wZXJhdGlvbi5cXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0ICBSZWZlciB0byBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy5yc3RcXHUwMDNlIGZvciBtb3JlXFxuICA1NDpcXHRcXHQgIGluZm9ybWF0aW9uLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDU3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYm9uZGluZy5cXG4gIDU4OlxcdFxcbiAgNTk6XFx0Y29uZmlnIERVTU1ZXFxuICA2MDpcXHRcXHR0cmlzdGF0ZSBcXFwiRHVtbXkgbmV0IGRyaXZlciBzdXBwb3J0XFxcIlxcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgYml0LWJ1Y2tldCBkZXZpY2UgKGkuZS4gdHJhZmZpYyB5b3Ugc2VuZCB0b1xcbiAgNjM6XFx0XFx0ICB0aGlzIGRldmljZSBpcyBjb25zaWduZWQgaW50byBvYmxpdmlvbikgd2l0aCBhIGNvbmZpZ3VyYWJsZSBJUFxcbiAgNjQ6XFx0XFx0ICBhZGRyZXNzLiBJdCBpcyBtb3N0IGNvbW1vbmx5IHVzZWQgaW4gb3JkZXIgdG8gbWFrZSB5b3VyIGN1cnJlbnRseVxcbiAgNjU6XFx0XFx0ICBpbmFjdGl2ZSBTTElQIGFkZHJlc3Mgc2VlbSBsaWtlIGEgcmVhbCBhZGRyZXNzIGZvciBsb2NhbCBwcm9ncmFtcy5cXG4gIDY2OlxcdFxcdCAgSWYgeW91IHVzZSBTTElQIG9yIFBQUCwgeW91IG1pZ2h0IHdhbnQgdG8gc2F5IFkgaGVyZS4gSXQgd29uJ3RcXG4gIDY3OlxcdFxcdCAgZW5sYXJnZSB5b3VyIGtlcm5lbC4gV2hhdCBhIGRlYWwuIFJlYWQgYWJvdXQgaXQgaW4gdGhlIE5ldHdvcmtcXG4gIDY4OlxcdFxcdCAgQWRtaW5pc3RyYXRvcidzIEd1aWRlLCBhdmFpbGFibGUgZnJvbVxcbiAgNjk6XFx0XFx0ICBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjZ3VpZGVcXHUwMDNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMDo1Ni44MTk4MTc0MjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMzNzc0NTQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBmb2N1c2luZyBvbiB3aGF0IEknZCBiZSBsb29raW5nIGZvciBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQm9uZGluZyBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgLiBNeSBpbW1lZGlhdGUgbWVudGFsIGNoZWNrbGlzdCBzdGFydHMgcnVubmluZy4gV2h5IGFtIEkgbG9va2luZyBhdCB0aGlzPyBJcyB0aGVyZSBhIHJlcG9ydGVkIGlzc3VlIHdpdGggYm9uZGluZz8gQSBuZXcgZmVhdHVyZT8gUGVyZm9ybWFuY2UgY29uY2VybnM/IEkgbmVlZCBjb250ZXh0LCBvZiBjb3Vyc2UsIGJ1dCBqdXN0IGhpdHRpbmcgdGhlIE1ha2VmaWxlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLlxuXG5GaXJzdCwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdHJ1Y3R1cmUuIEkga25vdyB0aGUgZ2VuZXJhbCBsYXlvdXQgb2YgdGhlIGtlcm5lbCdzIE1ha2VmaWxlcywgc28gSSdsbCBiZSBxdWlja2x5IHNjYW5uaW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IGBvYmotYCwgYGNjZmxhZ3MtYCwgYEtCVUlMRF9DRkxBR1NgLCBgaW5jbHVkZWAsIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyAoYGlmZGVmYCwgYGlmbmVxYCkuIEknbGwgYmUgbG9va2luZyBmb3Igc291cmNlIGZpbGVzIChgKi5jYCwgYCoub2ApIGFuZCBoZWFkZXIgZGVwZW5kZW5jaWVzLlxuXG5CZXlvbmQgdGhlIGJhc2ljIHN0cnVjdHVyZSwgSSdtIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgbW9kdWxlcyBiZWluZyBidWlsdD8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgYmFzZWQgb24ga2VybmVsIHZlcnNpb24gb3IgaGFyZHdhcmU/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIGZsYWdzIHBhc3NlZCB0byB0aGUgY29tcGlsZXIgc3BlY2lmaWNhbGx5IGZvciBib25kaW5nPyBJJ20gYW50aWNpcGF0aW5nIHBvc3NpYmx5IHNlZWluZyBgLURgIGRlZmluZXMsIHdoaWNoIHRlbGwgbWUgYWJvdXQgY29tcGlsZS10aW1lIGZlYXR1cmUgdG9nZ2xlcy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBkZXBlbmRlbmNpZXMgbGlzdGVkLiBJZiB0aGUgYm9uZGluZyBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyAoZS5nLiwgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpYyBOSUMgZHJpdmVycyksIHRoYXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZC4gQXJlIHRoZXJlIGNyb3NzLWRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGJ1aWxkIGlzc3VlcyBvciBydW50aW1lIGNvbmZsaWN0cz9cblxuRmluYWxseSwgaWYgdGhpcyAqaXMqIHJlbGF0ZWQgdG8gYW4gaXNzdWUsIEknbGwgYmUgaHVudGluZyBmb3IgY2x1ZXMgcmVnYXJkaW5nIHNwZWNpZmljIGRlYnVnZ2luZyBvciBsb2dnaW5nIGZsYWdzLiBBcmUgdGhlcmUgYW55IGAtRGAgZGVmaW5lcyByZWxhdGVkIHRvIHZlcmJvc2Ugb3V0cHV0IG9yIGRlYnVnZ2luZz8gVGhhdCdzIGdvbGRlbiwgcGFydGljdWxhcmx5IGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhIHByb2JsZW0uIEknbGwgYWxzbyBjaGVjayBmb3IgYW55IHNwZWNpZmljIHRlc3QgdGFyZ2V0cyBvciBidWlsZCBmbGFncyB0aGF0IGNvdWxkIGhlbHAgbWUgcmVwcm9kdWNlIG9yIGFuYWx5emUgdGhlIGlzc3VlLiBUaGUgZ29hbCwgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYm9uZGluZyBkcml2ZXIncyBiZWhhdmlvci4gVGltZSB0byBkaXZlIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDAuMTU3NTY1NTI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBFdGhlcm5ldCBCb25kaW5nIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuICAgNzpcXHRcXG4gICA4OlxcdGJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xcbiAgIDk6XFx0XFxuICAxMDpcXHRwcm9jLSQoQ09ORklHX1BST0NfRlMpICs9IGJvbmRfcHJvY2ZzLm9cXG4gIDExOlxcdGJvbmRpbmctb2JqcyArPSAkKHByb2MteSlcXG4gIDEyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTowMC4xNTc2NjQxNzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMwMzk4NzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCBhbmQgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjb25maWd1cmF0aW9uLXdpc2UgaW4gdGhlc2UgbW9kaWZpZWQgZmlsZXMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3Mgc2NhbiBmb3IgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIG9yIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgYXQgYE5FVF9DT1JFYCwgYElORVRgLCBhbmQgYEJPTkRJTkdgLiBBcmUgYE5FVF9DT1JFYCBhbmQgYElORVRgIHN0YW5kYXJkIGRlZmluZXM/IGBCT05ESU5HYCBkZWZpbml0ZWx5IGRlcGVuZHMgb24gYElORVRgLCBhbmQgYE5FVF9DT1JFYCBpcyBpdHMgcGFyZW50IG1lbnUsIGNvcnJlY3Q/XG5cbk5vdywgSSdsbCBzY3J1dGluaXplIGBCT05ESU5HYCBtb3JlIGNsb3NlbHkuXG5cbk5leHQsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiB0aGUgcGF0Y2guIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jYC4gTGV0IG1lIHJldmlldyB0aGUgY29kZSwgYW5kIGluIHBhcnRpY3VsYXIsIHRoZSBmdW5jdGlvbiBgcmxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpYC4gSG1tLi4uIGlzIGBybGJfaW5pdGlhbGl6ZWAgZGVjbGFyZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBrZXkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaGFzIGFueSBleHRlcm5hbCBjYWxsZXJzLCBhbmQgaWYgdGhlcmUgaXMgYSBrbm93biBlbnRyeSBwb2ludC4gSSdsbCBjaGVjayBgYm9uZF9hbGIuY2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTowMi40NjE2NTQyMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzMwMDE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybGJfaW5pdGlhbGl6ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz04MzQ9c3RhdGljIHZvaWQgcmxiX3B1cmdlX3NyY19pcChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFycF9wa3QgKmFycClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjg1NTpzdGF0aWMgaW50IHJsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy04NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzMDY9aW50IGJvbmRfYWxiX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCBybGJfZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE0LVxcdGlmIChybGJfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzE1OlxcdFxcdHJlcyA9IHJsYl9pbml0aWFsaXplKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzE2LVxcdFxcdGlmIChyZXMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDIuNjE0OTU5MDEyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxNzMxMTk2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAgRnVuY3Rpb24qKlxuXG5SaWdodCwgYGJvbmRfYWxiX2luaXRpYWxpemVgIGlzbid0IHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0J3MgcG90ZW50aWFsbHkgdmlzaWJsZSBhbmQgY2FsbGFibGUgZnJvbSBvdXRzaWRlIGl0cyBsaWtlbHkgbW9kdWxlLCB3aGljaCBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBmb3IgbWFpbnRhaW5hYmlsaXR5LCBlbmNhcHN1bGF0aW9uLCBhbmQgZXZlbiBwb3RlbnRpYWwgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQ/XCIgV2UgbmVlZCB0byB0cmFjayBkb3duIGl0cyBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlIHBhdHRlcm5zIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC4gTGV0J3MgdHJhY2UgYmFjayB0aGUgY2FsbHMgdG8gZ2V0IGEgZ3Jhc3Agb24gdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBUaW1lIHRvIGJyZWFrIG91dCB0aGUgZ3JlcCBvciBteSBJREUncyBjYWxsIGhpZXJhcmNoeSBmZWF0dXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzQyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDcuNzg5MTEyMzU1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcyMTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzQ3PXN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3My1cXHRpZiAoYm9uZF9pc19sYihib25kKSkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDM3NDpcXHRcXHQvKiBib25kX2FsYl9pbml0aWFsaXplIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgdGltZXJcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzUtXFx0XFx0ICogaXMgc3RhcnRlZC5cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNzYtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0Mzc3OlxcdFxcdGlmIChib25kX2FsYl9pbml0aWFsaXplKGJvbmQsIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFX0FMQikpKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDM3OC1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MDcuODcxODM5MTg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg0MTM4NTYxNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEaWZmKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJJ20gc2VlaW5nIGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHJsYl9pbml0aWFsaXplYCBpbiBgYm9uZF9hbGIuY2AsIGNhbGxlZCBieSBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGJvbmRfb3BlbmAuIFRoYXQncyB0aGUgaW5pdGlhbGl6YXRpb24gY2hhaW4uIFRoZW4gdGhlcmUncyBgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzYCwgYGJvbmRfZW5zbGF2ZWAsIGBfX2JvbmRfcmVsZWFzZV9vbmVgLCBgYm9uZF9vcGVuYCwgYGJvbmRfY2xvc2VgLCBgYm9uZF9za2lwX3NsYXZlYCwgYW5kIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCDigJMgYSBnb29kIG1peCBvZiBjb3JlIGJvbmRpbmcgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zIOKAkyBzcGVjaWZpY2FsbHkgYGJvbmRfZW5zbGF2ZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0YCwgYW5kIGBib25kX2FsYl9pbml0aWFsaXplYCAtIGFyZSBub24tc3RhdGljLCBleHBvcnRlZCBzeW1ib2xzLCBvciBwZXJoYXBzIG5ldGxpbmsgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIGltbWVkaWF0ZWx5IHRlbGwgbWUgaWYgdGhpcyBjaGFuZ2UgaGFzIGltcGxpY2F0aW9ucyBmb3Igb3RoZXIgbW9kdWxlcyBvciB0aGUgdXNlciBzcGFjZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgbmV3IGxvZ2ljLlxuXG5OZXh0LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgcG90ZW50aWFsbHkgY3JpdGljYWwgZnVuY3Rpb25zOiBgYm9uZF9lbnNsYXZlYCwgYF9fYm9uZF9yZWxlYXNlX29uZWAsIGBib25kX29wZW5gLCBgYm9uZF9jbG9zZWAsIGFuZCBgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldGAuIEEgcXVpY2sgY2hlY2sgb2YgdGhlc2Ugc2hvdWxkIHRlbGwgbWUgd2hhdCdzIGNoYW5nZWQgYW5kIGhvdy4gSXQncyB0aW1lIHRvIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyOTYsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MTYuMjg1Njk5MjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTEyOTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoYm9uZF9vcGVufGJvbmRfY2xvc2V8Ym9uZF9lbnNsYXZlfGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXR8Ym9uZF9za2lwX3NsYXZlfF9fYm9uZF9yZWxlYXNlX29uZSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM9MTUzMj12b2lkIGJvbmRfYWxiX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE1ODctXFx0XFx0XFx0LyogZGV2X3NldF9wcm9taXNjdWl0eSByZXF1aXJlcyBydG5sIGFuZFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNTg4OlxcdFxcdFxcdCAqIG5vdGhpbmcgZWxzZS4gIEF2b2lkIHJhY2Ugd2l0aCBib25kX2Nsb3NlLlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTg5LVxcdFxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0xMTc2PXN0YXRpYyBib29sIGJvbmRfc2hvdWxkX25vdGlmeV9wZWVycyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4Ny1cXHQvKiBUaGUgc2VuZF9wZWVyX25vdGlmIGlzIHNldCBieSBhY3RpdmUtYmFja3VwIG9yIDgwMjNhZFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTE4ODpcXHQgKiBtb2RlLCBhbmQgY2xlYXJlZCBpbiBib25kX2Nsb3NlKCkgd2hlbiBjaGFuZ2luZyBtb2RlLlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTE4OS1cXHQgKiBJdCBpcyBzYWZlIHRvIG9ubHkgY2hlY2sgYm9uZCBtb2RlIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE4NjU9dm9pZCBib25kX3hkcF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFxcdTAwM2NzbGF2ZVxcdTAwM2UgdG8gYm9uZCBkZXZpY2UgXFx1MDAzY21hc3RlclxcdTAwM2UgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4ODg6aW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjQtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNDI1OnN0YXRpYyBpbnQgX19ib25kX3JlbGVhc2Vfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldixcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI0MjYtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjYwNj1pbnQgYm9uZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MDcte1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjYwODpcXHRyZXR1cm4gX19ib25kX3JlbGVhc2Vfb25lKGJvbmRfZGV2LCBzbGF2ZV9kZXYsIGZhbHNlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjYxND1zdGF0aWMgaW50IGJvbmRfcmVsZWFzZV9hbmRfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI2MTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjIwOlxcdHJldCA9IF9fYm9uZF9yZWxlYXNlX29uZShib25kX2Rldiwgc2xhdmVfZGV2LCBmYWxzZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjIxLVxcdGlmIChyZXQgPT0gMCBcXHUwMDI2XFx1MDAyNiAhYm9uZF9oYXNfc2xhdmVzKGJvbmQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI4OTU9c3RhdGljIHZvaWQgYm9uZF9taWlfbW9uaXRvcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5MTUtXFx0aWYgKGNvbW1pdCB8fCBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlc2VuZF9wZWVyX25vdGlmKSkge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MjkxNjpcXHRcXHQvKiBSYWNlIGF2b2lkYW5jZSB3aXRoIGJvbmRfY2xvc2UgY2FuY2VsIG9mIHdvcmtxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjkxNy1cXHRcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM4NDM9c3RhdGljIHZvaWQgYm9uZF9hY3RpdmViYWNrdXBfYXJwX21vbihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzg1Ny1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM4NTg6XFx0XFx0LyogUmFjZSBhdm9pZGFuY2Ugd2l0aCBib25kX2Nsb3NlIGZsdXNoIG9mIHdvcmtxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzg1OS1cXHRcXHRpZiAoIXJ0bmxfdHJ5bG9jaygpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTM5NDU9c3RhdGljIGludCBib25kX3NsYXZlX25ldGRldl9ldmVudCh1bnNpZ25lZCBsb25nIGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zOTcxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM5NzI6XFx0XFx0XFx0X19ib25kX3JlbGVhc2Vfb25lKGJvbmRfZGV2LCBzbGF2ZV9kZXYsIGZhbHNlLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM5NzMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQzMjA9dm9pZCBib25kX3dvcmtfaW5pdF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzIxLXtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjQzMjI6XFx0LyogbmRvX3N0b3AsIGJvbmRfY2xvc2UoKSB3aWxsIHRyeSB0byBmbHVzaCB0aGUgd29yayB1bmRlclxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMy1cXHQgKiB0aGUgcnRubCBsb2NrLiBUaGUgd29ya3F1ZXVlIG11c3Qgbm90IGJsb2NrIG9uIHJ0bmwgbG9ja1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz00MzM2PXZvaWQgYm9uZF93b3JrX2NhbmNlbF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzQ3OnN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00NDA5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NDQxMDpzdGF0aWMgaW50IGJvbmRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTQ1ODU9c3RhdGljIGludCBib25kX2RvX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ2NDAtXFx0Y2FzZSBTSU9DQk9OREVOU0xBVkU6XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0NjQxOlxcdFxcdHJlcyA9IGJvbmRfZW5zbGF2ZShib25kX2Rldiwgc2xhdmVfZGV2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQ2NDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTUwODM9c3RhdGljIHZvaWQgYm9uZF9zbGF2ZV9hcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUxMDMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTA0OnN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTEwNS1cXHRcXHRcXHQgICAgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUxMTEtXFx0ICogb25seSBwb3NzaWJsZSB3aGVuIHRoZSBjYWxsIGlzIGluaXRpYXRlZCBmcm9tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MTEyOlxcdCAqIF9fYm9uZF9yZWxlYXNlX29uZSgpLiBJbiB0aGlzIHNpdHVhdGlvbjsgb3ZlcndyaXRlIHRoZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTExMy1cXHQgKiBza2lwc2xhdmUgZW50cnkgaW4gdGhlIGFycmF5IHdpdGggdGhlIGxhc3QgZW50cnkgZnJvbSB0aGVcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE2MD1pbnQgYm9uZF91cGRhdGVfc2xhdmVfYXJyKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNraXBzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIxOC1cXHRpZiAocmV0ICE9IDAgXFx1MDAyNlxcdTAwMjYgc2tpcHNsYXZlKSB7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1MjE5OlxcdFxcdGJvbmRfc2tpcF9zbGF2ZShydG5sX2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZWFsbF9zbGF2ZXMpLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTIyMC1cXHRcXHRcXHRcXHRza2lwc2xhdmUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTIyMTpcXHRcXHRib25kX3NraXBfc2xhdmUocnRubF9kZXJlZmVyZW5jZShib25kLVxcdTAwM2V1c2FibGVfc2xhdmVzKSxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTUyMjItXFx0XFx0XFx0XFx0c2tpcHNsYXZlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJvbmRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk0Ni1cXHQubmRvX3VuaW5pdFxcdFxcdD0gYm9uZF91bmluaXQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTQ3OlxcdC5uZG9fb3BlblxcdFxcdD0gYm9uZF9vcGVuLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk0ODpcXHQubmRvX3N0b3BcXHRcXHQ9IGJvbmRfY2xvc2UsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ5LVxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gYm9uZF9zdGFydF94bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTY2LSNlbmRpZlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk2NzpcXHQubmRvX2FkZF9zbGF2ZVxcdFxcdD0gYm9uZF9lbnNsYXZlLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk2OC1cXHQubmRvX2RlbF9zbGF2ZVxcdFxcdD0gYm9uZF9yZWxlYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz02MDYxPXN0YXRpYyB2b2lkIGJvbmRfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjA3MC1cXHRib25kX2Zvcl9lYWNoX3NsYXZlKGJvbmQsIHNsYXZlLCBpdGVyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NjA3MTpcXHRcXHRfX2JvbmRfcmVsZWFzZV9vbmUoYm9uZF9kZXYsIHNsYXZlLVxcdTAwM2VkZXYsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjA3Mi1cXHRuZXRkZXZfaW5mbyhib25kX2RldiwgXFxcIlJlbGVhc2VkIGFsbCBzbGF2ZXNcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0zMT1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX3VzZV9jYXJyaWVyX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTMyLVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMzpzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0zNC1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYm9uZF9vcHRfdmFsdWUgKm5ld3ZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTI2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGJvbmRfb3B0aW9uIGJvbmRfb3B0c1tCT05EX09QVF9MQVNUXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMzE2LVxcdFxcdC52YWx1ZXMgPSBib25kX2ludG1heF90YmwsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzozMTc6XFx0XFx0LnNldCA9IGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTMxOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz05MTA9c3RhdGljIGludCBib25kX29wdGlvbl9tb2RlX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtOTM5LVxcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjk0MDpcXHQgKiB0aGUgYm9uZF9iY2FzdF9uZWlnaF9lbmFibGVkIGluIGJvbmRfY2xvc2UoKSBpZiBicm9hZGNhc3RfbmVpZ2hib3JcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTk0MS1cXHQgKiBlbmFibGVkIGluIDgwMjNhZCBtb2RlLiBUaGVyZWZvcmUsIG9ubHkgY2xlYXIgYnJvYWRjYXN0X25laWdoYm9yXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTExMTg9c3RhdGljIGludCBib25kX29wdGlvbl91c2VfY2Fycmllcl9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMTI4OnN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2ludGVydmFsX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTExMjktXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJvbmRfb3B0X3ZhbHVlICpuZXd2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTE3ODY9c3RhdGljIGludCBib25kX29wdGlvbl9zbGF2ZXNfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xODExLVxcdFxcdHNsYXZlX2RiZyhib25kLVxcdTAwM2VkZXYsIGRldiwgXFxcIkVuc2xhdmluZyBpbnRlcmZhY2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTgxMjpcXHRcXHRyZXQgPSBib25kX2Vuc2xhdmUoYm9uZC1cXHUwMDNlZGV2LCBkZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTgxMy1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MTYuNDEwODMzMDY4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMzM0ODE4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb246IEEgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByaWdodC4gV2UncmUgbG9va2luZyBmb3IgdGhlIHByaW1lIGZvY3VzIHN5bWJvbHMg4oCTIHRoZSBrZXkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMg4oCTIGZvciB0aGlzIGFuYWx5c2lzLiBJJ3ZlIGdvdCBhIGRlY2VudCBsaXN0IHRvIHN0YXJ0IHdpdGgsIGluY2x1ZGluZyBgYm9uZF9lbnNsYXZlYCwgYGJvbmRfcmVsZWFzZWAsIGFuZCBgYm9uZF9hbGJfaW5pdGlhbGl6ZWAsIHRob3NlIGFyZSBvYnZpb3VzIGNhbmRpZGF0ZXMuIEdvb2QgY2hvaWNlcy4gYGJvbmRfdXBkYXRlX3NsYXZlX2FycmAgaXMgYW5vdGhlciBzb2xpZCBjb250ZW5kZXIuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYXJvdW5kIGBib25kX29wdF90cnlzZXRgIG9yLCBwZXJoYXBzIGJldHRlciwgYGJvbmRfb3B0aW9uX2FycF9pbnRlcnZhbF9zZXRgLiBJIG5lZWQgdG8gdmVyaWZ5LCBhbmQgcXVpY2tseS4gSXMgYGJvbmRfb3B0X3RyeXNldGAgYWN0dWFsbHkgZXhwb3J0ZWQ/IElzIGl0ICpub24tc3RhdGljKj8gSSByZWFsbHkgbmVlZCB0byBjaGVjayBgYm9uZF9vcHRpb25zLmNgIHRvIGJlIHN1cmUuIEl0IGNvdWxkIGJlIGNydWNpYWwsIG9yIGl0IGNvdWxkIGJlIGEgZGVhZCBlbmQuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBnZXR0aW5nIGFsbCB0aGUgcmlnaHQgZGF0YSBwb2ludHMgaGVyZS4gTm8gc3RvbmUgdW50dXJuZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjIwLjU0NDMxOTI3N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNDY4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfXSsgYm9uZF8uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIyMTQ9c3RhdGljIHZvaWQgYWRfbWFya2VyX3Jlc3BvbnNlX3JlY2VpdmVkKHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzYtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyMzc6dm9pZCBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgdGltZW91dClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI0Ny0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0ODp2b2lkIGJvbmRfM2FkX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzI6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjY6dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4OC0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ4OTp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjUyMD1zdGF0aWMgYm9vbCBib25kX2FnZ190aW1lcl9hZHZhbmNlKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NDgtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NDk6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNzEwPXN0YXRpYyB2b2lkIGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTMtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTQ6dm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODAtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODE6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODM4LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODM5OmludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Mjg4MT1pbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTQ6aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTI0LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTI1OmludCBib25kXzNhZF9sYWNwZHVfcmVjdihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNi1cXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU3OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4MS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjk4Mjp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAwMC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MzAwMTpzaXplX3QgYm9uZF8zYWRfc3RhdHNfc2l6ZSh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDEzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDE0OmludCBib25kXzNhZF9zdGF0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kXzNhZF9zdGF0cyAqc3RhdHMpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEyODQ9c3RhdGljIGJvb2wgYWxiX2RldGVybWluZV9uZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xMzA1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxMzA2OmludCBib25kX2FsYl9pbml0aWFsaXplKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgcmxiX2VuYWJsZWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjctXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjEzMjg6dm9pZCBib25kX2FsYl9kZWluaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTEzMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jPTEzNzA9c3RydWN0IHNsYXZlICpib25kX3htaXRfdGxiX3NsYXZlX2dldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDA4LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNDA5Om5ldGRldl90eF90IGJvbmRfdGxiX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNDEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYz0xNDE4PXN0cnVjdCBzbGF2ZSAqYm9uZF94bWl0X2FsYl9zbGF2ZV9nZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTUyMzpuZXRkZXZfdHhfdCBib25kX2FsYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUyNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTUzMS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmM6MTUzMjp2b2lkIGJvbmRfYWxiX21vbml0b3Ioc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjM1LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjM2OmludCBib25kX2FsYl9pbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY1LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjY2OnZvaWQgYm9uZF9hbGJfZGVpbml0X3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNjc5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNjgwOnZvaWQgYm9uZF9hbGJfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE2ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3MTctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jOjE3MTg6dm9pZCBib25kX2FsYl9oYW5kbGVfYWN0aXZlX2NoYW5nZShzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpuZXdfc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3MTkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jLTE3ODYtLyogQ2FsbGVkIHdpdGggUlROTCAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxNzg3OmludCBib25kX2FsYl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCB2b2lkICphZGRyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYy0xODMxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuYzoxODMyOnZvaWQgYm9uZF9hbGJfY2xlYXJfdmxhbihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgdW5zaWduZWQgc2hvcnQgdmxhbl9pZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmMtMTgzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jPTU0PURFRklORV9TSE9XX0FUVFJJQlVURShib25kX2RlYnVnX3JsYl9oYXNoKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTU1LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6NTY6dm9pZCBib25kX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy02NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjY1OnZvaWQgYm9uZF9kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy02OS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjcwOnZvaWQgYm9uZF9kZWJ1Z19yZXJlZ2lzdGVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz03OT12b2lkIF9faW5pdCBib25kX2NyZWF0ZV9kZWJ1Z2ZzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTg2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmM6ODc6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtODgte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy05NS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jOjk2OnZvaWQgYm9uZF9kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfZGVidWdmcy5jLTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtOTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDA6dm9pZCBib25kX2RlYnVnX3VucmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMDQ6dm9pZCBib25kX2RlYnVnX3JlcmVnaXN0ZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYz0xMDg9dm9pZCBfX2luaXQgYm9uZF9jcmVhdGVfZGVidWdmcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYy0xMTEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2RlYnVnZnMuYzoxMTI6dm9pZCBib25kX2Rlc3Ryb3lfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9kZWJ1Z2ZzLmMtMTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MjcyPWNvbnN0IGNoYXIgKmJvbmRfbW9kZV9uYW1lKGludCBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yOTYtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyOTc6bmV0ZGV2X3R4X3QgYm9uZF9kZXZfcXVldWVfeG1pdChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTI5OC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMjU9Ym9vbCBfX2JvbmRfeGRwX2NoZWNrKGludCBtb2RlLCBpbnQgeG1pdF9wb2xpY3kpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0My1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjM0NDpib29sIGJvbmRfeGRwX2NoZWNrKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgbW9kZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1kZXZfb3BzIGJvbmRfeGZybWRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTc1NS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjc1NjppbnQgYm9uZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTExNzY9c3RhdGljIGJvb2wgYm9uZF9zaG91bGRfbm90aWZ5X3BlZXJzKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjA4LS8qIFVzZSB0aGlzIHRvIHVwZGF0ZSBzZW5kX3BlZXJfbm90aWYgd2hlbiBSVE5MIG1heSBiZSBoZWxkIGluIG90aGVyIHBsYWNlcy4gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEyMDk6dm9pZCBib25kX3BlZXJfbm90aWZ5X3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTIzOD1zdGF0aWMgdm9pZCBib25kX3BlZXJfbm90aWZ5X21heV9ldmVudHMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIGJvb2wgZm9yY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTEyNjUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxMjY2OnZvaWQgYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKm5ld19hY3RpdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTM2OS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjEzNzA6dm9pZCBib25kX3NlbGVjdF9hY3RpdmVfc2xhdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xMzcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTgwNT1zdGF0aWMgdm9pZCBib25kX25ldGRldl9ub3RpZnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODIxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTgyMjp2b2lkIGJvbmRfcXVldWVfc2xhdmVfZXZlbnQoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODI2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTgyNzp2b2lkIGJvbmRfbG93ZXJfc3RhdGVfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTgyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTE4NTY9c3RhdGljIHZvaWQgYm9uZF9ldGhlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjQtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxODY1OnZvaWQgYm9uZF94ZHBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE4NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg3LS8qIGVuc2xhdmUgZGV2aWNlIFxcdTAwM2NzbGF2ZVxcdTAwM2UgdG8gYm9uZCBkZXZpY2UgXFx1MDAzY21hc3RlclxcdTAwM2UgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE4ODg6aW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xODg5LVxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTI0MjU9c3RhdGljIGludCBfX2JvbmRfcmVsZWFzZV9vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0yNjA1LS8qIEEgd3JhcHBlciB1c2VkIGJlY2F1c2Ugb2YgbmRvX2RlbF9saW5rICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoyNjA2OmludCBib25kX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMjYwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTMwMTQ9c3RhdGljIHZvaWQgYm9uZF9hcnBfc2VuZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBpbnQgYXJwX29wLCBfX2JlMzIgZGVzdF9pcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMzA0NS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjMwNDY6c3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0zMDQ3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz0zMzc0PXN0YXRpYyBpbnQgYm9uZF9uYV9yY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzozNDIzOmludCBib25kX3Jjdl92YWxpZGF0ZShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTM0MjQtXFx0XFx0ICAgICAgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NDMwNT1zdGF0aWMgdTMyIGJvbmRfeG1pdF9oYXNoX3hkcChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzIwOnZvaWQgYm9uZF93b3JrX2luaXRfYWxsKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNDMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTQzMzUtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo0MzM2OnZvaWQgYm9uZF93b3JrX2NhbmNlbF9hbGwoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy00MzM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTA2MD1zdGF0aWMgbmV0ZGV2X3R4X3QgYm9uZF94bWl0X2FjdGl2ZWJhY2t1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTA3Nzp2b2lkIGJvbmRfc2xhdmVfYXJyX3dvcmtfcmVhcm0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MDc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTE0Nz1zdGF0aWMgdm9pZCBib25kX3Jlc2V0X3NsYXZlX2FycihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTE1OS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjUxNjA6aW50IGJvbmRfdXBkYXRlX3NsYXZlX2FycihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpza2lwc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01MTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk4ND1zdGF0aWMgdm9pZCBib25kX2Rlc3RydWN0b3Ioc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTkzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6NTk5NDp2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNTk5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jPTY1MTA9dW5zaWduZWQgaW50IGJvbmRfZ2V0X251bV90eF9xdWV1ZXModm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtNjUxOS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjY1MjA6aW50IGJvbmRfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTY1MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz0xMDA4PWludCBfX2luaXQgYm9uZF9uZXRsaW5rX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jOjEwMTM6dm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jPTg0ND1pbnQgX19ib25kX29wdF9zZXRfbm90aWZ5KHN0cnVjdCBib25kaW5nICpib25kLFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04NjctICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzo4Njg6aW50IGJvbmRfb3B0X3RyeXNldF9ydG5sKHN0cnVjdCBib25kaW5nICpib25kLCB1bnNpZ25lZCBpbnQgb3B0aW9uLCBjaGFyICpidWYpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy04Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xMjEzPXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYXJwX2lwX3RhcmdldF9yZW0oc3RydWN0IGJvbmRpbmcgKmJvbmQsIF9fYmUzMiB0YXJnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTEyNTEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYzoxMjUyOnZvaWQgYm9uZF9vcHRpb25fYXJwX2lwX3RhcmdldHNfY2xlYXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTMxMT1zdGF0aWMgdm9pZCBzbGF2ZV9zZXRfbnNfbWFkZHJzKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBib29sIGFkZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTMzNC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzMzU6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19hZGQoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTM0MS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjEzNDI6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19kZWwoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xMzQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM9MTM4OD1zdGF0aWMgdm9pZCBfYm9uZF9vcHRpb25zX25zX2lwNl90YXJnZXRfc2V0KHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgc2xvdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQwNC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0MDU6dm9pZCBib25kX29wdGlvbl9uc19pcDZfdGFyZ2V0c19jbGVhcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYz0xNDUzPXN0YXRpYyB2b2lkIHNsYXZlX3NldF9uc19tYWRkcnMoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGJvb2wgYWRkKSB7fVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMtMTQ1NC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jOjE0NTU6dm9pZCBib25kX3NsYXZlX25zX21hZGRyc19hZGQoc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBzbGF2ZSAqc2xhdmUpIHt9XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYy0xNDU2LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmM6MTQ1Nzp2b2lkIGJvbmRfc2xhdmVfbnNfbWFkZHJzX2RlbChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNsYXZlICpzbGF2ZSkge31cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jLTE0NTgtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM9Mjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgYm9uZF9pbmZvX3NlcV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMjkwLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYzoyOTE6dm9pZCBib25kX2NyZWF0ZV9wcm9jX2VudHJ5KHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9wcm9jZnMuYy0yOTIte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3Byb2Nmcy5jLTMwNi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmM6MzA3OnZvaWQgYm9uZF9yZW1vdmVfcHJvY19lbnRyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfcHJvY2ZzLmMtMzA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jPTg1Mj12b2lkIF9fbmV0X2V4aXQgYm9uZF9kZXN0cm95X3N5c2ZzKHN0cnVjdCBib25kX25ldCAqYm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYy04NTktICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzLmM6ODYwOnZvaWQgYm9uZF9wcmVwYXJlX3N5c2ZzX2dyb3VwKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jLTg2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYz0xMzM9Y29uc3Qgc3RydWN0IHN5c2ZzX29wcyBzbGF2ZV9zeXNmc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xMzYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTM3OmludCBib25kX3N5c2ZzX3NsYXZlX2FkZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmc19zbGF2ZS5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xNDEtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX3N5c2ZzX3NsYXZlLmM6MTQyOnZvaWQgYm9uZF9zeXNmc19zbGF2ZV9kZWwoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnNfc2xhdmUuYy0xNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMToyMC42MTg1OTA4NDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUyMzg3MDg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFdGhlcm5ldCBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHByb2Nlc3MgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYC4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSd2ZSBnb3QgYSBzZWxlY3Rpb24gb2YgY29uZmlndXJhdGlvbnMsIFwiQk9ORElOR1wiLCBcIk5FVF9DT1JFXCIsIGFuZCBcIklORVRcIi4gVGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgdGhhdCB3aWxsIGVuc3VyZSB0aGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBJIG5lZWQgYXJlIHByZXNlbnQgZm9yIG15IGV2YWx1YXRpb24uIE5vdywgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucywgSSBzZWUgdGhlIGZvbGxvd2luZyBgRm9jdXNTeW1ib2xzYDogXCJib25kX2Vuc2xhdmVcIiwgXCJib25kX3JlbGVhc2VcIiwgXCJib25kX2FsYl9pbml0aWFsaXplXCIsIFwiYm9uZF91cGRhdGVfc2xhdmVfYXJyXCIsIGFuZCBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCIuXG5cblRoZSByYXRpb25hbGUgaGVyZSBpcyBjcnVjaWFsLiBUaGlzIHBhdGNoIGlzIGFib3V0IGludHJvZHVjaW5nIGBXUklURV9PTkNFKClgIHdyYXBwZXJzIHdpdGhpbiB0aGUgRXRoZXJuZXQgYm9uZGluZyBkcml2ZXIgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBkYXRhIHJhY2VzIGFuZCBzdG9yZSB0ZWFyaW5nIHRoYXQgY2FuIG9jY3VyIHdoZW4geW91IGhhdmUgY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMsIHdoaWNoIGlzIHZlcnkgY29tbW9uIGluIG5ldHdvcmtpbmcuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCB0aGUgdXBkYXRlcyB0byBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlYCwgYGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmYCwgYGJvbmQtXHUwMDNlc2xhdmVfY250YCwgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgLiBUaGlzIGJvbmRpbmcgZHJpdmVyIGlzIHNvbWV0aGluZyBJJ20gdmVyeSBmYW1pbGlhciB3aXRoLiBJdCdzIGEgdmlydHVhbCBuZXR3b3JraW5nIHN1YnN5c3RlbSwgd2hpY2ggSSBrbm93IGlzIGhlYXZpbHkgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgbWVldHMgYWxsIHRoZSBuZWNlc3NhcnkgY3JpdGVyaWE6IGlzIGl0IGBXb3J0aEZ1enppbmdgLCB3aGljaCBJIHNlZSBpcyB0cnVlPyBBcmUgdGhlIGBGb2N1c1N5bWJvbHNgIHZhbGlkIGFuZCBub24taG90cGF0aCBlbnRyeSBwb2ludHMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLCB3aGljaCBzZWVtcyBhY2N1cmF0ZT8gQXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgZXhhY3RseSB0aGUgY29ycmVjdCBkZXBlbmRlbmNpZXMsIHdpdGhvdXQgdGhlIG5lZWQgZm9yIHRoZSBgQ09ORklHX2AgcHJlZml4LCBhZ2FpbiwgeWVzLiBUaGUgcmVhc29uaW5nIGlzIGFsc28gY29uY2lzZSBhbmQgY2xlYXJseSBleHBsYWlucyB0aGUgcmF0aW9uYWxlLCBzbyBJIGNhbiBzZWUgdGhpcyBjbGVhcmx5LiBJIHRoaW5rIHdlJ3JlIGdvb2QgdG8gZ28uXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY4MiwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMTQyNDY0MjQyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMTcyNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfQ09SRVwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZW5zbGF2ZVwiLFxuICAgIFwiYm9uZF9yZWxlYXNlXCIsXG4gICAgXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gICAgXCJib25kX3VwZGF0ZV9zbGF2ZV9hcnJcIixcbiAgICBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfQ09SRVwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZW5zbGF2ZVwiLFxuICAgIFwiYm9uZF9yZWxlYXNlXCIsXG4gICAgXCJib25kX2FsYl9pbml0aWFsaXplXCIsXG4gICAgXCJib25kX3VwZGF0ZV9zbGF2ZV9hcnJcIixcbiAgICBcImJvbmRfb3B0X3RyeXNldF9ydG5sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGNvbmN1cnJlbnQgZGF0YSByYWNlcyBpbiB0aGUgYm9uZGluZyBuZXR3b3JrIGRyaXZlciBieSB1c2luZyBXUklURV9PTkNFKCkgd2hlbiBtb2RpZnlpbmcgcmVjdl9wcm9iZSwgc2VuZF9wZWVyX25vdGlmLCBzbGF2ZV9jbnQsIGFuZCBzbGF2ZSBhcnJheSBjb3VudC4gVGhlIEV0aGVybmV0IGJvbmRpbmcgZHJpdmVyIGlzIHN0YW5kYXJkIHZpcnR1YWwgbmV0d29ya2luZyBsb2dpYyByZWFjaGFibGUgaW4gUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMjc1NjQ2MzhaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTcxNzk0MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6MjQuMjc2NDQ0MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxOTE3MDk5MTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgcGxhaW4gd3JpdGVzIHdpdGggV1JJVEVfT05DRSBhbm5vdGF0aW9ucyBvbiBzdHJ1Y3QgYm9uZGluZyBmaWVsZHMgKGByZWN2X3Byb2JlYCwgYHNlbmRfcGVlcl9ub3RpZmAsIGBzbGF2ZV9jbnRgKSBhbmQgYHNsYXZlcy1cXHUwMDNlY291bnRgIGluIHRoZSBib25kaW5nIGRyaXZlciB0byBwcmV2ZW50IGRhdGEgcmFjZXMgYW5kIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2l0aCBjb25jdXJyZW50IHJlYWRlcnMuIFxcblxcblRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG8gbm90IGFsdGVyIGJ1ZmZlciBib3VuZHMgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LiBTaW5jZSB0aGUgcGF0Y2ggc3RyaWN0bHkgYWRkcmVzc2VzIGNvbmN1cnJlbmN5L2RhdGEgcmFjZXMgd2l0aG91dCBleHBvc2luZyBvciB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjIyMGI4MTI3YmY0ZDhhNzU5MWI5NGE1ZmNiZWMxNmRhNjk1YzJiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjA5OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG5pbmRleCA4MzlmNzQ4MmRjMTgyLi5kMmZiNjdhNDdjZjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmNcbkBAIC04NzUsNyArODc1LDcgQEAgc3RhdGljIGludCBybGJfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbiBcbiBcdC8qIHJlZ2lzdGVyIHRvIHJlY2VpdmUgQVJQcyAqL1xuLVx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gcmxiX2FycF9yZWN2O1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIHJsYl9hcnBfcmVjdik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IGVmOWViMGM1M2M2NjEuLjk0N2Q5MmE2NjliNjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTI0NSw3ICsxMjQ1LDcgQEAgc3RhdGljIHZvaWQgYm9uZF9wZWVyX25vdGlmeV9tYXlfZXZlbnRzKHN0cnVjdCBib25kaW5nICpib25kLCBib29sIGZvcmNlKVxuIFx0fVxuIFxuIFx0aWYgKG5vdGlmaWVkIHx8IGZvcmNlKVxuLVx0XHRib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZi0tO1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmLCBib25kLVx1MDAzZXNlbmRfcGVlcl9ub3RpZiAtIDEpO1xuIH1cbiBcbiAvKipcbkBAIC0yMjg0LDcgKzIyODQsNyBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbiBcdFx0fVxuIFx0fVxuIFxuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQrKztcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQsIGJvbmQtXHUwMDNlc2xhdmVfY250ICsgMSk7XG4gXHRuZXRkZXZfY29tcHV0ZV9tYXN0ZXJfdXBwZXJfZmVhdHVyZXMoYm9uZC1cdTAwM2VkZXYsIHRydWUpO1xuIFx0Ym9uZF9zZXRfY2Fycmllcihib25kKTtcbiBcbkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBzdGF0aWMgaW50IF9fYm9uZF9yZWxlYXNlX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXG4gXHR1bmJsb2NrX25ldHBvbGxfdHgoKTtcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuLVx0Ym9uZC1cdTAwM2VzbGF2ZV9jbnQtLTtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzbGF2ZV9jbnQsIGJvbmQtXHUwMDNlc2xhdmVfY250IC0gMSk7XG4gXG4gXHRpZiAoIWJvbmRfaGFzX3NsYXZlcyhib25kKSkge1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0NIQU5HRUFERFIsIGJvbmQtXHUwMDNlZGV2KTtcbkBAIC00Mzg1LDEzICs0Mzg1LDEzIEBAIHN0YXRpYyBpbnQgYm9uZF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcbiBcdGlmIChib25kLVx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpIHsgIC8qIGFycCBpbnRlcnZhbCwgaW4gbWlsbGlzZWNvbmRzLiAqL1xuIFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yaywgMCk7XG4tXHRcdGJvbmQtXHUwMDNlcmVjdl9wcm9iZSA9IGJvbmRfcmN2X3ZhbGlkYXRlO1xuK1x0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0fVxuIFxuIFx0aWYgKEJPTkRfTU9ERShib25kKSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhib25kLVx1MDAzZXdxLCBcdTAwMjZib25kLVx1MDAzZWFkX3dvcmssIDApO1xuIFx0XHQvKiByZWdpc3RlciB0byByZWNlaXZlIExBQ1BEVXMgKi9cbi1cdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gYm9uZF8zYWRfbGFjcGR1X3JlY3Y7XG4rXHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBib25kXzNhZF9sYWNwZHVfcmVjdik7XG4gXHRcdGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oYm9uZCwgMSk7XG4gXG4gXHRcdGJvbmRfZm9yX2VhY2hfc2xhdmUoYm9uZCwgc2xhdmUsIGl0ZXIpXG5AQCAtNDQxMyw3ICs0NDEzLDcgQEAgc3RhdGljIGludCBib25kX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XG4gXG4gXHRib25kX3dvcmtfY2FuY2VsX2FsbChib25kKTtcbi1cdGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmID0gMDtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VzZW5kX3BlZXJfbm90aWYsIDApO1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXJlY3ZfcHJvYmUsIE5VTEwpO1xuIFxuIFx0LyogV2FpdCBmb3IgYW55IGluLWZsaWdodCBSWCBoYW5kbGVycyAqL1xuQEAgLTUxMTgsNyArNTExOCw3IEBAIHN0YXRpYyB2b2lkIGJvbmRfc2tpcF9zbGF2ZShzdHJ1Y3QgYm9uZF91cF9zbGF2ZSAqc2xhdmVzLFxuIFx0XHRpZiAoc2tpcHNsYXZlID09IHNsYXZlcy1cdTAwM2VhcnJbaWR4XSkge1xuIFx0XHRcdHNsYXZlcy1cdTAwM2VhcnJbaWR4XSA9XG4gXHRcdFx0XHRzbGF2ZXMtXHUwMDNlYXJyW3NsYXZlcy1cdTAwM2Vjb3VudCAtIDFdO1xuLVx0XHRcdHNsYXZlcy1cdTAwM2Vjb3VudC0tO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2xhdmVzLVx1MDAzZWNvdW50LCBzbGF2ZXMtXHUwMDNlY291bnQgLSAxKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXG5pbmRleCAzNmI4ZDg5Mzg3ZWU1Li45ZWZhZGVmZjZhMjIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTExNDcsMTEgKzExNDcsMTEgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9hcnBfaW50ZXJ2YWxfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHQgKi9cbiBcdFx0aWYgKCFuZXd2YWwtXHUwMDNldmFsdWUpIHtcbiBcdFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKVxuLVx0XHRcdFx0Ym9uZC1cdTAwM2VyZWN2X3Byb2JlID0gTlVMTDtcbitcdFx0XHRcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VyZWN2X3Byb2JlLCBOVUxMKTtcbiBcdFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0LyogYXJwX3ZhbGlkYXRlIGNhbiBiZSBzZXQgb25seSBpbiBhY3RpdmUtYmFja3VwIG1vZGUgKi9cbi1cdFx0XHRib25kLVx1MDAzZXJlY3ZfcHJvYmUgPSBib25kX3Jjdl92YWxpZGF0ZTtcbitcdFx0XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcmVjdl9wcm9iZSwgYm9uZF9yY3ZfdmFsaWRhdGUpO1xuIFx0XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZib25kLVx1MDAzZW1paV93b3JrKTtcbiBcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoYm9uZC1cdTAwM2V3cSwgXHUwMDI2Ym9uZC1cdTAwM2VhcnBfd29yaywgMCk7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjI0LjI3NjQ0NTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxNzA5NjMzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRnV6emluZyBBc3Nlc3NtZW50IGZvciBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgZ290IGEgcGF0Y2ggdG91Y2hpbmcgdGhlIGJvbmRpbmcgZHJpdmVyIGZpbGVzIOKAkyBgYm9uZF9hbGIuY2AsIGBib25kX21haW4uY2AsIGFuZCBgYm9uZF9vcHRpb25zLmNgLiBMb29rcyBsaWtlIGl0J3MgY29udmVydGluZyBzb21lIHBsYWluIGFzc2lnbm1lbnRzIHRvIGBXUklURV9PTkNFKC4uLilgIGNhbGxzIGZvciBmaWVsZHMgbGlrZSBgYm9uZC1cdTAwM2VyZWN2X3Byb2JlYCwgYGJvbmQtXHUwMDNlc2VuZF9wZWVyX25vdGlmYCwgYGJvbmQtXHUwMDNlc2xhdmVfY250YCwgYW5kIGBzbGF2ZXMtXHUwMDNlY291bnRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBjb25jdXJyZW5jeSDigJMgZGF0YSByYWNlcywgbGlrZWx5IGZvciBLQ1NBTiBwdXJwb3NlcyBvciB0byB0aWdodGVuIHVwIGNvbXBpbGVyIGJlaGF2aW9yIHdpdGggbG9ja2xlc3MgcmVhZGVycy5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcnVuIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogaXMgdGhpcyBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gQXJlIHdlIHRvdWNoaW5nIGtlcm5lbCBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHdoZXJlIHBhZGRpbmcgb3IgZmllbGRzIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZD8gQW55IG5ldyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgYWxsb2NhdGlvbnMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbWJlcnM/IEFueSBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeT9cblxuTm9wZSwgaXQgZG9lc24ndCBzZWVtIGxpa2UgYW55IG9mIHRob3NlIHBvdGVudGlhbCBpc3N1ZXMgYXJlIHByZXNlbnQuIFdlJ3JlIGRlYWxpbmcgd2l0aCAqZXhpc3RpbmcqIGZpZWxkcyB3aXRoaW4gYHN0cnVjdCBib25kaW5nYCBhbmQgYHN0cnVjdCBib25kX3VwX3NsYXZlYC4gVGhlIGFzc2lnbmVkIHZhbHVlcyBhcmUgZWl0aGVyIGNvbnN0YW50cyAoZnVuY3Rpb24gcG9pbnRlcnMgb3IgemVybykgb3Igc2ltcGxlIGFyaXRobWV0aWMgbWFuaXB1bGF0aW9ucyBvZiBleGlzdGluZyB2YWx1ZXMuIE5vIGZyZXNoIG1lbW9yeSBhbGxvY2F0aW9uIG9yIHBvdGVudGlhbCB1c2UtYmVmb3JlLWluaXRpYWxpemF0aW9uIHNpdHVhdGlvbnMuXG5cbk5vdywgbGV0J3Mgc3BlY2lmaWNhbGx5IGNvbnNpZGVyIHRoZSBhcHBsaWNhYmlsaXR5IG9mIEtNU0FOIHZlcnN1cyBLQVNBTi9LQ1NBTi4gVGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBjb25jdXJyZW5jeSBmaXhlcyBmb2N1c2VkIG9uIHRoZSBib25kaW5nIGRyaXZlcidzIGRhdGEgc3RydWN0dXJlcy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgKmludHJvZHVjZWQqIG9yICpleHBvc2VkKiBieSB0aGlzIHBhdGNoLiBLQVNBTiBhbmQgS0NTQU4gYXJlIHJlbGV2YW50IGJlY2F1c2UgdGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBkYXRhIHJhY2VzIGFuZCBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gS01TQU4sIG9uIHRoZSBvdGhlciBoYW5kLCBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5ICp1c2UqIGFuZCB0aGF0J3Mgbm90IHdoYXQgd2UncmUgbG9va2luZyBhdCBoZXJlLlxuXG5UaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiBgTmVlZHNLTVNBTmAgaXMgYGZhbHNlYC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgcmVzdWx0cyBhbmQgZ2V0IHRoZSBvdXRwdXQgcmVhZHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTAsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6NDMuNDQ3NDEyOTc1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVxcdTAwM2Vjb3VudGAgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgZGF0YSByYWNlcyBhbmQgY29tcGlsZXIgcmVvcmRlcmluZyB3aXRoIGNvbmN1cnJlbnQgcmVhZGVycy4gXFxuXFxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBwbGFpbiB3cml0ZXMgd2l0aCBXUklURV9PTkNFIGFubm90YXRpb25zIG9uIHN0cnVjdCBib25kaW5nIGZpZWxkcyAoYHJlY3ZfcHJvYmVgLCBgc2VuZF9wZWVyX25vdGlmYCwgYHNsYXZlX2NudGApIGFuZCBgc2xhdmVzLVxcdTAwM2Vjb3VudGAgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIHRvIHByZXZlbnQgZGF0YSByYWNlcyBhbmQgY29tcGlsZXIgcmVvcmRlcmluZyB3aXRoIGNvbmN1cnJlbnQgcmVhZGVycy4gXFxuXFxuVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkbyBub3QgYWx0ZXIgYnVmZmVyIGJvdW5kcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgc2VudCB0byB1c2Vyc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnkuIFNpbmNlIHRoZSBwYXRjaCBzdHJpY3RseSBhZGRyZXNzZXMgY29uY3VycmVuY3kvZGF0YSByYWNlcyB3aXRob3V0IGV4cG9zaW5nIG9yIHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[1] Phase: Succeeded StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 09:11:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 09:11:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2] Phase: Succeeded StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 12:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 12:51:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 09:12:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-31 09:11:55 +0000 UTC FinishedAt: 2026-08-31 09:12:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrw4v2/series-workflowrw4v2-convert-artifact-4017624922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-31 09:12:16 +0000 UTC FinishedAt: 2026-08-31 09:28:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-31 09:12:16 +0000 UTC FinishedAt: 2026-08-31 09:28:13 +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:*aed3e5c7-7294-4d62-b0f5-e867288b5858,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-workflowrw4v2/series-workflowrw4v2-convert-artifact-4017624922/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": "6dfdb53b-6d78-454d-94cc-bf545b327acc", "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-workflowrw4v2/series-workflowrw4v2-build-action-2359708680/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-31 09:12:16 +0000 UTC FinishedAt: 2026-08-31 09:28:03 +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:*aed3e5c7-7294-4d62-b0f5-e867288b5858,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-workflowrw4v2/series-workflowrw4v2-convert-artifact-4017624922/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": "6dfdb53b-6d78-454d-94cc-bf545b327acc", "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-workflowrw4v2/series-workflowrw4v2-build-action-2359708680/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-31 09:28:13 +0000 UTC FinishedAt: 2026-08-31 09:28:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-31 09:28:13 +0000 UTC FinishedAt: 2026-08-31 09:28:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-31 09:28:13 +0000 UTC FinishedAt: 2026-08-31 09:28:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-31 09:28:13 +0000 UTC FinishedAt: 2026-08-31 09:28:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrw4v2/series-workflowrw4v2-convert-artifact-3995653557/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-31 09:28:23 +0000 UTC FinishedAt: 2026-08-31 09:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-31 09:28:23 +0000 UTC FinishedAt: 2026-08-31 09:30:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6dfdb53b-6d78-454d-94cc-bf545b327acc,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-workflowrw4v2/series-workflowrw4v2-build-action-2359708680/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-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-31 09:30:11 +0000 UTC FinishedAt: 2026-08-31 09:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-31 09:30:11 +0000 UTC FinishedAt: 2026-08-31 09:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-31 09:30:11 +0000 UTC FinishedAt: 2026-08-31 09:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-31 09:30:11 +0000 UTC FinishedAt: 2026-08-31 09:46:43 +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:*aed3e5c7-7294-4d62-b0f5-e867288b5858,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-workflowrw4v2/series-workflowrw4v2-convert-artifact-3995653557/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": "426859fb-d2d5-4f20-86ed-63422c8576de", "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-workflowrw4v2/series-workflowrw4v2-build-action-2192901825/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-31 09:30:11 +0000 UTC FinishedAt: 2026-08-31 09:46: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:*aed3e5c7-7294-4d62-b0f5-e867288b5858,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-workflowrw4v2/series-workflowrw4v2-convert-artifact-3995653557/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": "426859fb-d2d5-4f20-86ed-63422c8576de", "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-workflowrw4v2/series-workflowrw4v2-build-action-2192901825/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-31 09:46:43 +0000 UTC FinishedAt: 2026-08-31 09:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-31 09:46:43 +0000 UTC FinishedAt: 2026-08-31 09:46:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-31 09:46:43 +0000 UTC FinishedAt: 2026-08-31 09:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-31 09:46:43 +0000 UTC FinishedAt: 2026-08-31 09:48:28 +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:*426859fb-d2d5-4f20-86ed-63422c8576de,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-workflowrw4v2/series-workflowrw4v2-build-action-2192901825/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-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 12:51:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 12:51:32 +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":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"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:*6dfdb53b-6d78-454d-94cc-bf545b327acc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*426859fb-d2d5-4f20-86ed-63422c8576de,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-workflowrw4v2/series-workflowrw4v2-build-action-2359708680/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-workflowrw4v2/series-workflowrw4v2-build-action-2192901825/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 09:48:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 09:48:43 +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":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"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-workflowrw4v2/series-workflowrw4v2-convert-artifact-3326275994/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 09:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 09:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-31 09:48:38 +0000 UTC FinishedAt: 2026-08-31 09:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-31 09:48:49 +0000 UTC FinishedAt: 2026-08-31 12:51:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrw4v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","bond_release","bond_alb_initialize","bond_update_slave_arr","bond_opt_tryset_rtnl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8455260b2e9c024d1872ac1c094793d55a7e537","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_CORE","INET"],"series_id":"7dc37d1f-e11f-4a49-b188-97d80f34d5a2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-31 09:48:49 +0000 UTC FinishedAt: 2026-08-31 12:51:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6dfdb53b-6d78-454d-94cc-bf545b327acc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*426859fb-d2d5-4f20-86ed-63422c8576de,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-workflowrw4v2/series-workflowrw4v2-build-action-2359708680/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-workflowrw4v2/series-workflowrw4v2-build-action-2192901825/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-workflowrw4v2/series-workflowrw4v2-convert-artifact-3326275994/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,}