Name: series-workflow8nv99 Phase: Succeeded StartedAt: 2026-06-29 17:52:12 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[0] Phase: Succeeded StartedAt: 2026-06-29 17:52:12 +0000 UTC FinishedAt: 2026-06-29 18:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 17:52:12 +0000 UTC FinishedAt: 2026-06-29 18:05:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "c5155fee-1eb8-4e0a-be81-565e7ba2e735" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_fill_info", "bond_option_mode_set", "bond_3ad_handle_link_change", "__bond_3ad_get_active_agg_info" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxOWVjOTlkNjZkMWRiYThiMTI0NzA3YzdjNjk5ZDE1Zjg3NzdjMjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDM6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5pbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuQEAgLTc2MCwxNCAmIzQzOzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIFx0cmV0dXJuIHZhbGlkO1xuIH1cbiBcbi1zdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuJiM0MztzdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhjb25zdCBzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIHtcbi1cdHN0cnVjdCBwb3J0ICpwb3J0O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwb3J0ICpwb3J0O1xuIFx0aW50IGFjdGl2ZSA9IDA7XG4gXG4gXHRmb3IgKHBvcnQgPSBhZ2ctXHUwMDNlbGFnX3BvcnRzOyBwb3J0O1xuIFx0ICAgICBwb3J0ID0gcG9ydC1cdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvcikge1xuLVx0XHRpZiAocG9ydC1cdTAwM2Vpc19lbmFibGVkKVxuJiM0MztcdFx0aWYgKFJFQURfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQpKVxuIFx0XHRcdGFjdGl2ZSYjNDM7JiM0Mzs7XG4gXHR9XG4gXG5AQCAtMjgwMSwxMSAmIzQzOzI4MDEsMTEgQEAgdm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuIFx0ICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuXG4gXHQgKi9cbiBcdGlmIChsaW5rID09IEJPTkRfTElOS19VUCkge1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xuJiM0MztcdFx0V1JJVEVfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQsIHRydWUpO1xuIFx0XHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCBmYWxzZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBsaW5rIGhhcyBmYWlsZWQgKi9cbi1cdFx0cG9ydC1cdTAwM2Vpc19lbmFibGVkID0gZmFsc2U7XG4mIzQzO1x0XHRXUklURV9PTkNFKHBvcnQtXHUwMDNlaXNfZW5hYmxlZCwgZmFsc2UpO1xuIFx0XHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCB0cnVlKTtcbiBcdH1cbiBcdGFnZyA9IF9fZ2V0X2ZpcnN0X2FnZyhwb3J0KTtcbkBAIC0yODc4LDE2ICYjNDM7Mjg3OCwyMCBAQCBpbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gICogUmV0dXJuczogICAwIG9uIHN1Y2Nlc3NcbiAgKiAgICAgICAgICBcdTAwM2MgMCBvbiBlcnJvclxuICAqL1xuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4mIzQzO2ludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbiB7XG4tXHRzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvciA9IE5VTEwsICp0bXA7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBhZF9zbGF2ZV9pbmZvICphZF9zbGF2ZV9pbmZvO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwb3J0ICpwb3J0O1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqaXRlcjtcbiBcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XG4tXHRzdHJ1Y3QgcG9ydCAqcG9ydDtcbiBcbiBcdGJvbmRfZm9yX2VhY2hfc2xhdmVfcmN1KGJvbmQsIHNsYXZlLCBpdGVyKSB7XG4tXHRcdHBvcnQgPSBcdTAwMjYoU0xBVkVfQURfSU5GTyhzbGF2ZSktXHUwMDNlcG9ydCk7XG4mIzQzO1x0XHRhZF9zbGF2ZV9pbmZvID0gU0xBVkVfQURfSU5GTyhzbGF2ZSk7XG4mIzQzO1x0XHRpZiAoIWFkX3NsYXZlX2luZm8pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0cG9ydCA9IFx1MDAyNmFkX3NsYXZlX2luZm8tXHUwMDNlcG9ydDtcbiBcdFx0dG1wID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtXHUwMDNlYWdncmVnYXRvcik7XG4gXHRcdGlmICh0bXAgXHUwMDI2XHUwMDI2IHRtcC1cdTAwM2Vpc19hY3RpdmUpIHtcbiBcdFx0XHRhZ2dyZWdhdG9yID0gdG1wO1xuQEAgLTI5MDcsNyAmIzQzOzI5MTEsNyBAQCBpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbiYjNDM7aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuIHtcbiBcdGludCByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbmluZGV4IDRhMTE1NzJmNjYzZDMxLi41NWQyZjhhNTM5ZDQ2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbkBAIC02ODYsNTMgJiM0Mzs2ODYsNTggQEAgc3RhdGljIHNpemVfdCBib25kX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcdFx0MDtcbiB9XG4gXG4tc3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXgoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4mIzQzO3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XG4tXHRpbnQgaWZpbmRleDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0c2xhdmUgPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShib25kKTtcbi1cdGlmaW5kZXggPSBzbGF2ZSA/IHNsYXZlLVx1MDAzZWlmaW5kZXggOiAwO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRyZXR1cm4gaWZpbmRleDtcbiYjNDM7XHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiYjNDM7XHRpZiAoc2xhdmUpXG4mIzQzO1x0XHRkZXYgPSBzbGF2ZS1cdTAwM2VkZXY7XG4mIzQzO1x0cmV0dXJuIGRldiA/IGRldi1cdTAwM2VpZmluZGV4IDogMDtcbiB9XG4gXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIHtcbi1cdHN0cnVjdCBib25kaW5nICpib25kID0gbmV0ZGV2X3ByaXYoYm9uZF9kZXYpO1xuLVx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xuLVx0aW50IGlmaW5kZXgsIGksIHRhcmdldHNfYWRkZWQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7XG4mIzQzO1x0aW50IGksIHRhcmdldHNfYWRkZWQsIG1paW1vbiwgbW9kZTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnByaW1hcnk7XG4gXHRzdHJ1Y3QgbmxhdHRyICp0YXJnZXRzO1xuLVx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xuIFxuLVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bW9kZSA9IFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5tb2RlKTtcbiYjNDM7XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NT0RFLCBtb2RlKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KGJvbmQpO1xuLVx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4tXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdGlmIChib25kX21vZGVfdXNlc19wcmltYXJ5KG1vZGUpKSB7XG4mIzQzO1x0XHRpbnQgaWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3UoYm9uZCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdH1cbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4mIzQzO1x0bWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbik7XG4mIzQzO1x0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX01JSU1PTiwgbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfVVBERUxBWSxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy51cGRlbGF5ICogYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5kb3duZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEVFUl9OT1RJRl9ERUxBWSxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5ICogYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnBlZXJfbm90aWZfZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9VU0VfQ0FSUklFUiwgMSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuLVx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCwgYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSlcbiYjNDM7XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0dGFyZ2V0cyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhza2IsIElGTEFfQk9ORF9BUlBfSVBfVEFSR0VUKTtcbkBAIC03NDEsOCAmIzQzOzc0NiwxMCBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHR0YXJnZXRzX2FkZGVkID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJPTkRfTUFYX0FSUF9UQVJHRVRTOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pIHtcbi1cdFx0XHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgaSwgYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pKVxuJiM0MztcdFx0X19iZTMyIHQgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0KSB7XG4mIzQzO1x0XHRcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCB0KSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0XHRcdHRhcmdldHNfYWRkZWQgPSAxO1xuIFx0XHR9XG5AQCAtNzUzLDExICYjNDM7NzYwLDEyIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGVsc2VcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gXG4tXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKVxuJiM0MztcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0FMTF9UQVJHRVRTLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmFycF9hbGxfdGFyZ2V0cykpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5AQCAtNzY3LDYgJiM0Mzs3NzUsOSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHR0YXJnZXRzX2FkZGVkID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJPTkRfTUFYX05TX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHQvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC5cbiYjNDM7XHRcdCAqIFdlIGFjY2VwdCB0aGlzIG1pbm9yIHJhY2UgZm9yIHRoZSBtb21lbnQuXG4mIzQzO1x0XHQgKi9cbiBcdFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfaW42X2FkZHIoc2tiLCBpLCBcdTAwMjZib25kLVx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTc4MCw5NyAmIzQzOzc5MSw5NyBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdG5sYV9uZXN0X2NhbmNlbChza2IsIHRhcmdldHMpO1xuICNlbmRpZlxuIFxuLVx0cHJpbWFyeSA9IHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2VwcmltYXJ5X3NsYXZlKTtcbiYjNDM7XHRwcmltYXJ5ID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XG4gXHRpZiAocHJpbWFyeSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QUklNQVJZLCBwcmltYXJ5LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4KSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9QUklNQVJZX1JFU0VMRUNULFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmZhaWxfb3Zlcl9tYWMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9YTUlUX0hBU0hfUE9MSUNZLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMueG1pdF9wb2xpY3kpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9SRVNFTkRfSUdNUCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5udW1fcGVlcl9ub3RpZikpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FMTF9TTEFWRVNfQUNUSVZFLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hbGxfc2xhdmVzX2FjdGl2ZSkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSU5fTElOS1MsXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMubWluX2xpbmtzKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9MUF9JTlRFUlZBTCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdHBhY2tldHNfcGVyX3NsYXZlID0gYm9uZC1cdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmU7XG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEFDS0VUU19QRVJfU0xBVkUsXG4tXHRcdFx0cGFja2V0c19wZXJfc2xhdmUpKVxuJiM0MztcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX0FDVElWRSxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3BfYWN0aXZlKSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX1JBVEUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9TRUxFQ1QsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9UTEJfRFlOQU1JQ19MQixcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLnRsYl9keW5hbWljX2xiKSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMudGxiX2R5bmFtaWNfbGIpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NSVNTRURfTUFYLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pc3NlZF9tYXgpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9DT1VQTEVEX0NPTlRST0wsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9CUk9BRENBU1RfTkVJR0gsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9MQUNQX1NUUklDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0KSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHtcbiYjNDM7XHRpZiAobW9kZSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHN0cnVjdCBhZF9pbmZvIGluZm87XG4gXG4gXHRcdGlmIChjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfdTE2KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU19QUklPLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpXG4mIzQzO1x0XHRcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSlcbiYjNDM7XHRcdFx0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiYjNDM7XHRcdFx0LyogU21hbGwgcmFjZSBoZXJlLCB0aGlzIGlzIGEgbWlub3IgdHJhZGUgb2ZmLiAqL1xuIFx0XHRcdGlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSxcbiBcdFx0XHRcdCAgICBFVEhfQUxFTiwgXHUwMDI2Ym9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzdGVtKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0XHR9XG4tXHRcdGlmICghYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBcdTAwMjZpbmZvKSkge1xuJiM0MztcdFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbiBcdFx0XHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuIFxuIFx0XHRcdG5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7XG5AQCAtODk4LDkgJiM0Mzs5MDksMTEgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gMDtcbiBcbiBubGFfcHV0X2ZhaWx1cmU6XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gLUVNU0dTSVpFO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTkzNCwxNCAmIzQzOzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFxuIFx0LyogZG9uJiMzOTt0IGNhY2hlIGFycF92YWxpZGF0ZSBiZXR3ZWVuIG1vZGVzICovXG4gXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSwgQk9ORF9BUlBfVkFMSURBVEVfTk9ORSk7XG4tXHRib25kLVx1MDAzZXBhcmFtcy5tb2RlID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcbiBcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcbiBcdCAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogdG8gMC5cbiBcdCAqL1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gMDtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciwgMCk7XG4gXG4gXHRpZiAoYm9uZC1cdTAwM2VkZXYtXHUwMDNlcmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7XG4gXHRcdGJvb2wgdXBkYXRlID0gZmFsc2U7XG5AQCAtMTcwNiw3ICYjNDM7MTcwNiw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIHtcbiBcdG5ldGRldl9kYmcoYm9uZC1cdTAwM2VkZXYsIFwmIzM0O1NldHRpbmcgTEFDUCBmYWxsYmFjayB0byAlcyAoJWxsdSlcXG5cJiMzNDssXG4gXHRcdCAgIG5ld3ZhbC1cdTAwM2VzdHJpbmcsIG5ld3ZhbC1cdTAwM2V2YWx1ZSk7XG4tXHRib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCA9IG5ld3ZhbC1cdTAwM2V2YWx1ZTtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0LCBuZXd2YWwtXHUwMDNldmFsdWUpO1xuIFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC0xOTI3LDcgJiM0MzsxOTI3LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciA9PSBuZXd2YWwtXHUwMDNldmFsdWUpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtXHUwMDNldmFsdWUpO1xuIFx0aWYgKGJvbmQtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiBcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvcilcbiBcdFx0XHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZib25kX2JjYXN0X25laWdoX2VuYWJsZWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmggYi9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG5pbmRleCAwNTU3MmMxOWUxNGI3YS4uZWY2NjdkZmYyOTcyOTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG5AQCAtMzAyLDggJiM0MzszMDIsOCBAQCB2b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG4gdm9pZCBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgdGltZW91dCk7XG4gdm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xuIHZvaWQgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGNoYXIgbGluayk7XG4taW50ICBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7XG4taW50ICBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4mIzQzO2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuJiM0MztpbnQgIF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7XG4gaW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHRcdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kaW5nLmggYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcbmluZGV4IDJjNTRhMzZhODQ3N2I5Li41OThkNTZiMWJjOTcwNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZGluZy5oXG5AQCAtMzQ1LDE0ICYjNDM7MzQ1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBib25kX21vZGVfdXNlc19wcmltYXJ5KGludCBtb2RlKVxuIFx0ICAgICAgIG1vZGUgPT0gQk9ORF9NT0RFX0FMQjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KHN0cnVjdCBib25kaW5nICpib25kKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF91c2VzX3ByaW1hcnkoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuIFx0cmV0dXJuIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoQk9ORF9NT0RFKGJvbmQpKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4mIzQzO3N0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxuIHtcbi1cdHN0cnVjdCBzbGF2ZSAqc2xhdmUgPSByY3VfZGVyZWZlcmVuY2VfcnRubChib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XG4gXG4gXHRyZXR1cm4gYm9uZF91c2VzX3ByaW1hcnkoYm9uZCkgXHUwMDI2XHUwMDI2IHNsYXZlID8gc2xhdmUtXHUwMDNlZGV2IDogTlVMTDtcbiB9XG5AQCAtNzAzLDcgJiM0Mzs3MDMsNyBAQCB2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTtcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcbiBpbnQgYm9uZF9uZXRsaW5rX2luaXQodm9pZCk7XG4gdm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKTtcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuJiM0MztzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuIGNvbnN0IGNoYXIgKmJvbmRfc2xhdmVfbGlua19zdGF0dXMoczggbGluayk7XG4gc3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXG4gXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE5ZWM5OWQ2NmQxZGJhOGIxMjQ3MDdjN2M2OTlkMTVmODc3N2MyOGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKQEAgLTc2MCwxNCAmIzQzOzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKQogCXJldHVybiB2YWxpZDsKIH0KIAotc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZykKJiM0MztzdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhjb25zdCBzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKQogewotCXN0cnVjdCBwb3J0ICpwb3J0OwomIzQzOwljb25zdCBzdHJ1Y3QgcG9ydCAqcG9ydDsKIAlpbnQgYWN0aXZlID0gMDsKIAogCWZvciAocG9ydCA9IGFnZy0mZ3Q7bGFnX3BvcnRzOyBwb3J0OwogCSAgICAgcG9ydCA9IHBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yKSB7Ci0JCWlmIChwb3J0LSZndDtpc19lbmFibGVkKQomIzQzOwkJaWYgKFJFQURfT05DRShwb3J0LSZndDtpc19lbmFibGVkKSkKIAkJCWFjdGl2ZSYjNDM7JiM0Mzs7CiAJfQogCkBAIC0yODAxLDExICYjNDM7MjgwMSwxMSBAQCB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspCiAJICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuCiAJICovCiAJaWYgKGxpbmsgPT0gQk9ORF9MSU5LX1VQKSB7Ci0JCXBvcnQtJmd0O2lzX2VuYWJsZWQgPSB0cnVlOwomIzQzOwkJV1JJVEVfT05DRShwb3J0LSZndDtpc19lbmFibGVkLCB0cnVlKTsKIAkJYWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgZmFsc2UpOwogCX0gZWxzZSB7CiAJCS8qIGxpbmsgaGFzIGZhaWxlZCAqLwotCQlwb3J0LSZndDtpc19lbmFibGVkID0gZmFsc2U7CiYjNDM7CQlXUklURV9PTkNFKHBvcnQtJmd0O2lzX2VuYWJsZWQsIGZhbHNlKTsKIAkJYWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgdHJ1ZSk7CiAJfQogCWFnZyA9IF9fZ2V0X2ZpcnN0X2FnZyhwb3J0KTsKQEAgLTI4NzgsMTYgJiM0MzsyODc4LDIwIEBAIGludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKICAqIFJldHVybnM6ICAgMCBvbiBzdWNjZXNzCiAgKiAgICAgICAgICAmbHQ7IDAgb24gZXJyb3IKICAqLwotaW50IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwKJiM0MztpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLAogCQkJCSAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKQogewotCXN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDsKJiM0MzsJY29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wOwomIzQzOwlzdHJ1Y3QgYWRfc2xhdmVfaW5mbyAqYWRfc2xhdmVfaW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7CiAJc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKIAlzdHJ1Y3Qgc2xhdmUgKnNsYXZlOwotCXN0cnVjdCBwb3J0ICpwb3J0OwogCiAJYm9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHsKLQkJcG9ydCA9ICZhbXA7KFNMQVZFX0FEX0lORk8oc2xhdmUpLSZndDtwb3J0KTsKJiM0MzsJCWFkX3NsYXZlX2luZm8gPSBTTEFWRV9BRF9JTkZPKHNsYXZlKTsKJiM0MzsJCWlmICghYWRfc2xhdmVfaW5mbykKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXBvcnQgPSAmYW1wO2FkX3NsYXZlX2luZm8tJmd0O3BvcnQ7CiAJCXRtcCA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LSZndDthZ2dyZWdhdG9yKTsKIAkJaWYgKHRtcCAmYW1wOyZhbXA7IHRtcC0mZ3Q7aXNfYWN0aXZlKSB7CiAJCQlhZ2dyZWdhdG9yID0gdG1wOwpAQCAtMjkwNyw3ICYjNDM7MjkxMSw3IEBAIGludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbykKJiM0MztpbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pCiB7CiAJaW50IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMKaW5kZXggNGExMTU3MmY2NjNkMzEuLjU1ZDJmOGE1MzlkNDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMKQEAgLTY4Niw1MyAmIzQzOzY4Niw1OCBAQCBzdGF0aWMgc2l6ZV90IGJvbmRfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCQkwOwogfQogCi1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKJiM0MztzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpCiB7Ci0JY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlOwotCWludCBpZmluZGV4OwomIzQzOwljb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDsKJiM0MzsJY29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlzbGF2ZSA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KGJvbmQpOwotCWlmaW5kZXggPSBzbGF2ZSA/IHNsYXZlLSZndDtpZmluZGV4IDogMDsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQlyZXR1cm4gaWZpbmRleDsKJiM0MzsJc2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwomIzQzOwlpZiAoc2xhdmUpCiYjNDM7CQlkZXYgPSBzbGF2ZS0mZ3Q7ZGV2OwomIzQzOwlyZXR1cm4gZGV2ID8gZGV2LSZndDtpZmluZGV4IDogMDsKIH0KIAogc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiB7Ci0Jc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7Ci0JdW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlOwotCWludCBpZmluZGV4LCBpLCB0YXJnZXRzX2FkZGVkOwomIzQzOwljb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTsKJiM0MzsJaW50IGksIHRhcmdldHNfYWRkZWQsIG1paW1vbiwgbW9kZTsKJiM0MzsJY29uc3Qgc3RydWN0IHNsYXZlICpwcmltYXJ5OwogCXN0cnVjdCBubGF0dHIgKnRhcmdldHM7Ci0Jc3RydWN0IHNsYXZlICpwcmltYXJ5OwogCi0JaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSkKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwltb2RlID0gUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5tb2RlKTsKJiM0MzsJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgbW9kZSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCi0JaWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChib25kKTsKLQlpZiAoaWZpbmRleCAmYW1wOyZhbXA7IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpCi0JCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwlpZiAoYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShtb2RlKSkgewomIzQzOwkJaW50IGlmaW5kZXggPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGJvbmQpOwomIzQzOwomIzQzOwkJaWYgKGlmaW5kZXggJmFtcDsmYW1wOyBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BQ1RJVkVfU0xBVkUsIGlmaW5kZXgpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwl9CiAKLQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBib25kLSZndDtwYXJhbXMubWlpbW9uKSkKJiM0MzsJbWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5taWltb24pOwomIzQzOwlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBtaWltb24pKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9VUERFTEFZLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLnVwZGVsYXkgKiBib25kLSZndDtwYXJhbXMubWlpbW9uKSkKJiM0MzsJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLmRvd25kZWxheSAqIGJvbmQtJmd0O3BhcmFtcy5taWltb24pKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuZG93bmRlbGF5KSAqIG1paW1vbikpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BFRVJfTk9USUZfREVMQVksCi0JCQlib25kLSZndDtwYXJhbXMucGVlcl9ub3RpZl9kZWxheSAqIGJvbmQtJmd0O3BhcmFtcy5taWltb24pKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMucGVlcl9ub3RpZl9kZWxheSkgKiBtaWltb24pKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1VTRV9DQVJSSUVSLCAxKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLCBib25kLSZndDtwYXJhbXMuYXJwX2ludGVydmFsKSkKJiM0MzsJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCwKJiM0MzsJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFycF9pbnRlcnZhbCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCXRhcmdldHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQVJQX0lQX1RBUkdFVCk7CkBAIC03NDEsOCAmIzQzOzc0NiwxMCBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAKIAl0YXJnZXRzX2FkZGVkID0gMDsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQk9ORF9NQVhfQVJQX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChib25kLSZndDtwYXJhbXMuYXJwX3RhcmdldHNbaV0pIHsKLQkJCWlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLSZndDtwYXJhbXMuYXJwX3RhcmdldHNbaV0pKQomIzQzOwkJX19iZTMyIHQgPSBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFycF90YXJnZXRzW2ldKTsKJiM0MzsKJiM0MzsJCWlmICh0KSB7CiYjNDM7CQkJaWYgKG5sYV9wdXRfYmUzMihza2IsIGksIHQpKQogCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCQkJdGFyZ2V0c19hZGRlZCA9IDE7CiAJCX0KQEAgLTc1MywxMSAmIzQzOzc2MCwxMiBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAJZWxzZQogCQlubGFfbmVzdF9jYW5jZWwoc2tiLCB0YXJnZXRzKTsKIAotCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsIGJvbmQtJmd0O3BhcmFtcy5hcnBfdmFsaWRhdGUpKQomIzQzOwlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLAomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUywKLQkJCWJvbmQtJmd0O3BhcmFtcy5hcnBfYWxsX3RhcmdldHMpKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuYXJwX2FsbF90YXJnZXRzKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKQEAgLTc2Nyw2ICYjNDM7Nzc1LDkgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJdGFyZ2V0c19hZGRlZCA9IDA7CiAJZm9yIChpID0gMDsgaSAmbHQ7IEJPTkRfTUFYX05TX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC4KJiM0MzsJCSAqIFdlIGFjY2VwdCB0aGlzIG1pbm9yIHJhY2UgZm9yIHRoZSBtb21lbnQuCiYjNDM7CQkgKi8KIAkJaWYgKCFpcHY2X2FkZHJfYW55KCZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7CiAJCQlpZiAobmxhX3B1dF9pbjZfYWRkcihza2IsIGksICZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLm5zX3RhcmdldHNbaV0pKQogCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwpAQCAtNzgwLDk3ICYjNDM7NzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7CiAjZW5kaWYKIAotCXByaW1hcnkgPSBydG5sX2RlcmVmZXJlbmNlKGJvbmQtJmd0O3ByaW1hcnlfc2xhdmUpOwomIzQzOwlwcmltYXJ5ID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtJmd0O3ByaW1hcnlfc2xhdmUpOwogCWlmIChwcmltYXJ5ICZhbXA7JmFtcDsKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWSwgcHJpbWFyeS0mZ3Q7ZGV2LSZndDtpZmluZGV4KSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9QUklNQVJZX1JFU0VMRUNULAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0ZBSUxfT1ZFUl9NQUMsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuZmFpbF9vdmVyX21hYykpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5mYWlsX292ZXJfbWFjKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfWE1JVF9IQVNIX1BPTElDWSwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy54bWl0X3BvbGljeSkpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy54bWl0X3BvbGljeSkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9SRVNFTkRfSUdNUCwKLQkJCWJvbmQtJmd0O3BhcmFtcy5yZXNlbmRfaWdtcCkpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5yZXNlbmRfaWdtcCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLm51bV9wZWVyX25vdGlmKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm51bV9wZWVyX25vdGlmKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQUxMX1NMQVZFU19BQ1RJVkUsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLm1pbl9saW5rcykpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5taW5fbGlua3MpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTFBfSU5URVJWQUwsCi0JCQlib25kLSZndDtwYXJhbXMubHBfaW50ZXJ2YWwpKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMubHBfaW50ZXJ2YWwpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlwYWNrZXRzX3Blcl9zbGF2ZSA9IGJvbmQtJmd0O3BhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTsKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEFDS0VUU19QRVJfU0xBVkUsCi0JCQlwYWNrZXRzX3Blcl9zbGF2ZSkpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZSkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX0xBQ1BfQUNUSVZFLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfYWN0aXZlKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfYWN0aXZlKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9SQVRFLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfZmFzdCkpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5sYWNwX2Zhc3QpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9TRUxFQ1QsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuYWRfc2VsZWN0KSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX3NlbGVjdCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1RMQl9EWU5BTUlDX0xCLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLnRsYl9keW5hbWljX2xiKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLnRsYl9keW5hbWljX2xiKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTUlTU0VEX01BWCwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy5taXNzZWRfbWF4KSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm1pc3NlZF9tYXgpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9DT1VQTEVEX0NPTlRST0wsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuY291cGxlZF9jb250cm9sKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmNvdXBsZWRfY29udHJvbCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0JST0FEQ0FTVF9ORUlHSCwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTEFDUF9TVFJJQ1QsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHsKJiM0MzsJaWYgKG1vZGUgPT0gQk9ORF9NT0RFXzgwMjNBRCkgewogCQlzdHJ1Y3QgYWRfaW5mbyBpbmZvOwogCiAJCWlmIChjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CiAJCQlpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfQUNUT1JfU1lTX1BSSU8sCi0JCQkJCWJvbmQtJmd0O3BhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpCiYjNDM7CQkJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX2FjdG9yX3N5c19wcmlvKSkpCiAJCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAkJCWlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLAotCQkJCQlib25kLSZndDtwYXJhbXMuYWRfdXNlcl9wb3J0X2tleSkpCiYjNDM7CQkJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSkKIAkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAomIzQzOwkJCS8qIFNtYWxsIHJhY2UgaGVyZSwgdGhpcyBpcyBhIG1pbm9yIHRyYWRlIG9mZi4gKi8KIAkJCWlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSwKIAkJCQkgICAgRVRIX0FMRU4sICZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpCiAJCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAJCX0KLQkJaWYgKCFib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGJvbmQsICZhbXA7aW5mbykpIHsKJiM0MzsJCWlmICghX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGJvbmQsICZhbXA7aW5mbykpIHsKIAkJCXN0cnVjdCBubGF0dHIgKm5lc3Q7CiAKIAkJCW5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7CkBAIC04OTgsOSAmIzQzOzkwOSwxMSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAl9CiAKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIDA7CiAKIG5sYV9wdXRfZmFpbHVyZToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIC1FTVNHU0laRTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKQEAgLTkzNCwxNCAmIzQzOzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLAogCiAJLyogZG9uJiMzOTt0IGNhY2hlIGFycF92YWxpZGF0ZSBiZXR3ZWVuIG1vZGVzICovCiAJV1JJVEVfT05DRShib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlLCBCT05EX0FSUF9WQUxJREFURV9OT05FKTsKLQlib25kLSZndDtwYXJhbXMubW9kZSA9IG5ld3ZhbC0mZ3Q7dmFsdWU7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm1vZGUsIG5ld3ZhbC0mZ3Q7dmFsdWUpOwogCiAJLyogV2hlbiBjaGFuZ2luZyBtb2RlLCB0aGUgYm9uZCBkZXZpY2UgaXMgZG93biwgd2UgbWF5IHJlZHVjZQogCSAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvcgogCSAqIGVuYWJsZWQgaW4gODAyM2FkIG1vZGUuIFRoZXJlZm9yZSwgb25seSBjbGVhciBicm9hZGNhc3RfbmVpZ2hib3IKIAkgKiB0byAwLgogCSAqLwotCWJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPSAwOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIDApOwogCiAJaWYgKGJvbmQtJmd0O2Rldi0mZ3Q7cmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7CiAJCWJvb2wgdXBkYXRlID0gZmFsc2U7CkBAIC0xNzA2LDcgJiM0MzsxNzA2LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiB7CiAJbmV0ZGV2X2RiZyhib25kLSZndDtkZXYsICYjMzQ7U2V0dGluZyBMQUNQIGZhbGxiYWNrIHRvICVzICglbGx1KVxuJiMzNDssCiAJCSAgIG5ld3ZhbC0mZ3Q7c3RyaW5nLCBuZXd2YWwtJmd0O3ZhbHVlKTsKLQlib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QgPSBuZXd2YWwtJmd0O3ZhbHVlOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3BhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLSZndDt2YWx1ZSk7CiAJYm9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7CiAKIAlyZXR1cm4gMDsKQEAgLTE5MjcsNyAmIzQzOzE5MjcsNyBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJaWYgKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPT0gbmV3dmFsLSZndDt2YWx1ZSkKIAkJcmV0dXJuIDA7CiAKLQlib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLSZndDt2YWx1ZTsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtJmd0O3ZhbHVlKTsKIAlpZiAoYm9uZC0mZ3Q7ZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfVVApIHsKIAkJaWYgKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpCiAJCQlzdGF0aWNfYnJhbmNoX2luYygmYW1wO2JvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaAppbmRleCAwNTU3MmMxOWUxNGI3YS4uZWY2NjdkZmYyOTcyOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaApAQCAtMzAyLDggJiM0MzszMDIsOCBAQCB2b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7CiB2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KTsKIHZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTsKIHZvaWQgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGNoYXIgbGluayk7Ci1pbnQgIGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTsKLWludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLAomIzQzO2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pOwomIzQzO2ludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLAogCQkJCSAgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7CiBpbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJCQkgc3RydWN0IHNsYXZlICpzbGF2ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kaW5nLmggYi9pbmNsdWRlL25ldC9ib25kaW5nLmgKaW5kZXggMmM1NGEzNmE4NDc3YjkuLjU5OGQ1NmIxYmM5NzA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9ib25kaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZGluZy5oCkBAIC0zNDUsMTQgJiM0MzszNDUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoaW50IG1vZGUpCiAJICAgICAgIG1vZGUgPT0gQk9ORF9NT0RFX0FMQjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KHN0cnVjdCBib25kaW5nICpib25kKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIHsKIAlyZXR1cm4gYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShCT05EX01PREUoYm9uZCkpOwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIHsKLQlzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwogCiAJcmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpICZhbXA7JmFtcDsgc2xhdmUgPyBzbGF2ZS0mZ3Q7ZGV2IDogTlVMTDsKIH0KQEAgLTcwMyw3ICYjNDM7NzAzLDcgQEAgdm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldik7CiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTsKIGludCBib25kX25ldGxpbmtfaW5pdCh2b2lkKTsKIHZvaWQgYm9uZF9uZXRsaW5rX2Zpbmkodm9pZCk7Ci1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpOwomIzQzO3N0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCk7CiBjb25zdCBjaGFyICpib25kX3NsYXZlX2xpbmtfc3RhdHVzKHM4IGxpbmspOwogc3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzQ5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBib25kaW5nIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFyb3VuZCBkYXRhIHJhY2VzIGFuZCBtZW1vcnkgb3JkZXJpbmcuIFRoZXkmIzM5O3ZlIHBlcHBlcmVkIHRoZSBjb2RlIHdpdGggYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBmb3IgdmFyaW91cyBmaWVsZHMsIGxpa2UgdGhvc2UgaW4gYGJvbmQtJmd0O3BhcmFtc2AgYW5kIGBwb3J0LSZndDtpc19lbmFibGVkYC4gVGhleSBhbHNvIHNlZW0gdG8gaGF2ZSBtb2RpZmllZCBmdW5jdGlvbiBzaWduYXR1cmVzIHRvIHVzZSBgY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmRgIG1vcmUgY29uc2lzdGVudGx5LCB3aGljaCBtYWtlcyBzZW5zZSBmcm9tIGEgZGF0YSBzYWZldHkgcGVyc3BlY3RpdmUuCgpUaGUgc2lnbmlmaWNhbnQgY2hhbmdlcyBhcmUgaW4gYGJvbmRfbmV0bGluay5jYCwgd2hlcmUgYGJvbmRfZmlsbF9pbmZvYCBoYXMgYmVlbiB1cGRhdGVkLiBJIG5vdGljZSB0aGV5JiMzOTt2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYFJFQURfT05DRSgpYCB3aGVuIHJlYWRpbmcgYGJvbmQtJmd0O3BhcmFtc2AgZmllbGRzLiBBbmQsIHRoZSBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4YCBmdW5jdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1YCwgd2hpY2ggbGV2ZXJhZ2VzIGByY3VfZGVyZWZlcmVuY2VgIGluc3RlYWQgb2YgdGhlIG1vcmUgdHJhZGl0aW9uYWwgbG9jay1yZWFkLXVubG9jayBhcHByb2FjaC4KClRoaXMgaXNuJiMzOTt0ICpqdXN0KiBhIGNvc21ldGljIGNoYW5nZTsgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZXNlIG1vZGlmaWNhdGlvbnMgZXhwbGljaXRseSBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IHVzaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAsIHRoZXkmIzM5O3JlIHRlbGxpbmcgdGhlIGNvbXBpbGVyIHRvIHJlc3BlY3QgbWVtb3J5IG9yZGVyaW5nLCB3aGljaCBpcyBjcml0aWNhbCBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuIEFkZGl0aW9uYWxseSwgdGhlIGV4cGxpY2l0IFJDVSBsb2NraW5nIGluIGBib25kX2ZpbGxfaW5mb2AgcHJvdmlkZXMgYSBtb3JlIHJvYnVzdCBtZWFucyBvZiBwcm90ZWN0aW5nIHNoYXJlZCBkYXRhIGR1cmluZyByZWFkcy4gSW4gZXNzZW5jZSwgdGhleSYjMzk7cmUgc2FjcmlmaWNpbmcgc29tZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBpbiBmYXZvciBvZiBwcmV2ZW50aW5nIHRob3NlIGRyZWFkZWQgZGF0YSByYWNlcy4KClNwZWNpZmljYWxseSwgbG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IHRoZXkgcHJvdmlkZWQgZnJvbSBgYm9uZF9maWxsX2luZm9gOiBUaGUgYWRkaXRpb24gb2YgYHJjdV9yZWFkX2xvY2soKWAgYXQgdGhlIGJlZ2lubmluZyBhbmQgdGhlIHVzZSBvZiBgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5tb2RlKWAgaXMgdGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UuIFRoZSBmdW5jdGlvbiBhbHNvIHVzZXMgUkNVIHRvIHJldHJpZXZlIHRoZSBwcmltYXJ5IHNsYXZlJiMzOTtzIGludGVyZmFjZSBpbmRleC4gU28sIGBib25kX2ZpbGxfaW5mb2AgaXMgKmRlZmluaXRlbHkqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCgpHaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgaW4gZHVtcGluZyBib25kaW5nIGRldmljZSBpbmZvIHZpYSBuZXRsaW5rLCB3aGljaCBpcyBlYXNpbHkgdGVzdGFibGUgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgdGhpcyB3YXJyYW50cyBzZXJpb3VzIHNjcnV0aW55LiBGaXhpbmcgZGF0YSByYWNlcyBhbmQgaW50cm9kdWNpbmcgUkNVIGxvY2tpbmcgKmFsd2F5cyogbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlcmUmIzM5O3MgYSByaXNrIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzIGlmIHRoZSBSQ1UgbG9ja2luZyBpc24mIzM5O3QgaGFuZGxlZCBjb3JyZWN0bHkuIEZvciBpbnN0YW5jZSwgaXMgdGhlIHVubG9jayBoYW5kbGVkIGNvbnNpc3RlbnRseSBpbiBhbGwgZXJyb3IgcGF0aHM/IEl0IGxvb2tzIGxpa2UgdGhlIGBnb3RvIG5sYV9wdXRfZmFpbHVyZWAgc2hvdWxkIGhhbmRsZSB0aG9zZS4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGBncmVwcGVyYCB0byBzZWUgZXhhY3RseSB3aGVyZSBgYm9uZF9maWxsX2luZm9gIGlzIHVzZWQuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JvbmRfZmlsbF9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz02ODk9c3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtNjk5LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzo3MDA6c3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy03MDEtXHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz05ODU9c3RydWN0IHJ0bmxfbGlua19vcHMgYm9uZF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtOTk0LVx0LmdldF9zaXplXHRcdD0gYm9uZF9nZXRfc2l6ZSxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM6OTk1Olx0LmZpbGxfaW5mb1x0XHQ9IGJvbmRfZmlsbF9pbmZvLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy05OTYtXHQuZ2V0X251bV90eF9xdWV1ZXNcdD0gYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQ2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0bGluayBJbnRlcmZhY2UgZm9yIEJvbmRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBib25kaW5nLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgaG9va3MgYXJlIHBhcnQgb2YgYHJ0bmxfbGlua19vcHNgLiBUaGF0IG1ha2VzIHNlbnNlOyBhbnl0aGluZyBsaW5rLXJlbGF0ZWQgcHJvYmFibHkgbGl2ZXMgaW4gdGhlcmUuIEFuZCBpZiBpdCYjMzk7cyB0aGVyZSwgdGhlbiBpdOKAmXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHZpYSB0aG9zZSBzdGFuZGFyZCBgUlRNX05FV0xJTktgIGFuZCBgUlRNX0dFVExJTktgIG5ldGxpbmsgbWVzc2FnZXMuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIHRoZSBiaWcgb25lLCBidXQgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaW4gdGhlIGJvbmRpbmcgZHJpdmVyJiMzOTtzIEtjb25maWcgb3IgTWFrZWZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJJiMzOTtsbCBnZXQgdGhhdCBzb3J0ZWQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSAmIzQzOz0gYm9uZGluZy5vXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQm9uZGluZyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYEJPTkRJTkdgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0byBleGFtaW5lIGZ1cnRoZXIuIE15IGluaXRpYWwgc2NhbiBoYXMgdHVybmVkIHVwIGEgaGFuZGZ1bCB0aGF0IHdhcnJhbnQgYSBkZWVwZXIgZGl2ZS4gVGhlc2UgaW5jbHVkZTogYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYCwgYGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYF9fYWdnX2FjdGl2ZV9wb3J0c2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgLCBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgLgoKSSYjMzk7bSB0aGlua2luZyBgYm9uZF9maWxsX2luZm9gIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGludm9sdmVkIGluIGR1bXBpbmcgbGluayBpbmZvIHN1Z2dlc3RzIGl0JiMzOTtzIG5vdCBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGggbGlrZSwgc2F5LCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFzb24gYWJvdXQuIFRoZSBzZXR0aW5nIGZ1bmN0aW9ucyAoYGJvbmRfb3B0aW9uX21vZGVfc2V0YCwgYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAsIGBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0YCkgYWxzbyBsb29rIHByb21pc2luZywgYXMgZG8gIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgIGJlY2F1c2UgaXQmIzM5O3MgaGFuZGxpbmcgbGluayBjaGFuZ2VzLiBUaGVuIEkmIzM5O20gYWxzbyBsb29raW5nIGF0IHRoZSBgX19hZ2dfYWN0aXZlX3BvcnRzYCwgYW5kIGhvdyBpdCB3b3JrcyB3aXRoIGBfX2FnZ191c2FibGVfcG9ydHNgLCBhbmQgYGFkX2FnZ19zZWxlY3Rpb25fbG9naWNgLgoKVG8gcmVmaW5lIHRoZSBsaXN0LCBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgZWFjaCBmdW5jdGlvbiBhbmQgY29uZmlybSBpdHMgcm9sZSBhbmQgaW1wYWN0LiBMZXQmIzM5O3Mgc2VlLi4uCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgYm9uZF9maWxsX2luZm9gIGlzIGluZGVlZCBjYWxsZWQgZm9yIG5ldGxpbmsgZHVtcHMuIGBib25kX29wdGlvbl9tb2RlX3NldGAgaGFuZGxlcyBzZXR0aW5nIHRoZSBtb2RlLiBgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0YCBkZWFscyB3aXRoIHNldHRpbmcgdGhlIGBsYWNwX3N0cmljdGAgb3B0aW9uIGFuZCBgYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldGAgc2V0cyB0aGUgYGJyb2FkY2FzdF9uZWlnaGAgb3B0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgLiBUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6CgpgYm9uZF9maWxsX2luZm9gCmBib25kX29wdGlvbl9tb2RlX3NldGAKYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAKYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgCmBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgCmBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hZ2dfYWN0aXZlX3BvcnRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTc0OD1zdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy03NjItXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6NzYzOnN0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Nzk0PXN0YXRpYyB1MzIgX19nZXRfYWdnX2JhbmR3aWR0aChzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy03OTUte1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjc5NjpcdGludCBucG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzk3LVx0dTMyIGJhbmR3aWR0aCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTE3MzY9c3RhdGljIHN0cnVjdCBhZ2dyZWdhdG9yICphZF9hZ2dfc2VsZWN0aW9uX3Rlc3Qoc3RydWN0IGFnZ3JlZ2F0b3IgKmJlc3QsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTAtXHRjYXNlIEJPTkRfQURfQ09VTlQ6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTc5MTpcdFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhjdXJyKSBcdTAwM2UgX19hZ2dfYWN0aXZlX3BvcnRzKGJlc3QpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTItXHRcdFx0cmV0dXJuIGN1cnI7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5My1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxNzk0Olx0XHRpZiAoX19hZ2dfYWN0aXZlX3BvcnRzKGN1cnIpIFx1MDAzYyBfX2FnZ19hY3RpdmVfcG9ydHMoYmVzdCkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5NS1cdFx0XHRyZXR1cm4gYmVzdDtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTg2Mz1zdGF0aWMgdm9pZCBhZF9hZ2dfc2VsZWN0aW9uX2xvZ2ljKHN0cnVjdCBhZ2dyZWdhdG9yICphZ2csXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4ODEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTg4MjpcdFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhhZ2cpIFx1MDAyNlx1MDAyNiBhZ2dfZGV2aWNlX3VwKGFnZykpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTg4My1cdFx0XHRiZXN0ID0gYWRfYWdnX3NlbGVjdGlvbl90ZXN0KGJlc3QsIGFnZyk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTMtXHRcdGlmIChhY3RpdmUgXHUwMDI2XHUwMDI2IGFjdGl2ZS1cdTAwM2VsYWdfcG9ydHMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTg5NDpcdFx0ICAgIF9fYWdnX2FjdGl2ZV9wb3J0cyhhY3RpdmUpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTUtXHRcdCAgICAoX19hZ2dfaGFzX3BhcnRuZXIoYWN0aXZlKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMzI2PXZvaWQgYm9uZF8zYWRfdW5iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI0NjAtXHRcdFx0XHR0ZW1wX2FnZ3JlZ2F0b3ItXHUwMDNlbnVtX29mX3BvcnRzLS07XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ2MTpcdFx0XHRcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHModGVtcF9hZ2dyZWdhdG9yKSA9PSAwKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ2Mi1cdFx0XHRcdFx0c2VsZWN0X25ld19hY3RpdmVfYWdnID0gdGVtcF9hZ2dyZWdhdG9yLVx1MDAzZWlzX2FjdGl2ZTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjgzOT1pbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTQtXHRcdGlmICgoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QgPyBfX2FnZ191c2FibGVfcG9ydHMoYWN0aXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4NTU6XHRcdFx0XHRcdDogX19hZ2dfYWN0aXZlX3BvcnRzKGFjdGl2ZSkpIFx1MDAzY1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTYtXHRcdCAgICBib25kLVx1MDAzZXBhcmFtcy5taW5fbGlua3MpIHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Mjg4MT1pbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTA1LVx0YWRfaW5mby1cdTAwM2VhZ2dyZWdhdG9yX2lkID0gYWdncmVnYXRvci1cdTAwM2VhZ2dyZWdhdG9yX2lkZW50aWZpZXI7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkwNjpcdGFkX2luZm8tXHUwMDNlcG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkwNy1cdGFkX2luZm8tXHUwMDNlYWN0b3Jfa2V5ID0gYWdncmVnYXRvci1cdTAwM2VhY3Rvcl9vcGVyX2FnZ3JlZ2F0b3Jfa2V5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgKioKCk9rYXksIHNvIHRoaXMgYF9fYWdnX2FjdGl2ZV9wb3J0c2AgZnVuY3Rpb24gaXMgdXNlZCBxdWl0ZSBhIGJpdCwgYW5kIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMuIExldCYjMzk7cyBpbmNsdWRlIGZ1bmN0aW9ucyBsaWtlIGBib25kX2ZpbGxfaW5mb2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgLCBhbmQgYF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb2AgaW4gbXkgcmV2aWV3IG9mIHRoZSBmdW5jdGlvbi4KCk5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gSSYjMzk7bSBzZWVpbmcgaXMgYENPTkZJR19CT05ESU5HYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEJ1dCwgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBXYWl0LCBJIHNlZSB0aGF0IGBib25kX2ZpbGxfaW5mb2AgaGFzIGFuIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgIGNvbmRpdGlvbmFsIHdpdGhpbiBpdC4gRXZlbiB0aG91Z2ggYENPTkZJR19CT05ESU5HYCBhbGxvd3MgdGhlIGZpbGUgdG8gY29tcGlsZSwgdGhlIHByZXNlbmNlIG9mIHRoYXQgSVB2NiBjaGVjayBtYWtlcyBtZSB3YW50IHRvIGJlIGV4dHJhIGNhcmVmdWwuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZpbGUgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZpbGUgZG9lcyBub3QgZXhpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzgyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipLZXJuZWwgQ29uZmlnIEh1bnQqKgoKSG1tLCB3aGVyZSYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgZ2VuZXJhbCBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBCdXQgd2FpdCwgaXMgdGhlcmUgYm9uZGluZyBjb25maWd1cmF0aW9uPyBJJiMzOTttIGRyYXdpbmcgYSBibGFuayBvbiB3aGV0aGVyIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGFjdHVhbGx5ICpleGlzdHMqLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgZmlsZSBzdHJ1Y3R1cmUuIE5lZWQgdG8gdHJhY2sgZG93biB0aGUgbmV0d29yayBib25kaW5nIGNvbmZpZ3VyYXRpb24gS2NvbmZpZyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NDcKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgYEJPTkRJTkdgLiBZZXMsIHRoYXTigJlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgcGF0Y2guCgpJJiMzOTttIHNlZWluZyB0aGV5JiMzOTt2ZSBhZGRlZCBgUkVBRF9PTkNFYCBhbmQgYFdSSVRFX09OQ0VgIHRvIGBwb3J0LSZndDtpc19lbmFibGVkYCB3aXRoaW4gYF9fYWdnX2FjdGl2ZV9wb3J0c2AgYW5kIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgLiBTbWFydC4gVGhhdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBhZGRyZXNzIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXkmIzM5O3ZlIGFsc28gYXBwbGllZCBgUkVBRF9PTkNFYCB0byB2YXJpb3VzIGZpZWxkcyB3aXRoaW4gYGJvbmQtJmd0O3BhcmFtc2AgaW4gYGJvbmRfZmlsbF9pbmZvYCBhbmQgYGJvbmRfb3B0aW9uXypfc2V0YC4gRGVmaW5pdGVseSBtYWtpbmcgc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIGNvbnNpc3RlbnQuCgpUaGUgY2hhbmdlIHRvIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGlzIGludGVyZXN0aW5nOyByZW5hbWluZyBpdCB0byBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdWAgYW5kIHN3YXBwaW5nIGByY3VfcmVhZF9sb2NrKClgICYjNDM7IGByY3VfZGVyZWZlcmVuY2VfcnRubCgpYCBmb3IgYHJjdV9kZXJlZmVyZW5jZWAgaXMgc2lnbmlmaWNhbnQuIFRoYXQmIzM5O3MgYSBtb3ZlIGF3YXkgZnJvbSB0aGUgb2xkZXIgUkNVIHJlYWQgbG9ja2luZyBhcHByb2FjaC4gVGhleSYjMzk7cmUgdHJ5aW5nIHRvIHVzZSBgcmN1X2RlcmVmZXJlbmNlYCBtb3JlIGVmZmVjdGl2ZWx5LgoKQW5kIGFoLCB5ZXMsIHRoZXkmIzM5O3ZlICphZGRlZCogYHJjdV9yZWFkX2xvY2soKWAgdG8gYGJvbmRfZmlsbF9pbmZvYC4gVGhpcyBpcyB3aGVyZSB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgbGllczogSXQmIzM5O3MgZXhwbGljaXRseSBkZXNpZ25lZCB0byBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IGFkZGluZyBhbmQgbW9kaWZ5aW5nIFJDVSBsb2NraW5nIHdpdGhpbiBgYm9uZF9maWxsX2luZm9gLCB0aGV5IGFyZSB3b3JraW5nIHRvIGVuc3VyZSB0aGF0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBuZXRsaW5rIGluZm8gZmlsbGluZyBpcyBzYWZlLiBUaGUgcmVhc29uaW5nIGdpdmVuIGlzIHNvbGlkLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSwgYW5kIGVuc3VyZSB0aGF0IG5vIHJlZ3Jlc3Npb25zIG9jY3VyIHdpdGggdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuCgpUaGUgbWFpbiBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLCBpbiBteSBvcGluaW9uLCBhcmUgYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX21vZGVfc2V0YCwgYGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZWAsIGFuZCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYC4gVGhlc2UgYXJlIHRoZSBrZXkgdG91Y2hwb2ludHMuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSBhcmVhcyB0aG9yb3VnaGx5IGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBvciBtaXNzZWQgbG9ja2luZyBzY2VuYXJpb3MuCgpMZXQmIzM5O3MgZ2V0IHRob3NlIHRlc3QgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowMzo1OS4wNDM0Nzc5MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3OTI0OTAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9maWxsX2luZm9cIixcbiAgICBcImJvbmRfb3B0aW9uX21vZGVfc2V0XCIsXG4gICAgXCJib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VcIixcbiAgICBcIl9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjAzOjU5LjA0MzQ4ODI0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxNTY4NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTllYzk5ZDY2ZDFkYmE4YjEyNDcwN2M3YzY5OWQxNWY4Nzc3YzI4ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcXG5pbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXFxuQEAgLTc2MCwxNCArNzYwLDE0IEBAIHN0YXRpYyBpbnQgX19hZ2dfdXNhYmxlX3BvcnRzKHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXFxuIFxcdHJldHVybiB2YWxpZDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZylcXG4rc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoY29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZylcXG4ge1xcbi1cXHRzdHJ1Y3QgcG9ydCAqcG9ydDtcXG4rXFx0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XFxuIFxcdGludCBhY3RpdmUgPSAwO1xcbiBcXG4gXFx0Zm9yIChwb3J0ID0gYWdnLVxcdTAwM2VsYWdfcG9ydHM7IHBvcnQ7XFxuIFxcdCAgICAgcG9ydCA9IHBvcnQtXFx1MDAzZW5leHRfcG9ydF9pbl9hZ2dyZWdhdG9yKSB7XFxuLVxcdFxcdGlmIChwb3J0LVxcdTAwM2Vpc19lbmFibGVkKVxcbitcXHRcXHRpZiAoUkVBRF9PTkNFKHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQpKVxcbiBcXHRcXHRcXHRhY3RpdmUrKztcXG4gXFx0fVxcbiBcXG5AQCAtMjgwMSwxMSArMjgwMSwxMSBAQCB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuIFxcdCAqIHNvbWUgb2YgaGUgYWRhcHRvcnMoY2UxMDAwLmxhbikgcmVwb3J0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKGxpbmsgPT0gQk9ORF9MSU5LX1VQKSB7XFxuLVxcdFxcdHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xcbitcXHRcXHRXUklURV9PTkNFKHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQsIHRydWUpO1xcbiBcXHRcXHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCBmYWxzZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qIGxpbmsgaGFzIGZhaWxlZCAqL1xcbi1cXHRcXHRwb3J0LVxcdTAwM2Vpc19lbmFibGVkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UocG9ydC1cXHUwMDNlaXNfZW5hYmxlZCwgZmFsc2UpO1xcbiBcXHRcXHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCB0cnVlKTtcXG4gXFx0fVxcbiBcXHRhZ2cgPSBfX2dldF9maXJzdF9hZ2cocG9ydCk7XFxuQEAgLTI4NzgsMTYgKzI4NzgsMjAgQEAgaW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbiAgKiBSZXR1cm5zOiAgIDAgb24gc3VjY2Vzc1xcbiAgKiAgICAgICAgICBcXHUwMDNjIDAgb24gZXJyb3JcXG4gICovXFxuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuK2ludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxcbiB7XFxuLVxcdHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcXG4rXFx0Y29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wO1xcbitcXHRzdHJ1Y3QgYWRfc2xhdmVfaW5mbyAqYWRfc2xhdmVfaW5mbztcXG4rXFx0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XFxuIFxcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XFxuLVxcdHN0cnVjdCBwb3J0ICpwb3J0O1xcbiBcXG4gXFx0Ym9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHtcXG4tXFx0XFx0cG9ydCA9IFxcdTAwMjYoU0xBVkVfQURfSU5GTyhzbGF2ZSktXFx1MDAzZXBvcnQpO1xcbitcXHRcXHRhZF9zbGF2ZV9pbmZvID0gU0xBVkVfQURfSU5GTyhzbGF2ZSk7XFxuK1xcdFxcdGlmICghYWRfc2xhdmVfaW5mbylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHBvcnQgPSBcXHUwMDI2YWRfc2xhdmVfaW5mby1cXHUwMDNlcG9ydDtcXG4gXFx0XFx0dG1wID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IpO1xcbiBcXHRcXHRpZiAodG1wIFxcdTAwMjZcXHUwMDI2IHRtcC1cXHUwMDNlaXNfYWN0aXZlKSB7XFxuIFxcdFxcdFxcdGFnZ3JlZ2F0b3IgPSB0bXA7XFxuQEAgLTI5MDcsNyArMjkxMSw3IEBAIGludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1pbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuK2ludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcXG5pbmRleCA0YTExNTcyZjY2M2QzMS4uNTVkMmY4YTUzOWQ0NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcXG5AQCAtNjg2LDUzICs2ODYsNTggQEAgc3RhdGljIHNpemVfdCBib25kX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4gXFx0XFx0MDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXgoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuK3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XFxuLVxcdGludCBpZmluZGV4O1xcbitcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcXG4rXFx0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTtcXG4gXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0c2xhdmUgPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShib25kKTtcXG4tXFx0aWZpbmRleCA9IHNsYXZlID8gc2xhdmUtXFx1MDAzZWlmaW5kZXggOiAwO1xcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0cmV0dXJuIGlmaW5kZXg7XFxuK1xcdHNsYXZlID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcXG4rXFx0aWYgKHNsYXZlKVxcbitcXHRcXHRkZXYgPSBzbGF2ZS1cXHUwMDNlZGV2O1xcbitcXHRyZXR1cm4gZGV2ID8gZGV2LVxcdTAwM2VpZmluZGV4IDogMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4ge1xcbi1cXHRzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTtcXG4tXFx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xcbi1cXHRpbnQgaWZpbmRleCwgaSwgdGFyZ2V0c19hZGRlZDtcXG4rXFx0Y29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7XFxuK1xcdGludCBpLCB0YXJnZXRzX2FkZGVkLCBtaWltb24sIG1vZGU7XFxuK1xcdGNvbnN0IHN0cnVjdCBzbGF2ZSAqcHJpbWFyeTtcXG4gXFx0c3RydWN0IG5sYXR0ciAqdGFyZ2V0cztcXG4tXFx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xcbiBcXG4tXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRtb2RlID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5tb2RlKTtcXG4rXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgbW9kZSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4tXFx0aWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChib25kKTtcXG4tXFx0aWYgKGlmaW5kZXggXFx1MDAyNlxcdTAwMjYgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQUNUSVZFX1NMQVZFLCBpZmluZGV4KSlcXG4tXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdGlmIChib25kX21vZGVfdXNlc19wcmltYXJ5KG1vZGUpKSB7XFxuK1xcdFxcdGludCBpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShib25kKTtcXG4rXFxuK1xcdFxcdGlmIChpZmluZGV4IFxcdTAwMjZcXHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXFxuK1xcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBib25kLVxcdTAwM2VwYXJhbXMubWlpbW9uKSlcXG4rXFx0bWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5taWltb24pO1xcbitcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBtaWltb24pKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9VUERFTEFZLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMudXBkZWxheSAqIGJvbmQtXFx1MDAzZXBhcmFtcy5taWltb24pKVxcbitcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMuZG93bmRlbGF5ICogYm9uZC1cXHUwMDNlcGFyYW1zLm1paW1vbikpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuZG93bmRlbGF5KSAqIG1paW1vbikpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BFRVJfTk9USUZfREVMQVksXFxuLVxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5ICogYm9uZC1cXHUwMDNlcGFyYW1zLm1paW1vbikpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMucGVlcl9ub3RpZl9kZWxheSkgKiBtaWltb24pKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1VTRV9DQVJSSUVSLCAxKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLCBib25kLVxcdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSlcXG4rXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCxcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHR0YXJnZXRzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FSUF9JUF9UQVJHRVQpO1xcbkBAIC03NDEsOCArNzQ2LDEwIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdHRhcmdldHNfYWRkZWQgPSAwO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQk9ORF9NQVhfQVJQX1RBUkdFVFM7IGkrKykge1xcbi1cXHRcXHRpZiAoYm9uZC1cXHUwMDNlcGFyYW1zLmFycF90YXJnZXRzW2ldKSB7XFxuLVxcdFxcdFxcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLVxcdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pKVxcbitcXHRcXHRfX2JlMzIgdCA9IFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pO1xcbitcXG4rXFx0XFx0aWYgKHQpIHtcXG4rXFx0XFx0XFx0aWYgKG5sYV9wdXRfYmUzMihza2IsIGksIHQpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFx0XFx0XFx0dGFyZ2V0c19hZGRlZCA9IDE7XFxuIFxcdFxcdH1cXG5AQCAtNzUzLDExICs3NjAsMTIgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRlbHNlXFxuIFxcdFxcdG5sYV9uZXN0X2NhbmNlbChza2IsIHRhcmdldHMpO1xcbiBcXG4tXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9WQUxJREFURSwgYm9uZC1cXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSkpXFxuK1xcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUyxcXG4tXFx0XFx0XFx0Ym9uZC1cXHUwMDNlcGFyYW1zLmFycF9hbGxfdGFyZ2V0cykpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX2FsbF90YXJnZXRzKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuQEAgLTc2Nyw2ICs3NzUsOSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHR0YXJnZXRzX2FkZGVkID0gMDtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJPTkRfTUFYX05TX1RBUkdFVFM7IGkrKykge1xcbitcXHRcXHQvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC5cXG4rXFx0XFx0ICogV2UgYWNjZXB0IHRoaXMgbWlub3IgcmFjZSBmb3IgdGhlIG1vbWVudC5cXG4rXFx0XFx0ICovXFxuIFxcdFxcdGlmICghaXB2Nl9hZGRyX2FueShcXHUwMDI2Ym9uZC1cXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XFxuIFxcdFxcdFxcdGlmIChubGFfcHV0X2luNl9hZGRyKHNrYiwgaSwgXFx1MDAyNmJvbmQtXFx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuQEAgLTc4MCw5NyArNzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XFxuICNlbmRpZlxcbiBcXG4tXFx0cHJpbWFyeSA9IHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XFxuK1xcdHByaW1hcnkgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XFxuIFxcdGlmIChwcmltYXJ5IFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QUklNQVJZLCBwcmltYXJ5LVxcdTAwM2VkZXYtXFx1MDAzZWlmaW5kZXgpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1BSSU1BUllfUkVTRUxFQ1QsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmZhaWxfb3Zlcl9tYWMpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5mYWlsX292ZXJfbWFjKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfWE1JVF9IQVNIX1BPTElDWSxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnhtaXRfcG9saWN5KSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1JFU0VORF9JR01QLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMucmVzZW5kX2lnbXApKVxcbitcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnJlc2VuZF9pZ21wKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTlVNX1BFRVJfTk9USUYsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5udW1fcGVlcl9ub3RpZikpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FMTF9TTEFWRVNfQUNUSVZFLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmFsbF9zbGF2ZXNfYWN0aXZlKSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMubWluX2xpbmtzKSlcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5taW5fbGlua3MpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTFBfSU5URVJWQUwsXFxuLVxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMubHBfaW50ZXJ2YWwpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRwYWNrZXRzX3Blcl9zbGF2ZSA9IGJvbmQtXFx1MDAzZXBhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTtcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BBQ0tFVFNfUEVSX1NMQVZFLFxcbi1cXHRcXHRcXHRwYWNrZXRzX3Blcl9zbGF2ZSkpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmUpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX0FDVElWRSxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX2FjdGl2ZSkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfYWN0aXZlKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9SQVRFLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX1NFTEVDVCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9UTEJfRFlOQU1JQ19MQixcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy50bGJfZHluYW1pY19sYikpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnRsYl9keW5hbWljX2xiKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTUlTU0VEX01BWCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5taXNzZWRfbWF4KSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMubWlzc2VkX21heCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0NPVVBMRURfQ09OVFJPTCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9CUk9BRENBU1RfTkVJR0gsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTEFDUF9TVFJJQ1QsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuLVxcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xcbitcXHRpZiAobW9kZSA9PSBCT05EX01PREVfODAyM0FEKSB7XFxuIFxcdFxcdHN0cnVjdCBhZF9pbmZvIGluZm87XFxuIFxcbiBcXHRcXHRpZiAoY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xcbiBcXHRcXHRcXHRpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfQUNUT1JfU1lTX1BSSU8sXFxuLVxcdFxcdFxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpXFxuK1xcdFxcdFxcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRcXHRcXHRpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfVVNFUl9QT1JUX0tFWSxcXG4tXFx0XFx0XFx0XFx0XFx0Ym9uZC1cXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKVxcbitcXHRcXHRcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbitcXHRcXHRcXHQvKiBTbWFsbCByYWNlIGhlcmUsIHRoaXMgaXMgYSBtaW5vciB0cmFkZSBvZmYuICovXFxuIFxcdFxcdFxcdGlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSxcXG4gXFx0XFx0XFx0XFx0ICAgIEVUSF9BTEVOLCBcXHUwMDI2Ym9uZC1cXHUwMDNlcGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpXFxuIFxcdFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlmICghYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBcXHUwMDI2aW5mbykpIHtcXG4rXFx0XFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXFx1MDAyNmluZm8pKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBubGF0dHIgKm5lc3Q7XFxuIFxcbiBcXHRcXHRcXHRuZXN0ID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FEX0lORk8pO1xcbkBAIC04OTgsOSArOTA5LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBubGFfcHV0X2ZhaWx1cmU6XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbmluZGV4IGU1OTBjOGRlZTg2ZTFlLi4zNmI4ZDg5Mzg3ZWU1ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbkBAIC05MzQsMTQgKzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbiBcXG4gXFx0LyogZG9uJ3QgY2FjaGUgYXJwX3ZhbGlkYXRlIGJldHdlZW4gbW9kZXMgKi9cXG4gXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlLCBCT05EX0FSUF9WQUxJREFURV9OT05FKTtcXG4tXFx0Ym9uZC1cXHUwMDNlcGFyYW1zLm1vZGUgPSBuZXd2YWwtXFx1MDAzZXZhbHVlO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5tb2RlLCBuZXd2YWwtXFx1MDAzZXZhbHVlKTtcXG4gXFxuIFxcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcXG4gXFx0ICogdGhlIGJvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCBpbiBib25kX2Nsb3NlKCkgaWYgYnJvYWRjYXN0X25laWdoYm9yXFxuIFxcdCAqIGVuYWJsZWQgaW4gODAyM2FkIG1vZGUuIFRoZXJlZm9yZSwgb25seSBjbGVhciBicm9hZGNhc3RfbmVpZ2hib3JcXG4gXFx0ICogdG8gMC5cXG4gXFx0ICovXFxuLVxcdGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPSAwO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIDApO1xcbiBcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZWRldi1cXHUwMDNlcmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7XFxuIFxcdFxcdGJvb2wgdXBkYXRlID0gZmFsc2U7XFxuQEAgLTE3MDYsNyArMTcwNiw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbiB7XFxuIFxcdG5ldGRldl9kYmcoYm9uZC1cXHUwMDNlZGV2LCBcXFwiU2V0dGluZyBMQUNQIGZhbGxiYWNrIHRvICVzICglbGx1KVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgbmV3dmFsLVxcdTAwM2VzdHJpbmcsIG5ld3ZhbC1cXHUwMDNldmFsdWUpO1xcbi1cXHRib25kLVxcdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QgPSBuZXd2YWwtXFx1MDAzZXZhbHVlO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLVxcdTAwM2V2YWx1ZSk7XFxuIFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE5MjcsNyArMTkyNyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPT0gbmV3dmFsLVxcdTAwM2V2YWx1ZSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVxcdTAwM2V2YWx1ZTtcXG4rXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtXFx1MDAzZXZhbHVlKTtcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gXFx0XFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpXFxuIFxcdFxcdFxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZib25kX2JjYXN0X25laWdoX2VuYWJsZWQpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaFxcbmluZGV4IDA1NTcyYzE5ZTE0YjdhLi5lZjY2N2RmZjI5NzI5NCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaFxcbkBAIC0zMDIsOCArMzAyLDggQEAgdm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICopO1xcbiB2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KTtcXG4gdm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xcbiB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspO1xcbi1pbnQgIGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcXG4taW50ICBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuK2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xcbitpbnQgIF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcXG4gaW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxcbiBcXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaCBiL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxcbmluZGV4IDJjNTRhMzZhODQ3N2I5Li41OThkNTZiMWJjOTcwNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9ib25kaW5nLmhcXG4rKysgYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcXG5AQCAtMzQ1LDE0ICszNDUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoaW50IG1vZGUpXFxuIFxcdCAgICAgICBtb2RlID09IEJPTkRfTU9ERV9BTEI7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4rc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxcbiB7XFxuIFxcdHJldHVybiBib25kX21vZGVfdXNlc19wcmltYXJ5KEJPTkRfTU9ERShib25kKSk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KHN0cnVjdCBib25kaW5nICpib25kKVxcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4ge1xcbi1cXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xcbiBcXG4gXFx0cmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpIFxcdTAwMjZcXHUwMDI2IHNsYXZlID8gc2xhdmUtXFx1MDAzZWRldiA6IE5VTEw7XFxuIH1cXG5AQCAtNzAzLDcgKzcwMyw3IEBAIHZvaWQgYm9uZF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpO1xcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcXG4gaW50IGJvbmRfbmV0bGlua19pbml0KHZvaWQpO1xcbiB2b2lkIGJvbmRfbmV0bGlua19maW5pKHZvaWQpO1xcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xcbitzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xcbiBjb25zdCBjaGFyICpib25kX3NsYXZlX2xpbmtfc3RhdHVzKHM4IGxpbmspO1xcbiBzdHJ1Y3QgYm9uZF92bGFuX3RhZyAqYm9uZF92ZXJpZnlfZGV2aWNlX3BhdGgoc3RydWN0IG5ldF9kZXZpY2UgKnN0YXJ0X2RldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmVuZF9kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjAzOjU5LjQ2NjAwNTU3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNTY3MDg4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZmlsbF9pbmZvXCIsXG4gICAgXCJib25kX29wdGlvbl9tb2RlX3NldFwiLFxuICAgIFwiYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlXCIsXG4gICAgXCJfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIGRyaXZlciBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UgYW5kIFJDVSBsb2NraW5nIGluIG5ldGxpbmsgaW5mbyBmaWxsaW5nLiBGdXp6aW5nIGNhbiB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBSQ1UgbG9ja2luZyBhbmQgZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHRoZSBib25kaW5nIG5ldGxpbmsgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE5ZWM5OWQ2NmQxZGJhOGIxMjQ3MDdjN2M2OTlkMTVmODc3N2MyOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuaW5kZXggYWNiYmEwOGRiZGZhZGEuLmI4ZTRiNGQ2OGRkNjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbkBAIC03NjAsMTQgKzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIFx0cmV0dXJuIHZhbGlkO1xuIH1cbiBcbi1zdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuK3N0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXG4ge1xuLVx0c3RydWN0IHBvcnQgKnBvcnQ7XG4rXHRjb25zdCBzdHJ1Y3QgcG9ydCAqcG9ydDtcbiBcdGludCBhY3RpdmUgPSAwO1xuIFxuIFx0Zm9yIChwb3J0ID0gYWdnLVx1MDAzZWxhZ19wb3J0czsgcG9ydDtcbiBcdCAgICAgcG9ydCA9IHBvcnQtXHUwMDNlbmV4dF9wb3J0X2luX2FnZ3JlZ2F0b3IpIHtcbi1cdFx0aWYgKHBvcnQtXHUwMDNlaXNfZW5hYmxlZClcbitcdFx0aWYgKFJFQURfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQpKVxuIFx0XHRcdGFjdGl2ZSsrO1xuIFx0fVxuIFxuQEAgLTI4MDEsMTEgKzI4MDEsMTEgQEAgdm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuIFx0ICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuXG4gXHQgKi9cbiBcdGlmIChsaW5rID09IEJPTkRfTElOS19VUCkge1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xuK1x0XHRXUklURV9PTkNFKHBvcnQtXHUwMDNlaXNfZW5hYmxlZCwgdHJ1ZSk7XG4gXHRcdGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHBvcnQsIGZhbHNlKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIGxpbmsgaGFzIGZhaWxlZCAqL1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSBmYWxzZTtcbitcdFx0V1JJVEVfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQsIGZhbHNlKTtcbiBcdFx0YWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgdHJ1ZSk7XG4gXHR9XG4gXHRhZ2cgPSBfX2dldF9maXJzdF9hZ2cocG9ydCk7XG5AQCAtMjg3OCwxNiArMjg3OCwyMCBAQCBpbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gICogUmV0dXJuczogICAwIG9uIHN1Y2Nlc3NcbiAgKiAgICAgICAgICBcdTAwM2MgMCBvbiBlcnJvclxuICAqL1xuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4raW50IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuIHtcbi1cdHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcbitcdGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcbitcdHN0cnVjdCBhZF9zbGF2ZV9pbmZvICphZF9zbGF2ZV9pbmZvO1xuK1x0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICppdGVyO1xuIFx0c3RydWN0IHNsYXZlICpzbGF2ZTtcbi1cdHN0cnVjdCBwb3J0ICpwb3J0O1xuIFxuIFx0Ym9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHtcbi1cdFx0cG9ydCA9IFx1MDAyNihTTEFWRV9BRF9JTkZPKHNsYXZlKS1cdTAwM2Vwb3J0KTtcbitcdFx0YWRfc2xhdmVfaW5mbyA9IFNMQVZFX0FEX0lORk8oc2xhdmUpO1xuK1x0XHRpZiAoIWFkX3NsYXZlX2luZm8pXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdHBvcnQgPSBcdTAwMjZhZF9zbGF2ZV9pbmZvLVx1MDAzZXBvcnQ7XG4gXHRcdHRtcCA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuIFx0XHRpZiAodG1wIFx1MDAyNlx1MDAyNiB0bXAtXHUwMDNlaXNfYWN0aXZlKSB7XG4gXHRcdFx0YWdncmVnYXRvciA9IHRtcDtcbkBAIC0yOTA3LDcgKzI5MTEsNyBAQCBpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbitpbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuaW5kZXggNGExMTU3MmY2NjNkMzEuLjU1ZDJmOGE1MzlkNDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuQEAgLTY4Niw1MyArNjg2LDU4IEBAIHN0YXRpYyBzaXplX3QgYm9uZF9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXHRcdDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KHN0cnVjdCBib25kaW5nICpib25kKVxuK3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XG4tXHRpbnQgaWZpbmRleDtcbitcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xuK1x0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdHNsYXZlID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoYm9uZCk7XG4tXHRpZmluZGV4ID0gc2xhdmUgPyBzbGF2ZS1cdTAwM2VpZmluZGV4IDogMDtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0cmV0dXJuIGlmaW5kZXg7XG4rXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbitcdGlmIChzbGF2ZSlcbitcdFx0ZGV2ID0gc2xhdmUtXHUwMDNlZGV2O1xuK1x0cmV0dXJuIGRldiA/IGRldi1cdTAwM2VpZmluZGV4IDogMDtcbiB9XG4gXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIHtcbi1cdHN0cnVjdCBib25kaW5nICpib25kID0gbmV0ZGV2X3ByaXYoYm9uZF9kZXYpO1xuLVx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xuLVx0aW50IGlmaW5kZXgsIGksIHRhcmdldHNfYWRkZWQ7XG4rXHRjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTtcbitcdGludCBpLCB0YXJnZXRzX2FkZGVkLCBtaWltb24sIG1vZGU7XG4rXHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnByaW1hcnk7XG4gXHRzdHJ1Y3QgbmxhdHRyICp0YXJnZXRzO1xuLVx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xuIFxuLVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdG1vZGUgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSk7XG4rXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NT0RFLCBtb2RlKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KGJvbmQpO1xuLVx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4tXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0aWYgKGJvbmRfbW9kZV91c2VzX3ByaW1hcnkobW9kZSkpIHtcbitcdFx0aW50IGlmaW5kZXggPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGJvbmQpO1xuK1xuK1x0XHRpZiAoaWZpbmRleCBcdTAwMjZcdTAwMjYgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQUNUSVZFX1NMQVZFLCBpZmluZGV4KSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdH1cbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRtaWltb24gPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKTtcbitcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIG1paW1vbikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1VQREVMQVksXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMudXBkZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSkgKiBtaWltb24pKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QRUVSX05PVElGX0RFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLnBlZXJfbm90aWZfZGVsYXkgKiBib25kLVx1MDAzZXBhcmFtcy5taWltb24pKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5KSAqIG1paW1vbikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfVVNFX0NBUlJJRVIsIDEpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfSU5URVJWQUwsIGJvbmQtXHUwMDNlcGFyYW1zLmFycF9pbnRlcnZhbCkpXG4rXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLFxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHR0YXJnZXRzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FSUF9JUF9UQVJHRVQpO1xuQEAgLTc0MSw4ICs3NDYsMTAgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0dGFyZ2V0c19hZGRlZCA9IDA7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCT05EX01BWF9BUlBfVEFSR0VUUzsgaSsrKSB7XG4tXHRcdGlmIChib25kLVx1MDAzZXBhcmFtcy5hcnBfdGFyZ2V0c1tpXSkge1xuLVx0XHRcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdGFyZ2V0c1tpXSkpXG4rXHRcdF9fYmUzMiB0ID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFycF90YXJnZXRzW2ldKTtcbitcbitcdFx0aWYgKHQpIHtcbitcdFx0XHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgaSwgdCkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdFx0XHR0YXJnZXRzX2FkZGVkID0gMTtcbiBcdFx0fVxuQEAgLTc1MywxMSArNzYwLDEyIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGVsc2VcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gXG4tXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKVxuK1x0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9WQUxJREFURSxcbitcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUyxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5AQCAtNzY3LDYgKzc3NSw5IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHRhcmdldHNfYWRkZWQgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQk9ORF9NQVhfTlNfVEFSR0VUUzsgaSsrKSB7XG4rXHRcdC8qIE5vdGU6IElQdjYgYWRkcmVzc2VzIGNhbiBub3QgYmUgcmVhZCBpbiBhbiBhdG9taWMgUkVBRF9PTkNFKCkgeWV0LlxuK1x0XHQgKiBXZSBhY2NlcHQgdGhpcyBtaW5vciByYWNlIGZvciB0aGUgbW9tZW50LlxuK1x0XHQgKi9cbiBcdFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfaW42X2FkZHIoc2tiLCBpLCBcdTAwMjZib25kLVx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTc4MCw5NyArNzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gI2VuZGlmXG4gXG4tXHRwcmltYXJ5ID0gcnRubF9kZXJlZmVyZW5jZShib25kLVx1MDAzZXByaW1hcnlfc2xhdmUpO1xuK1x0cHJpbWFyeSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXByaW1hcnlfc2xhdmUpO1xuIFx0aWYgKHByaW1hcnkgXHUwMDI2XHUwMDI2XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWSwgcHJpbWFyeS1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWV9SRVNFTEVDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1hNSVRfSEFTSF9QT0xJQ1ksXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMueG1pdF9wb2xpY3kpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUkVTRU5EX0lHTVAsXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMucmVzZW5kX2lnbXApKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm51bV9wZWVyX25vdGlmKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQUxMX1NMQVZFU19BQ1RJVkUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5hbGxfc2xhdmVzX2FjdGl2ZSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9MUF9JTlRFUlZBTCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxwX2ludGVydmFsKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuLVx0cGFja2V0c19wZXJfc2xhdmUgPSBib25kLVx1MDAzZXBhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTtcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QQUNLRVRTX1BFUl9TTEFWRSxcbi1cdFx0XHRwYWNrZXRzX3Blcl9zbGF2ZSkpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnBhY2tldHNfcGVyX3NsYXZlKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9BQ1RJVkUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2FjdGl2ZSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX1JBVEUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX1NFTEVDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmFkX3NlbGVjdCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfc2VsZWN0KSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfVExCX0RZTkFNSUNfTEIsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy50bGJfZHluYW1pY19sYikpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMudGxiX2R5bmFtaWNfbGIpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NSVNTRURfTUFYLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0NPVVBMRURfQ09OVFJPTCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmNvdXBsZWRfY29udHJvbCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuY291cGxlZF9jb250cm9sKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQlJPQURDQVNUX05FSUdILFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSlcbitcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9MQUNQX1NUUklDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0KSlcbitcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuK1x0aWYgKG1vZGUgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuIFx0XHRzdHJ1Y3QgYWRfaW5mbyBpbmZvO1xuIFxuIFx0XHRpZiAoY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9BQ1RPUl9TWVNfUFJJTyxcbi1cdFx0XHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKVxuK1x0XHRcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSlcbitcdFx0XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuK1x0XHRcdC8qIFNtYWxsIHJhY2UgaGVyZSwgdGhpcyBpcyBhIG1pbm9yIHRyYWRlIG9mZi4gKi9cbiBcdFx0XHRpZiAobmxhX3B1dChza2IsIElGTEFfQk9ORF9BRF9BQ1RPUl9TWVNURU0sXG4gXHRcdFx0XHQgICAgRVRIX0FMRU4sIFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdFx0fVxuLVx0XHRpZiAoIWJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbitcdFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbiBcdFx0XHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuIFxuIFx0XHRcdG5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7XG5AQCAtODk4LDkgKzkwOSwxMSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdH1cbiBcdH1cbiBcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIDA7XG4gXG4gbmxhX3B1dF9mYWlsdXJlOlxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gLUVNU0dTSVpFO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTkzNCwxNCArOTM0LDE0IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbW9kZV9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXG4gXHQvKiBkb24ndCBjYWNoZSBhcnBfdmFsaWRhdGUgYmV0d2VlbiBtb2RlcyAqL1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUsIEJPTkRfQVJQX1ZBTElEQVRFX05PTkUpO1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMubW9kZSA9IG5ld3ZhbC1cdTAwM2V2YWx1ZTtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcbiBcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcbiBcdCAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogdG8gMC5cbiBcdCAqL1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gMDtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCAwKTtcbiBcbiBcdGlmIChib25kLVx1MDAzZWRldi1cdTAwM2VyZWdfc3RhdGUgPT0gTkVUUkVHX1JFR0lTVEVSRUQpIHtcbiBcdFx0Ym9vbCB1cGRhdGUgPSBmYWxzZTtcbkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiB7XG4gXHRuZXRkZXZfZGJnKGJvbmQtXHUwMDNlZGV2LCBcIlNldHRpbmcgTEFDUCBmYWxsYmFjayB0byAlcyAoJWxsdSlcXG5cIixcbiBcdFx0ICAgbmV3dmFsLVx1MDAzZXN0cmluZywgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbi1cdGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0ID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTkyNyw3ICsxOTI3LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciA9PSBuZXd2YWwtXHUwMDNldmFsdWUpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIG5ld3ZhbC1cdTAwM2V2YWx1ZSk7XG4gXHRpZiAoYm9uZC1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkge1xuIFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKVxuIFx0XHRcdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNmJvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaCBiL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbmluZGV4IDA1NTcyYzE5ZTE0YjdhLi5lZjY2N2RmZjI5NzI5NCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbisrKyBiL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbkBAIC0zMDIsOCArMzAyLDggQEAgdm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICopO1xuIHZvaWQgYm9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgaW50IHRpbWVvdXQpO1xuIHZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTtcbiB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspO1xuLWludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuLWludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuK2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuK2ludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcbiBpbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXHRcdFx0IHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaCBiL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxuaW5kZXggMmM1NGEzNmE4NDc3YjkuLjU5OGQ1NmIxYmM5NzA2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYm9uZGluZy5oXG4rKysgYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcbkBAIC0zNDUsMTQgKzM0NSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShpbnQgbW9kZSlcbiBcdCAgICAgICBtb2RlID09IEJPTkRfTU9ERV9BTEI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbitzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF91c2VzX3ByaW1hcnkoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuIFx0cmV0dXJuIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoQk9ORF9NT0RFKGJvbmQpKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4rc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuLVx0c3RydWN0IHNsYXZlICpzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGJvbmQtXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xuK1x0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGJvbmQtXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xuIFxuIFx0cmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpIFx1MDAyNlx1MDAyNiBzbGF2ZSA/IHNsYXZlLVx1MDAzZWRldiA6IE5VTEw7XG4gfVxuQEAgLTcwMyw3ICs3MDMsNyBAQCB2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTtcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcbiBpbnQgYm9uZF9uZXRsaW5rX2luaXQodm9pZCk7XG4gdm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKTtcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuK3N0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCk7XG4gY29uc3QgY2hhciAqYm9uZF9zbGF2ZV9saW5rX3N0YXR1cyhzOCBsaW5rKTtcbiBzdHJ1Y3QgYm9uZF92bGFuX3RhZyAqYm9uZF92ZXJpZnlfZGV2aWNlX3BhdGgoc3RydWN0IG5ldF9kZXZpY2UgKnN0YXJ0X2RldixcbiBcdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmVuZF9kZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowMzo1OS40NjYwMDgwODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUyMTY1NTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJvbmRpbmcgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGJvbmRpbmcgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGRhdGEgcmFjZXMgYW5kIG1lbW9yeSBvcmRlcmluZy4gVGhleSd2ZSBwZXBwZXJlZCB0aGUgY29kZSB3aXRoIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIHZhcmlvdXMgZmllbGRzLCBsaWtlIHRob3NlIGluIGBib25kLVx1MDAzZXBhcmFtc2AgYW5kIGBwb3J0LVx1MDAzZWlzX2VuYWJsZWRgLiBUaGV5IGFsc28gc2VlbSB0byBoYXZlIG1vZGlmaWVkIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gdXNlIGBjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZGAgbW9yZSBjb25zaXN0ZW50bHksIHdoaWNoIG1ha2VzIHNlbnNlIGZyb20gYSBkYXRhIHNhZmV0eSBwZXJzcGVjdGl2ZS5cblxuVGhlIHNpZ25pZmljYW50IGNoYW5nZXMgYXJlIGluIGBib25kX25ldGxpbmsuY2AsIHdoZXJlIGBib25kX2ZpbGxfaW5mb2AgaGFzIGJlZW4gdXBkYXRlZC4gSSBub3RpY2UgdGhleSd2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYFJFQURfT05DRSgpYCB3aGVuIHJlYWRpbmcgYGJvbmQtXHUwMDNlcGFyYW1zYCBmaWVsZHMuIEFuZCwgdGhlIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGZ1bmN0aW9uIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCB3aGljaCBsZXZlcmFnZXMgYHJjdV9kZXJlZmVyZW5jZWAgaW5zdGVhZCBvZiB0aGUgbW9yZSB0cmFkaXRpb25hbCBsb2NrLXJlYWQtdW5sb2NrIGFwcHJvYWNoLlxuXG5UaGlzIGlzbid0ICpqdXN0KiBhIGNvc21ldGljIGNoYW5nZTsgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZXNlIG1vZGlmaWNhdGlvbnMgZXhwbGljaXRseSBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IHVzaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAsIHRoZXkncmUgdGVsbGluZyB0aGUgY29tcGlsZXIgdG8gcmVzcGVjdCBtZW1vcnkgb3JkZXJpbmcsIHdoaWNoIGlzIGNyaXRpY2FsIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQWRkaXRpb25hbGx5LCB0aGUgZXhwbGljaXQgUkNVIGxvY2tpbmcgaW4gYGJvbmRfZmlsbF9pbmZvYCBwcm92aWRlcyBhIG1vcmUgcm9idXN0IG1lYW5zIG9mIHByb3RlY3Rpbmcgc2hhcmVkIGRhdGEgZHVyaW5nIHJlYWRzLiBJbiBlc3NlbmNlLCB0aGV5J3JlIHNhY3JpZmljaW5nIHNvbWUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaW4gZmF2b3Igb2YgcHJldmVudGluZyB0aG9zZSBkcmVhZGVkIGRhdGEgcmFjZXMuXG5cblNwZWNpZmljYWxseSwgbG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IHRoZXkgcHJvdmlkZWQgZnJvbSBgYm9uZF9maWxsX2luZm9gOiBUaGUgYWRkaXRpb24gb2YgYHJjdV9yZWFkX2xvY2soKWAgYXQgdGhlIGJlZ2lubmluZyBhbmQgdGhlIHVzZSBvZiBgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1vZGUpYCBpcyB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZS4gVGhlIGZ1bmN0aW9uIGFsc28gdXNlcyBSQ1UgdG8gcmV0cmlldmUgdGhlIHByaW1hcnkgc2xhdmUncyBpbnRlcmZhY2UgaW5kZXguIFNvLCBgYm9uZF9maWxsX2luZm9gIGlzICpkZWZpbml0ZWx5KiBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5HaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgaW4gZHVtcGluZyBib25kaW5nIGRldmljZSBpbmZvIHZpYSBuZXRsaW5rLCB3aGljaCBpcyBlYXNpbHkgdGVzdGFibGUgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgdGhpcyB3YXJyYW50cyBzZXJpb3VzIHNjcnV0aW55LiBGaXhpbmcgZGF0YSByYWNlcyBhbmQgaW50cm9kdWNpbmcgUkNVIGxvY2tpbmcgKmFsd2F5cyogbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlcmUncyBhIHJpc2sgb2YgaW50cm9kdWNpbmcgc3VidGxlIGJ1Z3MgaWYgdGhlIFJDVSBsb2NraW5nIGlzbid0IGhhbmRsZWQgY29ycmVjdGx5LiBGb3IgaW5zdGFuY2UsIGlzIHRoZSB1bmxvY2sgaGFuZGxlZCBjb25zaXN0ZW50bHkgaW4gYWxsIGVycm9yIHBhdGhzPyBJdCBsb29rcyBsaWtlIHRoZSBgZ290byBubGFfcHV0X2ZhaWx1cmVgIHNob3VsZCBoYW5kbGUgdGhvc2UuXG5cblNvLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBwZXJgIHRvIHNlZSBleGFjdGx5IHdoZXJlIGBib25kX2ZpbGxfaW5mb2AgaXMgdXNlZC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDowOS45ODc2NjczMDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0MTI0OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm9uZF9maWxsX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz02ODk9c3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy02OTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzo3MDA6c3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtNzAxLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz05ODU9c3RydWN0IHJ0bmxfbGlua19vcHMgYm9uZF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy05OTQtXFx0LmdldF9zaXplXFx0XFx0PSBib25kX2dldF9zaXplLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM6OTk1OlxcdC5maWxsX2luZm9cXHRcXHQ9IGJvbmRfZmlsbF9pbmZvLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtOTk2LVxcdC5nZXRfbnVtX3R4X3F1ZXVlc1xcdD0gYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6MTAuMDY5MDkyNjI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyMTUzNDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTmV0bGluayBJbnRlcmZhY2UgZm9yIEJvbmRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gYm9uZGluZywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIHJlbGV2YW50IGhvb2tzIGFyZSBwYXJ0IG9mIGBydG5sX2xpbmtfb3BzYC4gVGhhdCBtYWtlcyBzZW5zZTsgYW55dGhpbmcgbGluay1yZWxhdGVkIHByb2JhYmx5IGxpdmVzIGluIHRoZXJlLiBBbmQgaWYgaXQncyB0aGVyZSwgdGhlbiBpdOKAmXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHZpYSB0aG9zZSBzdGFuZGFyZCBgUlRNX05FV0xJTktgIGFuZCBgUlRNX0dFVExJTktgIG5ldGxpbmsgbWVzc2FnZXMuIFRoYXQncyBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEknbSBwcmV0dHkgc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIHRoZSBiaWcgb25lLCBidXQgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBpbiB0aGUgYm9uZGluZyBkcml2ZXIncyBLY29uZmlnIG9yIE1ha2VmaWxlIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGdldCB0aGF0IHNvcnRlZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDoxNi40OTA2Mjk3NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzMTM4MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDoxNi41NTM5NDkyNTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzI4NjA4ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCb25kaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEJPTkRJTkdgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0byBleGFtaW5lIGZ1cnRoZXIuIE15IGluaXRpYWwgc2NhbiBoYXMgdHVybmVkIHVwIGEgaGFuZGZ1bCB0aGF0IHdhcnJhbnQgYSBkZWVwZXIgZGl2ZS4gVGhlc2UgaW5jbHVkZTogYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYCwgYGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYF9fYWdnX2FjdGl2ZV9wb3J0c2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgLCBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgLlxuXG5JJ20gdGhpbmtpbmcgYGJvbmRfZmlsbF9pbmZvYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCdzIGludm9sdmVkIGluIGR1bXBpbmcgbGluayBpbmZvIHN1Z2dlc3RzIGl0J3Mgbm90IGEgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aCBsaWtlLCBzYXksIHBhY2tldCBoYW5kbGluZywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC4gVGhlIHNldHRpbmcgZnVuY3Rpb25zIChgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0YCwgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgKSBhbHNvIGxvb2sgcHJvbWlzaW5nLCBhcyBkbyAgYGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZWAgYmVjYXVzZSBpdCdzIGhhbmRsaW5nIGxpbmsgY2hhbmdlcy4gVGhlbiBJJ20gYWxzbyBsb29raW5nIGF0IHRoZSBgX19hZ2dfYWN0aXZlX3BvcnRzYCwgYW5kIGhvdyBpdCB3b3JrcyB3aXRoIGBfX2FnZ191c2FibGVfcG9ydHNgLCBhbmQgYGFkX2FnZ19zZWxlY3Rpb25fbG9naWNgLlxuXG5UbyByZWZpbmUgdGhlIGxpc3QsIEknbSBnb2luZyB0byByZXZpc2l0IGVhY2ggZnVuY3Rpb24gYW5kIGNvbmZpcm0gaXRzIHJvbGUgYW5kIGltcGFjdC4gTGV0J3Mgc2VlLi4uXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYGJvbmRfZmlsbF9pbmZvYCBpcyBpbmRlZWQgY2FsbGVkIGZvciBuZXRsaW5rIGR1bXBzLiBgYm9uZF9vcHRpb25fbW9kZV9zZXRgIGhhbmRsZXMgc2V0dGluZyB0aGUgbW9kZS4gYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAgZGVhbHMgd2l0aCBzZXR0aW5nIHRoZSBgbGFjcF9zdHJpY3RgIG9wdGlvbiBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgIHNldHMgdGhlIGBicm9hZGNhc3RfbmVpZ2hgIG9wdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgLiBUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6XG5cbmBib25kX2ZpbGxfaW5mb2BcbmBib25kX29wdGlvbl9tb2RlX3NldGBcbmBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgXG5gYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldGBcbmBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgXG5gX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYFxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzk3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjIzLjg4MjU2MTMzOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1Nzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FnZ19hY3RpdmVfcG9ydHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTc0OD1zdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc2Mi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6NzYzOnN0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Nzk0PXN0YXRpYyB1MzIgX19nZXRfYWdnX2JhbmR3aWR0aChzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzk1LXtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Nzk2OlxcdGludCBucG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc5Ny1cXHR1MzIgYmFuZHdpZHRoID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xNzM2PXN0YXRpYyBzdHJ1Y3QgYWdncmVnYXRvciAqYWRfYWdnX3NlbGVjdGlvbl90ZXN0KHN0cnVjdCBhZ2dyZWdhdG9yICpiZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTAtXFx0Y2FzZSBCT05EX0FEX0NPVU5UOlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxNzkxOlxcdFxcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHMoY3VycikgXFx1MDAzZSBfX2FnZ19hY3RpdmVfcG9ydHMoYmVzdCkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTItXFx0XFx0XFx0cmV0dXJuIGN1cnI7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjE3OTQ6XFx0XFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhjdXJyKSBcXHUwMDNjIF9fYWdnX2FjdGl2ZV9wb3J0cyhiZXN0KSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5NS1cXHRcXHRcXHRyZXR1cm4gYmVzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xODYzPXN0YXRpYyB2b2lkIGFkX2FnZ19zZWxlY3Rpb25fbG9naWMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xODgxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxODgyOlxcdFxcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHMoYWdnKSBcXHUwMDI2XFx1MDAyNiBhZ2dfZGV2aWNlX3VwKGFnZykpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4ODMtXFx0XFx0XFx0YmVzdCA9IGFkX2FnZ19zZWxlY3Rpb25fdGVzdChiZXN0LCBhZ2cpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTMtXFx0XFx0aWYgKGFjdGl2ZSBcXHUwMDI2XFx1MDAyNiBhY3RpdmUtXFx1MDAzZWxhZ19wb3J0cyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxODk0OlxcdFxcdCAgICBfX2FnZ19hY3RpdmVfcG9ydHMoYWN0aXZlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xODk1LVxcdFxcdCAgICAoX19hZ2dfaGFzX3BhcnRuZXIoYWN0aXZlKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIzMjY9dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDYwLVxcdFxcdFxcdFxcdHRlbXBfYWdncmVnYXRvci1cXHUwMDNlbnVtX29mX3BvcnRzLS07XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0NjE6XFx0XFx0XFx0XFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyh0ZW1wX2FnZ3JlZ2F0b3IpID09IDApIHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ2Mi1cXHRcXHRcXHRcXHRcXHRzZWxlY3RfbmV3X2FjdGl2ZV9hZ2cgPSB0ZW1wX2FnZ3JlZ2F0b3ItXFx1MDAzZWlzX2FjdGl2ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODM5PWludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODU0LVxcdFxcdGlmICgoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0ID8gX19hZ2dfdXNhYmxlX3BvcnRzKGFjdGl2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjg1NTpcXHRcXHRcXHRcXHRcXHQ6IF9fYWdnX2FjdGl2ZV9wb3J0cyhhY3RpdmUpKSBcXHUwMDNjXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTYtXFx0XFx0ICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5taW5fbGlua3MpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODgxPWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkwNS1cXHRhZF9pbmZvLVxcdTAwM2VhZ2dyZWdhdG9yX2lkID0gYWdncmVnYXRvci1cXHUwMDNlYWdncmVnYXRvcl9pZGVudGlmaWVyO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTA2OlxcdGFkX2luZm8tXFx1MDAzZXBvcnRzID0gX19hZ2dfYWN0aXZlX3BvcnRzKGFnZ3JlZ2F0b3IpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTA3LVxcdGFkX2luZm8tXFx1MDAzZWFjdG9yX2tleSA9IGFnZ3JlZ2F0b3ItXFx1MDAzZWFjdG9yX29wZXJfYWdncmVnYXRvcl9rZXk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjIzLjkzOTMyODUxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNDc2MTUxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYF9fYWdnX2FjdGl2ZV9wb3J0c2AqKlxuXG5Pa2F5LCBzbyB0aGlzIGBfX2FnZ19hY3RpdmVfcG9ydHNgIGZ1bmN0aW9uIGlzIHVzZWQgcXVpdGUgYSBiaXQsIGFuZCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byB0cmFjayBkb3duIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gTGV0J3MgaW5jbHVkZSBmdW5jdGlvbnMgbGlrZSBgYm9uZF9maWxsX2luZm9gLCBgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYW5kIGBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gIGluIG15IHJldmlldyBvZiB0aGUgZnVuY3Rpb24uXG5cbk5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gSSdtIHNlZWluZyBpcyBgQ09ORklHX0JPTkRJTkdgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gV2FpdCwgSSBzZWUgdGhhdCBgYm9uZF9maWxsX2luZm9gIGhhcyBhbiBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBjb25kaXRpb25hbCB3aXRoaW4gaXQuIEV2ZW4gdGhvdWdoIGBDT05GSUdfQk9ORElOR2AgYWxsb3dzIHRoZSBmaWxlIHRvIGNvbXBpbGUsIHRoZSBwcmVzZW5jZSBvZiB0aGF0IElQdjYgY2hlY2sgbWFrZXMgbWUgd2FudCB0byBiZSBleHRyYSBjYXJlZnVsLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjMxLjE4Njk0NzcxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjQxMCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZpbGUgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6MzEuMTg3MDQwODk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NzA1OTE3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgSSdtIGFuIGV4cGVydDpcblxuKipLZXJuZWwgQ29uZmlnIEh1bnQqKlxuXG5IbW0sIHdoZXJlJ3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgZ2VuZXJhbCBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBCdXQgd2FpdCwgaXMgdGhlcmUgYm9uZGluZyBjb25maWd1cmF0aW9uPyBJJ20gZHJhd2luZyBhIGJsYW5rIG9uIHdoZXRoZXIgYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgYWN0dWFsbHkgKmV4aXN0cyouIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBmaWxlIHN0cnVjdHVyZS4gTmVlZCB0byB0cmFjayBkb3duIHRoZSBuZXR3b3JrIGJvbmRpbmcgY29uZmlndXJhdGlvbiBLY29uZmlnIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzgyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDozOS43NTc2MzYyNTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0ODgzMDA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjQwLjEwNjQ3NTYzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTM1NTgzODU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJvbmRpbmcgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgYEJPTkRJTkdgLiBZZXMsIHRoYXTigJlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0J3MgZGlnIGludG8gdGhpcyBwYXRjaC5cblxuSSdtIHNlZWluZyB0aGV5J3ZlIGFkZGVkIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgdG8gYHBvcnQtXHUwMDNlaXNfZW5hYmxlZGAgd2l0aGluIGBfX2FnZ19hY3RpdmVfcG9ydHNgIGFuZCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYC4gU21hcnQuIFRoYXQncyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBhZGRyZXNzIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXkndmUgYWxzbyBhcHBsaWVkIGBSRUFEX09OQ0VgIHRvIHZhcmlvdXMgZmllbGRzIHdpdGhpbiBgYm9uZC1cdTAwM2VwYXJhbXNgIGluIGBib25kX2ZpbGxfaW5mb2AgYW5kIGBib25kX29wdGlvbl8qX3NldGAuIERlZmluaXRlbHkgbWFraW5nIHN1cmUgdGhlc2UgdmFsdWVzIGFyZSBjb25zaXN0ZW50LlxuXG5UaGUgY2hhbmdlIHRvIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGlzIGludGVyZXN0aW5nOyByZW5hbWluZyBpdCB0byBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdWAgYW5kIHN3YXBwaW5nIGByY3VfcmVhZF9sb2NrKClgICsgYHJjdV9kZXJlZmVyZW5jZV9ydG5sKClgIGZvciBgcmN1X2RlcmVmZXJlbmNlYCBpcyBzaWduaWZpY2FudC4gVGhhdCdzIGEgbW92ZSBhd2F5IGZyb20gdGhlIG9sZGVyIFJDVSByZWFkIGxvY2tpbmcgYXBwcm9hY2guIFRoZXkncmUgdHJ5aW5nIHRvIHVzZSBgcmN1X2RlcmVmZXJlbmNlYCBtb3JlIGVmZmVjdGl2ZWx5LlxuXG5BbmQgYWgsIHllcywgdGhleSd2ZSAqYWRkZWQqIGByY3VfcmVhZF9sb2NrKClgIHRvIGBib25kX2ZpbGxfaW5mb2AuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGxpZXM6IEl0J3MgZXhwbGljaXRseSBkZXNpZ25lZCB0byBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IGFkZGluZyBhbmQgbW9kaWZ5aW5nIFJDVSBsb2NraW5nIHdpdGhpbiBgYm9uZF9maWxsX2luZm9gLCB0aGV5IGFyZSB3b3JraW5nIHRvIGVuc3VyZSB0aGF0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBuZXRsaW5rIGluZm8gZmlsbGluZyBpcyBzYWZlLiBUaGUgcmVhc29uaW5nIGdpdmVuIGlzIHNvbGlkLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSwgYW5kIGVuc3VyZSB0aGF0IG5vIHJlZ3Jlc3Npb25zIG9jY3VyIHdpdGggdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXG5cblRoZSBtYWluIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24sIGluIG15IG9waW5pb24sIGFyZSBgYm9uZF9maWxsX2luZm9gLCBgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYW5kIGBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLiBUaGVzZSBhcmUgdGhlIGtleSB0b3VjaHBvaW50cy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlc2UgYXJlYXMgdGhvcm91Z2hseSBmb3IgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgbWlzc2VkIGxvY2tpbmcgc2NlbmFyaW9zLlxuXG5MZXQncyBnZXQgdGhvc2UgdGVzdCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NywiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6NTUuNDYyMzE4MzcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMzg5NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9maWxsX2luZm9cIixcbiAgICBcImJvbmRfb3B0aW9uX21vZGVfc2V0XCIsXG4gICAgXCJib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VcIixcbiAgICBcIl9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZmlsbF9pbmZvXCIsXG4gICAgXCJib25kX29wdGlvbl9tb2RlX3NldFwiLFxuICAgIFwiYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlXCIsXG4gICAgXCJfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIGRyaXZlciBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UgYW5kIFJDVSBsb2NraW5nIGluIG5ldGxpbmsgaW5mbyBmaWxsaW5nLiBGdXp6aW5nIGNhbiB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBSQ1UgbG9ja2luZyBhbmQgZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHRoZSBib25kaW5nIG5ldGxpbmsgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow8nv99[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 17:52:12 +0000 UTC FinishedAt: 2026-06-29 18:04:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "c5155fee-1eb8-4e0a-be81-565e7ba2e735" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_fill_info", "bond_option_mode_set", "bond_3ad_handle_link_change", "__bond_3ad_get_active_agg_info" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxOWVjOTlkNjZkMWRiYThiMTI0NzA3YzdjNjk5ZDE1Zjg3NzdjMjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDM6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5pbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuQEAgLTc2MCwxNCAmIzQzOzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIFx0cmV0dXJuIHZhbGlkO1xuIH1cbiBcbi1zdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuJiM0MztzdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhjb25zdCBzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIHtcbi1cdHN0cnVjdCBwb3J0ICpwb3J0O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwb3J0ICpwb3J0O1xuIFx0aW50IGFjdGl2ZSA9IDA7XG4gXG4gXHRmb3IgKHBvcnQgPSBhZ2ctXHUwMDNlbGFnX3BvcnRzOyBwb3J0O1xuIFx0ICAgICBwb3J0ID0gcG9ydC1cdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvcikge1xuLVx0XHRpZiAocG9ydC1cdTAwM2Vpc19lbmFibGVkKVxuJiM0MztcdFx0aWYgKFJFQURfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQpKVxuIFx0XHRcdGFjdGl2ZSYjNDM7JiM0Mzs7XG4gXHR9XG4gXG5AQCAtMjgwMSwxMSAmIzQzOzI4MDEsMTEgQEAgdm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuIFx0ICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuXG4gXHQgKi9cbiBcdGlmIChsaW5rID09IEJPTkRfTElOS19VUCkge1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xuJiM0MztcdFx0V1JJVEVfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQsIHRydWUpO1xuIFx0XHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCBmYWxzZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKiBsaW5rIGhhcyBmYWlsZWQgKi9cbi1cdFx0cG9ydC1cdTAwM2Vpc19lbmFibGVkID0gZmFsc2U7XG4mIzQzO1x0XHRXUklURV9PTkNFKHBvcnQtXHUwMDNlaXNfZW5hYmxlZCwgZmFsc2UpO1xuIFx0XHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCB0cnVlKTtcbiBcdH1cbiBcdGFnZyA9IF9fZ2V0X2ZpcnN0X2FnZyhwb3J0KTtcbkBAIC0yODc4LDE2ICYjNDM7Mjg3OCwyMCBAQCBpbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gICogUmV0dXJuczogICAwIG9uIHN1Y2Nlc3NcbiAgKiAgICAgICAgICBcdTAwM2MgMCBvbiBlcnJvclxuICAqL1xuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4mIzQzO2ludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbiB7XG4tXHRzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvciA9IE5VTEwsICp0bXA7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBhZF9zbGF2ZV9pbmZvICphZF9zbGF2ZV9pbmZvO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBwb3J0ICpwb3J0O1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqaXRlcjtcbiBcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XG4tXHRzdHJ1Y3QgcG9ydCAqcG9ydDtcbiBcbiBcdGJvbmRfZm9yX2VhY2hfc2xhdmVfcmN1KGJvbmQsIHNsYXZlLCBpdGVyKSB7XG4tXHRcdHBvcnQgPSBcdTAwMjYoU0xBVkVfQURfSU5GTyhzbGF2ZSktXHUwMDNlcG9ydCk7XG4mIzQzO1x0XHRhZF9zbGF2ZV9pbmZvID0gU0xBVkVfQURfSU5GTyhzbGF2ZSk7XG4mIzQzO1x0XHRpZiAoIWFkX3NsYXZlX2luZm8pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0cG9ydCA9IFx1MDAyNmFkX3NsYXZlX2luZm8tXHUwMDNlcG9ydDtcbiBcdFx0dG1wID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtXHUwMDNlYWdncmVnYXRvcik7XG4gXHRcdGlmICh0bXAgXHUwMDI2XHUwMDI2IHRtcC1cdTAwM2Vpc19hY3RpdmUpIHtcbiBcdFx0XHRhZ2dyZWdhdG9yID0gdG1wO1xuQEAgLTI5MDcsNyAmIzQzOzI5MTEsNyBAQCBpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbiYjNDM7aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuIHtcbiBcdGludCByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbmluZGV4IDRhMTE1NzJmNjYzZDMxLi41NWQyZjhhNTM5ZDQ2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcbkBAIC02ODYsNTMgJiM0Mzs2ODYsNTggQEAgc3RhdGljIHNpemVfdCBib25kX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcbiBcdFx0MDtcbiB9XG4gXG4tc3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXgoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4mIzQzO3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XG4tXHRpbnQgaWZpbmRleDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0c2xhdmUgPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShib25kKTtcbi1cdGlmaW5kZXggPSBzbGF2ZSA/IHNsYXZlLVx1MDAzZWlmaW5kZXggOiAwO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRyZXR1cm4gaWZpbmRleDtcbiYjNDM7XHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiYjNDM7XHRpZiAoc2xhdmUpXG4mIzQzO1x0XHRkZXYgPSBzbGF2ZS1cdTAwM2VkZXY7XG4mIzQzO1x0cmV0dXJuIGRldiA/IGRldi1cdTAwM2VpZmluZGV4IDogMDtcbiB9XG4gXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIHtcbi1cdHN0cnVjdCBib25kaW5nICpib25kID0gbmV0ZGV2X3ByaXYoYm9uZF9kZXYpO1xuLVx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xuLVx0aW50IGlmaW5kZXgsIGksIHRhcmdldHNfYWRkZWQ7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7XG4mIzQzO1x0aW50IGksIHRhcmdldHNfYWRkZWQsIG1paW1vbiwgbW9kZTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnByaW1hcnk7XG4gXHRzdHJ1Y3QgbmxhdHRyICp0YXJnZXRzO1xuLVx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xuIFxuLVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bW9kZSA9IFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5tb2RlKTtcbiYjNDM7XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NT0RFLCBtb2RlKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KGJvbmQpO1xuLVx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4tXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdGlmIChib25kX21vZGVfdXNlc19wcmltYXJ5KG1vZGUpKSB7XG4mIzQzO1x0XHRpbnQgaWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3UoYm9uZCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdH1cbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4mIzQzO1x0bWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbik7XG4mIzQzO1x0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX01JSU1PTiwgbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfVVBERUxBWSxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy51cGRlbGF5ICogYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5kb3duZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEVFUl9OT1RJRl9ERUxBWSxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5ICogYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnBlZXJfbm90aWZfZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9VU0VfQ0FSUklFUiwgMSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuLVx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCwgYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSlcbiYjNDM7XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0dGFyZ2V0cyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhza2IsIElGTEFfQk9ORF9BUlBfSVBfVEFSR0VUKTtcbkBAIC03NDEsOCAmIzQzOzc0NiwxMCBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHR0YXJnZXRzX2FkZGVkID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJPTkRfTUFYX0FSUF9UQVJHRVRTOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pIHtcbi1cdFx0XHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgaSwgYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pKVxuJiM0MztcdFx0X19iZTMyIHQgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0KSB7XG4mIzQzO1x0XHRcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCB0KSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0XHRcdHRhcmdldHNfYWRkZWQgPSAxO1xuIFx0XHR9XG5AQCAtNzUzLDExICYjNDM7NzYwLDEyIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGVsc2VcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gXG4tXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKVxuJiM0MztcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0FMTF9UQVJHRVRTLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmFycF9hbGxfdGFyZ2V0cykpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5AQCAtNzY3LDYgJiM0Mzs3NzUsOSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHR0YXJnZXRzX2FkZGVkID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJPTkRfTUFYX05TX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHQvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC5cbiYjNDM7XHRcdCAqIFdlIGFjY2VwdCB0aGlzIG1pbm9yIHJhY2UgZm9yIHRoZSBtb21lbnQuXG4mIzQzO1x0XHQgKi9cbiBcdFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfaW42X2FkZHIoc2tiLCBpLCBcdTAwMjZib25kLVx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTc4MCw5NyAmIzQzOzc5MSw5NyBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdG5sYV9uZXN0X2NhbmNlbChza2IsIHRhcmdldHMpO1xuICNlbmRpZlxuIFxuLVx0cHJpbWFyeSA9IHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2VwcmltYXJ5X3NsYXZlKTtcbiYjNDM7XHRwcmltYXJ5ID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XG4gXHRpZiAocHJpbWFyeSBcdTAwMjZcdTAwMjZcbiBcdCAgICBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QUklNQVJZLCBwcmltYXJ5LVx1MDAzZWRldi1cdTAwM2VpZmluZGV4KSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9QUklNQVJZX1JFU0VMRUNULFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmZhaWxfb3Zlcl9tYWMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9YTUlUX0hBU0hfUE9MSUNZLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMueG1pdF9wb2xpY3kpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9SRVNFTkRfSUdNUCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5udW1fcGVlcl9ub3RpZikpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FMTF9TTEFWRVNfQUNUSVZFLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hbGxfc2xhdmVzX2FjdGl2ZSkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSU5fTElOS1MsXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMubWluX2xpbmtzKSlcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9MUF9JTlRFUlZBTCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXG4mIzQzO1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdHBhY2tldHNfcGVyX3NsYXZlID0gYm9uZC1cdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmU7XG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEFDS0VUU19QRVJfU0xBVkUsXG4tXHRcdFx0cGFja2V0c19wZXJfc2xhdmUpKVxuJiM0MztcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX0FDVElWRSxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3BfYWN0aXZlKSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX1JBVEUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9TRUxFQ1QsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9UTEJfRFlOQU1JQ19MQixcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLnRsYl9keW5hbWljX2xiKSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMudGxiX2R5bmFtaWNfbGIpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NSVNTRURfTUFYLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpXG4mIzQzO1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pc3NlZF9tYXgpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9DT1VQTEVEX0NPTlRST0wsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9CUk9BRENBU1RfTkVJR0gsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKVxuJiM0MztcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9MQUNQX1NUUklDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0KSlcbiYjNDM7XHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHtcbiYjNDM7XHRpZiAobW9kZSA9PSBCT05EX01PREVfODAyM0FEKSB7XG4gXHRcdHN0cnVjdCBhZF9pbmZvIGluZm87XG4gXG4gXHRcdGlmIChjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfdTE2KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU19QUklPLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpXG4mIzQzO1x0XHRcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSlcbiYjNDM7XHRcdFx0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiYjNDM7XHRcdFx0LyogU21hbGwgcmFjZSBoZXJlLCB0aGlzIGlzIGEgbWlub3IgdHJhZGUgb2ZmLiAqL1xuIFx0XHRcdGlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSxcbiBcdFx0XHRcdCAgICBFVEhfQUxFTiwgXHUwMDI2Ym9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzdGVtKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0XHR9XG4tXHRcdGlmICghYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBcdTAwMjZpbmZvKSkge1xuJiM0MztcdFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbiBcdFx0XHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuIFxuIFx0XHRcdG5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7XG5AQCAtODk4LDkgJiM0Mzs5MDksMTEgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gMDtcbiBcbiBubGFfcHV0X2ZhaWx1cmU6XG4mIzQzO1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gLUVNU0dTSVpFO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTkzNCwxNCAmIzQzOzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFxuIFx0LyogZG9uJiMzOTt0IGNhY2hlIGFycF92YWxpZGF0ZSBiZXR3ZWVuIG1vZGVzICovXG4gXHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSwgQk9ORF9BUlBfVkFMSURBVEVfTk9ORSk7XG4tXHRib25kLVx1MDAzZXBhcmFtcy5tb2RlID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcbiBcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcbiBcdCAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogdG8gMC5cbiBcdCAqL1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gMDtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciwgMCk7XG4gXG4gXHRpZiAoYm9uZC1cdTAwM2VkZXYtXHUwMDNlcmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7XG4gXHRcdGJvb2wgdXBkYXRlID0gZmFsc2U7XG5AQCAtMTcwNiw3ICYjNDM7MTcwNiw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIHtcbiBcdG5ldGRldl9kYmcoYm9uZC1cdTAwM2VkZXYsIFwmIzM0O1NldHRpbmcgTEFDUCBmYWxsYmFjayB0byAlcyAoJWxsdSlcXG5cJiMzNDssXG4gXHRcdCAgIG5ld3ZhbC1cdTAwM2VzdHJpbmcsIG5ld3ZhbC1cdTAwM2V2YWx1ZSk7XG4tXHRib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCA9IG5ld3ZhbC1cdTAwM2V2YWx1ZTtcbiYjNDM7XHRXUklURV9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0LCBuZXd2YWwtXHUwMDNldmFsdWUpO1xuIFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC0xOTI3LDcgJiM0MzsxOTI3LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciA9PSBuZXd2YWwtXHUwMDNldmFsdWUpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuJiM0MztcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtXHUwMDNldmFsdWUpO1xuIFx0aWYgKGJvbmQtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApIHtcbiBcdFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvcilcbiBcdFx0XHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZib25kX2JjYXN0X25laWdoX2VuYWJsZWQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmggYi9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG5pbmRleCAwNTU3MmMxOWUxNGI3YS4uZWY2NjdkZmYyOTcyOTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9ib25kXzNhZC5oXG5AQCAtMzAyLDggJiM0MzszMDIsOCBAQCB2b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG4gdm9pZCBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uKHN0cnVjdCBib25kaW5nICpib25kLCBpbnQgdGltZW91dCk7XG4gdm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xuIHZvaWQgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGNoYXIgbGluayk7XG4taW50ICBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7XG4taW50ICBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4mIzQzO2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuJiM0MztpbnQgIF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7XG4gaW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHRcdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kaW5nLmggYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcbmluZGV4IDJjNTRhMzZhODQ3N2I5Li41OThkNTZiMWJjOTcwNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZGluZy5oXG5AQCAtMzQ1LDE0ICYjNDM7MzQ1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBib25kX21vZGVfdXNlc19wcmltYXJ5KGludCBtb2RlKVxuIFx0ICAgICAgIG1vZGUgPT0gQk9ORF9NT0RFX0FMQjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KHN0cnVjdCBib25kaW5nICpib25kKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF91c2VzX3ByaW1hcnkoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuIFx0cmV0dXJuIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoQk9ORF9NT0RFKGJvbmQpKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4mIzQzO3N0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxuIHtcbi1cdHN0cnVjdCBzbGF2ZSAqc2xhdmUgPSByY3VfZGVyZWZlcmVuY2VfcnRubChib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XG4gXG4gXHRyZXR1cm4gYm9uZF91c2VzX3ByaW1hcnkoYm9uZCkgXHUwMDI2XHUwMDI2IHNsYXZlID8gc2xhdmUtXHUwMDNlZGV2IDogTlVMTDtcbiB9XG5AQCAtNzAzLDcgJiM0Mzs3MDMsNyBAQCB2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTtcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcbiBpbnQgYm9uZF9uZXRsaW5rX2luaXQodm9pZCk7XG4gdm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKTtcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuJiM0MztzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuIGNvbnN0IGNoYXIgKmJvbmRfc2xhdmVfbGlua19zdGF0dXMoczggbGluayk7XG4gc3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsXG4gXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE5ZWM5OWQ2NmQxZGJhOGIxMjQ3MDdjN2M2OTlkMTVmODc3N2MyOGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKQEAgLTc2MCwxNCAmIzQzOzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKQogCXJldHVybiB2YWxpZDsKIH0KIAotc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZykKJiM0MztzdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhjb25zdCBzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKQogewotCXN0cnVjdCBwb3J0ICpwb3J0OwomIzQzOwljb25zdCBzdHJ1Y3QgcG9ydCAqcG9ydDsKIAlpbnQgYWN0aXZlID0gMDsKIAogCWZvciAocG9ydCA9IGFnZy0mZ3Q7bGFnX3BvcnRzOyBwb3J0OwogCSAgICAgcG9ydCA9IHBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yKSB7Ci0JCWlmIChwb3J0LSZndDtpc19lbmFibGVkKQomIzQzOwkJaWYgKFJFQURfT05DRShwb3J0LSZndDtpc19lbmFibGVkKSkKIAkJCWFjdGl2ZSYjNDM7JiM0Mzs7CiAJfQogCkBAIC0yODAxLDExICYjNDM7MjgwMSwxMSBAQCB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspCiAJICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuCiAJICovCiAJaWYgKGxpbmsgPT0gQk9ORF9MSU5LX1VQKSB7Ci0JCXBvcnQtJmd0O2lzX2VuYWJsZWQgPSB0cnVlOwomIzQzOwkJV1JJVEVfT05DRShwb3J0LSZndDtpc19lbmFibGVkLCB0cnVlKTsKIAkJYWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgZmFsc2UpOwogCX0gZWxzZSB7CiAJCS8qIGxpbmsgaGFzIGZhaWxlZCAqLwotCQlwb3J0LSZndDtpc19lbmFibGVkID0gZmFsc2U7CiYjNDM7CQlXUklURV9PTkNFKHBvcnQtJmd0O2lzX2VuYWJsZWQsIGZhbHNlKTsKIAkJYWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgdHJ1ZSk7CiAJfQogCWFnZyA9IF9fZ2V0X2ZpcnN0X2FnZyhwb3J0KTsKQEAgLTI4NzgsMTYgJiM0MzsyODc4LDIwIEBAIGludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKICAqIFJldHVybnM6ICAgMCBvbiBzdWNjZXNzCiAgKiAgICAgICAgICAmbHQ7IDAgb24gZXJyb3IKICAqLwotaW50IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwKJiM0MztpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLAogCQkJCSAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKQogewotCXN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDsKJiM0MzsJY29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wOwomIzQzOwlzdHJ1Y3QgYWRfc2xhdmVfaW5mbyAqYWRfc2xhdmVfaW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7CiAJc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKIAlzdHJ1Y3Qgc2xhdmUgKnNsYXZlOwotCXN0cnVjdCBwb3J0ICpwb3J0OwogCiAJYm9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHsKLQkJcG9ydCA9ICZhbXA7KFNMQVZFX0FEX0lORk8oc2xhdmUpLSZndDtwb3J0KTsKJiM0MzsJCWFkX3NsYXZlX2luZm8gPSBTTEFWRV9BRF9JTkZPKHNsYXZlKTsKJiM0MzsJCWlmICghYWRfc2xhdmVfaW5mbykKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXBvcnQgPSAmYW1wO2FkX3NsYXZlX2luZm8tJmd0O3BvcnQ7CiAJCXRtcCA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LSZndDthZ2dyZWdhdG9yKTsKIAkJaWYgKHRtcCAmYW1wOyZhbXA7IHRtcC0mZ3Q7aXNfYWN0aXZlKSB7CiAJCQlhZ2dyZWdhdG9yID0gdG1wOwpAQCAtMjkwNyw3ICYjNDM7MjkxMSw3IEBAIGludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbykKJiM0MztpbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pCiB7CiAJaW50IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMKaW5kZXggNGExMTU3MmY2NjNkMzEuLjU1ZDJmOGE1MzlkNDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMKQEAgLTY4Niw1MyAmIzQzOzY4Niw1OCBAQCBzdGF0aWMgc2l6ZV90IGJvbmRfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KQogCQkwOwogfQogCi1zdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKJiM0MztzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpCiB7Ci0JY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlOwotCWludCBpZmluZGV4OwomIzQzOwljb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDsKJiM0MzsJY29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlzbGF2ZSA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KGJvbmQpOwotCWlmaW5kZXggPSBzbGF2ZSA/IHNsYXZlLSZndDtpZmluZGV4IDogMDsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQlyZXR1cm4gaWZpbmRleDsKJiM0MzsJc2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwomIzQzOwlpZiAoc2xhdmUpCiYjNDM7CQlkZXYgPSBzbGF2ZS0mZ3Q7ZGV2OwomIzQzOwlyZXR1cm4gZGV2ID8gZGV2LSZndDtpZmluZGV4IDogMDsKIH0KIAogc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpCiB7Ci0Jc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7Ci0JdW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlOwotCWludCBpZmluZGV4LCBpLCB0YXJnZXRzX2FkZGVkOwomIzQzOwljb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTsKJiM0MzsJaW50IGksIHRhcmdldHNfYWRkZWQsIG1paW1vbiwgbW9kZTsKJiM0MzsJY29uc3Qgc3RydWN0IHNsYXZlICpwcmltYXJ5OwogCXN0cnVjdCBubGF0dHIgKnRhcmdldHM7Ci0Jc3RydWN0IHNsYXZlICpwcmltYXJ5OwogCi0JaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSkKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwltb2RlID0gUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5tb2RlKTsKJiM0MzsJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgbW9kZSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCi0JaWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChib25kKTsKLQlpZiAoaWZpbmRleCAmYW1wOyZhbXA7IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpCi0JCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwlpZiAoYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShtb2RlKSkgewomIzQzOwkJaW50IGlmaW5kZXggPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGJvbmQpOwomIzQzOwomIzQzOwkJaWYgKGlmaW5kZXggJmFtcDsmYW1wOyBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BQ1RJVkVfU0xBVkUsIGlmaW5kZXgpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwl9CiAKLQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBib25kLSZndDtwYXJhbXMubWlpbW9uKSkKJiM0MzsJbWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5taWltb24pOwomIzQzOwlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBtaWltb24pKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9VUERFTEFZLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLnVwZGVsYXkgKiBib25kLSZndDtwYXJhbXMubWlpbW9uKSkKJiM0MzsJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLmRvd25kZWxheSAqIGJvbmQtJmd0O3BhcmFtcy5taWltb24pKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuZG93bmRlbGF5KSAqIG1paW1vbikpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BFRVJfTk9USUZfREVMQVksCi0JCQlib25kLSZndDtwYXJhbXMucGVlcl9ub3RpZl9kZWxheSAqIGJvbmQtJmd0O3BhcmFtcy5taWltb24pKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMucGVlcl9ub3RpZl9kZWxheSkgKiBtaWltb24pKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1VTRV9DQVJSSUVSLCAxKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLCBib25kLSZndDtwYXJhbXMuYXJwX2ludGVydmFsKSkKJiM0MzsJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCwKJiM0MzsJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFycF9pbnRlcnZhbCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCXRhcmdldHMgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQVJQX0lQX1RBUkdFVCk7CkBAIC03NDEsOCAmIzQzOzc0NiwxMCBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAKIAl0YXJnZXRzX2FkZGVkID0gMDsKIAlmb3IgKGkgPSAwOyBpICZsdDsgQk9ORF9NQVhfQVJQX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChib25kLSZndDtwYXJhbXMuYXJwX3RhcmdldHNbaV0pIHsKLQkJCWlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLSZndDtwYXJhbXMuYXJwX3RhcmdldHNbaV0pKQomIzQzOwkJX19iZTMyIHQgPSBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFycF90YXJnZXRzW2ldKTsKJiM0MzsKJiM0MzsJCWlmICh0KSB7CiYjNDM7CQkJaWYgKG5sYV9wdXRfYmUzMihza2IsIGksIHQpKQogCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCQkJdGFyZ2V0c19hZGRlZCA9IDE7CiAJCX0KQEAgLTc1MywxMSAmIzQzOzc2MCwxMiBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAJZWxzZQogCQlubGFfbmVzdF9jYW5jZWwoc2tiLCB0YXJnZXRzKTsKIAotCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsIGJvbmQtJmd0O3BhcmFtcy5hcnBfdmFsaWRhdGUpKQomIzQzOwlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLAomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUywKLQkJCWJvbmQtJmd0O3BhcmFtcy5hcnBfYWxsX3RhcmdldHMpKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMuYXJwX2FsbF90YXJnZXRzKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKQEAgLTc2Nyw2ICYjNDM7Nzc1LDkgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJdGFyZ2V0c19hZGRlZCA9IDA7CiAJZm9yIChpID0gMDsgaSAmbHQ7IEJPTkRfTUFYX05TX1RBUkdFVFM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC4KJiM0MzsJCSAqIFdlIGFjY2VwdCB0aGlzIG1pbm9yIHJhY2UgZm9yIHRoZSBtb21lbnQuCiYjNDM7CQkgKi8KIAkJaWYgKCFpcHY2X2FkZHJfYW55KCZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7CiAJCQlpZiAobmxhX3B1dF9pbjZfYWRkcihza2IsIGksICZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLm5zX3RhcmdldHNbaV0pKQogCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwpAQCAtNzgwLDk3ICYjNDM7NzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7CiAjZW5kaWYKIAotCXByaW1hcnkgPSBydG5sX2RlcmVmZXJlbmNlKGJvbmQtJmd0O3ByaW1hcnlfc2xhdmUpOwomIzQzOwlwcmltYXJ5ID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtJmd0O3ByaW1hcnlfc2xhdmUpOwogCWlmIChwcmltYXJ5ICZhbXA7JmFtcDsKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWSwgcHJpbWFyeS0mZ3Q7ZGV2LSZndDtpZmluZGV4KSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9QUklNQVJZX1JFU0VMRUNULAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0ZBSUxfT1ZFUl9NQUMsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuZmFpbF9vdmVyX21hYykpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5mYWlsX292ZXJfbWFjKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfWE1JVF9IQVNIX1BPTElDWSwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy54bWl0X3BvbGljeSkpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy54bWl0X3BvbGljeSkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9SRVNFTkRfSUdNUCwKLQkJCWJvbmQtJmd0O3BhcmFtcy5yZXNlbmRfaWdtcCkpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5yZXNlbmRfaWdtcCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLm51bV9wZWVyX25vdGlmKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm51bV9wZWVyX25vdGlmKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQUxMX1NMQVZFU19BQ1RJVkUsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLAotCQkJYm9uZC0mZ3Q7cGFyYW1zLm1pbl9saW5rcykpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5taW5fbGlua3MpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTFBfSU5URVJWQUwsCi0JCQlib25kLSZndDtwYXJhbXMubHBfaW50ZXJ2YWwpKQomIzQzOwkJCVJFQURfT05DRShib25kLSZndDtwYXJhbXMubHBfaW50ZXJ2YWwpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlwYWNrZXRzX3Blcl9zbGF2ZSA9IGJvbmQtJmd0O3BhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTsKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUEFDS0VUU19QRVJfU0xBVkUsCi0JCQlwYWNrZXRzX3Blcl9zbGF2ZSkpCiYjNDM7CQkJUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZSkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX0xBQ1BfQUNUSVZFLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfYWN0aXZlKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfYWN0aXZlKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9SQVRFLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLmxhY3BfZmFzdCkpCiYjNDM7CQkgICAgICAgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5sYWNwX2Zhc3QpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9TRUxFQ1QsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuYWRfc2VsZWN0KSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX3NlbGVjdCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1RMQl9EWU5BTUlDX0xCLAotCQkgICAgICAgYm9uZC0mZ3Q7cGFyYW1zLnRsYl9keW5hbWljX2xiKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLnRsYl9keW5hbWljX2xiKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTUlTU0VEX01BWCwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy5taXNzZWRfbWF4KSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm1pc3NlZF9tYXgpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9DT1VQTEVEX0NPTlRST0wsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMuY291cGxlZF9jb250cm9sKSkKJiM0MzsJCSAgICAgICBSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmNvdXBsZWRfY29udHJvbCkpKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0JST0FEQ0FTVF9ORUlHSCwKLQkJICAgICAgIGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSkpCiAJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCiAJaWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTEFDUF9TVFJJQ1QsCi0JCSAgICAgICBib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QpKQomIzQzOwkJICAgICAgIFJFQURfT05DRShib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QpKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlpZiAoQk9ORF9NT0RFKGJvbmQpID09IEJPTkRfTU9ERV84MDIzQUQpIHsKJiM0MzsJaWYgKG1vZGUgPT0gQk9ORF9NT0RFXzgwMjNBRCkgewogCQlzdHJ1Y3QgYWRfaW5mbyBpbmZvOwogCiAJCWlmIChjYXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CiAJCQlpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfQUNUT1JfU1lTX1BSSU8sCi0JCQkJCWJvbmQtJmd0O3BhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpCiYjNDM7CQkJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX2FjdG9yX3N5c19wcmlvKSkpCiAJCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAkJCWlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLAotCQkJCQlib25kLSZndDtwYXJhbXMuYWRfdXNlcl9wb3J0X2tleSkpCiYjNDM7CQkJCQlSRUFEX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSkKIAkJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAomIzQzOwkJCS8qIFNtYWxsIHJhY2UgaGVyZSwgdGhpcyBpcyBhIG1pbm9yIHRyYWRlIG9mZi4gKi8KIAkJCWlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSwKIAkJCQkgICAgRVRIX0FMRU4sICZhbXA7Ym9uZC0mZ3Q7cGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpCiAJCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAJCX0KLQkJaWYgKCFib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGJvbmQsICZhbXA7aW5mbykpIHsKJiM0MzsJCWlmICghX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGJvbmQsICZhbXA7aW5mbykpIHsKIAkJCXN0cnVjdCBubGF0dHIgKm5lc3Q7CiAKIAkJCW5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7CkBAIC04OTgsOSAmIzQzOzkwOSwxMSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAl9CiAKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIDA7CiAKIG5sYV9wdXRfZmFpbHVyZToKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIC1FTVNHU0laRTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9vcHRpb25zLmMKQEAgLTkzNCwxNCAmIzQzOzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLAogCiAJLyogZG9uJiMzOTt0IGNhY2hlIGFycF92YWxpZGF0ZSBiZXR3ZWVuIG1vZGVzICovCiAJV1JJVEVfT05DRShib25kLSZndDtwYXJhbXMuYXJwX3ZhbGlkYXRlLCBCT05EX0FSUF9WQUxJREFURV9OT05FKTsKLQlib25kLSZndDtwYXJhbXMubW9kZSA9IG5ld3ZhbC0mZ3Q7dmFsdWU7CiYjNDM7CVdSSVRFX09OQ0UoYm9uZC0mZ3Q7cGFyYW1zLm1vZGUsIG5ld3ZhbC0mZ3Q7dmFsdWUpOwogCiAJLyogV2hlbiBjaGFuZ2luZyBtb2RlLCB0aGUgYm9uZCBkZXZpY2UgaXMgZG93biwgd2UgbWF5IHJlZHVjZQogCSAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvcgogCSAqIGVuYWJsZWQgaW4gODAyM2FkIG1vZGUuIFRoZXJlZm9yZSwgb25seSBjbGVhciBicm9hZGNhc3RfbmVpZ2hib3IKIAkgKiB0byAwLgogCSAqLwotCWJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPSAwOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIDApOwogCiAJaWYgKGJvbmQtJmd0O2Rldi0mZ3Q7cmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7CiAJCWJvb2wgdXBkYXRlID0gZmFsc2U7CkBAIC0xNzA2LDcgJiM0MzsxNzA2LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiB7CiAJbmV0ZGV2X2RiZyhib25kLSZndDtkZXYsICYjMzQ7U2V0dGluZyBMQUNQIGZhbGxiYWNrIHRvICVzICglbGx1KVxuJiMzNDssCiAJCSAgIG5ld3ZhbC0mZ3Q7c3RyaW5nLCBuZXd2YWwtJmd0O3ZhbHVlKTsKLQlib25kLSZndDtwYXJhbXMubGFjcF9zdHJpY3QgPSBuZXd2YWwtJmd0O3ZhbHVlOwomIzQzOwlXUklURV9PTkNFKGJvbmQtJmd0O3BhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLSZndDt2YWx1ZSk7CiAJYm9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7CiAKIAlyZXR1cm4gMDsKQEAgLTE5MjcsNyAmIzQzOzE5MjcsNyBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJaWYgKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPT0gbmV3dmFsLSZndDt2YWx1ZSkKIAkJcmV0dXJuIDA7CiAKLQlib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLSZndDt2YWx1ZTsKJiM0MzsJV1JJVEVfT05DRShib25kLSZndDtwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtJmd0O3ZhbHVlKTsKIAlpZiAoYm9uZC0mZ3Q7ZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfVVApIHsKIAkJaWYgKGJvbmQtJmd0O3BhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpCiAJCQlzdGF0aWNfYnJhbmNoX2luYygmYW1wO2JvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaAppbmRleCAwNTU3MmMxOWUxNGI3YS4uZWY2NjdkZmYyOTcyOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaApAQCAtMzAyLDggJiM0MzszMDIsOCBAQCB2b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7CiB2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KTsKIHZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTsKIHZvaWQgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBzbGF2ZSAqc2xhdmUsIGNoYXIgbGluayk7Ci1pbnQgIGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTsKLWludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLAomIzQzO2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pOwomIzQzO2ludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLAogCQkJCSAgICBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbyk7CiBpbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsCiAJCQkgc3RydWN0IHNsYXZlICpzbGF2ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kaW5nLmggYi9pbmNsdWRlL25ldC9ib25kaW5nLmgKaW5kZXggMmM1NGEzNmE4NDc3YjkuLjU5OGQ1NmIxYmM5NzA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9ib25kaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvYm9uZGluZy5oCkBAIC0zNDUsMTQgJiM0MzszNDUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoaW50IG1vZGUpCiAJICAgICAgIG1vZGUgPT0gQk9ORF9NT0RFX0FMQjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KHN0cnVjdCBib25kaW5nICpib25kKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIHsKIAlyZXR1cm4gYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShCT05EX01PREUoYm9uZCkpOwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIHsKLQlzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwogCiAJcmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpICZhbXA7JmFtcDsgc2xhdmUgPyBzbGF2ZS0mZ3Q7ZGV2IDogTlVMTDsKIH0KQEAgLTcwMyw3ICYjNDM7NzAzLDcgQEAgdm9pZCBib25kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldik7CiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTsKIGludCBib25kX25ldGxpbmtfaW5pdCh2b2lkKTsKIHZvaWQgYm9uZF9uZXRsaW5rX2Zpbmkodm9pZCk7Ci1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpOwomIzQzO3N0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCk7CiBjb25zdCBjaGFyICpib25kX3NsYXZlX2xpbmtfc3RhdHVzKHM4IGxpbmspOwogc3RydWN0IGJvbmRfdmxhbl90YWcgKmJvbmRfdmVyaWZ5X2RldmljZV9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpzdGFydF9kZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICplbmRfZGV2LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzQ5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBib25kaW5nIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFyb3VuZCBkYXRhIHJhY2VzIGFuZCBtZW1vcnkgb3JkZXJpbmcuIFRoZXkmIzM5O3ZlIHBlcHBlcmVkIHRoZSBjb2RlIHdpdGggYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBmb3IgdmFyaW91cyBmaWVsZHMsIGxpa2UgdGhvc2UgaW4gYGJvbmQtJmd0O3BhcmFtc2AgYW5kIGBwb3J0LSZndDtpc19lbmFibGVkYC4gVGhleSBhbHNvIHNlZW0gdG8gaGF2ZSBtb2RpZmllZCBmdW5jdGlvbiBzaWduYXR1cmVzIHRvIHVzZSBgY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmRgIG1vcmUgY29uc2lzdGVudGx5LCB3aGljaCBtYWtlcyBzZW5zZSBmcm9tIGEgZGF0YSBzYWZldHkgcGVyc3BlY3RpdmUuCgpUaGUgc2lnbmlmaWNhbnQgY2hhbmdlcyBhcmUgaW4gYGJvbmRfbmV0bGluay5jYCwgd2hlcmUgYGJvbmRfZmlsbF9pbmZvYCBoYXMgYmVlbiB1cGRhdGVkLiBJIG5vdGljZSB0aGV5JiMzOTt2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYFJFQURfT05DRSgpYCB3aGVuIHJlYWRpbmcgYGJvbmQtJmd0O3BhcmFtc2AgZmllbGRzLiBBbmQsIHRoZSBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4YCBmdW5jdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1YCwgd2hpY2ggbGV2ZXJhZ2VzIGByY3VfZGVyZWZlcmVuY2VgIGluc3RlYWQgb2YgdGhlIG1vcmUgdHJhZGl0aW9uYWwgbG9jay1yZWFkLXVubG9jayBhcHByb2FjaC4KClRoaXMgaXNuJiMzOTt0ICpqdXN0KiBhIGNvc21ldGljIGNoYW5nZTsgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZXNlIG1vZGlmaWNhdGlvbnMgZXhwbGljaXRseSBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IHVzaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAsIHRoZXkmIzM5O3JlIHRlbGxpbmcgdGhlIGNvbXBpbGVyIHRvIHJlc3BlY3QgbWVtb3J5IG9yZGVyaW5nLCB3aGljaCBpcyBjcml0aWNhbCBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuIEFkZGl0aW9uYWxseSwgdGhlIGV4cGxpY2l0IFJDVSBsb2NraW5nIGluIGBib25kX2ZpbGxfaW5mb2AgcHJvdmlkZXMgYSBtb3JlIHJvYnVzdCBtZWFucyBvZiBwcm90ZWN0aW5nIHNoYXJlZCBkYXRhIGR1cmluZyByZWFkcy4gSW4gZXNzZW5jZSwgdGhleSYjMzk7cmUgc2FjcmlmaWNpbmcgc29tZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBpbiBmYXZvciBvZiBwcmV2ZW50aW5nIHRob3NlIGRyZWFkZWQgZGF0YSByYWNlcy4KClNwZWNpZmljYWxseSwgbG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IHRoZXkgcHJvdmlkZWQgZnJvbSBgYm9uZF9maWxsX2luZm9gOiBUaGUgYWRkaXRpb24gb2YgYHJjdV9yZWFkX2xvY2soKWAgYXQgdGhlIGJlZ2lubmluZyBhbmQgdGhlIHVzZSBvZiBgUkVBRF9PTkNFKGJvbmQtJmd0O3BhcmFtcy5tb2RlKWAgaXMgdGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UuIFRoZSBmdW5jdGlvbiBhbHNvIHVzZXMgUkNVIHRvIHJldHJpZXZlIHRoZSBwcmltYXJ5IHNsYXZlJiMzOTtzIGludGVyZmFjZSBpbmRleC4gU28sIGBib25kX2ZpbGxfaW5mb2AgaXMgKmRlZmluaXRlbHkqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCgpHaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgaW4gZHVtcGluZyBib25kaW5nIGRldmljZSBpbmZvIHZpYSBuZXRsaW5rLCB3aGljaCBpcyBlYXNpbHkgdGVzdGFibGUgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgdGhpcyB3YXJyYW50cyBzZXJpb3VzIHNjcnV0aW55LiBGaXhpbmcgZGF0YSByYWNlcyBhbmQgaW50cm9kdWNpbmcgUkNVIGxvY2tpbmcgKmFsd2F5cyogbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlcmUmIzM5O3MgYSByaXNrIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzIGlmIHRoZSBSQ1UgbG9ja2luZyBpc24mIzM5O3QgaGFuZGxlZCBjb3JyZWN0bHkuIEZvciBpbnN0YW5jZSwgaXMgdGhlIHVubG9jayBoYW5kbGVkIGNvbnNpc3RlbnRseSBpbiBhbGwgZXJyb3IgcGF0aHM/IEl0IGxvb2tzIGxpa2UgdGhlIGBnb3RvIG5sYV9wdXRfZmFpbHVyZWAgc2hvdWxkIGhhbmRsZSB0aG9zZS4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGBncmVwcGVyYCB0byBzZWUgZXhhY3RseSB3aGVyZSBgYm9uZF9maWxsX2luZm9gIGlzIHVzZWQuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JvbmRfZmlsbF9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz02ODk9c3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtNjk5LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzo3MDA6c3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy03MDEtXHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz05ODU9c3RydWN0IHJ0bmxfbGlua19vcHMgYm9uZF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtOTk0LVx0LmdldF9zaXplXHRcdD0gYm9uZF9nZXRfc2l6ZSxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM6OTk1Olx0LmZpbGxfaW5mb1x0XHQ9IGJvbmRfZmlsbF9pbmZvLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy05OTYtXHQuZ2V0X251bV90eF9xdWV1ZXNcdD0gYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQ2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0bGluayBJbnRlcmZhY2UgZm9yIEJvbmRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBib25kaW5nLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgaG9va3MgYXJlIHBhcnQgb2YgYHJ0bmxfbGlua19vcHNgLiBUaGF0IG1ha2VzIHNlbnNlOyBhbnl0aGluZyBsaW5rLXJlbGF0ZWQgcHJvYmFibHkgbGl2ZXMgaW4gdGhlcmUuIEFuZCBpZiBpdCYjMzk7cyB0aGVyZSwgdGhlbiBpdOKAmXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHZpYSB0aG9zZSBzdGFuZGFyZCBgUlRNX05FV0xJTktgIGFuZCBgUlRNX0dFVExJTktgIG5ldGxpbmsgbWVzc2FnZXMuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIHRoZSBiaWcgb25lLCBidXQgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaW4gdGhlIGJvbmRpbmcgZHJpdmVyJiMzOTtzIEtjb25maWcgb3IgTWFrZWZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJJiMzOTtsbCBnZXQgdGhhdCBzb3J0ZWQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CT05ESU5HKSAmIzQzOz0gYm9uZGluZy5vXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQm9uZGluZyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYEJPTkRJTkdgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0byBleGFtaW5lIGZ1cnRoZXIuIE15IGluaXRpYWwgc2NhbiBoYXMgdHVybmVkIHVwIGEgaGFuZGZ1bCB0aGF0IHdhcnJhbnQgYSBkZWVwZXIgZGl2ZS4gVGhlc2UgaW5jbHVkZTogYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYCwgYGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYF9fYWdnX2FjdGl2ZV9wb3J0c2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgLCBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgLgoKSSYjMzk7bSB0aGlua2luZyBgYm9uZF9maWxsX2luZm9gIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGludm9sdmVkIGluIGR1bXBpbmcgbGluayBpbmZvIHN1Z2dlc3RzIGl0JiMzOTtzIG5vdCBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGggbGlrZSwgc2F5LCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFzb24gYWJvdXQuIFRoZSBzZXR0aW5nIGZ1bmN0aW9ucyAoYGJvbmRfb3B0aW9uX21vZGVfc2V0YCwgYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAsIGBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0YCkgYWxzbyBsb29rIHByb21pc2luZywgYXMgZG8gIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgIGJlY2F1c2UgaXQmIzM5O3MgaGFuZGxpbmcgbGluayBjaGFuZ2VzLiBUaGVuIEkmIzM5O20gYWxzbyBsb29raW5nIGF0IHRoZSBgX19hZ2dfYWN0aXZlX3BvcnRzYCwgYW5kIGhvdyBpdCB3b3JrcyB3aXRoIGBfX2FnZ191c2FibGVfcG9ydHNgLCBhbmQgYGFkX2FnZ19zZWxlY3Rpb25fbG9naWNgLgoKVG8gcmVmaW5lIHRoZSBsaXN0LCBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgZWFjaCBmdW5jdGlvbiBhbmQgY29uZmlybSBpdHMgcm9sZSBhbmQgaW1wYWN0LiBMZXQmIzM5O3Mgc2VlLi4uCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgYm9uZF9maWxsX2luZm9gIGlzIGluZGVlZCBjYWxsZWQgZm9yIG5ldGxpbmsgZHVtcHMuIGBib25kX29wdGlvbl9tb2RlX3NldGAgaGFuZGxlcyBzZXR0aW5nIHRoZSBtb2RlLiBgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0YCBkZWFscyB3aXRoIHNldHRpbmcgdGhlIGBsYWNwX3N0cmljdGAgb3B0aW9uIGFuZCBgYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldGAgc2V0cyB0aGUgYGJyb2FkY2FzdF9uZWlnaGAgb3B0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgLiBUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6CgpgYm9uZF9maWxsX2luZm9gCmBib25kX29wdGlvbl9tb2RlX3NldGAKYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAKYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgCmBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgCmBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hZ2dfYWN0aXZlX3BvcnRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTc0OD1zdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy03NjItXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6NzYzOnN0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Nzk0PXN0YXRpYyB1MzIgX19nZXRfYWdnX2JhbmR3aWR0aChzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy03OTUte1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjc5NjpcdGludCBucG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzk3LVx0dTMyIGJhbmR3aWR0aCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTE3MzY9c3RhdGljIHN0cnVjdCBhZ2dyZWdhdG9yICphZF9hZ2dfc2VsZWN0aW9uX3Rlc3Qoc3RydWN0IGFnZ3JlZ2F0b3IgKmJlc3QsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTAtXHRjYXNlIEJPTkRfQURfQ09VTlQ6XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTc5MTpcdFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhjdXJyKSBcdTAwM2UgX19hZ2dfYWN0aXZlX3BvcnRzKGJlc3QpKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTItXHRcdFx0cmV0dXJuIGN1cnI7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5My1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxNzk0Olx0XHRpZiAoX19hZ2dfYWN0aXZlX3BvcnRzKGN1cnIpIFx1MDAzYyBfX2FnZ19hY3RpdmVfcG9ydHMoYmVzdCkpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5NS1cdFx0XHRyZXR1cm4gYmVzdDtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTg2Mz1zdGF0aWMgdm9pZCBhZF9hZ2dfc2VsZWN0aW9uX2xvZ2ljKHN0cnVjdCBhZ2dyZWdhdG9yICphZ2csXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4ODEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTg4MjpcdFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhhZ2cpIFx1MDAyNlx1MDAyNiBhZ2dfZGV2aWNlX3VwKGFnZykpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTg4My1cdFx0XHRiZXN0ID0gYWRfYWdnX3NlbGVjdGlvbl90ZXN0KGJlc3QsIGFnZyk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTMtXHRcdGlmIChhY3RpdmUgXHUwMDI2XHUwMDI2IGFjdGl2ZS1cdTAwM2VsYWdfcG9ydHMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTg5NDpcdFx0ICAgIF9fYWdnX2FjdGl2ZV9wb3J0cyhhY3RpdmUpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTUtXHRcdCAgICAoX19hZ2dfaGFzX3BhcnRuZXIoYWN0aXZlKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMzI2PXZvaWQgYm9uZF8zYWRfdW5iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI0NjAtXHRcdFx0XHR0ZW1wX2FnZ3JlZ2F0b3ItXHUwMDNlbnVtX29mX3BvcnRzLS07XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ2MTpcdFx0XHRcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHModGVtcF9hZ2dyZWdhdG9yKSA9PSAwKSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ2Mi1cdFx0XHRcdFx0c2VsZWN0X25ld19hY3RpdmVfYWdnID0gdGVtcF9hZ2dyZWdhdG9yLVx1MDAzZWlzX2FjdGl2ZTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjgzOT1pbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTQtXHRcdGlmICgoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QgPyBfX2FnZ191c2FibGVfcG9ydHMoYWN0aXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4NTU6XHRcdFx0XHRcdDogX19hZ2dfYWN0aXZlX3BvcnRzKGFjdGl2ZSkpIFx1MDAzY1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTYtXHRcdCAgICBib25kLVx1MDAzZXBhcmFtcy5taW5fbGlua3MpIHtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Mjg4MT1pbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTA1LVx0YWRfaW5mby1cdTAwM2VhZ2dyZWdhdG9yX2lkID0gYWdncmVnYXRvci1cdTAwM2VhZ2dyZWdhdG9yX2lkZW50aWZpZXI7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkwNjpcdGFkX2luZm8tXHUwMDNlcG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkwNy1cdGFkX2luZm8tXHUwMDNlYWN0b3Jfa2V5ID0gYWdncmVnYXRvci1cdTAwM2VhY3Rvcl9vcGVyX2FnZ3JlZ2F0b3Jfa2V5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgKioKCk9rYXksIHNvIHRoaXMgYF9fYWdnX2FjdGl2ZV9wb3J0c2AgZnVuY3Rpb24gaXMgdXNlZCBxdWl0ZSBhIGJpdCwgYW5kIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMuIExldCYjMzk7cyBpbmNsdWRlIGZ1bmN0aW9ucyBsaWtlIGBib25kX2ZpbGxfaW5mb2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgLCBhbmQgYF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb2AgaW4gbXkgcmV2aWV3IG9mIHRoZSBmdW5jdGlvbi4KCk5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gSSYjMzk7bSBzZWVpbmcgaXMgYENPTkZJR19CT05ESU5HYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEJ1dCwgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBXYWl0LCBJIHNlZSB0aGF0IGBib25kX2ZpbGxfaW5mb2AgaGFzIGFuIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgIGNvbmRpdGlvbmFsIHdpdGhpbiBpdC4gRXZlbiB0aG91Z2ggYENPTkZJR19CT05ESU5HYCBhbGxvd3MgdGhlIGZpbGUgdG8gY29tcGlsZSwgdGhlIHByZXNlbmNlIG9mIHRoYXQgSVB2NiBjaGVjayBtYWtlcyBtZSB3YW50IHRvIGJlIGV4dHJhIGNhcmVmdWwuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZpbGUgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZpbGUgZG9lcyBub3QgZXhpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzgyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipLZXJuZWwgQ29uZmlnIEh1bnQqKgoKSG1tLCB3aGVyZSYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgZ2VuZXJhbCBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBCdXQgd2FpdCwgaXMgdGhlcmUgYm9uZGluZyBjb25maWd1cmF0aW9uPyBJJiMzOTttIGRyYXdpbmcgYSBibGFuayBvbiB3aGV0aGVyIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGFjdHVhbGx5ICpleGlzdHMqLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgZmlsZSBzdHJ1Y3R1cmUuIE5lZWQgdG8gdHJhY2sgZG93biB0aGUgbmV0d29yayBib25kaW5nIGNvbmZpZ3VyYXRpb24gS2NvbmZpZyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NDcKCQkJCQkJCW91dHB1dDogMTM1CgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgYEJPTkRJTkdgLiBZZXMsIHRoYXTigJlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgcGF0Y2guCgpJJiMzOTttIHNlZWluZyB0aGV5JiMzOTt2ZSBhZGRlZCBgUkVBRF9PTkNFYCBhbmQgYFdSSVRFX09OQ0VgIHRvIGBwb3J0LSZndDtpc19lbmFibGVkYCB3aXRoaW4gYF9fYWdnX2FjdGl2ZV9wb3J0c2AgYW5kIGBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgLiBTbWFydC4gVGhhdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBhZGRyZXNzIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXkmIzM5O3ZlIGFsc28gYXBwbGllZCBgUkVBRF9PTkNFYCB0byB2YXJpb3VzIGZpZWxkcyB3aXRoaW4gYGJvbmQtJmd0O3BhcmFtc2AgaW4gYGJvbmRfZmlsbF9pbmZvYCBhbmQgYGJvbmRfb3B0aW9uXypfc2V0YC4gRGVmaW5pdGVseSBtYWtpbmcgc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIGNvbnNpc3RlbnQuCgpUaGUgY2hhbmdlIHRvIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGlzIGludGVyZXN0aW5nOyByZW5hbWluZyBpdCB0byBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdWAgYW5kIHN3YXBwaW5nIGByY3VfcmVhZF9sb2NrKClgICYjNDM7IGByY3VfZGVyZWZlcmVuY2VfcnRubCgpYCBmb3IgYHJjdV9kZXJlZmVyZW5jZWAgaXMgc2lnbmlmaWNhbnQuIFRoYXQmIzM5O3MgYSBtb3ZlIGF3YXkgZnJvbSB0aGUgb2xkZXIgUkNVIHJlYWQgbG9ja2luZyBhcHByb2FjaC4gVGhleSYjMzk7cmUgdHJ5aW5nIHRvIHVzZSBgcmN1X2RlcmVmZXJlbmNlYCBtb3JlIGVmZmVjdGl2ZWx5LgoKQW5kIGFoLCB5ZXMsIHRoZXkmIzM5O3ZlICphZGRlZCogYHJjdV9yZWFkX2xvY2soKWAgdG8gYGJvbmRfZmlsbF9pbmZvYC4gVGhpcyBpcyB3aGVyZSB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgbGllczogSXQmIzM5O3MgZXhwbGljaXRseSBkZXNpZ25lZCB0byBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IGFkZGluZyBhbmQgbW9kaWZ5aW5nIFJDVSBsb2NraW5nIHdpdGhpbiBgYm9uZF9maWxsX2luZm9gLCB0aGV5IGFyZSB3b3JraW5nIHRvIGVuc3VyZSB0aGF0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBuZXRsaW5rIGluZm8gZmlsbGluZyBpcyBzYWZlLiBUaGUgcmVhc29uaW5nIGdpdmVuIGlzIHNvbGlkLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSwgYW5kIGVuc3VyZSB0aGF0IG5vIHJlZ3Jlc3Npb25zIG9jY3VyIHdpdGggdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuCgpUaGUgbWFpbiBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uLCBpbiBteSBvcGluaW9uLCBhcmUgYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX21vZGVfc2V0YCwgYGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZWAsIGFuZCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYC4gVGhlc2UgYXJlIHRoZSBrZXkgdG91Y2hwb2ludHMuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSBhcmVhcyB0aG9yb3VnaGx5IGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBvciBtaXNzZWQgbG9ja2luZyBzY2VuYXJpb3MuCgpMZXQmIzM5O3MgZ2V0IHRob3NlIHRlc3QgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtib25kX29wdGlvbl9tb2RlX3NldCYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UmIzM0OywKICAgICYjMzQ7X19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowMzo1OS4wNDM0Nzc5MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3OTI0OTAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9maWxsX2luZm9cIixcbiAgICBcImJvbmRfb3B0aW9uX21vZGVfc2V0XCIsXG4gICAgXCJib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VcIixcbiAgICBcIl9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjAzOjU5LjA0MzQ4ODI0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxNTY4NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTllYzk5ZDY2ZDFkYmE4YjEyNDcwN2M3YzY5OWQxNWY4Nzc3YzI4ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcXG5pbmRleCBhY2JiYTA4ZGJkZmFkYS4uYjhlNGI0ZDY4ZGQ2NWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXFxuQEAgLTc2MCwxNCArNzYwLDE0IEBAIHN0YXRpYyBpbnQgX19hZ2dfdXNhYmxlX3BvcnRzKHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXFxuIFxcdHJldHVybiB2YWxpZDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZylcXG4rc3RhdGljIGludCBfX2FnZ19hY3RpdmVfcG9ydHMoY29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZylcXG4ge1xcbi1cXHRzdHJ1Y3QgcG9ydCAqcG9ydDtcXG4rXFx0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XFxuIFxcdGludCBhY3RpdmUgPSAwO1xcbiBcXG4gXFx0Zm9yIChwb3J0ID0gYWdnLVxcdTAwM2VsYWdfcG9ydHM7IHBvcnQ7XFxuIFxcdCAgICAgcG9ydCA9IHBvcnQtXFx1MDAzZW5leHRfcG9ydF9pbl9hZ2dyZWdhdG9yKSB7XFxuLVxcdFxcdGlmIChwb3J0LVxcdTAwM2Vpc19lbmFibGVkKVxcbitcXHRcXHRpZiAoUkVBRF9PTkNFKHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQpKVxcbiBcXHRcXHRcXHRhY3RpdmUrKztcXG4gXFx0fVxcbiBcXG5AQCAtMjgwMSwxMSArMjgwMSwxMSBAQCB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuIFxcdCAqIHNvbWUgb2YgaGUgYWRhcHRvcnMoY2UxMDAwLmxhbikgcmVwb3J0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKGxpbmsgPT0gQk9ORF9MSU5LX1VQKSB7XFxuLVxcdFxcdHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xcbitcXHRcXHRXUklURV9PTkNFKHBvcnQtXFx1MDAzZWlzX2VuYWJsZWQsIHRydWUpO1xcbiBcXHRcXHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCBmYWxzZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qIGxpbmsgaGFzIGZhaWxlZCAqL1xcbi1cXHRcXHRwb3J0LVxcdTAwM2Vpc19lbmFibGVkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UocG9ydC1cXHUwMDNlaXNfZW5hYmxlZCwgZmFsc2UpO1xcbiBcXHRcXHRhZF91cGRhdGVfYWN0b3Jfa2V5cyhwb3J0LCB0cnVlKTtcXG4gXFx0fVxcbiBcXHRhZ2cgPSBfX2dldF9maXJzdF9hZ2cocG9ydCk7XFxuQEAgLTI4NzgsMTYgKzI4NzgsMjAgQEAgaW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxcbiAgKiBSZXR1cm5zOiAgIDAgb24gc3VjY2Vzc1xcbiAgKiAgICAgICAgICBcXHUwMDNjIDAgb24gZXJyb3JcXG4gICovXFxuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuK2ludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxcbiB7XFxuLVxcdHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcXG4rXFx0Y29uc3Qgc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IgPSBOVUxMLCAqdG1wO1xcbitcXHRzdHJ1Y3QgYWRfc2xhdmVfaW5mbyAqYWRfc2xhdmVfaW5mbztcXG4rXFx0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XFxuIFxcdHN0cnVjdCBzbGF2ZSAqc2xhdmU7XFxuLVxcdHN0cnVjdCBwb3J0ICpwb3J0O1xcbiBcXG4gXFx0Ym9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHtcXG4tXFx0XFx0cG9ydCA9IFxcdTAwMjYoU0xBVkVfQURfSU5GTyhzbGF2ZSktXFx1MDAzZXBvcnQpO1xcbitcXHRcXHRhZF9zbGF2ZV9pbmZvID0gU0xBVkVfQURfSU5GTyhzbGF2ZSk7XFxuK1xcdFxcdGlmICghYWRfc2xhdmVfaW5mbylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHBvcnQgPSBcXHUwMDI2YWRfc2xhdmVfaW5mby1cXHUwMDNlcG9ydDtcXG4gXFx0XFx0dG1wID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IpO1xcbiBcXHRcXHRpZiAodG1wIFxcdTAwMjZcXHUwMDI2IHRtcC1cXHUwMDNlaXNfYWN0aXZlKSB7XFxuIFxcdFxcdFxcdGFnZ3JlZ2F0b3IgPSB0bXA7XFxuQEAgLTI5MDcsNyArMjkxMSw3IEBAIGludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1pbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuK2ludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcXG5pbmRleCA0YTExNTcyZjY2M2QzMS4uNTVkMmY4YTUzOWQ0NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmNcXG5AQCAtNjg2LDUzICs2ODYsNTggQEAgc3RhdGljIHNpemVfdCBib25kX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4gXFx0XFx0MDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXgoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuK3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XFxuLVxcdGludCBpZmluZGV4O1xcbitcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDtcXG4rXFx0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTtcXG4gXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0c2xhdmUgPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShib25kKTtcXG4tXFx0aWZpbmRleCA9IHNsYXZlID8gc2xhdmUtXFx1MDAzZWlmaW5kZXggOiAwO1xcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0cmV0dXJuIGlmaW5kZXg7XFxuK1xcdHNsYXZlID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtXFx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcXG4rXFx0aWYgKHNsYXZlKVxcbitcXHRcXHRkZXYgPSBzbGF2ZS1cXHUwMDNlZGV2O1xcbitcXHRyZXR1cm4gZGV2ID8gZGV2LVxcdTAwM2VpZmluZGV4IDogMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldilcXG4ge1xcbi1cXHRzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTtcXG4tXFx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xcbi1cXHRpbnQgaWZpbmRleCwgaSwgdGFyZ2V0c19hZGRlZDtcXG4rXFx0Y29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBuZXRkZXZfcHJpdihib25kX2Rldik7XFxuK1xcdGludCBpLCB0YXJnZXRzX2FkZGVkLCBtaWltb24sIG1vZGU7XFxuK1xcdGNvbnN0IHN0cnVjdCBzbGF2ZSAqcHJpbWFyeTtcXG4gXFx0c3RydWN0IG5sYXR0ciAqdGFyZ2V0cztcXG4tXFx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xcbiBcXG4tXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRtb2RlID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5tb2RlKTtcXG4rXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgbW9kZSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4tXFx0aWZpbmRleCA9IGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleChib25kKTtcXG4tXFx0aWYgKGlmaW5kZXggXFx1MDAyNlxcdTAwMjYgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQUNUSVZFX1NMQVZFLCBpZmluZGV4KSlcXG4tXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdGlmIChib25kX21vZGVfdXNlc19wcmltYXJ5KG1vZGUpKSB7XFxuK1xcdFxcdGludCBpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShib25kKTtcXG4rXFxuK1xcdFxcdGlmIChpZmluZGV4IFxcdTAwMjZcXHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXFxuK1xcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBib25kLVxcdTAwM2VwYXJhbXMubWlpbW9uKSlcXG4rXFx0bWlpbW9uID0gUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5taWltb24pO1xcbitcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlJTU9OLCBtaWltb24pKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9VUERFTEFZLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMudXBkZWxheSAqIGJvbmQtXFx1MDAzZXBhcmFtcy5taWltb24pKVxcbitcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMuZG93bmRlbGF5ICogYm9uZC1cXHUwMDNlcGFyYW1zLm1paW1vbikpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuZG93bmRlbGF5KSAqIG1paW1vbikpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BFRVJfTk9USUZfREVMQVksXFxuLVxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5ICogYm9uZC1cXHUwMDNlcGFyYW1zLm1paW1vbikpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMucGVlcl9ub3RpZl9kZWxheSkgKiBtaWltb24pKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1VTRV9DQVJSSUVSLCAxKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLCBib25kLVxcdTAwM2VwYXJhbXMuYXJwX2ludGVydmFsKSlcXG4rXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9JTlRFUlZBTCxcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHR0YXJnZXRzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FSUF9JUF9UQVJHRVQpO1xcbkBAIC03NDEsOCArNzQ2LDEwIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdHRhcmdldHNfYWRkZWQgPSAwO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQk9ORF9NQVhfQVJQX1RBUkdFVFM7IGkrKykge1xcbi1cXHRcXHRpZiAoYm9uZC1cXHUwMDNlcGFyYW1zLmFycF90YXJnZXRzW2ldKSB7XFxuLVxcdFxcdFxcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLVxcdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pKVxcbitcXHRcXHRfX2JlMzIgdCA9IFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3RhcmdldHNbaV0pO1xcbitcXG4rXFx0XFx0aWYgKHQpIHtcXG4rXFx0XFx0XFx0aWYgKG5sYV9wdXRfYmUzMihza2IsIGksIHQpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFx0XFx0XFx0dGFyZ2V0c19hZGRlZCA9IDE7XFxuIFxcdFxcdH1cXG5AQCAtNzUzLDExICs3NjAsMTIgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRlbHNlXFxuIFxcdFxcdG5sYV9uZXN0X2NhbmNlbChza2IsIHRhcmdldHMpO1xcbiBcXG4tXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9WQUxJREFURSwgYm9uZC1cXHUwMDNlcGFyYW1zLmFycF92YWxpZGF0ZSkpXFxuK1xcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfVkFMSURBVEUsXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUyxcXG4tXFx0XFx0XFx0Ym9uZC1cXHUwMDNlcGFyYW1zLmFycF9hbGxfdGFyZ2V0cykpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX2FsbF90YXJnZXRzKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuQEAgLTc2Nyw2ICs3NzUsOSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHR0YXJnZXRzX2FkZGVkID0gMDtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJPTkRfTUFYX05TX1RBUkdFVFM7IGkrKykge1xcbitcXHRcXHQvKiBOb3RlOiBJUHY2IGFkZHJlc3NlcyBjYW4gbm90IGJlIHJlYWQgaW4gYW4gYXRvbWljIFJFQURfT05DRSgpIHlldC5cXG4rXFx0XFx0ICogV2UgYWNjZXB0IHRoaXMgbWlub3IgcmFjZSBmb3IgdGhlIG1vbWVudC5cXG4rXFx0XFx0ICovXFxuIFxcdFxcdGlmICghaXB2Nl9hZGRyX2FueShcXHUwMDI2Ym9uZC1cXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XFxuIFxcdFxcdFxcdGlmIChubGFfcHV0X2luNl9hZGRyKHNrYiwgaSwgXFx1MDAyNmJvbmQtXFx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuQEAgLTc4MCw5NyArNzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XFxuICNlbmRpZlxcbiBcXG4tXFx0cHJpbWFyeSA9IHJ0bmxfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XFxuK1xcdHByaW1hcnkgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cXHUwMDNlcHJpbWFyeV9zbGF2ZSk7XFxuIFxcdGlmIChwcmltYXJ5IFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QUklNQVJZLCBwcmltYXJ5LVxcdTAwM2VkZXYtXFx1MDAzZWlmaW5kZXgpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1BSSU1BUllfUkVTRUxFQ1QsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMucHJpbWFyeV9yZXNlbGVjdCkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmZhaWxfb3Zlcl9tYWMpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5mYWlsX292ZXJfbWFjKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfWE1JVF9IQVNIX1BPTElDWSxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnhtaXRfcG9saWN5KSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1JFU0VORF9JR01QLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMucmVzZW5kX2lnbXApKVxcbitcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnJlc2VuZF9pZ21wKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTlVNX1BFRVJfTk9USUYsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5udW1fcGVlcl9ub3RpZikpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FMTF9TTEFWRVNfQUNUSVZFLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmFsbF9zbGF2ZXNfYWN0aXZlKSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLFxcbi1cXHRcXHRcXHRib25kLVxcdTAwM2VwYXJhbXMubWluX2xpbmtzKSlcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5taW5fbGlua3MpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTFBfSU5URVJWQUwsXFxuLVxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMubHBfaW50ZXJ2YWwpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRwYWNrZXRzX3Blcl9zbGF2ZSA9IGJvbmQtXFx1MDAzZXBhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTtcXG4gXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1BBQ0tFVFNfUEVSX1NMQVZFLFxcbi1cXHRcXHRcXHRwYWNrZXRzX3Blcl9zbGF2ZSkpXFxuK1xcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMucGFja2V0c19wZXJfc2xhdmUpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX0FDVElWRSxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX2FjdGl2ZSkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfYWN0aXZlKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9SQVRFLFxcbi1cXHRcXHQgICAgICAgYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX1NFTEVDVCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9zZWxlY3QpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9UTEJfRFlOQU1JQ19MQixcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy50bGJfZHluYW1pY19sYikpXFxuK1xcdFxcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLnRsYl9keW5hbWljX2xiKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTUlTU0VEX01BWCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5taXNzZWRfbWF4KSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMubWlzc2VkX21heCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuIFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0NPVVBMRURfQ09OVFJPTCxcXG4tXFx0XFx0ICAgICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5jb3VwbGVkX2NvbnRyb2wpKSlcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9CUk9BRENBU1RfTkVJR0gsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSlcXG4rXFx0XFx0ICAgICAgIFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSkpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTEFDUF9TVFJJQ1QsXFxuLVxcdFxcdCAgICAgICBib25kLVxcdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QpKVxcbitcXHRcXHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCkpKVxcbiBcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFxuLVxcdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xcbitcXHRpZiAobW9kZSA9PSBCT05EX01PREVfODAyM0FEKSB7XFxuIFxcdFxcdHN0cnVjdCBhZF9pbmZvIGluZm87XFxuIFxcbiBcXHRcXHRpZiAoY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xcbiBcXHRcXHRcXHRpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfQUNUT1JfU1lTX1BSSU8sXFxuLVxcdFxcdFxcdFxcdFxcdGJvbmQtXFx1MDAzZXBhcmFtcy5hZF9hY3Rvcl9zeXNfcHJpbykpXFxuK1xcdFxcdFxcdFxcdFxcdFJFQURfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbiBcXHRcXHRcXHRpZiAobmxhX3B1dF91MTYoc2tiLCBJRkxBX0JPTkRfQURfVVNFUl9QT1JUX0tFWSxcXG4tXFx0XFx0XFx0XFx0XFx0Ym9uZC1cXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKVxcbitcXHRcXHRcXHRcXHRcXHRSRUFEX09OQ0UoYm9uZC1cXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSlcXG4gXFx0XFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbitcXHRcXHRcXHQvKiBTbWFsbCByYWNlIGhlcmUsIHRoaXMgaXMgYSBtaW5vciB0cmFkZSBvZmYuICovXFxuIFxcdFxcdFxcdGlmIChubGFfcHV0KHNrYiwgSUZMQV9CT05EX0FEX0FDVE9SX1NZU1RFTSxcXG4gXFx0XFx0XFx0XFx0ICAgIEVUSF9BTEVOLCBcXHUwMDI2Ym9uZC1cXHUwMDNlcGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpXFxuIFxcdFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlmICghYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBcXHUwMDI2aW5mbykpIHtcXG4rXFx0XFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXFx1MDAyNmluZm8pKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBubGF0dHIgKm5lc3Q7XFxuIFxcbiBcXHRcXHRcXHRuZXN0ID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FEX0lORk8pO1xcbkBAIC04OTgsOSArOTA5LDExIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBubGFfcHV0X2ZhaWx1cmU6XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbmluZGV4IGU1OTBjOGRlZTg2ZTFlLi4zNmI4ZDg5Mzg3ZWU1ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jXFxuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xcbkBAIC05MzQsMTQgKzkzNCwxNCBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX21vZGVfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbiBcXG4gXFx0LyogZG9uJ3QgY2FjaGUgYXJwX3ZhbGlkYXRlIGJldHdlZW4gbW9kZXMgKi9cXG4gXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlLCBCT05EX0FSUF9WQUxJREFURV9OT05FKTtcXG4tXFx0Ym9uZC1cXHUwMDNlcGFyYW1zLm1vZGUgPSBuZXd2YWwtXFx1MDAzZXZhbHVlO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5tb2RlLCBuZXd2YWwtXFx1MDAzZXZhbHVlKTtcXG4gXFxuIFxcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcXG4gXFx0ICogdGhlIGJvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCBpbiBib25kX2Nsb3NlKCkgaWYgYnJvYWRjYXN0X25laWdoYm9yXFxuIFxcdCAqIGVuYWJsZWQgaW4gODAyM2FkIG1vZGUuIFRoZXJlZm9yZSwgb25seSBjbGVhciBicm9hZGNhc3RfbmVpZ2hib3JcXG4gXFx0ICogdG8gMC5cXG4gXFx0ICovXFxuLVxcdGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPSAwO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIDApO1xcbiBcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZWRldi1cXHUwMDNlcmVnX3N0YXRlID09IE5FVFJFR19SRUdJU1RFUkVEKSB7XFxuIFxcdFxcdGJvb2wgdXBkYXRlID0gZmFsc2U7XFxuQEAgLTE3MDYsNyArMTcwNiw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxcbiB7XFxuIFxcdG5ldGRldl9kYmcoYm9uZC1cXHUwMDNlZGV2LCBcXFwiU2V0dGluZyBMQUNQIGZhbGxiYWNrIHRvICVzICglbGx1KVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgbmV3dmFsLVxcdTAwM2VzdHJpbmcsIG5ld3ZhbC1cXHUwMDNldmFsdWUpO1xcbi1cXHRib25kLVxcdTAwM2VwYXJhbXMubGFjcF9zdHJpY3QgPSBuZXd2YWwtXFx1MDAzZXZhbHVlO1xcbitcXHRXUklURV9PTkNFKGJvbmQtXFx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLVxcdTAwM2V2YWx1ZSk7XFxuIFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE5MjcsNyArMTkyNyw3IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IgPT0gbmV3dmFsLVxcdTAwM2V2YWx1ZSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVxcdTAwM2V2YWx1ZTtcXG4rXFx0V1JJVEVfT05DRShib25kLVxcdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCBuZXd2YWwtXFx1MDAzZXZhbHVlKTtcXG4gXFx0aWYgKGJvbmQtXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gXFx0XFx0aWYgKGJvbmQtXFx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpXFxuIFxcdFxcdFxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZib25kX2JjYXN0X25laWdoX2VuYWJsZWQpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaFxcbmluZGV4IDA1NTcyYzE5ZTE0YjdhLi5lZjY2N2RmZjI5NzI5NCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9ib25kXzNhZC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaFxcbkBAIC0zMDIsOCArMzAyLDggQEAgdm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICopO1xcbiB2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KTtcXG4gdm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xcbiB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspO1xcbi1pbnQgIGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcXG4taW50ICBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuK2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xcbitpbnQgIF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcXG4gaW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxcbiBcXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaCBiL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxcbmluZGV4IDJjNTRhMzZhODQ3N2I5Li41OThkNTZiMWJjOTcwNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9ib25kaW5nLmhcXG4rKysgYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcXG5AQCAtMzQ1LDE0ICszNDUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoaW50IG1vZGUpXFxuIFxcdCAgICAgICBtb2RlID09IEJPTkRfTU9ERV9BTEI7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4rc3RhdGljIGlubGluZSBib29sIGJvbmRfdXNlc19wcmltYXJ5KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxcbiB7XFxuIFxcdHJldHVybiBib25kX21vZGVfdXNlc19wcmltYXJ5KEJPTkRfTU9ERShib25kKSk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfcmN1KHN0cnVjdCBib25kaW5nICpib25kKVxcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4ge1xcbi1cXHRzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYm9uZC1cXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xcbiBcXG4gXFx0cmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpIFxcdTAwMjZcXHUwMDI2IHNsYXZlID8gc2xhdmUtXFx1MDAzZWRldiA6IE5VTEw7XFxuIH1cXG5AQCAtNzAzLDcgKzcwMyw3IEBAIHZvaWQgYm9uZF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpO1xcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcXG4gaW50IGJvbmRfbmV0bGlua19pbml0KHZvaWQpO1xcbiB2b2lkIGJvbmRfbmV0bGlua19maW5pKHZvaWQpO1xcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xcbitzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xcbiBjb25zdCBjaGFyICpib25kX3NsYXZlX2xpbmtfc3RhdHVzKHM4IGxpbmspO1xcbiBzdHJ1Y3QgYm9uZF92bGFuX3RhZyAqYm9uZF92ZXJpZnlfZGV2aWNlX3BhdGgoc3RydWN0IG5ldF9kZXZpY2UgKnN0YXJ0X2RldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmVuZF9kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjAzOjU5LjQ2NjAwNTU3OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNTY3MDg4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZmlsbF9pbmZvXCIsXG4gICAgXCJib25kX29wdGlvbl9tb2RlX3NldFwiLFxuICAgIFwiYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlXCIsXG4gICAgXCJfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIGRyaXZlciBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UgYW5kIFJDVSBsb2NraW5nIGluIG5ldGxpbmsgaW5mbyBmaWxsaW5nLiBGdXp6aW5nIGNhbiB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBSQ1UgbG9ja2luZyBhbmQgZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHRoZSBib25kaW5nIG5ldGxpbmsgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE5ZWM5OWQ2NmQxZGJhOGIxMjQ3MDdjN2M2OTlkMTVmODc3N2MyOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxODowMzo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuaW5kZXggYWNiYmEwOGRiZGZhZGEuLmI4ZTRiNGQ2OGRkNjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbkBAIC03NjAsMTQgKzc2MCwxNCBAQCBzdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuIFx0cmV0dXJuIHZhbGlkO1xuIH1cbiBcbi1zdGF0aWMgaW50IF9fYWdnX2FjdGl2ZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxuK3N0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXG4ge1xuLVx0c3RydWN0IHBvcnQgKnBvcnQ7XG4rXHRjb25zdCBzdHJ1Y3QgcG9ydCAqcG9ydDtcbiBcdGludCBhY3RpdmUgPSAwO1xuIFxuIFx0Zm9yIChwb3J0ID0gYWdnLVx1MDAzZWxhZ19wb3J0czsgcG9ydDtcbiBcdCAgICAgcG9ydCA9IHBvcnQtXHUwMDNlbmV4dF9wb3J0X2luX2FnZ3JlZ2F0b3IpIHtcbi1cdFx0aWYgKHBvcnQtXHUwMDNlaXNfZW5hYmxlZClcbitcdFx0aWYgKFJFQURfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQpKVxuIFx0XHRcdGFjdGl2ZSsrO1xuIFx0fVxuIFxuQEAgLTI4MDEsMTEgKzI4MDEsMTEgQEAgdm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuIFx0ICogc29tZSBvZiBoZSBhZGFwdG9ycyhjZTEwMDAubGFuKSByZXBvcnQuXG4gXHQgKi9cbiBcdGlmIChsaW5rID09IEJPTkRfTElOS19VUCkge1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSB0cnVlO1xuK1x0XHRXUklURV9PTkNFKHBvcnQtXHUwMDNlaXNfZW5hYmxlZCwgdHJ1ZSk7XG4gXHRcdGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHBvcnQsIGZhbHNlKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIGxpbmsgaGFzIGZhaWxlZCAqL1xuLVx0XHRwb3J0LVx1MDAzZWlzX2VuYWJsZWQgPSBmYWxzZTtcbitcdFx0V1JJVEVfT05DRShwb3J0LVx1MDAzZWlzX2VuYWJsZWQsIGZhbHNlKTtcbiBcdFx0YWRfdXBkYXRlX2FjdG9yX2tleXMocG9ydCwgdHJ1ZSk7XG4gXHR9XG4gXHRhZ2cgPSBfX2dldF9maXJzdF9hZ2cocG9ydCk7XG5AQCAtMjg3OCwxNiArMjg3OCwyMCBAQCBpbnQgYm9uZF8zYWRfc2V0X2NhcnJpZXIoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4gICogUmV0dXJuczogICAwIG9uIHN1Y2Nlc3NcbiAgKiAgICAgICAgICBcdTAwM2MgMCBvbiBlcnJvclxuICAqL1xuLWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4raW50IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuIHtcbi1cdHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcbitcdGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2dyZWdhdG9yID0gTlVMTCwgKnRtcDtcbitcdHN0cnVjdCBhZF9zbGF2ZV9pbmZvICphZF9zbGF2ZV9pbmZvO1xuK1x0Y29uc3Qgc3RydWN0IHBvcnQgKnBvcnQ7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICppdGVyO1xuIFx0c3RydWN0IHNsYXZlICpzbGF2ZTtcbi1cdHN0cnVjdCBwb3J0ICpwb3J0O1xuIFxuIFx0Ym9uZF9mb3JfZWFjaF9zbGF2ZV9yY3UoYm9uZCwgc2xhdmUsIGl0ZXIpIHtcbi1cdFx0cG9ydCA9IFx1MDAyNihTTEFWRV9BRF9JTkZPKHNsYXZlKS1cdTAwM2Vwb3J0KTtcbitcdFx0YWRfc2xhdmVfaW5mbyA9IFNMQVZFX0FEX0lORk8oc2xhdmUpO1xuK1x0XHRpZiAoIWFkX3NsYXZlX2luZm8pXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdHBvcnQgPSBcdTAwMjZhZF9zbGF2ZV9pbmZvLVx1MDAzZXBvcnQ7XG4gXHRcdHRtcCA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuIFx0XHRpZiAodG1wIFx1MDAyNlx1MDAyNiB0bXAtXHUwMDNlaXNfYWN0aXZlKSB7XG4gXHRcdFx0YWdncmVnYXRvciA9IHRtcDtcbkBAIC0yOTA3LDcgKzI5MTEsNyBAQCBpbnQgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLCBzdHJ1Y3QgYWRfaW5mbyAqYWRfaW5mbylcbitpbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbmV0bGluay5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuaW5kZXggNGExMTU3MmY2NjNkMzEuLjU1ZDJmOGE1MzlkNDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuY1xuQEAgLTY4Niw1MyArNjg2LDU4IEBAIHN0YXRpYyBzaXplX3QgYm9uZF9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpXG4gXHRcdDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KHN0cnVjdCBib25kaW5nICpib25kKVxuK3N0YXRpYyBpbnQgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmU7XG4tXHRpbnQgaWZpbmRleDtcbitcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMO1xuK1x0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZTtcbiBcbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdHNsYXZlID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoYm9uZCk7XG4tXHRpZmluZGV4ID0gc2xhdmUgPyBzbGF2ZS1cdTAwM2VpZmluZGV4IDogMDtcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0cmV0dXJuIGlmaW5kZXg7XG4rXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbitcdGlmIChzbGF2ZSlcbitcdFx0ZGV2ID0gc2xhdmUtXHUwMDNlZGV2O1xuK1x0cmV0dXJuIGRldiA/IGRldi1cdTAwM2VpZmluZGV4IDogMDtcbiB9XG4gXG4gc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxuIHtcbi1cdHN0cnVjdCBib25kaW5nICpib25kID0gbmV0ZGV2X3ByaXYoYm9uZF9kZXYpO1xuLVx0dW5zaWduZWQgaW50IHBhY2tldHNfcGVyX3NsYXZlO1xuLVx0aW50IGlmaW5kZXgsIGksIHRhcmdldHNfYWRkZWQ7XG4rXHRjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCA9IG5ldGRldl9wcml2KGJvbmRfZGV2KTtcbitcdGludCBpLCB0YXJnZXRzX2FkZGVkLCBtaWltb24sIG1vZGU7XG4rXHRjb25zdCBzdHJ1Y3Qgc2xhdmUgKnByaW1hcnk7XG4gXHRzdHJ1Y3QgbmxhdHRyICp0YXJnZXRzO1xuLVx0c3RydWN0IHNsYXZlICpwcmltYXJ5O1xuIFxuLVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfTU9ERSwgQk9ORF9NT0RFKGJvbmQpKSlcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdG1vZGUgPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSk7XG4rXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NT0RFLCBtb2RlKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZmluZGV4ID0gYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4KGJvbmQpO1xuLVx0aWYgKGlmaW5kZXggXHUwMDI2XHUwMDI2IG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FDVElWRV9TTEFWRSwgaWZpbmRleCkpXG4tXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0aWYgKGJvbmRfbW9kZV91c2VzX3ByaW1hcnkobW9kZSkpIHtcbitcdFx0aW50IGlmaW5kZXggPSBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGJvbmQpO1xuK1xuK1x0XHRpZiAoaWZpbmRleCBcdTAwMjZcdTAwMjYgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQUNUSVZFX1NMQVZFLCBpZmluZGV4KSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdH1cbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRtaWltb24gPSBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubWlpbW9uKTtcbitcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9NSUlNT04sIG1paW1vbikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX1VQREVMQVksXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMudXBkZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnVwZGVsYXkpICogbWlpbW9uKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfRE9XTkRFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSAqIGJvbmQtXHUwMDNlcGFyYW1zLm1paW1vbikpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmRvd25kZWxheSkgKiBtaWltb24pKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QRUVSX05PVElGX0RFTEFZLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLnBlZXJfbm90aWZfZGVsYXkgKiBib25kLVx1MDAzZXBhcmFtcy5taWltb24pKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5wZWVyX25vdGlmX2RlbGF5KSAqIG1paW1vbikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfVVNFX0NBUlJJRVIsIDEpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9BUlBfSU5URVJWQUwsIGJvbmQtXHUwMDNlcGFyYW1zLmFycF9pbnRlcnZhbCkpXG4rXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX0lOVEVSVkFMLFxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfaW50ZXJ2YWwpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHR0YXJnZXRzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYiwgSUZMQV9CT05EX0FSUF9JUF9UQVJHRVQpO1xuQEAgLTc0MSw4ICs3NDYsMTAgQEAgc3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0dGFyZ2V0c19hZGRlZCA9IDA7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCT05EX01BWF9BUlBfVEFSR0VUUzsgaSsrKSB7XG4tXHRcdGlmIChib25kLVx1MDAzZXBhcmFtcy5hcnBfdGFyZ2V0c1tpXSkge1xuLVx0XHRcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBpLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdGFyZ2V0c1tpXSkpXG4rXHRcdF9fYmUzMiB0ID0gUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFycF90YXJnZXRzW2ldKTtcbitcbitcdFx0aWYgKHQpIHtcbitcdFx0XHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgaSwgdCkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdFx0XHR0YXJnZXRzX2FkZGVkID0gMTtcbiBcdFx0fVxuQEAgLTc1MywxMSArNzYwLDEyIEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGVsc2VcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gXG4tXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfQVJQX1ZBTElEQVRFLCBib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUpKVxuK1x0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9WQUxJREFURSxcbitcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYXJwX3ZhbGlkYXRlKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9CT05EX0FSUF9BTExfVEFSR0VUUyxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfYWxsX3RhcmdldHMpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5AQCAtNzY3LDYgKzc3NSw5IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHRhcmdldHNfYWRkZWQgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQk9ORF9NQVhfTlNfVEFSR0VUUzsgaSsrKSB7XG4rXHRcdC8qIE5vdGU6IElQdjYgYWRkcmVzc2VzIGNhbiBub3QgYmUgcmVhZCBpbiBhbiBhdG9taWMgUkVBRF9PTkNFKCkgeWV0LlxuK1x0XHQgKiBXZSBhY2NlcHQgdGhpcyBtaW5vciByYWNlIGZvciB0aGUgbW9tZW50LlxuK1x0XHQgKi9cbiBcdFx0aWYgKCFpcHY2X2FkZHJfYW55KFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLm5zX3RhcmdldHNbaV0pKSB7XG4gXHRcdFx0aWYgKG5sYV9wdXRfaW42X2FkZHIoc2tiLCBpLCBcdTAwMjZib25kLVx1MDAzZXBhcmFtcy5uc190YXJnZXRzW2ldKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTc4MCw5NyArNzkxLDk3IEBAIHN0YXRpYyBpbnQgYm9uZF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bmxhX25lc3RfY2FuY2VsKHNrYiwgdGFyZ2V0cyk7XG4gI2VuZGlmXG4gXG4tXHRwcmltYXJ5ID0gcnRubF9kZXJlZmVyZW5jZShib25kLVx1MDAzZXByaW1hcnlfc2xhdmUpO1xuK1x0cHJpbWFyeSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZXByaW1hcnlfc2xhdmUpO1xuIFx0aWYgKHByaW1hcnkgXHUwMDI2XHUwMDI2XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWSwgcHJpbWFyeS1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfUFJJTUFSWV9SRVNFTEVDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnByaW1hcnlfcmVzZWxlY3QpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9GQUlMX09WRVJfTUFDLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuZmFpbF9vdmVyX21hYykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX1hNSVRfSEFTSF9QT0xJQ1ksXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy54bWl0X3BvbGljeSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMueG1pdF9wb2xpY3kpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfUkVTRU5EX0lHTVAsXG4tXHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMucmVzZW5kX2lnbXApKVxuK1x0XHRcdFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5yZXNlbmRfaWdtcCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX05VTV9QRUVSX05PVElGLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubnVtX3BlZXJfbm90aWYpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm51bV9wZWVyX25vdGlmKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQUxMX1NMQVZFU19BQ1RJVkUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5hbGxfc2xhdmVzX2FjdGl2ZSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWxsX3NsYXZlc19hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0JPTkRfTUlOX0xJTktTLFxuLVx0XHRcdGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1pbl9saW5rcykpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9MUF9JTlRFUlZBTCxcbi1cdFx0XHRib25kLVx1MDAzZXBhcmFtcy5scF9pbnRlcnZhbCkpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxwX2ludGVydmFsKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuLVx0cGFja2V0c19wZXJfc2xhdmUgPSBib25kLVx1MDAzZXBhcmFtcy5wYWNrZXRzX3Blcl9zbGF2ZTtcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfQk9ORF9QQUNLRVRTX1BFUl9TTEFWRSxcbi1cdFx0XHRwYWNrZXRzX3Blcl9zbGF2ZSkpXG4rXHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLnBhY2tldHNfcGVyX3NsYXZlKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQURfTEFDUF9BQ1RJVkUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2FjdGl2ZSkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubGFjcF9hY3RpdmUpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9BRF9MQUNQX1JBVEUsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy5sYWNwX2Zhc3QpKVxuK1x0XHQgICAgICAgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmxhY3BfZmFzdCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0FEX1NFTEVDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmFkX3NlbGVjdCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfc2VsZWN0KSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfVExCX0RZTkFNSUNfTEIsXG4tXHRcdCAgICAgICBib25kLVx1MDAzZXBhcmFtcy50bGJfZHluYW1pY19sYikpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMudGxiX2R5bmFtaWNfbGIpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9NSVNTRURfTUFYLFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubWlzc2VkX21heCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbiBcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CT05EX0NPVVBMRURfQ09OVFJPTCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmNvdXBsZWRfY29udHJvbCkpXG4rXHRcdCAgICAgICBSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuY291cGxlZF9jb250cm9sKSkpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JPTkRfQlJPQURDQVNUX05FSUdILFxuLVx0XHQgICAgICAgYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKSlcbitcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IpKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQk9ORF9MQUNQX1NUUklDVCxcbi1cdFx0ICAgICAgIGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0KSlcbitcdFx0ICAgICAgIFJFQURfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCkpKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbi1cdGlmIChCT05EX01PREUoYm9uZCkgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuK1x0aWYgKG1vZGUgPT0gQk9ORF9NT0RFXzgwMjNBRCkge1xuIFx0XHRzdHJ1Y3QgYWRfaW5mbyBpbmZvO1xuIFxuIFx0XHRpZiAoY2FwYWJsZShDQVBfTkVUX0FETUlOKSkge1xuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9BQ1RPUl9TWVNfUFJJTyxcbi1cdFx0XHRcdFx0Ym9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKVxuK1x0XHRcdFx0XHRSRUFEX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYWRfYWN0b3Jfc3lzX3ByaW8pKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0XHRcdGlmIChubGFfcHV0X3UxNihza2IsIElGTEFfQk9ORF9BRF9VU0VSX1BPUlRfS0VZLFxuLVx0XHRcdFx0XHRib25kLVx1MDAzZXBhcmFtcy5hZF91c2VyX3BvcnRfa2V5KSlcbitcdFx0XHRcdFx0UkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLmFkX3VzZXJfcG9ydF9rZXkpKSlcbiBcdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuK1x0XHRcdC8qIFNtYWxsIHJhY2UgaGVyZSwgdGhpcyBpcyBhIG1pbm9yIHRyYWRlIG9mZi4gKi9cbiBcdFx0XHRpZiAobmxhX3B1dChza2IsIElGTEFfQk9ORF9BRF9BQ1RPUl9TWVNURU0sXG4gXHRcdFx0XHQgICAgRVRIX0FMRU4sIFx1MDAyNmJvbmQtXHUwMDNlcGFyYW1zLmFkX2FjdG9yX3N5c3RlbSkpXG4gXHRcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdFx0fVxuLVx0XHRpZiAoIWJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbitcdFx0aWYgKCFfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgXHUwMDI2aW5mbykpIHtcbiBcdFx0XHRzdHJ1Y3QgbmxhdHRyICpuZXN0O1xuIFxuIFx0XHRcdG5lc3QgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLCBJRkxBX0JPTkRfQURfSU5GTyk7XG5AQCAtODk4LDkgKzkwOSwxMSBAQCBzdGF0aWMgaW50IGJvbmRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdH1cbiBcdH1cbiBcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIDA7XG4gXG4gbmxhX3B1dF9mYWlsdXJlOlxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gLUVNU0dTSVpFO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfb3B0aW9ucy5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuaW5kZXggZTU5MGM4ZGVlODZlMWUuLjM2YjhkODkzODdlZTVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX29wdGlvbnMuY1xuQEAgLTkzNCwxNCArOTM0LDE0IEBAIHN0YXRpYyBpbnQgYm9uZF9vcHRpb25fbW9kZV9zZXQoc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXG4gXHQvKiBkb24ndCBjYWNoZSBhcnBfdmFsaWRhdGUgYmV0d2VlbiBtb2RlcyAqL1xuIFx0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5hcnBfdmFsaWRhdGUsIEJPTkRfQVJQX1ZBTElEQVRFX05PTkUpO1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMubW9kZSA9IG5ld3ZhbC1cdTAwM2V2YWx1ZTtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMubW9kZSwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcbiBcdC8qIFdoZW4gY2hhbmdpbmcgbW9kZSwgdGhlIGJvbmQgZGV2aWNlIGlzIGRvd24sIHdlIG1heSByZWR1Y2VcbiBcdCAqIHRoZSBib25kX2JjYXN0X25laWdoX2VuYWJsZWQgaW4gYm9uZF9jbG9zZSgpIGlmIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogZW5hYmxlZCBpbiA4MDIzYWQgbW9kZS4gVGhlcmVmb3JlLCBvbmx5IGNsZWFyIGJyb2FkY2FzdF9uZWlnaGJvclxuIFx0ICogdG8gMC5cbiBcdCAqL1xuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gMDtcbitcdFdSSVRFX09OQ0UoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yLCAwKTtcbiBcbiBcdGlmIChib25kLVx1MDAzZWRldi1cdTAwM2VyZWdfc3RhdGUgPT0gTkVUUkVHX1JFR0lTVEVSRUQpIHtcbiBcdFx0Ym9vbCB1cGRhdGUgPSBmYWxzZTtcbkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBzdGF0aWMgaW50IGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldChzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcbiB7XG4gXHRuZXRkZXZfZGJnKGJvbmQtXHUwMDNlZGV2LCBcIlNldHRpbmcgTEFDUCBmYWxsYmFjayB0byAlcyAoJWxsdSlcXG5cIixcbiBcdFx0ICAgbmV3dmFsLVx1MDAzZXN0cmluZywgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbi1cdGJvbmQtXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0ID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5sYWNwX3N0cmljdCwgbmV3dmFsLVx1MDAzZXZhbHVlKTtcbiBcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTkyNyw3ICsxOTI3LDcgQEAgc3RhdGljIGludCBib25kX29wdGlvbl9icm9hZGNhc3RfbmVpZ2hfc2V0KHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0aWYgKGJvbmQtXHUwMDNlcGFyYW1zLmJyb2FkY2FzdF9uZWlnaGJvciA9PSBuZXd2YWwtXHUwMDNldmFsdWUpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Ym9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yID0gbmV3dmFsLVx1MDAzZXZhbHVlO1xuK1x0V1JJVEVfT05DRShib25kLVx1MDAzZXBhcmFtcy5icm9hZGNhc3RfbmVpZ2hib3IsIG5ld3ZhbC1cdTAwM2V2YWx1ZSk7XG4gXHRpZiAoYm9uZC1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkge1xuIFx0XHRpZiAoYm9uZC1cdTAwM2VwYXJhbXMuYnJvYWRjYXN0X25laWdoYm9yKVxuIFx0XHRcdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNmJvbmRfYmNhc3RfbmVpZ2hfZW5hYmxlZCk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYm9uZF8zYWQuaCBiL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbmluZGV4IDA1NTcyYzE5ZTE0YjdhLi5lZjY2N2RmZjI5NzI5NCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbisrKyBiL2luY2x1ZGUvbmV0L2JvbmRfM2FkLmhcbkBAIC0zMDIsOCArMzAyLDggQEAgdm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICopO1xuIHZvaWQgYm9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgaW50IHRpbWVvdXQpO1xuIHZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKTtcbiB2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspO1xuLWludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuLWludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKHN0cnVjdCBib25kaW5nICpib25kLFxuK2ludCAgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pO1xuK2ludCAgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvKGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKTtcbiBpbnQgYm9uZF8zYWRfbGFjcGR1X3JlY3YoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRpbmcgKmJvbmQsXG4gXHRcdFx0IHN0cnVjdCBzbGF2ZSAqc2xhdmUpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JvbmRpbmcuaCBiL2luY2x1ZGUvbmV0L2JvbmRpbmcuaFxuaW5kZXggMmM1NGEzNmE4NDc3YjkuLjU5OGQ1NmIxYmM5NzA2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYm9uZGluZy5oXG4rKysgYi9pbmNsdWRlL25ldC9ib25kaW5nLmhcbkBAIC0zNDUsMTQgKzM0NSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF9tb2RlX3VzZXNfcHJpbWFyeShpbnQgbW9kZSlcbiBcdCAgICAgICBtb2RlID09IEJPTkRfTU9ERV9BTEI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBib25kX3VzZXNfcHJpbWFyeShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbitzdGF0aWMgaW5saW5lIGJvb2wgYm9uZF91c2VzX3ByaW1hcnkoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuIFx0cmV0dXJuIGJvbmRfbW9kZV91c2VzX3ByaW1hcnkoQk9ORF9NT0RFKGJvbmQpKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4rc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3UoY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQpXG4ge1xuLVx0c3RydWN0IHNsYXZlICpzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGJvbmQtXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xuK1x0Y29uc3Qgc3RydWN0IHNsYXZlICpzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGJvbmQtXHUwMDNlY3Vycl9hY3RpdmVfc2xhdmUpO1xuIFxuIFx0cmV0dXJuIGJvbmRfdXNlc19wcmltYXJ5KGJvbmQpIFx1MDAyNlx1MDAyNiBzbGF2ZSA/IHNsYXZlLVx1MDAzZWRldiA6IE5VTEw7XG4gfVxuQEAgLTcwMyw3ICs3MDMsNyBAQCB2b2lkIGJvbmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTtcbiB1bnNpZ25lZCBpbnQgYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyh2b2lkKTtcbiBpbnQgYm9uZF9uZXRsaW5rX2luaXQodm9pZCk7XG4gdm9pZCBib25kX25ldGxpbmtfZmluaSh2b2lkKTtcbi1zdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9yY3Uoc3RydWN0IGJvbmRpbmcgKmJvbmQpO1xuK3N0cnVjdCBuZXRfZGV2aWNlICpib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCk7XG4gY29uc3QgY2hhciAqYm9uZF9zbGF2ZV9saW5rX3N0YXR1cyhzOCBsaW5rKTtcbiBzdHJ1Y3QgYm9uZF92bGFuX3RhZyAqYm9uZF92ZXJpZnlfZGV2aWNlX3BhdGgoc3RydWN0IG5ldF9kZXZpY2UgKnN0YXJ0X2RldixcbiBcdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmVuZF9kZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowMzo1OS40NjYwMDgwODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUyMTY1NTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJvbmRpbmcgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGJvbmRpbmcgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGRhdGEgcmFjZXMgYW5kIG1lbW9yeSBvcmRlcmluZy4gVGhleSd2ZSBwZXBwZXJlZCB0aGUgY29kZSB3aXRoIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIHZhcmlvdXMgZmllbGRzLCBsaWtlIHRob3NlIGluIGBib25kLVx1MDAzZXBhcmFtc2AgYW5kIGBwb3J0LVx1MDAzZWlzX2VuYWJsZWRgLiBUaGV5IGFsc28gc2VlbSB0byBoYXZlIG1vZGlmaWVkIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gdXNlIGBjb25zdCBzdHJ1Y3QgYm9uZGluZyAqYm9uZGAgbW9yZSBjb25zaXN0ZW50bHksIHdoaWNoIG1ha2VzIHNlbnNlIGZyb20gYSBkYXRhIHNhZmV0eSBwZXJzcGVjdGl2ZS5cblxuVGhlIHNpZ25pZmljYW50IGNoYW5nZXMgYXJlIGluIGBib25kX25ldGxpbmsuY2AsIHdoZXJlIGBib25kX2ZpbGxfaW5mb2AgaGFzIGJlZW4gdXBkYXRlZC4gSSBub3RpY2UgdGhleSd2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYFJFQURfT05DRSgpYCB3aGVuIHJlYWRpbmcgYGJvbmQtXHUwMDNlcGFyYW1zYCBmaWVsZHMuIEFuZCwgdGhlIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGZ1bmN0aW9uIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCB3aGljaCBsZXZlcmFnZXMgYHJjdV9kZXJlZmVyZW5jZWAgaW5zdGVhZCBvZiB0aGUgbW9yZSB0cmFkaXRpb25hbCBsb2NrLXJlYWQtdW5sb2NrIGFwcHJvYWNoLlxuXG5UaGlzIGlzbid0ICpqdXN0KiBhIGNvc21ldGljIGNoYW5nZTsgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZXNlIG1vZGlmaWNhdGlvbnMgZXhwbGljaXRseSBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IHVzaW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAsIHRoZXkncmUgdGVsbGluZyB0aGUgY29tcGlsZXIgdG8gcmVzcGVjdCBtZW1vcnkgb3JkZXJpbmcsIHdoaWNoIGlzIGNyaXRpY2FsIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQWRkaXRpb25hbGx5LCB0aGUgZXhwbGljaXQgUkNVIGxvY2tpbmcgaW4gYGJvbmRfZmlsbF9pbmZvYCBwcm92aWRlcyBhIG1vcmUgcm9idXN0IG1lYW5zIG9mIHByb3RlY3Rpbmcgc2hhcmVkIGRhdGEgZHVyaW5nIHJlYWRzLiBJbiBlc3NlbmNlLCB0aGV5J3JlIHNhY3JpZmljaW5nIHNvbWUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaW4gZmF2b3Igb2YgcHJldmVudGluZyB0aG9zZSBkcmVhZGVkIGRhdGEgcmFjZXMuXG5cblNwZWNpZmljYWxseSwgbG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IHRoZXkgcHJvdmlkZWQgZnJvbSBgYm9uZF9maWxsX2luZm9gOiBUaGUgYWRkaXRpb24gb2YgYHJjdV9yZWFkX2xvY2soKWAgYXQgdGhlIGJlZ2lubmluZyBhbmQgdGhlIHVzZSBvZiBgUkVBRF9PTkNFKGJvbmQtXHUwMDNlcGFyYW1zLm1vZGUpYCBpcyB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZS4gVGhlIGZ1bmN0aW9uIGFsc28gdXNlcyBSQ1UgdG8gcmV0cmlldmUgdGhlIHByaW1hcnkgc2xhdmUncyBpbnRlcmZhY2UgaW5kZXguIFNvLCBgYm9uZF9maWxsX2luZm9gIGlzICpkZWZpbml0ZWx5KiBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5HaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgaW4gZHVtcGluZyBib25kaW5nIGRldmljZSBpbmZvIHZpYSBuZXRsaW5rLCB3aGljaCBpcyBlYXNpbHkgdGVzdGFibGUgdmlhIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgdGhpcyB3YXJyYW50cyBzZXJpb3VzIHNjcnV0aW55LiBGaXhpbmcgZGF0YSByYWNlcyBhbmQgaW50cm9kdWNpbmcgUkNVIGxvY2tpbmcgKmFsd2F5cyogbmVlZHMgdGhvcm91Z2ggdGVzdGluZy4gVGhlcmUncyBhIHJpc2sgb2YgaW50cm9kdWNpbmcgc3VidGxlIGJ1Z3MgaWYgdGhlIFJDVSBsb2NraW5nIGlzbid0IGhhbmRsZWQgY29ycmVjdGx5LiBGb3IgaW5zdGFuY2UsIGlzIHRoZSB1bmxvY2sgaGFuZGxlZCBjb25zaXN0ZW50bHkgaW4gYWxsIGVycm9yIHBhdGhzPyBJdCBsb29rcyBsaWtlIHRoZSBgZ290byBubGFfcHV0X2ZhaWx1cmVgIHNob3VsZCBoYW5kbGUgdGhvc2UuXG5cblNvLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBwZXJgIHRvIHNlZSBleGFjdGx5IHdoZXJlIGBib25kX2ZpbGxfaW5mb2AgaXMgdXNlZC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDowOS45ODc2NjczMDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0MTI0OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm9uZF9maWxsX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz02ODk9c3RhdGljIGludCBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhfcmN1KGNvbnN0IHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy02OTktXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYzo3MDA6c3RhdGljIGludCBib25kX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtNzAxLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYz05ODU9c3RydWN0IHJ0bmxfbGlua19vcHMgYm9uZF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX25ldGxpbmsuYy05OTQtXFx0LmdldF9zaXplXFx0XFx0PSBib25kX2dldF9zaXplLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmM6OTk1OlxcdC5maWxsX2luZm9cXHRcXHQ9IGJvbmRfZmlsbF9pbmZvLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9uZXRsaW5rLmMtOTk2LVxcdC5nZXRfbnVtX3R4X3F1ZXVlc1xcdD0gYm9uZF9nZXRfbnVtX3R4X3F1ZXVlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6MTAuMDY5MDkyNjI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyMTUzNDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTmV0bGluayBJbnRlcmZhY2UgZm9yIEJvbmRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gYm9uZGluZywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIHJlbGV2YW50IGhvb2tzIGFyZSBwYXJ0IG9mIGBydG5sX2xpbmtfb3BzYC4gVGhhdCBtYWtlcyBzZW5zZTsgYW55dGhpbmcgbGluay1yZWxhdGVkIHByb2JhYmx5IGxpdmVzIGluIHRoZXJlLiBBbmQgaWYgaXQncyB0aGVyZSwgdGhlbiBpdOKAmXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHZpYSB0aG9zZSBzdGFuZGFyZCBgUlRNX05FV0xJTktgIGFuZCBgUlRNX0dFVExJTktgIG5ldGxpbmsgbWVzc2FnZXMuIFRoYXQncyBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEknbSBwcmV0dHkgc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIHRoZSBiaWcgb25lLCBidXQgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBpbiB0aGUgYm9uZGluZyBkcml2ZXIncyBLY29uZmlnIG9yIE1ha2VmaWxlIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJJ2xsIGdldCB0aGF0IHNvcnRlZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDoxNi40OTA2Mjk3NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzMTM4MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JPTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDoxNi41NTM5NDkyNTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzI4NjA4ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCb25kaW5nIENvbmZpZ3VyYXRpb24gYW5kIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEJPTkRJTkdgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0byBleGFtaW5lIGZ1cnRoZXIuIE15IGluaXRpYWwgc2NhbiBoYXMgdHVybmVkIHVwIGEgaGFuZGZ1bCB0aGF0IHdhcnJhbnQgYSBkZWVwZXIgZGl2ZS4gVGhlc2UgaW5jbHVkZTogYGJvbmRfZmlsbF9pbmZvYCwgYGJvbmRfb3B0aW9uX2FjdGl2ZV9zbGF2ZV9nZXRfaWZpbmRleF9yY3VgLCBgX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYCwgYGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYF9fYWdnX2FjdGl2ZV9wb3J0c2AsIGBib25kX29wdGlvbl9tb2RlX3NldGAsIGBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgLCBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgLlxuXG5JJ20gdGhpbmtpbmcgYGJvbmRfZmlsbF9pbmZvYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGZhY3QgdGhhdCBpdCdzIGludm9sdmVkIGluIGR1bXBpbmcgbGluayBpbmZvIHN1Z2dlc3RzIGl0J3Mgbm90IGEgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aCBsaWtlLCBzYXksIHBhY2tldCBoYW5kbGluZywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC4gVGhlIHNldHRpbmcgZnVuY3Rpb25zIChgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF9vcHRpb25fbGFjcF9zdHJpY3Rfc2V0YCwgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgKSBhbHNvIGxvb2sgcHJvbWlzaW5nLCBhcyBkbyAgYGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZWAgYmVjYXVzZSBpdCdzIGhhbmRsaW5nIGxpbmsgY2hhbmdlcy4gVGhlbiBJJ20gYWxzbyBsb29raW5nIGF0IHRoZSBgX19hZ2dfYWN0aXZlX3BvcnRzYCwgYW5kIGhvdyBpdCB3b3JrcyB3aXRoIGBfX2FnZ191c2FibGVfcG9ydHNgLCBhbmQgYGFkX2FnZ19zZWxlY3Rpb25fbG9naWNgLlxuXG5UbyByZWZpbmUgdGhlIGxpc3QsIEknbSBnb2luZyB0byByZXZpc2l0IGVhY2ggZnVuY3Rpb24gYW5kIGNvbmZpcm0gaXRzIHJvbGUgYW5kIGltcGFjdC4gTGV0J3Mgc2VlLi4uXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYGJvbmRfZmlsbF9pbmZvYCBpcyBpbmRlZWQgY2FsbGVkIGZvciBuZXRsaW5rIGR1bXBzLiBgYm9uZF9vcHRpb25fbW9kZV9zZXRgIGhhbmRsZXMgc2V0dGluZyB0aGUgbW9kZS4gYGJvbmRfb3B0aW9uX2xhY3Bfc3RyaWN0X3NldGAgZGVhbHMgd2l0aCBzZXR0aW5nIHRoZSBgbGFjcF9zdHJpY3RgIG9wdGlvbiBhbmQgYGJvbmRfb3B0aW9uX2Jyb2FkY2FzdF9uZWlnaF9zZXRgIHNldHMgdGhlIGBicm9hZGNhc3RfbmVpZ2hgIG9wdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGBfX2FnZ19hY3RpdmVfcG9ydHNgLiBUaGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmU6XG5cbmBib25kX2ZpbGxfaW5mb2BcbmBib25kX29wdGlvbl9tb2RlX3NldGBcbmBib25kX29wdGlvbl9sYWNwX3N0cmljdF9zZXRgXG5gYm9uZF9vcHRpb25fYnJvYWRjYXN0X25laWdoX3NldGBcbmBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VgXG5gX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvYFxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzk3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjIzLjg4MjU2MTMzOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc1Nzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FnZ19hY3RpdmVfcG9ydHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTc0OD1zdGF0aWMgaW50IF9fYWdnX3VzYWJsZV9wb3J0cyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc2Mi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6NzYzOnN0YXRpYyBpbnQgX19hZ2dfYWN0aXZlX3BvcnRzKGNvbnN0IHN0cnVjdCBhZ2dyZWdhdG9yICphZ2cpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9Nzk0PXN0YXRpYyB1MzIgX19nZXRfYWdnX2JhbmR3aWR0aChzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcilcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtNzk1LXtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Nzk2OlxcdGludCBucG9ydHMgPSBfX2FnZ19hY3RpdmVfcG9ydHMoYWdncmVnYXRvcik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTc5Ny1cXHR1MzIgYmFuZHdpZHRoID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xNzM2PXN0YXRpYyBzdHJ1Y3QgYWdncmVnYXRvciAqYWRfYWdnX3NlbGVjdGlvbl90ZXN0KHN0cnVjdCBhZ2dyZWdhdG9yICpiZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTAtXFx0Y2FzZSBCT05EX0FEX0NPVU5UOlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxNzkxOlxcdFxcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHMoY3VycikgXFx1MDAzZSBfX2FnZ19hY3RpdmVfcG9ydHMoYmVzdCkpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTItXFx0XFx0XFx0cmV0dXJuIGN1cnI7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE3OTMtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjE3OTQ6XFx0XFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyhjdXJyKSBcXHUwMDNjIF9fYWdnX2FjdGl2ZV9wb3J0cyhiZXN0KSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTc5NS1cXHRcXHRcXHRyZXR1cm4gYmVzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xODYzPXN0YXRpYyB2b2lkIGFkX2FnZ19zZWxlY3Rpb25fbG9naWMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xODgxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxODgyOlxcdFxcdGlmIChfX2FnZ19hY3RpdmVfcG9ydHMoYWdnKSBcXHUwMDI2XFx1MDAyNiBhZ2dfZGV2aWNlX3VwKGFnZykpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4ODMtXFx0XFx0XFx0YmVzdCA9IGFkX2FnZ19zZWxlY3Rpb25fdGVzdChiZXN0LCBhZ2cpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTE4OTMtXFx0XFx0aWYgKGFjdGl2ZSBcXHUwMDI2XFx1MDAyNiBhY3RpdmUtXFx1MDAzZWxhZ19wb3J0cyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxODk0OlxcdFxcdCAgICBfX2FnZ19hY3RpdmVfcG9ydHMoYWN0aXZlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xODk1LVxcdFxcdCAgICAoX19hZ2dfaGFzX3BhcnRuZXIoYWN0aXZlKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIzMjY9dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDYwLVxcdFxcdFxcdFxcdHRlbXBfYWdncmVnYXRvci1cXHUwMDNlbnVtX29mX3BvcnRzLS07XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0NjE6XFx0XFx0XFx0XFx0aWYgKF9fYWdnX2FjdGl2ZV9wb3J0cyh0ZW1wX2FnZ3JlZ2F0b3IpID09IDApIHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ2Mi1cXHRcXHRcXHRcXHRcXHRzZWxlY3RfbmV3X2FjdGl2ZV9hZ2cgPSB0ZW1wX2FnZ3JlZ2F0b3ItXFx1MDAzZWlzX2FjdGl2ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODM5PWludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODU0LVxcdFxcdGlmICgoYm9uZC1cXHUwMDNlcGFyYW1zLmxhY3Bfc3RyaWN0ID8gX19hZ2dfdXNhYmxlX3BvcnRzKGFjdGl2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjg1NTpcXHRcXHRcXHRcXHRcXHQ6IF9fYWdnX2FjdGl2ZV9wb3J0cyhhY3RpdmUpKSBcXHUwMDNjXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NTYtXFx0XFx0ICAgIGJvbmQtXFx1MDAzZXBhcmFtcy5taW5fbGlua3MpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yODgxPWludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oY29uc3Qgc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkwNS1cXHRhZF9pbmZvLVxcdTAwM2VhZ2dyZWdhdG9yX2lkID0gYWdncmVnYXRvci1cXHUwMDNlYWdncmVnYXRvcl9pZGVudGlmaWVyO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTA2OlxcdGFkX2luZm8tXFx1MDAzZXBvcnRzID0gX19hZ2dfYWN0aXZlX3BvcnRzKGFnZ3JlZ2F0b3IpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTA3LVxcdGFkX2luZm8tXFx1MDAzZWFjdG9yX2tleSA9IGFnZ3JlZ2F0b3ItXFx1MDAzZWFjdG9yX29wZXJfYWdncmVnYXRvcl9rZXk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjIzLjkzOTMyODUxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNDc2MTUxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYF9fYWdnX2FjdGl2ZV9wb3J0c2AqKlxuXG5Pa2F5LCBzbyB0aGlzIGBfX2FnZ19hY3RpdmVfcG9ydHNgIGZ1bmN0aW9uIGlzIHVzZWQgcXVpdGUgYSBiaXQsIGFuZCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byB0cmFjayBkb3duIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gTGV0J3MgaW5jbHVkZSBmdW5jdGlvbnMgbGlrZSBgYm9uZF9maWxsX2luZm9gLCBgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYW5kIGBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gIGluIG15IHJldmlldyBvZiB0aGUgZnVuY3Rpb24uXG5cbk5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24gSSdtIHNlZWluZyBpcyBgQ09ORklHX0JPTkRJTkdgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gV2FpdCwgSSBzZWUgdGhhdCBgYm9uZF9maWxsX2luZm9gIGhhcyBhbiBgI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpYCBjb25kaXRpb25hbCB3aXRoaW4gaXQuIEV2ZW4gdGhvdWdoIGBDT05GSUdfQk9ORElOR2AgYWxsb3dzIHRoZSBmaWxlIHRvIGNvbXBpbGUsIHRoZSBwcmVzZW5jZSBvZiB0aGF0IElQdjYgY2hlY2sgbWFrZXMgbWUgd2FudCB0byBiZSBleHRyYSBjYXJlZnVsLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjMxLjE4Njk0NzcxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjQxMCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZpbGUgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6MzEuMTg3MDQwODk2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NzA1OTE3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgSSdtIGFuIGV4cGVydDpcblxuKipLZXJuZWwgQ29uZmlnIEh1bnQqKlxuXG5IbW0sIHdoZXJlJ3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgZ2VuZXJhbCBuZXR3b3JrIGRldmljZSBkcml2ZXJzLiBCdXQgd2FpdCwgaXMgdGhlcmUgYm9uZGluZyBjb25maWd1cmF0aW9uPyBJJ20gZHJhd2luZyBhIGJsYW5rIG9uIHdoZXRoZXIgYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgYWN0dWFsbHkgKmV4aXN0cyouIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBmaWxlIHN0cnVjdHVyZS4gTmVlZCB0byB0cmFjayBkb3duIHRoZSBuZXR3b3JrIGJvbmRpbmcgY29uZmlndXJhdGlvbiBLY29uZmlnIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzgyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowNDozOS43NTc2MzYyNTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0ODgzMDA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA0OjQwLjEwNjQ3NTYzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTM1NTgzODU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJvbmRpbmcgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgYEJPTkRJTkdgLiBZZXMsIHRoYXTigJlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0J3MgZGlnIGludG8gdGhpcyBwYXRjaC5cblxuSSdtIHNlZWluZyB0aGV5J3ZlIGFkZGVkIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgdG8gYHBvcnQtXHUwMDNlaXNfZW5hYmxlZGAgd2l0aGluIGBfX2FnZ19hY3RpdmVfcG9ydHNgIGFuZCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYC4gU21hcnQuIFRoYXQncyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBhZGRyZXNzIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXkndmUgYWxzbyBhcHBsaWVkIGBSRUFEX09OQ0VgIHRvIHZhcmlvdXMgZmllbGRzIHdpdGhpbiBgYm9uZC1cdTAwM2VwYXJhbXNgIGluIGBib25kX2ZpbGxfaW5mb2AgYW5kIGBib25kX29wdGlvbl8qX3NldGAuIERlZmluaXRlbHkgbWFraW5nIHN1cmUgdGhlc2UgdmFsdWVzIGFyZSBjb25zaXN0ZW50LlxuXG5UaGUgY2hhbmdlIHRvIGBib25kX29wdGlvbl9hY3RpdmVfc2xhdmVfZ2V0X2lmaW5kZXhgIGlzIGludGVyZXN0aW5nOyByZW5hbWluZyBpdCB0byBgYm9uZF9vcHRpb25fYWN0aXZlX3NsYXZlX2dldF9pZmluZGV4X3JjdWAgYW5kIHN3YXBwaW5nIGByY3VfcmVhZF9sb2NrKClgICsgYHJjdV9kZXJlZmVyZW5jZV9ydG5sKClgIGZvciBgcmN1X2RlcmVmZXJlbmNlYCBpcyBzaWduaWZpY2FudC4gVGhhdCdzIGEgbW92ZSBhd2F5IGZyb20gdGhlIG9sZGVyIFJDVSByZWFkIGxvY2tpbmcgYXBwcm9hY2guIFRoZXkncmUgdHJ5aW5nIHRvIHVzZSBgcmN1X2RlcmVmZXJlbmNlYCBtb3JlIGVmZmVjdGl2ZWx5LlxuXG5BbmQgYWgsIHllcywgdGhleSd2ZSAqYWRkZWQqIGByY3VfcmVhZF9sb2NrKClgIHRvIGBib25kX2ZpbGxfaW5mb2AuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlIGxpZXM6IEl0J3MgZXhwbGljaXRseSBkZXNpZ25lZCB0byBhZGRyZXNzIGRhdGEgcmFjZXMuIEJ5IGFkZGluZyBhbmQgbW9kaWZ5aW5nIFJDVSBsb2NraW5nIHdpdGhpbiBgYm9uZF9maWxsX2luZm9gLCB0aGV5IGFyZSB3b3JraW5nIHRvIGVuc3VyZSB0aGF0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBuZXRsaW5rIGluZm8gZmlsbGluZyBpcyBzYWZlLiBUaGUgcmVhc29uaW5nIGdpdmVuIGlzIHNvbGlkLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHZlcmlmeSB0aGlzIGNoYW5nZSwgYW5kIGVuc3VyZSB0aGF0IG5vIHJlZ3Jlc3Npb25zIG9jY3VyIHdpdGggdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXG5cblRoZSBtYWluIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24sIGluIG15IG9waW5pb24sIGFyZSBgYm9uZF9maWxsX2luZm9gLCBgYm9uZF9vcHRpb25fbW9kZV9zZXRgLCBgYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlYCwgYW5kIGBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9gLiBUaGVzZSBhcmUgdGhlIGtleSB0b3VjaHBvaW50cy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlc2UgYXJlYXMgdGhvcm91Z2hseSBmb3IgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgbWlzc2VkIGxvY2tpbmcgc2NlbmFyaW9zLlxuXG5MZXQncyBnZXQgdGhvc2UgdGVzdCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY0NywiT3V0cHV0VG9rZW5zIjoxMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDQ6NTUuNDYyMzE4MzcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMzg5NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9maWxsX2luZm9cIixcbiAgICBcImJvbmRfb3B0aW9uX21vZGVfc2V0XCIsXG4gICAgXCJib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2VcIixcbiAgICBcIl9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gdGhlIGJvbmRpbmcgZHJpdmVyIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRSBhbmQgUkNVIGxvY2tpbmcgaW4gbmV0bGluayBpbmZvIGZpbGxpbmcuIEZ1enppbmcgY2FuIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIFJDVSBsb2NraW5nIGFuZCBlbnN1cmUgbm8gcmVncmVzc2lvbnMgaW4gdGhlIGJvbmRpbmcgbmV0bGluayBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfZmlsbF9pbmZvXCIsXG4gICAgXCJib25kX29wdGlvbl9tb2RlX3NldFwiLFxuICAgIFwiYm9uZF8zYWRfaGFuZGxlX2xpbmtfY2hhbmdlXCIsXG4gICAgXCJfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIHRoZSBib25kaW5nIGRyaXZlciBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UgYW5kIFJDVSBsb2NraW5nIGluIG5ldGxpbmsgaW5mbyBmaWxsaW5nLiBGdXp6aW5nIGNhbiB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBSQ1UgbG9ja2luZyBhbmQgZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGluIHRoZSBib25kaW5nIG5ldGxpbmsgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow8nv99[1] Phase: Succeeded StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 18:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 18:05:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2] Phase: Succeeded StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 18:05:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 18:05:30 +0000 UTC FinishedAt: 2026-06-29 18:05:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8nv99/series-workflow8nv99-convert-artifact-1241575339/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 18:05:57 +0000 UTC FinishedAt: 2026-06-29 18:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 18:05:57 +0000 UTC FinishedAt: 2026-06-29 18:46:54 +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:*68921b75-6d84-47c3-abda-ec074710b2b5,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-workflow8nv99/series-workflow8nv99-convert-artifact-1241575339/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": "e5e6453d-1c9e-45a6-837d-98c63bffef7a", "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-workflow8nv99/series-workflow8nv99-build-action-2320793769/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 18:05:57 +0000 UTC FinishedAt: 2026-06-29 18:45:55 +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:*68921b75-6d84-47c3-abda-ec074710b2b5,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-workflow8nv99/series-workflow8nv99-convert-artifact-1241575339/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": "e5e6453d-1c9e-45a6-837d-98c63bffef7a", "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-workflow8nv99/series-workflow8nv99-build-action-2320793769/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 18:46:54 +0000 UTC FinishedAt: 2026-06-29 18:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 18:46:54 +0000 UTC FinishedAt: 2026-06-29 18:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 18:46:54 +0000 UTC FinishedAt: 2026-06-29 18:47:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 18:46:54 +0000 UTC FinishedAt: 2026-06-29 18:47:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8nv99/series-workflow8nv99-convert-artifact-2473247362/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 18:47:22 +0000 UTC FinishedAt: 2026-06-29 18:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 18:47:22 +0000 UTC FinishedAt: 2026-06-29 18:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e5e6453d-1c9e-45a6-837d-98c63bffef7a,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-workflow8nv99/series-workflow8nv99-build-action-2320793769/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-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 18:49:32 +0000 UTC FinishedAt: 2026-06-29 18:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 18:49:32 +0000 UTC FinishedAt: 2026-06-29 18:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 18:49:32 +0000 UTC FinishedAt: 2026-06-29 19:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 18:49:32 +0000 UTC FinishedAt: 2026-06-29 19:24:06 +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:*68921b75-6d84-47c3-abda-ec074710b2b5,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-workflow8nv99/series-workflow8nv99-convert-artifact-2473247362/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": "76b000bc-de6a-4dc6-b89b-cac55058b75f", "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-workflow8nv99/series-workflow8nv99-build-action-3634277590/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 18:49:32 +0000 UTC FinishedAt: 2026-06-29 19:23:20 +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:*68921b75-6d84-47c3-abda-ec074710b2b5,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-workflow8nv99/series-workflow8nv99-convert-artifact-2473247362/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": "76b000bc-de6a-4dc6-b89b-cac55058b75f", "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-workflow8nv99/series-workflow8nv99-build-action-3634277590/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 19:24:06 +0000 UTC FinishedAt: 2026-06-29 19:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 19:24:06 +0000 UTC FinishedAt: 2026-06-29 19:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 19:24:06 +0000 UTC FinishedAt: 2026-06-29 19:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 19:24:06 +0000 UTC FinishedAt: 2026-06-29 19:26:22 +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:*76b000bc-de6a-4dc6-b89b-cac55058b75f,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-workflow8nv99/series-workflow8nv99-build-action-3634277590/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-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +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_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"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:*e5e6453d-1c9e-45a6-837d-98c63bffef7a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76b000bc-de6a-4dc6-b89b-cac55058b75f,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-workflow8nv99/series-workflow8nv99-build-action-2320793769/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-workflow8nv99/series-workflow8nv99-build-action-3634277590/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 19:26:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 19:26:40 +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_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"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-workflow8nv99/series-workflow8nv99-convert-artifact-1962828727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 19:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 19:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 19:26:32 +0000 UTC FinishedAt: 2026-06-29 19:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 19:26:53 +0000 UTC FinishedAt: 2026-06-29 22:32:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8nv99[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_fill_info","bond_option_mode_set","bond_3ad_handle_link_change","__bond_3ad_get_active_agg_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"c5155fee-1eb8-4e0a-be81-565e7ba2e735","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 19:26:53 +0000 UTC FinishedAt: 2026-06-29 22:31:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e5e6453d-1c9e-45a6-837d-98c63bffef7a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76b000bc-de6a-4dc6-b89b-cac55058b75f,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-workflow8nv99/series-workflow8nv99-build-action-2320793769/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-workflow8nv99/series-workflow8nv99-build-action-3634277590/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-workflow8nv99/series-workflow8nv99-convert-artifact-1962828727/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,}