Name: series-workflowrscmq Phase: Succeeded StartedAt: 2026-07-22 09:04:49 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[0] Phase: Succeeded StartedAt: 2026-07-22 09:04:49 +0000 UTC FinishedAt: 2026-07-22 09:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 09:04:49 +0000 UTC FinishedAt: 2026-07-22 09:36:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "ba712ecfd942b68b21a4b0a5daaf72f6616cc66d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_VLAN_FILTERING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "ba712ecfd942b68b21a4b0a5daaf72f6616cc66d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_VLAN_FILTERING" ], "series_id": "8da6b18e-e24d-4781-8ffb-d0f438e1764f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_vlan_can_enter_range", "br_vlan_dump_dev", "br_vlan_process_options", "__vlan_tunnel_handle_range" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICAgJiMzNDticl92bGFuX2R1bXBfZGV2JiMzNDssCiAgICAmIzM0O2JyX3ZsYW5fcHJvY2Vzc19vcHRpb25zJiMzNDssCiAgICAmIzM0O19fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcbmluZGV4IDcxYTEyZGEzMDAwNGM3Li5hNzEzNjY4ZWEzNGYwZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jXG5AQCAtMjcxLDcgJiM0MzsyNzEsOCBAQCBzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuIFx0aWYgKCEqdl9zdGFydClcbiBcdFx0Z290byBvdXRfaW5pdDtcbiBcbi1cdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjYgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kKSkge1xuJiM0MztcdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kLCBicl9nZXRfcHZpZCh2ZykpKSB7XG4gXHRcdCp2X2VuZCA9IHY7XG4gXHRcdHJldHVybjtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZDM4ODBmMzFlZGM0ZTEgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbkBAIC0xNjI3LDcgJiM0MzsxNjI3LDggQEAgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRcdCAgICB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxuIFx0XHQgICAgaW50IGNtZCk7XG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpO1xuJiM0MztcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbiYjNDM7XHRcdFx0ICAgICB1MTYgcHZpZCk7XG4gXG4gdm9pZCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX3B2aWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5AQCAtMTg3NCw3ICYjNDM7MTg3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZClcbiYjNDM7XHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbiYjNDM7XHRcdFx0XHRcdCAgIHUxNiBwdmlkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ZsYW4uYyBiL25ldC9icmlkZ2UvYnJfdmxhbi5jXG5pbmRleCA1NTYwYWZjYWFjYTMyNy4uMzFjMWIyY2Y3NWQ5MjMgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl92bGFuLmNcbkBAIC0xOTgyLDkgJiM0MzsxOTgyLDExIEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFxuIC8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXG4mIzQzO1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuJiM0MztcdFx0XHQgICAgIHUxNiBwdmlkKVxuIHtcbi1cdHJldHVybiB2X2N1cnItXHUwMDNldmlkIC0gcmFuZ2VfZW5kLVx1MDAzZXZpZCA9PSAxIFx1MDAyNlx1MDAyNlxuJiM0MztcdHJldHVybiB2X2N1cnItXHUwMDNldmlkICE9IHB2aWQgXHUwMDI2XHUwMDI2IHJhbmdlX2VuZC1cdTAwM2V2aWQgIT0gcHZpZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgdl9jdXJyLVx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cdTAwM2V2aWQgPT0gMSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgICByYW5nZV9lbmQtXHUwMDNlZmxhZ3MgPT0gdl9jdXJyLVx1MDAzZWZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XG4gfVxuQEAgLTIwNjYsOCAmIzQzOzIwNjgsOCBAQCBzdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRpZHggJiM0Mzs9IHJhbmdlX2VuZC1cdTAwM2V2aWQgLSByYW5nZV9zdGFydC1cdTAwM2V2aWQgJiM0MzsgMTtcbiBcbiBcdFx0XHRyYW5nZV9zdGFydCA9IHY7XG4tXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LVx1MDAzZXZpZCA9PSBwdmlkIHx8XG4tXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxuJiM0MztcdFx0XHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xuIFx0XHRcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XG4gXG4gXHRcdFx0aWYgKCFicl92bGFuX2ZpbGxfdmlkcyhza2IsIHJhbmdlX3N0YXJ0LVx1MDAzZXZpZCxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jIGIvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuaW5kZXggZmNjMjAwYzNlM2RhMjYuLmNiMGY1NTZmZjQwZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuQEAgLTM1MCw4ICYjNDM7MzUwLDcgQEAgaW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbi1cdFx0XHRpZiAodi1cdTAwM2V2aWQgPT0gcHZpZCB8fFxuLVx0XHRcdCAgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQpKSB7XG4mIzQzO1x0XHRcdGlmICghYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQsIHB2aWQpKSB7XG4gXHRcdFx0XHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cdTAwM2V2aWQsXG4gXHRcdFx0XHRcdCAgICAgICBjdXJyX2VuZC1cdTAwM2V2aWQsIFJUTV9ORVdWTEFOKTtcbiBcdFx0XHRcdGN1cnJfc3RhcnQgPSB2O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcbmluZGV4IGFkNjY3MzFkMmE2ZjNlLi45MGUxOGUyMTA0ZTM0NyAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxuQEAgLTEzLDYgJiM0MzsxMyw3IEBAIEFMTF9URVNUUz1cJiMzNDtcbiBcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9uX2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkXG4mIzQzO1x0dmxhbl9yYW5nZV9wdmlkXG4gXCYjMzQ7XG4gXG4gc2V0dXBfcHJlcGFyZSgpXG5AQCAtMTkxLDYgJiM0MzsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcbiBcdGxvZ190ZXN0IFwmIzM0O1ZMQU4gcmFuZ2UgZ3JvdXBpbmcgd2l0aCBtY2FzdF9lbmFibGVkXCYjMzQ7XG4gfVxuIFxuJiM0Mzt2bGFuX3JhbmdlX3B2aWQoKVxuJiM0Mzt7XG4mIzQzO1x0UkVUPTBcbiYjNDM7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TXCYjMzQ7IGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMVxuJiM0MztcdGNoZWNrX2VyciAkPyBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIGRlZmF1bHQgUFZJRFwmIzM0O1xuJiM0MztcdGRlZmVyIGlwIC1uIFwmIzM0OyROU1wmIzM0OyBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDBcbiYjNDM7XG4mIzQzO1x0YnJpZGdlIC1uIFwmIzM0OyROU1wmIzM0OyB2bGFuIGFkZCB2aWQgMiBkZXYgZHVtbXkwIHVudGFnZ2VkXG4mIzQzO1x0Y2hlY2tfZXJyICQ/IFwmIzM0O0ZhaWxlZCB0byBhZGQgVkxBTiAyXCYjMzQ7XG4mIzQzO1x0ZGVmZXIgYnJpZGdlIC1uIFwmIzM0OyROU1wmIzM0OyB2bGFuIGRlbCB2aWQgMiBkZXYgZHVtbXkwXG4mIzQzO1xuJiM0MztcdGJyaWRnZSAtbiBcJiMzNDskTlNcJiMzNDsgLWQgdmxhbiBzaG93IGRldiBkdW1teTAgfFxuJiM0MztcdFx0Z3JlcCAtRXEgJiMzOTsoXnxbWzpzcGFjZTpdXSkyKFtbOnNwYWNlOl1dfCQpJiMzOTtcbiYjNDM7XHRjaGVja19lcnIgJD8gXCYjMzQ7VkxBTiBmb2xsb3dpbmcgUFZJRCBpcyBtaXNzaW5nIGZyb20gZGV0YWlsZWQgZHVtcFwmIzM0O1xuJiM0MztcbiYjNDM7XHRicmlkZ2UgLW4gXCYjMzQ7JE5TXCYjMzQ7IC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHwgZ3JlcCAtcSBcJiMzNDsxLTJcJiMzNDtcbiYjNDM7XHRjaGVja19mYWlsICQ/IFwmIzM0O1BWSUQgd2FzIGluY29ycmVjdGx5IGluY2x1ZGVkIGluIGEgVkxBTiByYW5nZVwmIzM0O1xuJiM0MztcbiYjNDM7XHRsb2dfdGVzdCBcJiMzNDtQVklEIGlzIGlzb2xhdGVkIGZyb20gVkxBTiBkdW1wIHJhbmdlc1wmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuICMgVmVyaWZ5IHRoZSBuZXdlc3QgdGVzdGVkIG9wdGlvbiBpcyBzdXBwb3J0ZWRcbiBpZiAhIGJyaWRnZSB2bGFuIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwmIzM0O25laWdoX3N1cHByZXNzXCYjMzQ7OyB0aGVuXG4gXHRlY2hvIFwmIzM0O1NLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX1ZMQU5fRklMVEVSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAgICYjMzQ7YnJfdmxhbl9kdW1wX2RldiYjMzQ7LAogICAgJiMzNDticl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYwppbmRleCA3MWExMmRhMzAwMDRjNy4uYTcxMzY2OGVhMzRmMGUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMKQEAgLTI3MSw3ICYjNDM7MjcxLDggQEAgc3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwKIAlpZiAoISp2X3N0YXJ0KQogCQlnb3RvIG91dF9pbml0OwogCi0JaWYgKHYgJmFtcDsmYW1wOyBjdXJyX2NoYW5nZSAmYW1wOyZhbXA7IGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsICp2X2VuZCkpIHsKJiM0MzsJaWYgKHYgJmFtcDsmYW1wOyBjdXJyX2NoYW5nZSAmYW1wOyZhbXA7CiYjNDM7CSAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHsKIAkJKnZfZW5kID0gdjsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKaW5kZXggZDU1ZWE5NTE2ZTNlMzYuLmQzODgwZjMxZWRjNGUxIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaApAQCAtMTYyNyw3ICYjNDM7MTYyNyw4IEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLAogCQkgICAgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSwKIAkJICAgIGludCBjbWQpOwogYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCk7CiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJICAgICB1MTYgcHZpZCk7CiAKIHZvaWQgYnJfdmxhbl9maWxsX2ZvcndhcmRfcGF0aF9wdmlkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwKIAkJCQkgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCwKQEAgLTE4NzQsNyAmIzQzOzE4NzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLAogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLAotCQkJCQkgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpCiYjNDM7CQkJCQkgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJCQkgICB1MTYgcHZpZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmMKaW5kZXggNTU2MGFmY2FhY2EzMjcuLjMxYzFiMmNmNzVkOTIzIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uYwpAQCAtMTk4Miw5ICYjNDM7MTk4MiwxMSBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpiciwKIAogLyogY2hlY2sgaWYgdl9jdXJyIGNhbiBlbnRlciBhIHJhbmdlIGVuZGluZyBpbiByYW5nZV9lbmQgKi8KIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpCiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJICAgICB1MTYgcHZpZCkKIHsKLQlyZXR1cm4gdl9jdXJyLSZndDt2aWQgLSByYW5nZV9lbmQtJmd0O3ZpZCA9PSAxICZhbXA7JmFtcDsKJiM0MzsJcmV0dXJuIHZfY3Vyci0mZ3Q7dmlkICE9IHB2aWQgJmFtcDsmYW1wOyByYW5nZV9lbmQtJmd0O3ZpZCAhPSBwdmlkICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIHZfY3Vyci0mZ3Q7dmlkIC0gcmFuZ2VfZW5kLSZndDt2aWQgPT0gMSAmYW1wOyZhbXA7CiAJICAgICAgIHJhbmdlX2VuZC0mZ3Q7ZmxhZ3MgPT0gdl9jdXJyLSZndDtmbGFncyAmYW1wOyZhbXA7CiAJICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7CiB9CkBAIC0yMDY2LDggJiM0MzsyMDY4LDggQEAgc3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQlpZHggJiM0Mzs9IHJhbmdlX2VuZC0mZ3Q7dmlkIC0gcmFuZ2Vfc3RhcnQtJmd0O3ZpZCAmIzQzOyAxOwogCiAJCQlyYW5nZV9zdGFydCA9IHY7Ci0JCX0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LSZndDt2aWQgPT0gcHZpZCB8fAotCQkJICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHsKJiM0MzsJCX0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fAomIzQzOwkJCSAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7CiAJCQl1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpOwogCiAJCQlpZiAoIWJyX3ZsYW5fZmlsbF92aWRzKHNrYiwgcmFuZ2Vfc3RhcnQtJmd0O3ZpZCwKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMgYi9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jCmluZGV4IGZjYzIwMGMzZTNkYTI2Li5jYjBmNTU2ZmY0MGRiZSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jCkBAIC0zNTAsOCAmIzQzOzM1MCw3IEBAIGludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWlmICh2LSZndDt2aWQgPT0gcHZpZCB8fAotCQkJICAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCkpIHsKJiM0MzsJCQlpZiAoIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIGN1cnJfZW5kLCBwdmlkKSkgewogCQkJCWJyX3ZsYW5fbm90aWZ5KGJyLCBwLCBjdXJyX3N0YXJ0LSZndDt2aWQsCiAJCQkJCSAgICAgICBjdXJyX2VuZC0mZ3Q7dmlkLCBSVE1fTkVXVkxBTik7CiAJCQkJY3Vycl9zdGFydCA9IHY7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoCmluZGV4IGFkNjY3MzFkMmE2ZjNlLi45MGUxOGUyMTA0ZTM0NyAxMDA3NTUKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2gKQEAgLTEzLDYgJiM0MzsxMyw3IEBAIEFMTF9URVNUUz0mIzM0OwogCXZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3VwcwogCXZsYW5fcmFuZ2VfbWNhc3Rfbl9ncm91cHMKIAl2bGFuX3JhbmdlX21jYXN0X2VuYWJsZWQKJiM0MzsJdmxhbl9yYW5nZV9wdmlkCiAmIzM0OwogCiBzZXR1cF9wcmVwYXJlKCkKQEAgLTE5MSw2ICYjNDM7MTkyLDI4IEBAIHZsYW5fcmFuZ2VfbWNhc3RfZW5hYmxlZCgpCiAJbG9nX3Rlc3QgJiMzNDtWTEFOIHJhbmdlIGdyb3VwaW5nIHdpdGggbWNhc3RfZW5hYmxlZCYjMzQ7CiB9CiAKJiM0Mzt2bGFuX3JhbmdlX3B2aWQoKQomIzQzO3sKJiM0MzsJUkVUPTAKJiM0MzsKJiM0MzsJaXAgLW4gJiMzNDskTlMmIzM0OyBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDEKJiM0MzsJY2hlY2tfZXJyICQ/ICYjMzQ7RmFpbGVkIHRvIGNvbmZpZ3VyZSBkZWZhdWx0IFBWSUQmIzM0OwomIzQzOwlkZWZlciBpcCAtbiAmIzM0OyROUyYjMzQ7IGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMAomIzQzOwomIzQzOwlicmlkZ2UgLW4gJiMzNDskTlMmIzM0OyB2bGFuIGFkZCB2aWQgMiBkZXYgZHVtbXkwIHVudGFnZ2VkCiYjNDM7CWNoZWNrX2VyciAkPyAmIzM0O0ZhaWxlZCB0byBhZGQgVkxBTiAyJiMzNDsKJiM0MzsJZGVmZXIgYnJpZGdlIC1uICYjMzQ7JE5TJiMzNDsgdmxhbiBkZWwgdmlkIDIgZGV2IGR1bW15MAomIzQzOwomIzQzOwlicmlkZ2UgLW4gJiMzNDskTlMmIzM0OyAtZCB2bGFuIHNob3cgZGV2IGR1bW15MCB8CiYjNDM7CQlncmVwIC1FcSAmIzM5OyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCkmIzM5OwomIzQzOwljaGVja19lcnIgJD8gJiMzNDtWTEFOIGZvbGxvd2luZyBQVklEIGlzIG1pc3NpbmcgZnJvbSBkZXRhaWxlZCBkdW1wJiMzNDsKJiM0MzsKJiM0MzsJYnJpZGdlIC1uICYjMzQ7JE5TJiMzNDsgLWQgdmxhbiBzaG93IGRldiBkdW1teTAgfCBncmVwIC1xICYjMzQ7MS0yJiMzNDsKJiM0MzsJY2hlY2tfZmFpbCAkPyAmIzM0O1BWSUQgd2FzIGluY29ycmVjdGx5IGluY2x1ZGVkIGluIGEgVkxBTiByYW5nZSYjMzQ7CiYjNDM7CiYjNDM7CWxvZ190ZXN0ICYjMzQ7UFZJRCBpcyBpc29sYXRlZCBmcm9tIFZMQU4gZHVtcCByYW5nZXMmIzM0OwomIzQzO30KJiM0MzsKICMgVmVyaWZ5IHRoZSBuZXdlc3QgdGVzdGVkIG9wdGlvbiBpcyBzdXBwb3J0ZWQKIGlmICEgYnJpZGdlIHZsYW4gaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtuZWlnaF9zdXBwcmVzcyYjMzQ7OyB0aGVuCiAJZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydCYjMzQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJyaWRnZSBWTEFOIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBWTEFOIGxvZ2ljIHdpdGhpbiB0aGUgTGludXgga2VybmVsJiMzOTtzIGJyaWRnZSBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGZpbGVzIGxpa2UgYGJyX25ldGxpbmtfdHVubmVsLmNgLCBgYnJfcHJpdmF0ZS5oYCwgYGJyX3ZsYW4uY2AsIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24gYmVjYXVzZSBvZiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY29tcG9uZW50cy4gVGhlcmUmIzM5O3MgYWxzbyBhIG5ldyBzZWxmdGVzdCBzY3JpcHQsIGBicmlkZ2Vfdmxhbl9kdW1wLnNoYCwgd2hpY2ggaXMgZ29vZCB0byBzZWUsIGFzIGl0IHVzdWFsbHkgZ2l2ZXMgbWUgYW4gaWRlYSBvZiB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eS4KClRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBgcHZpZGAgYXJndW1lbnQgYW5kIGluY2x1ZGVkIGEgY2hlY2ssIGB2X2N1cnItJmd0O3ZpZCAhPSBwdmlkICZhbXA7JmFtcDsgcmFuZ2VfZW5kLSZndDt2aWQgIT0gcHZpZGAuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcHJldmVudHMgYSBWTEFOIHJhbmdlIGZyb20gZW5jb21wYXNzaW5nIHRoZSBQVklELiBUaGlzIGxvb2tzIGxpa2UgYSB2dWxuZXJhYmlsaXR5IGZpeCwgb3Igc29tZXRoaW5nIHRoYXQgaXMgaW1wb3J0YW50IHRvIHRlc3QuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgJiMzNDtJcyB0aGlzIGZ1enotYWJsZT8mIzM0OyBBYnNvbHV0ZWx5LiBUaGlzIG1vZGlmaWNhdGlvbiBoaXRzIGNyaXRpY2FsIGJyaWRnZSBWTEFOIGxvZ2ljLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgYWNjZXNzaWJsZSB2aWEgbmV0bGluayDigJMgY29tbWFuZHMgbGlrZSBgUlRNX05FV1ZMQU5gLCBgUlRNX0dFVFZMQU5gLCBhbmQgc28gb24uIFRoYXQgbWFrZXMgaXQgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHBvdGVudGlhbCBleHBvc3VyZS4KClRvIHByb3Blcmx5IGZ1enogdGhpcywgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gU2luY2UgdGhpcyBhbGwgbGl2ZXMgdW5kZXIgYG5ldC9icmlkZ2UvYCwgSSBzaG91bGQgY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBvciBgTWFrZWZpbGVgIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5IHRvIHNlZSB3aGF0IGVuYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBicl92bGFuLmNgIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLiBUaGVuLCBJIGNhbiBiZWdpbiB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCB0aGUgcmlnaHQga2VybmVsIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX3ZsYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9MjE9YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSAmIzQzOz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxubmV0L2JyaWRnZS9NYWtlZmlsZToyMzpicmlkZ2UtJChDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HKSAmIzQzOz0gYnJfdmxhbi5vIGJyX3ZsYW5fdHVubmVsLm8gYnJfdmxhbl9vcHRpb25zLm8gYnJfbXN0Lm9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJyaWRnZSBWTEFOIEZpbHRlcmluZyoqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBWTEFOIGZpbHRlcmluZyBvbiBhIGJyaWRnZS4gVGhlIGVzc2VudGlhbCBwcmVyZXF1aXNpdGVzIGhlcmUgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50OiBgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgYSAqbXVzdCouIFRoYXQmIzM5O3MgdGhlIGNvcmUgZmVhdHVyZSBmbGFnLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYENPTkZJR19CUklER0VgIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZDsgY2FuJiMzOTt0IGZpbHRlciBWTEFOcyBvbiBhIGJyaWRnZSBpZiB0aGVyZSAqaXNuJiMzOTt0KiBhIGJyaWRnZS4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gZGlnIGRlZXBlciBvbiB0aGlzPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY2AuIFRoYXQgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCB0aGUgaW50ZXJhY3Rpb24gb2YgYnJpZGdlIGFuZCBuZXRsaW5rIGFuZCB0dW5uZWxzIHdoaWNoIGNvdWxkIGJlIHJlbGF0ZWQgdG8gdmxhbiBmaWx0ZXJpbmcgd2l0aCBicmlkZ2UuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgc3BvdCB0byBjaGVjayBob3cgVkxBTiBmaWx0ZXJpbmcgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gdHVubmVsaW5nIHNjZW5hcmlvcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX25ldGxpbmtfdHVubmVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlPTg9YnJpZGdlLXlcdDo9IGJyLm8gYnJfZGV2aWNlLm8gYnJfZmRiLm8gYnJfZm9yd2FyZC5vIGJyX2lmLm8gYnJfaW5wdXQubyBcXFxuLS1cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMTAtXHRcdFx0YnJfc3RwX2lmLm8gYnJfc3RwX3RpbWVyLm8gYnJfbmV0bGluay5vIFxcXG5uZXQvYnJpZGdlL01ha2VmaWxlOjExOlx0XHRcdGJyX25ldGxpbmtfdHVubmVsLm8gYnJfYXJwX25kX3Byb3h5Lm9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYGJyX25ldGxpbmtfdHVubmVsLmNgIGFuZCBWTEFOIEVudHJ5IFJhbmdlIGluIHRoZSBCcmlkZ2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyB0aGUgYGJyX25ldGxpbmtfdHVubmVsLmNgIGZpbGUg4oCTIHRoYXQmIzM5O3MgYWx3YXlzIGluIHRoZSBidWlsZCB3aGVuIGBDT05GSUdfQlJJREdFYCBpcyBzZXQsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLiBBIHR1bm5lbCBpbnRlcmZhY2UgaXMgb2Z0ZW4gZ29pbmcgdG8gYmUgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCBicmlkZ2Ugc3VwcG9ydC4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBlc3BlY2lhbGx5IHdpdGggdGhlIGRpcmVjdGlvbiB0aGluZ3MgaGF2ZSBiZWVuIG1vdmluZyB3aXRoIFZ4TEFOIGFuZCByZWxhdGVkIHRlY2hub2xvZ2llcy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAgZnVuY3Rpb24gaW4gYG5ldC9icmlkZ2UvYnJfdmxhbi5jYC4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBWTEFOIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBicmlkZ2UuIFRoaXMgaXMgd2hlcmUgdGhlIGNvZGUgbWFrZXMgc3VyZSB0aGF0IFZMQU4gYXNzaWdubWVudHMgYXJlIHZhbGlkLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBmb3Igc2VjdXJpdHkgYW5kIG5ldHdvcmsgc2VnbWVudGF0aW9uIHdoZW4gdXNpbmcgVkxBTnMgd2l0aCBhIGJyaWRnZS4gTGV0IG1lIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBob3cgdGhlIHJhbmdlIHZhbGlkYXRpb24gbG9naWMgaXMgd29ya2luZyBhbmQgd2hlcmUgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbWlnaHQgZXhpc3QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG92ZXJsYXBwaW5nIHJhbmdlcyBvciBhbnkgZWRnZSBjYXNlcyB3aXRoIHRydW5raW5nIG9yIHRhZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9MjU3PXN0YXRpYyB2b2lkIF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTI3NC1cdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYzoyNzU6XHQgICAgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kLCBicl9nZXRfcHZpZCh2ZykpKSB7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjc2LVx0XHQqdl9lbmQgPSB2O1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cdFx0ICAgIGludCBjbWQpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4NzYtXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmM9MTkxMj12b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTgzLS8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoxOTg0OmJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4NS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTk0PXN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzEtXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjA3MjpcdFx0XHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xubmV0L2JyaWRnZS9icl92bGFuLmMtMjA3My1cdFx0XHR1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpO1xuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9MzAzPWludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTItXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjM1MzpcdFx0XHRpZiAoIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIGN1cnJfZW5kLCBwdmlkKSkge1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTQtXHRcdFx0XHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cdTAwM2V2aWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVkxBTiBUdW5uZWwgUmFuZ2UgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVkxBTiB0dW5uZWwgcmFuZ2UgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyByYW5nZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCAoY3J1Y2lhbCBvbmUgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgKSwgYGJyX3ZsYW5fZHVtcF9kZXZgICh3aGljaCBzZWVtcyB0byBiZSBpbnZvbHZlZCBpbiBvdXRwdXR0aW5nIFZMQU4gZGV2aWNlIGluZm9ybWF0aW9uLCBwcm9iYWJseSBmb3IgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24pLCBhbmQgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCAod2hpY2ggSSBhc3N1bWUgcGFyc2VzIGFuZCBhcHBsaWVzIFZMQU4tcmVsYXRlZCBvcHRpb25zKS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSB3YW50IHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb24gaG93IHRoaXMgcmFuZ2UgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIGFuZCBwcm92aWRlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGlzc3Vlcy4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgaW52b2tpbmcgdGhhdCBjb3JlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYz0yMjI9aW50IGJyX3BhcnNlX3ZsYW5fdHVubmVsX2luZm8oc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjU2LS8qIHNlbmQgYSBub3RpZmljYXRpb24gaWYgdl9jdXJyIGNhbiYjMzk7dCBlbnRlciB0aGUgcmFuZ2UgYW5kIHN0YXJ0IGEgbmV3IG9uZSAqL1xubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjI1NzpzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTI1OC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICoqdl9zdGFydCxcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9Mjg3PWludCBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm8oY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMTgtXHRcdFx0XHQqY2hhbmdlZCA9IGN1cnJfY2hhbmdlO1xubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjMxOTpcdFx0XHRfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShwLCBcdTAwMjZ2X3N0YXJ0LCBcdTAwMjZ2X2VuZCwgdixcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMjAtXHRcdFx0XHRcdFx0ICAgY3Vycl9jaGFuZ2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIFZMQU4gVHVubmVsaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGF0IHRoZSBoZWFydCBvZiB0aGlzIFZMQU4gdHVubmVsaW5nIHByb2Nlc3NpbmcuICBOb3csIHRoZSBjb2RlIHBhdGggc2hvd3MgaXQgY2FsbHMgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gSW50ZXJlc3RpbmcsIHRoZSByYW5nZSBoYW5kbGluZywgc28gdGhhdCBtYWtlcyBzZW5zZS4KCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgaW50ZXJhY3Rpb24gYmV0dGVyLiBMZXQgbWUgcXVpY2tseSBzaGlmdCBmb2N1cyBhbmQgc2VlIHdobyYjMzk7cyBjYWxsaW5nIGBicl92bGFuX2R1bXBfZGV2YC4gIFVuZGVyc3RhbmRpbmcgdGhlIGR1bXAgZnVuY3Rpb24mIzM5O3MgdXNlIHdvdWxkIGhlbHAgcHV0IHRoaXMgd2hvbGUgdmxhbiBwcm9jZXNzIGluIHBlcnNwZWN0aXZlLiBSaWdodCwgbGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgdXNpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX3ZsYW5fZHVtcF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTg0PWJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5OTMtXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoxOTk0OnN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk5NS1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0yMTE5PXN0YXRpYyBpbnQgYnJfdmxhbl9ydG1fZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0My1cdFx0fVxubmV0L2JyaWRnZS9icl92bGFuLmM6MjE0NDpcdFx0ZXJyID0gYnJfdmxhbl9kdW1wX2RldihkZXYsIHNrYiwgY2IsIGR1bXBfZmxhZ3MpO1xubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0NS1cdFx0LyogaWYgdGhlIGR1bXAgY29tcGxldGVkIHdpdGhvdXQgYW4gZXJyb3Igd2UgcmV0dXJuIDAgaGVyZSAqL1xuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTItXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoyMTUzOlx0XHRcdGVyciA9IGJyX3ZsYW5fZHVtcF9kZXYoZGV2LCBza2IsIGNiLCBkdW1wX2ZsYWdzKTtcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTQtXHRcdFx0aWYgKGVyciA9PSAtRU1TR1NJWkUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byBWTEFOIER1bXBpbmcqKgoKT2theSwgc28gSSBzZWUgYGJyX3ZsYW5fcnRtX2R1bXBgIGlzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmV0cmlldmluZyBWTEFOIGluZm9ybWF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgcm91dGUgbWVzc2FnZSBkdW1wLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkdW1waW5nIHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCBkcml2ZW4sIHNvIEkgY2FuIGdyYXNwIHRoZSB3aG9sZSBwaWN0dXJlLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBtaWdodCBiZSBjb25maWd1cmluZyBvciBjb250cm9sbGluZyB0aGlzIGR1bXBpbmcgcHJvY2VzcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBmaWx0ZXJzIHRoYXQgbWlnaHQgYmUgYXBwbGllZCB0byB0aGUgVkxBTiBkdW1wLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgaW50byBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIHdpbGwgaGVscCBtZSBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBzb3VyY2VzIGFuZCwgdWx0aW1hdGVseSwgdGhlIGxvZ2ljIGRyaXZpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBWTEFOIGluZm9ybWF0aW9uIHJldHJpZXZhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9wcm9jZXNzX29wdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODk3PXNpemVfdCBicl92bGFuX29wdHNfbmxfc2l6ZSh2b2lkKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE4OTg6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmM9MjE4ND1zdGF0aWMgaW50IGJyX3ZsYW5fcnRtX3Byb2Nlc3Nfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjI4MS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIyODI6XHRcdGVyciA9IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGJyLCBwLCByYW5nZV9zdGFydCwgcmFuZ2VfZW5kLFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjI4My1cdFx0XHRcdFx0ICAgICAgdGIsIGV4dGFjayk7XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMzAyLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozMDM6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMzA0LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBWTEFOIENvbmZpZ3VyYXRpb24gYW5kIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IFZMQU5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdpbmcgZnJhbWV3b3JrLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmVgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLiBNeSBtYWluIGludGVyZXN0IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBsb2dpYyBhbmQgaG93IGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBmdW5jdGlvbnMgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzOiBgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VgIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBoZWFydCBvZiBhbnkgY2hhbmdlIGxpZXMsIGhvd2V2ZXIgc21hbGwsIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gVGhlbiB0aGVyZSBpcyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBtdXN0IGRlYWwgd2l0aCBob3cgdGhlc2UgVkxBTiByYW5nZXMgYXJlIHByb2Nlc3NlZCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgbG9va2luZyBhdCB0dW5uZWxpbmcgY29uZmlndXJhdGlvbnMuIE5leHQsIEkgc2hvdWxkIHVuZGVyc3RhbmQgaG93IFZMQU4gaW5mb3JtYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzbyBgYnJfdmxhbl9kdW1wX2RldmAgaXMgaW1wb3J0YW50LiBBbHNvLCBJIG11c3QgdW5kZXJzdGFuZCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGl0c2VsZiwgc2luY2UgdGhhdCYjMzk7cyB3aGVyZSB0aGlzIGFsbCBiZWdpbnMsIGFuZCBmaW5hbGx5LCBgYnJfcHJvY2Vzc192bGFuX3R1bm5lbF9pbmZvYCB3aGljaCBtdXN0IGJlIHJlbGV2YW50IHRvIHRoZSB0dW5uZWwgcHJvY2Vzc2luZy4KCkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJIHNlZSB0aGF0IGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGNydWNpYWwgZm9yIGJvdGggYGJyX3ZsYW4uY2AgYW5kIGBicl92bGFuX29wdGlvbnMuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIGBCUklER0VgIGl0c2VsZiBpcyB0aGUgZm91bmRhdGlvbiwgSSBhc3N1bWUgd2l0aG91dCB0aGUgYmFzZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgbm9uZSBvZiB0aGlzIG1hdHRlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgdGhlIG9ubHkgcmVxdWlyZW1lbnQsIG9yIGlmIHRoZXJlIGFyZSBvdGhlcnMgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cdFx0ICAgIGludCBjbWQpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4NzYtXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgI2lmZGVmYCBEaXJlY3RpdmVzIGluIGJyX3ByaXZhdGUuaCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaGAgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aG9zZSBgI2lmZGVmYCBkaXJlY3RpdmVzIGFyb3VuZCBsaW5lcyAxNjI5IGFuZCAxODc3LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBhcmUgbGlrZWx5IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2Nrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlIGZsYWdzIHRoZXkgYXJlIGdhdGluZy4gQXJlIHRoZXNlIHJlbGF0ZWQgdG8gc3BlY2lmaWMgYnJpZGdlIGZ1bmN0aW9uYWxpdGllcywgZGVidWdnaW5nIG9wdGlvbnMsIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgb3IgcGVyaGFwcyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIHBhdGhzPyBVbmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGJsb2NrcyBhcmUgY29tcGlsZWQgaXMga2V5LiBBcmUgdGhlcmUgcmVsYXRlZCBkZWZpbmVzIHVzZWQgd2l0aGluIHRoZSBjb25kaXRpb25hbCBzZWN0aW9ucyBhbmQsIGlmIHNvLCB3aGF0IGRvIHRoZXkgY29udHJvbD8gSSBleHBlY3QgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBhbmQgY29tbWVudHMgaW4gdGhlIGNvZGUgdG8gcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiB3aGljaCBkZWZpbmVzIGFyZSBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgYnJpZGdpbmcgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9wcml2YXRlLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MjA6XHR2b2lkIGJyX3ZsYW5fdmxhbl91cHBlcl9ldmVudChzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LFxuMTYyMTpcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcbjE2MjI6XHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbjE2MjM6XHRpbnQgYnJfdmxhbl9ydG5sX2luaXQodm9pZCk7XG4xNjI0Olx0dm9pZCBicl92bGFuX3J0bmxfdW5pbml0KHZvaWQpO1xuMTYyNTpcdHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuMTYyNjpcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbjE2Mjc6XHRcdFx0ICAgIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXG4xNjI4Olx0XHRcdCAgICBpbnQgY21kKTtcbjE2Mjk6XHRib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcbjE2MzA6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbjE2MzE6XHRcdFx0XHQgICAgIHUxNiBwdmlkKTtcbjE2MzI6XHRcbjE2MzM6XHR2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4xNjM0Olx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbjE2MzU6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKTtcbjE2MzY6XHRpbnQgYnJfdmxhbl9maWxsX2ZvcndhcmRfcGF0aF9tb2RlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbjE2Mzc6XHRcdFx0XHRcdCAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKmRzdCxcbjE2Mzg6XHRcdFx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpO1xuMTYzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipOYXZpZ2F0aW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHRyeWluZyB0byBwaW5wb2ludCB0aGUgbG9jYXRpb24gb2YgdGhlIGAjaWZkZWZgIGRpcmVjdGl2ZS4gSSBrbm93IEkmIzM5O20gbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGFuZCB0aGUgYCNpZmRlZmAgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoYXQuIEl0JiMzOTtzIG9mdGVuIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvZGUgYWRhcHRzIHRvIGRpZmZlcmVudCBidWlsZCBjb25maWd1cmF0aW9ucyBvciBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBvciBleGNsdWRlZC4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0zODg9c3RydWN0IG5ldF9icmlkZ2VfcG9ydCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMzk0LVx0dW5zaWduZWQgbG9uZ1x0XHRcdGZsYWdzO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6Mzk1OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0zOTYtXHRzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuX2dyb3VwXHRfX3JjdSAqdmxncnA7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NDk2PXN0cnVjdCBuZXRfYnJpZGdlIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01MDItXHQvKiBUaGVzZSBmaWVsZHMgYXJlIGFjY2Vzc2VkIG9uIGVhY2ggcGFja2V0ICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo1MDM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTUwNC1cdF9fYmUxNlx0XHRcdFx0dmxhbl9wcm90bztcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01OTM9c3RydWN0IGJyX2lucHV0X3NrYl9jYiB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA0LVx0dTggZ3JhdF9hcnA6MTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjYwNTojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA2LVx0dTggdmxhbl9maWx0ZXJlZDoxO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE1NzA9YnJfbXVsdGljYXN0X2N0eF9vcHRpb25zX2VxdWFsKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgxLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE1NzctLyogYnJfdmxhbi5jICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNTc4OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNTc5LWJvb2wgYnJfYWxsb3dlZF9pbmdyZXNzKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODg0PXN0YXRpYyBpbmxpbmUgdTE2IGJyX3ZsYW5fZmxhZ3MoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdiwgdTE2IHB2aWQpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg5MS0vKiBicl92bGFuX29wdGlvbnMuYyAqL1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5MjojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg5My1ib29sIGJyX3ZsYW5fb3B0c19lcV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTkzOT1zdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9zdGF0ZV9hbGxvd2VkKHU4IHN0YXRlLCBib29sIGxlYXJuX2FsbG93KVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE5NTItLyogYnJfbXN0LmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE5NTM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE5NTQtREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGJyX21zdF91c2VkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNjUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFZMQU4gRmlsdGVyaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gYENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbmV0bGlua190dW5uZWwuY2AuIEkgbmVlZCB0byBzZWUgaWYgdGhhdCBtb2R1bGUgbGV2ZXJhZ2VzLCBvciBkZXBlbmRzIG9uLCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYmV5b25kIHRoZSBvYnZpb3VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBhcmVhIG9mIHRoZSBrZXJuZWwgbmV0d29ya2luZyBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIHNvbWUgbGVzcy1vYnZpb3VzIG51YW5jZXMgdG8gaG93IHRoaXMgYWxsIHRpZXMgdG9nZXRoZXIgYW5kIGl0JiMzOTtzIGltcG9ydGFudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0OTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb25kaXRpb25hbCBDb21waWxhdGlvbiBpbiBCcmlkZ2UgVkxBTiBIYW5kbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGJyaWRnZSBWTEFOIHNpdHVhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SHVoLCBubyBgI2lmZGVmYCBkaXJlY3RpdmVzIGluIGBicl9uZXRsaW5rX3R1bm5lbC5jYD8gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiYjMzQ7IEkgaGFkIGEgZmVlbGluZyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1pZ2h0IGJlIGx1cmtpbmcgc29tZXdoZXJlLCBnaXZlbiB0aGUgbnVhbmNlcyBvZiBWTEFOIGltcGxlbWVudGF0aW9ucyBhY3Jvc3MgZGlmZmVyZW50IGtlcm5lbHMgb3IgY29uZmlndXJhdGlvbnMuIFNpbmNlIGl0IHdhc24mIzM5O3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQgaW4gdGhlIHR1bm5lbCBjb2RlLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBicl92bGFuX29wdGlvbnMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlIHRvIGNvbnRhaW4gYW55IGtlcm5lbCBvciBjb25maWd1cmF0aW9uIGRlcGVuZGVudCBWTEFOIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTQwPWJvb2wgYnJfdmxhbl9vcHRzX2VxX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYwLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo2MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVx0aWYgKCFicl92bGFuX2lzX21hc3Rlcih2X2N1cnIpIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NzI9Ym9vbCBicl92bGFuX29wdHNfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2LFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODItXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjgzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXHRpZiAobmxhX3B1dF91OChza2IsIEJSSURHRV9WTEFOREJfRU5UUllfTUNBU1RfUk9VVEVSLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0xMDItXHQgICAgICAgJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpIC8qIEJSSURHRV9WTEFOREJfVElORk9fSUQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMTA0LVx0ICAgICAgICYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfRU5UUllfTUNBU1RfUk9VVEVSICovXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQwLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDItXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVJdKSB7XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0zODg9Ym9vbCBicl92bGFuX2dsb2JhbF9vcHRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDA2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDA3LVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDgyPXN0YXRpYyBzaXplX3QgcnRubF92bGFuX2dsb2JhbF9vcHRzX25sbXNnX3NpemUoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdilcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4Ni1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUxNikpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfSUQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDg4LVx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HICovXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz01NTA9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3NfZ2xvYmFsX29uZV9vcHRzKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU1OS1cdCpjaGFuZ2VkID0gZmFsc2U7XG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjU2MDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MS1cdGlmICh0YltCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HXSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkV4YW1pbmluZyBJR01QIFNub29waW5nIGFuZCBWTEFOIEZ1bmN0aW9uYWxpdHkqKgoKQWxyaWdodCwgc28gdGhlIGRpc2N1c3Npb24gaGFzIGRyaWZ0ZWQgdG93YXJkcyBgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HYCwgYW5kIHdoaWxlIGl0ICpjb3VsZCogYmUgcmVsZXZhbnQsIGl0JiMzOTtzIG5vdCBhYnNvbHV0ZWx5IGVzc2VudGlhbCBmb3IgdGhlIGNoYW5nZXMgSSYjMzk7bSBmb2N1c2luZyBvbiBpbiB0aGUgY29kZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGNsZWFyIGFuZCBub3QgYSBwb2ludCBvZiBjb25mdXNpb24uIEkgd2FudCB0byBrZWVwIHRoZSBwcmltYXJ5IG9iamVjdGl2ZSBpbiBmb2N1cy4KClRoZSBtb3JlIHByZXNzaW5nIHBvaW50IGZvciB0aGlzIHRhc2sgaXMgdGhlIFZMQU4gaGFuZGxpbmcgYW5kIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFZMQU5zIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhpcyB3aG9sZSBzZXR1cC4gUmlnaHQsIG5leHQgc3RlcCDigJMgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgYnJfdmxhbi5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHByb2JsZW1zKSBsaWtlbHkgbGllIHJlZ2FyZGluZyBWTEFOLXJlbGF0ZWQgdHJhZmZpYywgYWNjZXNzLCBhbmQgZmlsdGVyaW5nLiBHb3R0YSB1bmRlcnN0YW5kIHRoYXQgZnVuY3Rpb24mIzM5O3MgbG9naWMgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTEyPXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5ODMtLyogY2hlY2sgaWYgdl9jdXJyIGNhbiBlbnRlciBhIHJhbmdlIGVuZGluZyBpbiByYW5nZV9lbmQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjE5ODQ6Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTg1LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5OTQ9c3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjA3MS1cdFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoyMDcyOlx0XHRcdCAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7XG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDczLVx0XHRcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzU4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSBWTEFOIEZ1bmN0aW9ucyBhbmQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGUgcmVjZW50IGNoYW5nZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgbW9kaWZpZWQgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ6IGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAsIGBicl92bGFuX2R1bXBfZGV2YCwgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCwgYW5kIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIFRoZXNlIGFic29sdXRlbHkgbmVlZCB0byBiZSBhZGRlZCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIG5vLWJyYWluZXIuCgpOb3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGxldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBUaGUgYmlnIG9uZSB0aGF0IGxlYXBzIHRvIG1pbmQgaXMgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AsIG9idmlvdXNseS4gQW5kIG9mIGNvdXJzZSwgYEJSSURHRWAgaXRzZWxmIGlzIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gdG8gY29uc2lkZXIuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIHNjb3BlIGluIGBuZXQvYnJpZGdlL0tjb25maWdgIGZvciB0aGUgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2Agc2V0dGluZyB0byBjb25maXJtIGFsbCBvZiBteSBhc3N1bXB0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTM2PWNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODUyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBWTEFOIEZpbHRlcmluZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGEgYm9vbGVhbiwgZ290IGl0LiBUaGF0IG1lYW5zIGl0JiMzOTtzIGVpdGhlciBlbmFibGVkIG9yIGRpc2FibGVkLCBub3RoaW5nIG1vcmUgY29tcGxleCB0aGFuIHRoYXQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgb3B0aW9uIGFuZCB0aGUgYnJvYWRlciBicmlkZ2luZyBjb250ZXh0LiBHaXZlbiB0aGlzLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBvdmVyYWxsIGJyaWRnaW5nIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gYG5ldC9icmlkZ2UvS2NvbmZpZ2AuIEkmIzM5O2xsIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRWAgY29uZmlnIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGRlZmluaXRpb24gYW5kIGFsbG93IG1lIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTUKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyaWRnZSBWTEFOIENvbmZpZ3VyYXRpb24gU3VyZmFjZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5uZWQgZG93biB0aGF0IGBCUklER0VgIGFuZCBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNlci1zcGFjZSByZWFjaGFiaWxpdHkgb2YgdGhvc2UgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBoYW5kbGUgdGhhdCBWTEFOIHJhbmdlLgoKTGV0JiMzOTtzIHNlZS4gUmlnaHQsIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEkgc2VlIGl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIGBicl92bGFuX2R1bXBfZGV2YCwgd2hpY2ggaXMgdHJpZ2dlcmVkIGJ5IGBicl92bGFuX3J0bV9kdW1wYCwgd2hpY2ggaW4gdHVybiwgaXMgYSBoYW5kbGVyIGZvciBhbiBgUlRNX0dFVFZMQU5gIG5ldGxpbmsgbWVzc2FnZS4gRXhjZWxsZW50LiBUaGVuIHRoZXJlJiMzOTtzIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2AgYmVpbmcgY2FsbGVkIGZyb20gYGJyX3ZsYW5fcnRtX3Byb2Nlc3Nfb25lYCwgd2hpY2ggaXMgYW4gYFJUTV9ORVdWTEFOYCBoYW5kbGVyLiBHb29kLCBtb3JlIHVzZXItc3BhY2UgZW50cnkgcG9pbnRzLiBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBhcHBlYXJzIHJlYWNoYWJsZSB0aHJvdWdoIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyX3ZsYW5faW5mb2AsIGFuZCB0aGVuIGBicl9zZXRsaW5rYCB3aGljaCBpcyBsaW5rZWQgdG8gYFJUTV9TRVRMSU5LYC4KClBlcmZlY3QsIHRoZXNlIGFyZSBhbGwgYWNjZXNzaWJsZSB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlIEkgZXhwZWN0ZWQsIGFuZCB0aGV5IGRvbiYjMzk7dCBzZWVtIGxpa2UgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGNvbmZpZ3VyYXRpb24vZHVtcCBzdXJmYWNlIGxvb2tzIHByZXR0eSBnb29kIGZvciB0YXJnZXRlZCBmdXp6aW5nLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvY3VtZW50IHdoYXQgSSYjMzk7dmUgZm91bmQuCgoqKldvcnRoRnV6emluZyoqOiBUcnVlCgoqKkZvY3VzU3ltYm9scyoqOgoqICAgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYAoqICAgYGJyX3ZsYW5fZHVtcF9kZXZgCiogICBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgCiogICBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgCgoqKkVuYWJsZUNvbmZpZ3MqKjoKKiAgIGBCUklER0VgCiogICBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYAoKKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX1ZMQU5fRklMVEVSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAgICYjMzQ7YnJfdmxhbl9kdW1wX2RldiYjMzQ7LAogICAgJiMzNDticl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICAgJiMzNDticl92bGFuX2R1bXBfZGV2JiMzNDssCiAgICAmIzM0O2JyX3ZsYW5fcHJvY2Vzc19vcHRpb25zJiMzNDssCiAgICAmIzM0O19fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM0OjQ5LjI1MDg2NjEwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTQwMDcwMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX1ZMQU5fRklMVEVSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VcIixcbiAgICBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgICBcImJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zXCIsXG4gICAgXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuMjUwODczODI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAzNDYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDZiYTFjYTY4MTNjODdjNjZiY2M3NTU5ZDYxMTVkNjgzM2UxOGEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDA5OjM0OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xcbmluZGV4IDcxYTEyZGEzMDAwNGM3Li5hNzEzNjY4ZWEzNGYwZSAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcXG5AQCAtMjcxLDcgKzI3MSw4IEBAIHN0YXRpYyB2b2lkIF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuIFxcdGlmICghKnZfc3RhcnQpXFxuIFxcdFxcdGdvdG8gb3V0X2luaXQ7XFxuIFxcbi1cXHRpZiAodiBcXHUwMDI2XFx1MDAyNiBjdXJyX2NoYW5nZSBcXHUwMDI2XFx1MDAyNiBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQpKSB7XFxuK1xcdGlmICh2IFxcdTAwMjZcXHUwMDI2IGN1cnJfY2hhbmdlIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcXG4gXFx0XFx0KnZfZW5kID0gdjtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZDM4ODBmMzFlZGM0ZTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxcbkBAIC0xNjI3LDcgKzE2MjcsOCBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gXFx0XFx0ICAgIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuIFxcdFxcdCAgICBpbnQgY21kKTtcXG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxuLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKTtcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuK1xcdFxcdFxcdCAgICAgdTE2IHB2aWQpO1xcbiBcXG4gdm9pZCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX3B2aWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5AQCAtMTg3NCw3ICsxODc1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKVxcbitcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHUxNiBwdmlkKVxcbiB7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmNcXG5pbmRleCA1NTYwYWZjYWFjYTMyNy4uMzFjMWIyY2Y3NWQ5MjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xcbkBAIC0xOTgyLDkgKzE5ODIsMTEgQEAgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcbiAvKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xcbiBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXFxuK1xcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbitcXHRcXHRcXHQgICAgIHUxNiBwdmlkKVxcbiB7XFxuLVxcdHJldHVybiB2X2N1cnItXFx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cXHUwMDNldmlkID09IDEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0cmV0dXJuIHZfY3Vyci1cXHUwMDNldmlkICE9IHB2aWQgXFx1MDAyNlxcdTAwMjYgcmFuZ2VfZW5kLVxcdTAwM2V2aWQgIT0gcHZpZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgdl9jdXJyLVxcdTAwM2V2aWQgLSByYW5nZV9lbmQtXFx1MDAzZXZpZCA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAgICByYW5nZV9lbmQtXFx1MDAzZWZsYWdzID09IHZfY3Vyci1cXHUwMDNlZmxhZ3MgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XFxuIH1cXG5AQCAtMjA2Niw4ICsyMDY4LDggQEAgc3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdGlkeCArPSByYW5nZV9lbmQtXFx1MDAzZXZpZCAtIHJhbmdlX3N0YXJ0LVxcdTAwM2V2aWQgKyAxO1xcbiBcXG4gXFx0XFx0XFx0cmFuZ2Vfc3RhcnQgPSB2O1xcbi1cXHRcXHR9IGVsc2UgaWYgKGR1bXBfc3RhdHMgfHwgdi1cXHUwMDNldmlkID09IHB2aWQgfHxcXG4tXFx0XFx0XFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XFxuK1xcdFxcdFxcdCAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7XFxuIFxcdFxcdFxcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIWJyX3ZsYW5fZmlsbF92aWRzKHNrYiwgcmFuZ2Vfc3RhcnQtXFx1MDAzZXZpZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcXG5pbmRleCBmY2MyMDBjM2UzZGEyNi4uY2IwZjU1NmZmNDBkYmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xcbisrKyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcXG5AQCAtMzUwLDggKzM1MCw3IEBAIGludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRcXHR9XFxuIFxcbi1cXHRcXHRcXHRpZiAodi1cXHUwMDNldmlkID09IHB2aWQgfHxcXG4tXFx0XFx0XFx0ICAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCkpIHtcXG4rXFx0XFx0XFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcXG4gXFx0XFx0XFx0XFx0YnJfdmxhbl9ub3RpZnkoYnIsIHAsIGN1cnJfc3RhcnQtXFx1MDAzZXZpZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIGN1cnJfZW5kLVxcdTAwM2V2aWQsIFJUTV9ORVdWTEFOKTtcXG4gXFx0XFx0XFx0XFx0Y3Vycl9zdGFydCA9IHY7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcXG5pbmRleCBhZDY2NzMxZDJhNmYzZS4uOTBlMThlMjEwNGUzNDcgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxcbkBAIC0xMyw2ICsxMyw3IEBAIEFMTF9URVNUUz1cXFwiXFxuIFxcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xcbiBcXHR2bGFuX3JhbmdlX21jYXN0X25fZ3JvdXBzXFxuIFxcdHZsYW5fcmFuZ2VfbWNhc3RfZW5hYmxlZFxcbitcXHR2bGFuX3JhbmdlX3B2aWRcXG4gXFxcIlxcbiBcXG4gc2V0dXBfcHJlcGFyZSgpXFxuQEAgLTE5MSw2ICsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcXG4gXFx0bG9nX3Rlc3QgXFxcIlZMQU4gcmFuZ2UgZ3JvdXBpbmcgd2l0aCBtY2FzdF9lbmFibGVkXFxcIlxcbiB9XFxuIFxcbit2bGFuX3JhbmdlX3B2aWQoKVxcbit7XFxuK1xcdFJFVD0wXFxuK1xcbitcXHRpcCAtbiBcXFwiJE5TXFxcIiBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDFcXG4rXFx0Y2hlY2tfZXJyICQ/IFxcXCJGYWlsZWQgdG8gY29uZmlndXJlIGRlZmF1bHQgUFZJRFxcXCJcXG4rXFx0ZGVmZXIgaXAgLW4gXFxcIiROU1xcXCIgbGluayBzZXQgZGV2IGJyMCB0eXBlIGJyaWRnZSB2bGFuX2RlZmF1bHRfcHZpZCAwXFxuK1xcbitcXHRicmlkZ2UgLW4gXFxcIiROU1xcXCIgdmxhbiBhZGQgdmlkIDIgZGV2IGR1bW15MCB1bnRhZ2dlZFxcbitcXHRjaGVja19lcnIgJD8gXFxcIkZhaWxlZCB0byBhZGQgVkxBTiAyXFxcIlxcbitcXHRkZWZlciBicmlkZ2UgLW4gXFxcIiROU1xcXCIgdmxhbiBkZWwgdmlkIDIgZGV2IGR1bW15MFxcbitcXG4rXFx0YnJpZGdlIC1uIFxcXCIkTlNcXFwiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHxcXG4rXFx0XFx0Z3JlcCAtRXEgJyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCknXFxuK1xcdGNoZWNrX2VyciAkPyBcXFwiVkxBTiBmb2xsb3dpbmcgUFZJRCBpcyBtaXNzaW5nIGZyb20gZGV0YWlsZWQgZHVtcFxcXCJcXG4rXFxuK1xcdGJyaWRnZSAtbiBcXFwiJE5TXFxcIiAtZCB2bGFuIHNob3cgZGV2IGR1bW15MCB8IGdyZXAgLXEgXFxcIjEtMlxcXCJcXG4rXFx0Y2hlY2tfZmFpbCAkPyBcXFwiUFZJRCB3YXMgaW5jb3JyZWN0bHkgaW5jbHVkZWQgaW4gYSBWTEFOIHJhbmdlXFxcIlxcbitcXG4rXFx0bG9nX3Rlc3QgXFxcIlBWSUQgaXMgaXNvbGF0ZWQgZnJvbSBWTEFOIGR1bXAgcmFuZ2VzXFxcIlxcbit9XFxuK1xcbiAjIFZlcmlmeSB0aGUgbmV3ZXN0IHRlc3RlZCBvcHRpb24gaXMgc3VwcG9ydGVkXFxuIGlmICEgYnJpZGdlIHZsYW4gaGVscCAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAtcSBcXFwibmVpZ2hfc3VwcHJlc3NcXFwiOyB0aGVuXFxuIFxcdGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuODgyMTk5NjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1MDg3MjI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfVkxBTl9GSUxURVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl92bGFuX2Nhbl9lbnRlcl9yYW5nZVwiLFxuICAgIFwiYnJfdmxhbl9kdW1wX2RldlwiLFxuICAgIFwiYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNcIixcbiAgICBcIl9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xuaW5kZXggNzFhMTJkYTMwMDA0YzcuLmE3MTM2NjhlYTM0ZjBlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcbkBAIC0yNzEsNyArMjcxLDggQEAgc3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbiBcdGlmICghKnZfc3RhcnQpXG4gXHRcdGdvdG8gb3V0X2luaXQ7XG4gXG4tXHRpZiAodiBcdTAwMjZcdTAwMjYgY3Vycl9jaGFuZ2UgXHUwMDI2XHUwMDI2IGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsICp2X2VuZCkpIHtcbitcdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbitcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcbiBcdFx0KnZfZW5kID0gdjtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5kMzg4MGYzMWVkYzRlMSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuQEAgLTE2MjcsNyArMTYyNyw4IEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFx0XHQgICAgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSxcbiBcdFx0ICAgIGludCBjbWQpO1xuIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKTtcbitcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbitcdFx0XHQgICAgIHUxNiBwdmlkKTtcbiBcbiB2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbkBAIC0xODc0LDcgKzE4NzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXG4rXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbitcdFx0XHRcdFx0ICAgdTE2IHB2aWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmNcbmluZGV4IDU1NjBhZmNhYWNhMzI3Li4zMWMxYjJjZjc1ZDkyMyAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfdmxhbi5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xuQEAgLTE5ODIsOSArMTk4MiwxMSBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcbiAvKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xuIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKVxuK1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuK1x0XHRcdCAgICAgdTE2IHB2aWQpXG4ge1xuLVx0cmV0dXJuIHZfY3Vyci1cdTAwM2V2aWQgLSByYW5nZV9lbmQtXHUwMDNldmlkID09IDEgXHUwMDI2XHUwMDI2XG4rXHRyZXR1cm4gdl9jdXJyLVx1MDAzZXZpZCAhPSBwdmlkIFx1MDAyNlx1MDAyNiByYW5nZV9lbmQtXHUwMDNldmlkICE9IHB2aWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgdl9jdXJyLVx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cdTAwM2V2aWQgPT0gMSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgICByYW5nZV9lbmQtXHUwMDNlZmxhZ3MgPT0gdl9jdXJyLVx1MDAzZWZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XG4gfVxuQEAgLTIwNjYsOCArMjA2OCw4IEBAIHN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdGlkeCArPSByYW5nZV9lbmQtXHUwMDNldmlkIC0gcmFuZ2Vfc3RhcnQtXHUwMDNldmlkICsgMTtcbiBcbiBcdFx0XHRyYW5nZV9zdGFydCA9IHY7XG4tXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LVx1MDAzZXZpZCA9PSBwdmlkIHx8XG4tXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcbitcdFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XG4rXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCwgcHZpZCkpIHtcbiBcdFx0XHR1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpO1xuIFxuIFx0XHRcdGlmICghYnJfdmxhbl9maWxsX3ZpZHMoc2tiLCByYW5nZV9zdGFydC1cdTAwM2V2aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbmluZGV4IGZjYzIwMGMzZTNkYTI2Li5jYjBmNTU2ZmY0MGRiZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbkBAIC0zNTAsOCArMzUwLDcgQEAgaW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbi1cdFx0XHRpZiAodi1cdTAwM2V2aWQgPT0gcHZpZCB8fFxuLVx0XHRcdCAgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQpKSB7XG4rXHRcdFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcbiBcdFx0XHRcdGJyX3ZsYW5fbm90aWZ5KGJyLCBwLCBjdXJyX3N0YXJ0LVx1MDAzZXZpZCxcbiBcdFx0XHRcdFx0ICAgICAgIGN1cnJfZW5kLVx1MDAzZXZpZCwgUlRNX05FV1ZMQU4pO1xuIFx0XHRcdFx0Y3Vycl9zdGFydCA9IHY7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxuaW5kZXggYWQ2NjczMWQyYTZmM2UuLjkwZTE4ZTIxMDRlMzQ3IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoXG5AQCAtMTMsNiArMTMsNyBAQCBBTExfVEVTVFM9XCJcbiBcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9uX2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkXG4rXHR2bGFuX3JhbmdlX3B2aWRcbiBcIlxuIFxuIHNldHVwX3ByZXBhcmUoKVxuQEAgLTE5MSw2ICsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcbiBcdGxvZ190ZXN0IFwiVkxBTiByYW5nZSBncm91cGluZyB3aXRoIG1jYXN0X2VuYWJsZWRcIlxuIH1cbiBcbit2bGFuX3JhbmdlX3B2aWQoKVxuK3tcbitcdFJFVD0wXG4rXG4rXHRpcCAtbiBcIiROU1wiIGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMVxuK1x0Y2hlY2tfZXJyICQ/IFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBkZWZhdWx0IFBWSURcIlxuK1x0ZGVmZXIgaXAgLW4gXCIkTlNcIiBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDBcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIHZsYW4gYWRkIHZpZCAyIGRldiBkdW1teTAgdW50YWdnZWRcbitcdGNoZWNrX2VyciAkPyBcIkZhaWxlZCB0byBhZGQgVkxBTiAyXCJcbitcdGRlZmVyIGJyaWRnZSAtbiBcIiROU1wiIHZsYW4gZGVsIHZpZCAyIGRldiBkdW1teTBcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHxcbitcdFx0Z3JlcCAtRXEgJyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCknXG4rXHRjaGVja19lcnIgJD8gXCJWTEFOIGZvbGxvd2luZyBQVklEIGlzIG1pc3NpbmcgZnJvbSBkZXRhaWxlZCBkdW1wXCJcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHwgZ3JlcCAtcSBcIjEtMlwiXG4rXHRjaGVja19mYWlsICQ/IFwiUFZJRCB3YXMgaW5jb3JyZWN0bHkgaW5jbHVkZWQgaW4gYSBWTEFOIHJhbmdlXCJcbitcbitcdGxvZ190ZXN0IFwiUFZJRCBpcyBpc29sYXRlZCBmcm9tIFZMQU4gZHVtcCByYW5nZXNcIlxuK31cbitcbiAjIFZlcmlmeSB0aGUgbmV3ZXN0IHRlc3RlZCBvcHRpb24gaXMgc3VwcG9ydGVkXG4gaWYgISBicmlkZ2UgdmxhbiBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcIm5laWdoX3N1cHByZXNzXCI7IHRoZW5cbiBcdGVjaG8gXCJTS0lQOiBpcHJvdXRlMiB0b28gb2xkLCBtaXNzaW5nIHBlci1WTEFOIG5laWdoYm9yIHN1cHByZXNzaW9uIHN1cHBvcnRcIlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuODgyMjAxOTA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNzMwNzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQnJpZGdlIFZMQU4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBWTEFOIGxvZ2ljIHdpdGhpbiB0aGUgTGludXgga2VybmVsJ3MgYnJpZGdlIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgZmlsZXMgbGlrZSBgYnJfbmV0bGlua190dW5uZWwuY2AsIGBicl9wcml2YXRlLmhgLCBgYnJfdmxhbi5jYCwgYW5kIGBicl92bGFuX29wdGlvbnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjb21wb25lbnRzLiBUaGVyZSdzIGFsc28gYSBuZXcgc2VsZnRlc3Qgc2NyaXB0LCBgYnJpZGdlX3ZsYW5fZHVtcC5zaGAsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLCBhcyBpdCB1c3VhbGx5IGdpdmVzIG1lIGFuIGlkZWEgb2YgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIGBwdmlkYCBhcmd1bWVudCBhbmQgaW5jbHVkZWQgYSBjaGVjaywgYHZfY3Vyci1cdTAwM2V2aWQgIT0gcHZpZCBcdTAwMjZcdTAwMjYgcmFuZ2VfZW5kLVx1MDAzZXZpZCAhPSBwdmlkYC4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBwcmV2ZW50cyBhIFZMQU4gcmFuZ2UgZnJvbSBlbmNvbXBhc3NpbmcgdGhlIFBWSUQuIFRoaXMgbG9va3MgbGlrZSBhIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBzb21ldGhpbmcgdGhhdCBpcyBpbXBvcnRhbnQgdG8gdGVzdC5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyBmdXp6LWFibGU/XCIgQWJzb2x1dGVseS4gVGhpcyBtb2RpZmljYXRpb24gaGl0cyBjcml0aWNhbCBicmlkZ2UgVkxBTiBsb2dpYywgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGlzIGlzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsg4oCTIGNvbW1hbmRzIGxpa2UgYFJUTV9ORVdWTEFOYCwgYFJUTV9HRVRWTEFOYCwgYW5kIHNvIG9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBwb3RlbnRpYWwgZXhwb3N1cmUuXG5cblRvIHByb3Blcmx5IGZ1enogdGhpcywgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSB0aGlzIGFsbCBsaXZlcyB1bmRlciBgbmV0L2JyaWRnZS9gLCBJIHNob3VsZCBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9yIGBNYWtlZmlsZWAgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkgdG8gc2VlIHdoYXQgZW5hYmxlcyB0aGUgY29tcGlsYXRpb24gb2YgYGJyX3ZsYW4uY2AgYW5kIGBicl92bGFuX29wdGlvbnMuY2AuIFRoZW4sIEkgY2FuIGJlZ2luIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIHRoZSByaWdodCBrZXJuZWwgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNDo1NS41OTk1MTIwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NzYzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfdmxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9MjE9YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSArPSBicl9tdWx0aWNhc3QubyBicl9tZGIubyBicl9tdWx0aWNhc3RfZWh0Lm9cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxcbm5ldC9icmlkZ2UvTWFrZWZpbGU6MjM6YnJpZGdlLSQoQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklORykgKz0gYnJfdmxhbi5vIGJyX3ZsYW5fdHVubmVsLm8gYnJfdmxhbl9vcHRpb25zLm8gYnJfbXN0Lm9cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNDo1NS43MjE0OTQ3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDMzMjk3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJyaWRnZSBWTEFOIEZpbHRlcmluZyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggVkxBTiBmaWx0ZXJpbmcgb24gYSBicmlkZ2UuIFRoZSBlc3NlbnRpYWwgcHJlcmVxdWlzaXRlcyBoZXJlIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudDogYENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGEgKm11c3QqLiBUaGF0J3MgdGhlIGNvcmUgZmVhdHVyZSBmbGFnLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYENPTkZJR19CUklER0VgIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZDsgY2FuJ3QgZmlsdGVyIFZMQU5zIG9uIGEgYnJpZGdlIGlmIHRoZXJlICppc24ndCogYSBicmlkZ2UuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbk5vdywgd2hlcmUncyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgZGVlcGVyIG9uIHRoaXM/IExldCdzIHRha2UgYSBsb29rIGF0IGBuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNgLiBUaGF0IGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGludGVyYWN0aW9uIG9mIGJyaWRnZSBhbmQgbmV0bGluayBhbmQgdHVubmVscyB3aGljaCBjb3VsZCBiZSByZWxhdGVkIHRvIHZsYW4gZmlsdGVyaW5nIHdpdGggYnJpZGdlLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHNwb3QgdG8gY2hlY2sgaG93IFZMQU4gZmlsdGVyaW5nIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgZXNwZWNpYWxseSByZWxhdGVkIHRvIHR1bm5lbGluZyBzY2VuYXJpb3MuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NTkuMTY0ODI4ODY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk3ODcwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9uZXRsaW5rX3R1bm5lbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9OD1icmlkZ2UteVxcdDo9IGJyLm8gYnJfZGV2aWNlLm8gYnJfZmRiLm8gYnJfZm9yd2FyZC5vIGJyX2lmLm8gYnJfaW5wdXQubyBcXFxcXFxuLS1cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTEwLVxcdFxcdFxcdGJyX3N0cF9pZi5vIGJyX3N0cF90aW1lci5vIGJyX25ldGxpbmsubyBcXFxcXFxubmV0L2JyaWRnZS9NYWtlZmlsZToxMTpcXHRcXHRcXHRicl9uZXRsaW5rX3R1bm5lbC5vIGJyX2FycF9uZF9wcm94eS5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0xMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NTkuMzE1ODEzNDQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMDI5NzQ4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGJyX25ldGxpbmtfdHVubmVsLmNgIGFuZCBWTEFOIEVudHJ5IFJhbmdlIGluIHRoZSBCcmlkZ2UgQ29kZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBgYnJfbmV0bGlua190dW5uZWwuY2AgZmlsZSDigJMgdGhhdCdzIGFsd2F5cyBpbiB0aGUgYnVpbGQgd2hlbiBgQ09ORklHX0JSSURHRWAgaXMgc2V0LCB3aGljaCBpc24ndCBzdXJwcmlzaW5nLiBBIHR1bm5lbCBpbnRlcmZhY2UgaXMgb2Z0ZW4gZ29pbmcgdG8gYmUgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCBicmlkZ2Ugc3VwcG9ydC4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBlc3BlY2lhbGx5IHdpdGggdGhlIGRpcmVjdGlvbiB0aGluZ3MgaGF2ZSBiZWVuIG1vdmluZyB3aXRoIFZ4TEFOIGFuZCByZWxhdGVkIHRlY2hub2xvZ2llcy5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCBmdW5jdGlvbiBpbiBgbmV0L2JyaWRnZS9icl92bGFuLmNgLiBUaGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIFZMQU4gY29uZmlndXJhdGlvbiBmb3IgdGhlIGJyaWRnZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29kZSBtYWtlcyBzdXJlIHRoYXQgVkxBTiBhc3NpZ25tZW50cyBhcmUgdmFsaWQsIGFuZCBpdCdzIGEgY3JpdGljYWwgcGllY2UgZm9yIHNlY3VyaXR5IGFuZCBuZXR3b3JrIHNlZ21lbnRhdGlvbiB3aGVuIHVzaW5nIFZMQU5zIHdpdGggYSBicmlkZ2UuIExldCBtZSBkaWcgaW50byB0aGF0IGFuZCBzZWUgaG93IHRoZSByYW5nZSB2YWxpZGF0aW9uIGxvZ2ljIGlzIHdvcmtpbmcgYW5kIHdoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG1pZ2h0IGV4aXN0LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG92ZXJsYXBwaW5nIHJhbmdlcyBvciBhbnkgZWRnZSBjYXNlcyB3aXRoIHRydW5raW5nIG9yIHRhZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNToxMi4zMTg3OTA5MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTE0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYz0yNTc9c3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0yNzQtXFx0aWYgKHYgXFx1MDAyNlxcdTAwMjYgY3Vycl9jaGFuZ2UgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM6Mjc1OlxcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjc2LVxcdFxcdCp2X2VuZCA9IHY7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xNjI1PXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cXHRcXHQgICAgaW50IGNtZCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNjMwLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg3Ni1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg3OC1cXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTEyPXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4My0vKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjE5ODQ6Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4NS1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5OTQ9c3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDcxLVxcdFxcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIwNzI6XFx0XFx0XFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCwgcHZpZCkpIHtcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDczLVxcdFxcdFxcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTMwMz1pbnQgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTItXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozNTM6XFx0XFx0XFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTM1NC1cXHRcXHRcXHRcXHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cXHUwMDNldmlkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNToxMi40MjYzMTAxODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE3MDQ0ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWTEFOIFR1bm5lbCBSYW5nZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgVkxBTiB0dW5uZWwgcmFuZ2UgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyByYW5nZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCAoY3J1Y2lhbCBvbmUgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgKSwgYGJyX3ZsYW5fZHVtcF9kZXZgICh3aGljaCBzZWVtcyB0byBiZSBpbnZvbHZlZCBpbiBvdXRwdXR0aW5nIFZMQU4gZGV2aWNlIGluZm9ybWF0aW9uLCBwcm9iYWJseSBmb3IgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24pLCBhbmQgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCAod2hpY2ggSSBhc3N1bWUgcGFyc2VzIGFuZCBhcHBsaWVzIFZMQU4tcmVsYXRlZCBvcHRpb25zKS5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB1bmRlcnN0YW5kIHdoYXQncyBjYWxsaW5nIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIElkZW50aWZ5aW5nIHRoZSBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCB2aWV3IG9uIGhvdyB0aGlzIHJhbmdlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIHNlZSB3aG8ncyBpbnZva2luZyB0aGF0IGNvcmUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6MTYuMjQzMzU3OTgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ3NzM0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9MjIyPWludCBicl9wYXJzZV92bGFuX3R1bm5lbF9pbmZvKHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjU2LS8qIHNlbmQgYSBub3RpZmljYXRpb24gaWYgdl9jdXJyIGNhbid0IGVudGVyIHRoZSByYW5nZSBhbmQgc3RhcnQgYSBuZXcgb25lICovXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjI1NzpzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0yNTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKip2X3N0YXJ0LFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jPTI4Nz1pbnQgYnJfcHJvY2Vzc192bGFuX3R1bm5lbF9pbmZvKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMTgtXFx0XFx0XFx0XFx0KmNoYW5nZWQgPSBjdXJyX2NoYW5nZTtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM6MzE5OlxcdFxcdFxcdF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKHAsIFxcdTAwMjZ2X3N0YXJ0LCBcXHUwMDI2dl9lbmQsIHYsXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTMyMC1cXHRcXHRcXHRcXHRcXHRcXHQgICBjdXJyX2NoYW5nZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjE2LjMzODg0MTI3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM1MzgwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byBWTEFOIFR1bm5lbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgYGJyX3Byb2Nlc3Nfdmxhbl90dW5uZWxfaW5mb2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBhdCB0aGUgaGVhcnQgb2YgdGhpcyBWTEFOIHR1bm5lbGluZyBwcm9jZXNzaW5nLiAgTm93LCB0aGUgY29kZSBwYXRoIHNob3dzIGl0IGNhbGxzIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIEludGVyZXN0aW5nLCB0aGUgcmFuZ2UgaGFuZGxpbmcsIHNvIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgaW50ZXJhY3Rpb24gYmV0dGVyLiBMZXQgbWUgcXVpY2tseSBzaGlmdCBmb2N1cyBhbmQgc2VlIHdobydzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiAgVW5kZXJzdGFuZGluZyB0aGUgZHVtcCBmdW5jdGlvbidzIHVzZSB3b3VsZCBoZWxwIHB1dCB0aGlzIHdob2xlIHZsYW4gcHJvY2VzcyBpbiBwZXJzcGVjdGl2ZS4gUmlnaHQsIGxldCdzIHNlZSB3aG8ncyB1c2luZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjE5Ljk3NDIzMzkxNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwNTExMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl92bGFuLmM9MTk4ND1ib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5OTMtXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MTk5NDpzdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTk1LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmM9MjExOT1zdGF0aWMgaW50IGJyX3ZsYW5fcnRtX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0My1cXHRcXHR9XFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjE0NDpcXHRcXHRlcnIgPSBicl92bGFuX2R1bXBfZGV2KGRldiwgc2tiLCBjYiwgZHVtcF9mbGFncyk7XFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0NS1cXHRcXHQvKiBpZiB0aGUgZHVtcCBjb21wbGV0ZWQgd2l0aG91dCBhbiBlcnJvciB3ZSByZXR1cm4gMCBoZXJlICovXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMTUyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIxNTM6XFx0XFx0XFx0ZXJyID0gYnJfdmxhbl9kdW1wX2RldihkZXYsIHNrYiwgY2IsIGR1bXBfZmxhZ3MpO1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTQtXFx0XFx0XFx0aWYgKGVyciA9PSAtRU1TR1NJWkUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjIwLjExNDc0ODkyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQyMjg0NzgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gVkxBTiBEdW1waW5nKipcblxuT2theSwgc28gSSBzZWUgYGJyX3ZsYW5fcnRtX2R1bXBgIGlzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZXRyaWV2aW5nIFZMQU4gaW5mb3JtYXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSByb3V0ZSBtZXNzYWdlIGR1bXAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGR1bXBpbmcgcHJvY2VzcyBpcyBpbml0aWF0ZWQgYW5kIGRyaXZlbiwgc28gSSBjYW4gZ3Jhc3AgdGhlIHdob2xlIHBpY3R1cmUuXG5cbk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgbWlnaHQgYmUgY29uZmlndXJpbmcgb3IgY29udHJvbGxpbmcgdGhpcyBkdW1waW5nIHByb2Nlc3MsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2AuIFRoYXQgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgZmlsdGVycyB0aGF0IG1pZ2h0IGJlIGFwcGxpZWQgdG8gdGhlIFZMQU4gZHVtcC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBmbG93IGludG8gYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCB3aWxsIGhlbHAgbWUgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhbmQsIHVsdGltYXRlbHksIHRoZSBsb2dpYyBkcml2aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgVkxBTiBpbmZvcm1hdGlvbiByZXRyaWV2YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTozNC41Mzc1OTk1MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTA5NTA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg5Nz1zaXplX3QgYnJfdmxhbl9vcHRzX25sX3NpemUodm9pZCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5ODppbnQgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0yMTg0PXN0YXRpYyBpbnQgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIyODEtXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjI4MjpcXHRcXHRlcnIgPSBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhiciwgcCwgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCxcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMjgzLVxcdFxcdFxcdFxcdFxcdCAgICAgIHRiLCBleHRhY2spO1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zMDItXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozMDM6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTMwNC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6MzYuMDQ4NTU2MTExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODg2MTk4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZMQU4gQ29uZmlndXJhdGlvbiBhbmQgUHJvY2Vzc2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IFZMQU5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdpbmcgZnJhbWV3b3JrLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmVgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLiBNeSBtYWluIGludGVyZXN0IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBsb2dpYyBhbmQgaG93IGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gYSBmZXcga2V5IGZ1bmN0aW9ucyB0byBnZXQgYSBnb29kIGdyYXNwIG9mIHRoaXM6IGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGhlYXJ0IG9mIGFueSBjaGFuZ2UgbGllcywgaG93ZXZlciBzbWFsbCwgaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIFRoZW4gdGhlcmUgaXMgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCwgd2hpY2ggbXVzdCBkZWFsIHdpdGggaG93IHRoZXNlIFZMQU4gcmFuZ2VzIGFyZSBwcm9jZXNzZWQsIGVzcGVjaWFsbHkgaWYgd2UncmUgbG9va2luZyBhdCB0dW5uZWxpbmcgY29uZmlndXJhdGlvbnMuIE5leHQsIEkgc2hvdWxkIHVuZGVyc3RhbmQgaG93IFZMQU4gaW5mb3JtYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzbyBgYnJfdmxhbl9kdW1wX2RldmAgaXMgaW1wb3J0YW50LiBBbHNvLCBJIG11c3QgdW5kZXJzdGFuZCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGl0c2VsZiwgc2luY2UgdGhhdCdzIHdoZXJlIHRoaXMgYWxsIGJlZ2lucywgYW5kIGZpbmFsbHksIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gIHdoaWNoIG11c3QgYmUgcmVsZXZhbnQgdG8gdGhlIHR1bm5lbCBwcm9jZXNzaW5nLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSBzZWUgdGhhdCBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCBpcyBjcnVjaWFsIGZvciBib3RoIGBicl92bGFuLmNgIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gT2YgY291cnNlLCBgQlJJREdFYCBpdHNlbGYgaXMgdGhlIGZvdW5kYXRpb24sIEkgYXNzdW1lIHdpdGhvdXQgdGhlIGJhc2UgYnJpZGdlIGZ1bmN0aW9uYWxpdHksIG5vbmUgb2YgdGhpcyBtYXR0ZXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIHRoZSBvbmx5IHJlcXVpcmVtZW50LCBvciBpZiB0aGVyZSBhcmUgb3RoZXJzIEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjQxLjYzNzE3NzkyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNjkxNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNjI4LVxcdFxcdCAgICBpbnQgY21kKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNjI5OmJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODcwPXN0YXRpYyBpbmxpbmUgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc2LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE4Nzc6c3RhdGljIGlubGluZSBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDIuMTI4ODczNDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODc0Nzk4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqQW5hbHl6aW5nIGAjaWZkZWZgIERpcmVjdGl2ZXMgaW4gYnJfcHJpdmF0ZS5oKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L2JyaWRnZS9icl9wcml2YXRlLmhgIGZpbGUuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHplcm8gaW4gb24gdGhvc2UgYCNpZmRlZmAgZGlyZWN0aXZlcyBhcm91bmQgbGluZXMgMTYyOSBhbmQgMTg3Ny4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGxpa2VseSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZSBmbGFncyB0aGV5IGFyZSBnYXRpbmcuIEFyZSB0aGVzZSByZWxhdGVkIHRvIHNwZWNpZmljIGJyaWRnZSBmdW5jdGlvbmFsaXRpZXMsIGRlYnVnZ2luZyBvcHRpb25zLCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIG9yIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBwYXRocz8gVW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBibG9ja3MgYXJlIGNvbXBpbGVkIGlzIGtleS4gQXJlIHRoZXJlIHJlbGF0ZWQgZGVmaW5lcyB1c2VkIHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgc2VjdGlvbnMgYW5kLCBpZiBzbywgd2hhdCBkbyB0aGV5IGNvbnRyb2w/IEkgZXhwZWN0IHRoZSByZWxhdGVkIGRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRzIGluIHRoZSBjb2RlIHRvIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiB3aGljaCBkZWZpbmVzIGFyZSBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgYnJpZGdpbmcgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo0NS44MTYzNTU5NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MjA6XFx0dm9pZCBicl92bGFuX3ZsYW5fdXBwZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmJyX2RldixcXG4xNjIxOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcXG4xNjIyOlxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbjE2MjM6XFx0aW50IGJyX3ZsYW5fcnRubF9pbml0KHZvaWQpO1xcbjE2MjQ6XFx0dm9pZCBicl92bGFuX3J0bmxfdW5pbml0KHZvaWQpO1xcbjE2MjU6XFx0dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuMTYyNjpcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4xNjI3OlxcdFxcdFxcdCAgICB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxcbjE2Mjg6XFx0XFx0XFx0ICAgIGludCBjbWQpO1xcbjE2Mjk6XFx0Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxuMTYzMDpcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG4xNjMxOlxcdFxcdFxcdFxcdCAgICAgdTE2IHB2aWQpO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHR2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuMTYzNDpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4xNjM1OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKTtcXG4xNjM2OlxcdGludCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX21vZGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbjE2Mzc6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqZHN0LFxcbjE2Mzg6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aCk7XFxuMTYzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDUuODE2NDgwMjgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDAyMjIwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIGxvY2F0aW9uIG9mIHRoZSBgI2lmZGVmYCBkaXJlY3RpdmUuIEkga25vdyBJJ20gbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGFuZCB0aGUgYCNpZmRlZmAgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoYXQuIEl0J3Mgb2Z0ZW4gdGhlIGVudHJ5IHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgY29kZSBhZGFwdHMgdG8gZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIG9yIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgb3IgZXhjbHVkZWQuIExldCdzIGdldCByaWdodCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDguNzU2NzA0ODY3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5NTU3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmg9Mzg4PXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMzk0LVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRcXHRmbGFncztcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDozOTU6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0zOTYtXFx0c3RydWN0IG5ldF9icmlkZ2Vfdmxhbl9ncm91cFxcdF9fcmN1ICp2bGdycDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTQ5Nj1zdHJ1Y3QgbmV0X2JyaWRnZSB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01MDItXFx0LyogVGhlc2UgZmllbGRzIGFyZSBhY2Nlc3NlZCBvbiBlYWNoIHBhY2tldCAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjUwMzojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTUwNC1cXHRfX2JlMTZcXHRcXHRcXHRcXHR2bGFuX3Byb3RvO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NTkzPXN0cnVjdCBicl9pbnB1dF9za2JfY2Ige1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA0LVxcdHU4IGdyYXRfYXJwOjE7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjA1OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA2LVxcdHU4IHZsYW5fZmlsdGVyZWQ6MTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE1NzA9YnJfbXVsdGljYXN0X2N0eF9vcHRpb25zX2VxdWFsKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgxLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTU3Ny0vKiBicl92bGFuLmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNTc4OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTU3OS1ib29sIGJyX2FsbG93ZWRfaW5ncmVzcyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODg0PXN0YXRpYyBpbmxpbmUgdTE2IGJyX3ZsYW5fZmxhZ3MoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdiwgdTE2IHB2aWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODkxLS8qIGJyX3ZsYW5fb3B0aW9ucy5jICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5MjojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTMtYm9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTkzOT1zdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9zdGF0ZV9hbGxvd2VkKHU4IHN0YXRlLCBib29sIGxlYXJuX2FsbG93KVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTk1Mi0vKiBicl9tc3QuYyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE5NTM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xOTU0LURFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShicl9tc3RfdXNlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjQ5LjIzMDY2NDg0OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU2ODIxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFZMQU4gRmlsdGVyaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGJyX25ldGxpbmtfdHVubmVsLmNgLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgbW9kdWxlIGxldmVyYWdlcywgb3IgZGVwZW5kcyBvbiwgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGJleW9uZCB0aGUgb2J2aW91cy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBhcmVhIG9mIHRoZSBrZXJuZWwgbmV0d29ya2luZyBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIHNvbWUgbGVzcy1vYnZpb3VzIG51YW5jZXMgdG8gaG93IHRoaXMgYWxsIHRpZXMgdG9nZXRoZXIgYW5kIGl0J3MgaW1wb3J0YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo1Mi41ODc0ODg2ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzIzNzIyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTIuNzI0NzMyNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3MDcyNTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gQnJpZGdlIFZMQU4gSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYnJpZGdlIFZMQU4gc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJIdWgsIG5vIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgPyBUaGF0J3Mgbm90IHdoYXQgSSBleHBlY3RlZC5cIiBJIGhhZCBhIGZlZWxpbmcgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBtaWdodCBiZSBsdXJraW5nIHNvbWV3aGVyZSwgZ2l2ZW4gdGhlIG51YW5jZXMgb2YgVkxBTiBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWxzIG9yIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSBpdCB3YXNuJ3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQgaW4gdGhlIHR1bm5lbCBjb2RlLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBicl92bGFuX29wdGlvbnMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlIHRvIGNvbnRhaW4gYW55IGtlcm5lbCBvciBjb25maWd1cmF0aW9uIGRlcGVuZGVudCBWTEFOIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ5NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjU1Ljg5NTQ2Mjc3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzMTEwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy02MC1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodl9jdXJyKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTgyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwNC1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQyLVxcdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9Mzg4PWJvb2wgYnJfdmxhbl9nbG9iYWxfb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjQwNjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDctXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODI9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODYtXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4OC1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NTUwPXN0YXRpYyBpbnQgYnJfdmxhbl9wcm9jZXNzX2dsb2JhbF9vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU1OS1cXHQqY2hhbmdlZCA9IGZhbHNlO1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MS1cXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9HT1BUU19NQ0FTVF9TTk9PUElOR10pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTYuMDE4NTc3MzM3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjEwMzEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkV4YW1pbmluZyBJR01QIFNub29waW5nIGFuZCBWTEFOIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZGlzY3Vzc2lvbiBoYXMgZHJpZnRlZCB0b3dhcmRzIGBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdgLCBhbmQgd2hpbGUgaXQgKmNvdWxkKiBiZSByZWxldmFudCwgaXQncyBub3QgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHRoZSBjaGFuZ2VzIEknbSBmb2N1c2luZyBvbiBpbiB0aGUgY29kZS4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjbGVhciBhbmQgbm90IGEgcG9pbnQgb2YgY29uZnVzaW9uLiBJIHdhbnQgdG8ga2VlcCB0aGUgcHJpbWFyeSBvYmplY3RpdmUgaW4gZm9jdXMuXG5cblRoZSBtb3JlIHByZXNzaW5nIHBvaW50IGZvciB0aGlzIHRhc2sgaXMgdGhlIFZMQU4gaGFuZGxpbmcgYW5kIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFZMQU5zIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhpcyB3aG9sZSBzZXR1cC4gUmlnaHQsIG5leHQgc3RlcCDigJMgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBicl92bGFuLmNgLiBTcGVjaWZpY2FsbHksIEknbGwgYmUgY2hlY2tpbmcgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgbGlrZWx5IGxpZSByZWdhcmRpbmcgVkxBTi1yZWxhdGVkIHRyYWZmaWMsIGFjY2VzcywgYW5kIGZpbHRlcmluZy4gR290dGEgdW5kZXJzdGFuZCB0aGF0IGZ1bmN0aW9uJ3MgbG9naWMgdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo1OS4zMzk2MTE2NzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3ODgxNzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5MTI9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTgzLS8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MTk4NDpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTg1LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmM9MTk5ND1zdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzEtXFx0XFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjA3MjpcXHRcXHRcXHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzMtXFx0XFx0XFx0dTE2IHZsYW5fZmxhZ3MgPSBicl92bGFuX2ZsYWdzKHJhbmdlX3N0YXJ0LCBwdmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTkuNDM3NDk4ODA0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEzODUyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSWRlbnRpZnlpbmcgS2V5IFZMQU4gRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSByZWNlbnQgY2hhbmdlcywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBtb2RpZmllZCBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZDogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYGJyX3ZsYW5fZHVtcF9kZXZgLCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLCBhbmQgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gVGhlc2UgYWJzb2x1dGVseSBuZWVkIHRvIGJlIGFkZGVkIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1icmFpbmVyLlxuXG5Ob3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGxldCdzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIFRoZSBiaWcgb25lIHRoYXQgbGVhcHMgdG8gbWluZCBpcyBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCwgb2J2aW91c2x5LiBBbmQgb2YgY291cnNlLCBgQlJJREdFYCBpdHNlbGYgaXMgdGhlIGJhc2UgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBzY29wZSBpbiBgbmV0L2JyaWRnZS9LY29uZmlnYCBmb3IgdGhlIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIHNldHRpbmcgdG8gY29uZmlybSBhbGwgb2YgbXkgYXNzdW1wdGlvbnMuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM2OjAzLjU1ODg4NzA4NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NDMwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz0zNj1jb25maWcgQlJJREdFX0lHTVBfU05PT1BJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzY6MDQuMDIzMzIyMjM4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Mzk4OTIxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBWTEFOIEZpbHRlcmluZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgYSBib29sZWFuLCBnb3QgaXQuIFRoYXQgbWVhbnMgaXQncyBlaXRoZXIgZW5hYmxlZCBvciBkaXNhYmxlZCwgbm90aGluZyBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGF0IG9wdGlvbiBhbmQgdGhlIGJyb2FkZXIgYnJpZGdpbmcgY29udGV4dC4gR2l2ZW4gdGhpcywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSBpdHMgZGVmaW5pdGlvbiBhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBicmlkZ2luZyBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvYnJpZGdlL0tjb25maWdgLiBJJ2xsIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRWAgY29uZmlnIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGRlZmluaXRpb24gYW5kIGFsbG93IG1lIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4NTIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNjowNi44NjMyNDg0MTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTQzOTQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzY6MDcuMDEyNjk0MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIwODk0NTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCcmlkZ2UgVkxBTiBDb25maWd1cmF0aW9uIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbm5lZCBkb3duIHRoYXQgYEJSSURHRWAgYW5kIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGFyZSBlc3NlbnRpYWwgZm9yIHRoaXMgcGFydCBvZiB0aGUgc3lzdGVtLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1c2VyLXNwYWNlIHJlYWNoYWJpbGl0eSBvZiB0aG9zZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGF0IFZMQU4gcmFuZ2UuXG5cbkxldCdzIHNlZS4gUmlnaHQsIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEkgc2VlIGl0J3MgYWNjZXNzaWJsZSB2aWEgYGJyX3ZsYW5fZHVtcF9kZXZgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYGJyX3ZsYW5fcnRtX2R1bXBgLCB3aGljaCBpbiB0dXJuLCBpcyBhIGhhbmRsZXIgZm9yIGFuIGBSVE1fR0VUVkxBTmAgbmV0bGluayBtZXNzYWdlLiBFeGNlbGxlbnQuIFRoZW4gdGhlcmUncyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGJlaW5nIGNhbGxlZCBmcm9tIGBicl92bGFuX3J0bV9wcm9jZXNzX29uZWAsIHdoaWNoIGlzIGFuIGBSVE1fTkVXVkxBTmAgaGFuZGxlci4gR29vZCwgbW9yZSB1c2VyLXNwYWNlIGVudHJ5IHBvaW50cy4gRmluYWxseSwgdGhlcmUncyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBhcHBlYXJzIHJlYWNoYWJsZSB0aHJvdWdoIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyX3ZsYW5faW5mb2AsIGFuZCB0aGVuIGBicl9zZXRsaW5rYCB3aGljaCBpcyBsaW5rZWQgdG8gYFJUTV9TRVRMSU5LYC5cblxuUGVyZmVjdCwgdGhlc2UgYXJlIGFsbCBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLCB3aGljaCBpcyB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgSSBleHBlY3RlZCwgYW5kIHRoZXkgZG9uJ3Qgc2VlbSBsaWtlIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBjb25maWd1cmF0aW9uL2R1bXAgc3VyZmFjZSBsb29rcyBwcmV0dHkgZ29vZCBmb3IgdGFyZ2V0ZWQgZnV6emluZy5cblxuQWxyaWdodCwgbGV0J3MgZG9jdW1lbnQgd2hhdCBJJ3ZlIGZvdW5kLlxuXG4qKldvcnRoRnV6emluZyoqOiBUcnVlXG5cbioqRm9jdXNTeW1ib2xzKio6XG4qICAgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYFxuKiAgIGBicl92bGFuX2R1bXBfZGV2YFxuKiAgIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2BcbiogICBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgXG5cbioqRW5hYmxlQ29uZmlncyoqOlxuKiAgIGBCUklER0VgXG4qICAgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2BcblxuKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzE1LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNjoxNC4yMjE2NDE5MjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyNzYyMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX1ZMQU5fRklMVEVSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VcIixcbiAgICBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgICBcImJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zXCIsXG4gICAgXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9WTEFOX0ZJTFRFUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gICAgXCJicl92bGFuX2R1bXBfZGV2XCIsXG4gICAgXCJicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc1wiLFxuICAgIFwiX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 09:04:49 +0000 UTC FinishedAt: 2026-07-22 09:36:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "ba712ecfd942b68b21a4b0a5daaf72f6616cc66d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_VLAN_FILTERING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "ba712ecfd942b68b21a4b0a5daaf72f6616cc66d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_VLAN_FILTERING" ], "series_id": "8da6b18e-e24d-4781-8ffb-d0f438e1764f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_vlan_can_enter_range", "br_vlan_dump_dev", "br_vlan_process_options", "__vlan_tunnel_handle_range" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICAgJiMzNDticl92bGFuX2R1bXBfZGV2JiMzNDssCiAgICAmIzM0O2JyX3ZsYW5fcHJvY2Vzc19vcHRpb25zJiMzNDssCiAgICAmIzM0O19fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcbmluZGV4IDcxYTEyZGEzMDAwNGM3Li5hNzEzNjY4ZWEzNGYwZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jXG5AQCAtMjcxLDcgJiM0MzsyNzEsOCBAQCBzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuIFx0aWYgKCEqdl9zdGFydClcbiBcdFx0Z290byBvdXRfaW5pdDtcbiBcbi1cdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjYgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kKSkge1xuJiM0MztcdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kLCBicl9nZXRfcHZpZCh2ZykpKSB7XG4gXHRcdCp2X2VuZCA9IHY7XG4gXHRcdHJldHVybjtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZDM4ODBmMzFlZGM0ZTEgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbkBAIC0xNjI3LDcgJiM0MzsxNjI3LDggQEAgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRcdCAgICB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxuIFx0XHQgICAgaW50IGNtZCk7XG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpO1xuJiM0MztcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbiYjNDM7XHRcdFx0ICAgICB1MTYgcHZpZCk7XG4gXG4gdm9pZCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX3B2aWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5AQCAtMTg3NCw3ICYjNDM7MTg3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZClcbiYjNDM7XHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbiYjNDM7XHRcdFx0XHRcdCAgIHUxNiBwdmlkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ZsYW4uYyBiL25ldC9icmlkZ2UvYnJfdmxhbi5jXG5pbmRleCA1NTYwYWZjYWFjYTMyNy4uMzFjMWIyY2Y3NWQ5MjMgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl92bGFuLmNcbkBAIC0xOTgyLDkgJiM0MzsxOTgyLDExIEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFxuIC8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXG4mIzQzO1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuJiM0MztcdFx0XHQgICAgIHUxNiBwdmlkKVxuIHtcbi1cdHJldHVybiB2X2N1cnItXHUwMDNldmlkIC0gcmFuZ2VfZW5kLVx1MDAzZXZpZCA9PSAxIFx1MDAyNlx1MDAyNlxuJiM0MztcdHJldHVybiB2X2N1cnItXHUwMDNldmlkICE9IHB2aWQgXHUwMDI2XHUwMDI2IHJhbmdlX2VuZC1cdTAwM2V2aWQgIT0gcHZpZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgdl9jdXJyLVx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cdTAwM2V2aWQgPT0gMSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgICByYW5nZV9lbmQtXHUwMDNlZmxhZ3MgPT0gdl9jdXJyLVx1MDAzZWZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XG4gfVxuQEAgLTIwNjYsOCAmIzQzOzIwNjgsOCBAQCBzdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRpZHggJiM0Mzs9IHJhbmdlX2VuZC1cdTAwM2V2aWQgLSByYW5nZV9zdGFydC1cdTAwM2V2aWQgJiM0MzsgMTtcbiBcbiBcdFx0XHRyYW5nZV9zdGFydCA9IHY7XG4tXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LVx1MDAzZXZpZCA9PSBwdmlkIHx8XG4tXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxuJiM0MztcdFx0XHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xuIFx0XHRcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XG4gXG4gXHRcdFx0aWYgKCFicl92bGFuX2ZpbGxfdmlkcyhza2IsIHJhbmdlX3N0YXJ0LVx1MDAzZXZpZCxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jIGIvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuaW5kZXggZmNjMjAwYzNlM2RhMjYuLmNiMGY1NTZmZjQwZGJlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xuQEAgLTM1MCw4ICYjNDM7MzUwLDcgQEAgaW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbi1cdFx0XHRpZiAodi1cdTAwM2V2aWQgPT0gcHZpZCB8fFxuLVx0XHRcdCAgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQpKSB7XG4mIzQzO1x0XHRcdGlmICghYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQsIHB2aWQpKSB7XG4gXHRcdFx0XHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cdTAwM2V2aWQsXG4gXHRcdFx0XHRcdCAgICAgICBjdXJyX2VuZC1cdTAwM2V2aWQsIFJUTV9ORVdWTEFOKTtcbiBcdFx0XHRcdGN1cnJfc3RhcnQgPSB2O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcbmluZGV4IGFkNjY3MzFkMmE2ZjNlLi45MGUxOGUyMTA0ZTM0NyAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxuQEAgLTEzLDYgJiM0MzsxMyw3IEBAIEFMTF9URVNUUz1cJiMzNDtcbiBcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9uX2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkXG4mIzQzO1x0dmxhbl9yYW5nZV9wdmlkXG4gXCYjMzQ7XG4gXG4gc2V0dXBfcHJlcGFyZSgpXG5AQCAtMTkxLDYgJiM0MzsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcbiBcdGxvZ190ZXN0IFwmIzM0O1ZMQU4gcmFuZ2UgZ3JvdXBpbmcgd2l0aCBtY2FzdF9lbmFibGVkXCYjMzQ7XG4gfVxuIFxuJiM0Mzt2bGFuX3JhbmdlX3B2aWQoKVxuJiM0Mzt7XG4mIzQzO1x0UkVUPTBcbiYjNDM7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JE5TXCYjMzQ7IGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMVxuJiM0MztcdGNoZWNrX2VyciAkPyBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIGRlZmF1bHQgUFZJRFwmIzM0O1xuJiM0MztcdGRlZmVyIGlwIC1uIFwmIzM0OyROU1wmIzM0OyBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDBcbiYjNDM7XG4mIzQzO1x0YnJpZGdlIC1uIFwmIzM0OyROU1wmIzM0OyB2bGFuIGFkZCB2aWQgMiBkZXYgZHVtbXkwIHVudGFnZ2VkXG4mIzQzO1x0Y2hlY2tfZXJyICQ/IFwmIzM0O0ZhaWxlZCB0byBhZGQgVkxBTiAyXCYjMzQ7XG4mIzQzO1x0ZGVmZXIgYnJpZGdlIC1uIFwmIzM0OyROU1wmIzM0OyB2bGFuIGRlbCB2aWQgMiBkZXYgZHVtbXkwXG4mIzQzO1xuJiM0MztcdGJyaWRnZSAtbiBcJiMzNDskTlNcJiMzNDsgLWQgdmxhbiBzaG93IGRldiBkdW1teTAgfFxuJiM0MztcdFx0Z3JlcCAtRXEgJiMzOTsoXnxbWzpzcGFjZTpdXSkyKFtbOnNwYWNlOl1dfCQpJiMzOTtcbiYjNDM7XHRjaGVja19lcnIgJD8gXCYjMzQ7VkxBTiBmb2xsb3dpbmcgUFZJRCBpcyBtaXNzaW5nIGZyb20gZGV0YWlsZWQgZHVtcFwmIzM0O1xuJiM0MztcbiYjNDM7XHRicmlkZ2UgLW4gXCYjMzQ7JE5TXCYjMzQ7IC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHwgZ3JlcCAtcSBcJiMzNDsxLTJcJiMzNDtcbiYjNDM7XHRjaGVja19mYWlsICQ/IFwmIzM0O1BWSUQgd2FzIGluY29ycmVjdGx5IGluY2x1ZGVkIGluIGEgVkxBTiByYW5nZVwmIzM0O1xuJiM0MztcbiYjNDM7XHRsb2dfdGVzdCBcJiMzNDtQVklEIGlzIGlzb2xhdGVkIGZyb20gVkxBTiBkdW1wIHJhbmdlc1wmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuICMgVmVyaWZ5IHRoZSBuZXdlc3QgdGVzdGVkIG9wdGlvbiBpcyBzdXBwb3J0ZWRcbiBpZiAhIGJyaWRnZSB2bGFuIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwmIzM0O25laWdoX3N1cHByZXNzXCYjMzQ7OyB0aGVuXG4gXHRlY2hvIFwmIzM0O1NLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX1ZMQU5fRklMVEVSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAgICYjMzQ7YnJfdmxhbl9kdW1wX2RldiYjMzQ7LAogICAgJiMzNDticl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYwppbmRleCA3MWExMmRhMzAwMDRjNy4uYTcxMzY2OGVhMzRmMGUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMKQEAgLTI3MSw3ICYjNDM7MjcxLDggQEAgc3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwKIAlpZiAoISp2X3N0YXJ0KQogCQlnb3RvIG91dF9pbml0OwogCi0JaWYgKHYgJmFtcDsmYW1wOyBjdXJyX2NoYW5nZSAmYW1wOyZhbXA7IGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsICp2X2VuZCkpIHsKJiM0MzsJaWYgKHYgJmFtcDsmYW1wOyBjdXJyX2NoYW5nZSAmYW1wOyZhbXA7CiYjNDM7CSAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHsKIAkJKnZfZW5kID0gdjsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKaW5kZXggZDU1ZWE5NTE2ZTNlMzYuLmQzODgwZjMxZWRjNGUxIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaApAQCAtMTYyNyw3ICYjNDM7MTYyNyw4IEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLAogCQkgICAgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSwKIAkJICAgIGludCBjbWQpOwogYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCk7CiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJICAgICB1MTYgcHZpZCk7CiAKIHZvaWQgYnJfdmxhbl9maWxsX2ZvcndhcmRfcGF0aF9wdmlkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwKIAkJCQkgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCwKQEAgLTE4NzQsNyAmIzQzOzE4NzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLAogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLAotCQkJCQkgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpCiYjNDM7CQkJCQkgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJCQkgICB1MTYgcHZpZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmMKaW5kZXggNTU2MGFmY2FhY2EzMjcuLjMxYzFiMmNmNzVkOTIzIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uYwpAQCAtMTk4Miw5ICYjNDM7MTk4MiwxMSBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpiciwKIAogLyogY2hlY2sgaWYgdl9jdXJyIGNhbiBlbnRlciBhIHJhbmdlIGVuZGluZyBpbiByYW5nZV9lbmQgKi8KIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpCiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsCiYjNDM7CQkJICAgICB1MTYgcHZpZCkKIHsKLQlyZXR1cm4gdl9jdXJyLSZndDt2aWQgLSByYW5nZV9lbmQtJmd0O3ZpZCA9PSAxICZhbXA7JmFtcDsKJiM0MzsJcmV0dXJuIHZfY3Vyci0mZ3Q7dmlkICE9IHB2aWQgJmFtcDsmYW1wOyByYW5nZV9lbmQtJmd0O3ZpZCAhPSBwdmlkICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIHZfY3Vyci0mZ3Q7dmlkIC0gcmFuZ2VfZW5kLSZndDt2aWQgPT0gMSAmYW1wOyZhbXA7CiAJICAgICAgIHJhbmdlX2VuZC0mZ3Q7ZmxhZ3MgPT0gdl9jdXJyLSZndDtmbGFncyAmYW1wOyZhbXA7CiAJICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7CiB9CkBAIC0yMDY2LDggJiM0MzsyMDY4LDggQEAgc3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQlpZHggJiM0Mzs9IHJhbmdlX2VuZC0mZ3Q7dmlkIC0gcmFuZ2Vfc3RhcnQtJmd0O3ZpZCAmIzQzOyAxOwogCiAJCQlyYW5nZV9zdGFydCA9IHY7Ci0JCX0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LSZndDt2aWQgPT0gcHZpZCB8fAotCQkJICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHsKJiM0MzsJCX0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fAomIzQzOwkJCSAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7CiAJCQl1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpOwogCiAJCQlpZiAoIWJyX3ZsYW5fZmlsbF92aWRzKHNrYiwgcmFuZ2Vfc3RhcnQtJmd0O3ZpZCwKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMgYi9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jCmluZGV4IGZjYzIwMGMzZTNkYTI2Li5jYjBmNTU2ZmY0MGRiZSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jCkBAIC0zNTAsOCAmIzQzOzM1MCw3IEBAIGludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWlmICh2LSZndDt2aWQgPT0gcHZpZCB8fAotCQkJICAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCkpIHsKJiM0MzsJCQlpZiAoIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIGN1cnJfZW5kLCBwdmlkKSkgewogCQkJCWJyX3ZsYW5fbm90aWZ5KGJyLCBwLCBjdXJyX3N0YXJ0LSZndDt2aWQsCiAJCQkJCSAgICAgICBjdXJyX2VuZC0mZ3Q7dmlkLCBSVE1fTkVXVkxBTik7CiAJCQkJY3Vycl9zdGFydCA9IHY7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoCmluZGV4IGFkNjY3MzFkMmE2ZjNlLi45MGUxOGUyMTA0ZTM0NyAxMDA3NTUKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2gKQEAgLTEzLDYgJiM0MzsxMyw3IEBAIEFMTF9URVNUUz0mIzM0OwogCXZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3VwcwogCXZsYW5fcmFuZ2VfbWNhc3Rfbl9ncm91cHMKIAl2bGFuX3JhbmdlX21jYXN0X2VuYWJsZWQKJiM0MzsJdmxhbl9yYW5nZV9wdmlkCiAmIzM0OwogCiBzZXR1cF9wcmVwYXJlKCkKQEAgLTE5MSw2ICYjNDM7MTkyLDI4IEBAIHZsYW5fcmFuZ2VfbWNhc3RfZW5hYmxlZCgpCiAJbG9nX3Rlc3QgJiMzNDtWTEFOIHJhbmdlIGdyb3VwaW5nIHdpdGggbWNhc3RfZW5hYmxlZCYjMzQ7CiB9CiAKJiM0Mzt2bGFuX3JhbmdlX3B2aWQoKQomIzQzO3sKJiM0MzsJUkVUPTAKJiM0MzsKJiM0MzsJaXAgLW4gJiMzNDskTlMmIzM0OyBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDEKJiM0MzsJY2hlY2tfZXJyICQ/ICYjMzQ7RmFpbGVkIHRvIGNvbmZpZ3VyZSBkZWZhdWx0IFBWSUQmIzM0OwomIzQzOwlkZWZlciBpcCAtbiAmIzM0OyROUyYjMzQ7IGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMAomIzQzOwomIzQzOwlicmlkZ2UgLW4gJiMzNDskTlMmIzM0OyB2bGFuIGFkZCB2aWQgMiBkZXYgZHVtbXkwIHVudGFnZ2VkCiYjNDM7CWNoZWNrX2VyciAkPyAmIzM0O0ZhaWxlZCB0byBhZGQgVkxBTiAyJiMzNDsKJiM0MzsJZGVmZXIgYnJpZGdlIC1uICYjMzQ7JE5TJiMzNDsgdmxhbiBkZWwgdmlkIDIgZGV2IGR1bW15MAomIzQzOwomIzQzOwlicmlkZ2UgLW4gJiMzNDskTlMmIzM0OyAtZCB2bGFuIHNob3cgZGV2IGR1bW15MCB8CiYjNDM7CQlncmVwIC1FcSAmIzM5OyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCkmIzM5OwomIzQzOwljaGVja19lcnIgJD8gJiMzNDtWTEFOIGZvbGxvd2luZyBQVklEIGlzIG1pc3NpbmcgZnJvbSBkZXRhaWxlZCBkdW1wJiMzNDsKJiM0MzsKJiM0MzsJYnJpZGdlIC1uICYjMzQ7JE5TJiMzNDsgLWQgdmxhbiBzaG93IGRldiBkdW1teTAgfCBncmVwIC1xICYjMzQ7MS0yJiMzNDsKJiM0MzsJY2hlY2tfZmFpbCAkPyAmIzM0O1BWSUQgd2FzIGluY29ycmVjdGx5IGluY2x1ZGVkIGluIGEgVkxBTiByYW5nZSYjMzQ7CiYjNDM7CiYjNDM7CWxvZ190ZXN0ICYjMzQ7UFZJRCBpcyBpc29sYXRlZCBmcm9tIFZMQU4gZHVtcCByYW5nZXMmIzM0OwomIzQzO30KJiM0MzsKICMgVmVyaWZ5IHRoZSBuZXdlc3QgdGVzdGVkIG9wdGlvbiBpcyBzdXBwb3J0ZWQKIGlmICEgYnJpZGdlIHZsYW4gaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtuZWlnaF9zdXBwcmVzcyYjMzQ7OyB0aGVuCiAJZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydCYjMzQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJyaWRnZSBWTEFOIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBWTEFOIGxvZ2ljIHdpdGhpbiB0aGUgTGludXgga2VybmVsJiMzOTtzIGJyaWRnZSBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGZpbGVzIGxpa2UgYGJyX25ldGxpbmtfdHVubmVsLmNgLCBgYnJfcHJpdmF0ZS5oYCwgYGJyX3ZsYW4uY2AsIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24gYmVjYXVzZSBvZiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY29tcG9uZW50cy4gVGhlcmUmIzM5O3MgYWxzbyBhIG5ldyBzZWxmdGVzdCBzY3JpcHQsIGBicmlkZ2Vfdmxhbl9kdW1wLnNoYCwgd2hpY2ggaXMgZ29vZCB0byBzZWUsIGFzIGl0IHVzdWFsbHkgZ2l2ZXMgbWUgYW4gaWRlYSBvZiB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eS4KClRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBgcHZpZGAgYXJndW1lbnQgYW5kIGluY2x1ZGVkIGEgY2hlY2ssIGB2X2N1cnItJmd0O3ZpZCAhPSBwdmlkICZhbXA7JmFtcDsgcmFuZ2VfZW5kLSZndDt2aWQgIT0gcHZpZGAuIE15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcHJldmVudHMgYSBWTEFOIHJhbmdlIGZyb20gZW5jb21wYXNzaW5nIHRoZSBQVklELiBUaGlzIGxvb2tzIGxpa2UgYSB2dWxuZXJhYmlsaXR5IGZpeCwgb3Igc29tZXRoaW5nIHRoYXQgaXMgaW1wb3J0YW50IHRvIHRlc3QuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgJiMzNDtJcyB0aGlzIGZ1enotYWJsZT8mIzM0OyBBYnNvbHV0ZWx5LiBUaGlzIG1vZGlmaWNhdGlvbiBoaXRzIGNyaXRpY2FsIGJyaWRnZSBWTEFOIGxvZ2ljLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgYWNjZXNzaWJsZSB2aWEgbmV0bGluayDigJMgY29tbWFuZHMgbGlrZSBgUlRNX05FV1ZMQU5gLCBgUlRNX0dFVFZMQU5gLCBhbmQgc28gb24uIFRoYXQgbWFrZXMgaXQgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHBvdGVudGlhbCBleHBvc3VyZS4KClRvIHByb3Blcmx5IGZ1enogdGhpcywgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gU2luY2UgdGhpcyBhbGwgbGl2ZXMgdW5kZXIgYG5ldC9icmlkZ2UvYCwgSSBzaG91bGQgY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBvciBgTWFrZWZpbGVgIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5IHRvIHNlZSB3aGF0IGVuYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBicl92bGFuLmNgIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLiBUaGVuLCBJIGNhbiBiZWdpbiB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCB0aGUgcmlnaHQga2VybmVsIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX3ZsYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9MjE9YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSAmIzQzOz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxubmV0L2JyaWRnZS9NYWtlZmlsZToyMzpicmlkZ2UtJChDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HKSAmIzQzOz0gYnJfdmxhbi5vIGJyX3ZsYW5fdHVubmVsLm8gYnJfdmxhbl9vcHRpb25zLm8gYnJfbXN0Lm9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJyaWRnZSBWTEFOIEZpbHRlcmluZyoqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBWTEFOIGZpbHRlcmluZyBvbiBhIGJyaWRnZS4gVGhlIGVzc2VudGlhbCBwcmVyZXF1aXNpdGVzIGhlcmUgYXJlIGltbWVkaWF0ZWx5IGFwcGFyZW50OiBgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgYSAqbXVzdCouIFRoYXQmIzM5O3MgdGhlIGNvcmUgZmVhdHVyZSBmbGFnLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYENPTkZJR19CUklER0VgIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZDsgY2FuJiMzOTt0IGZpbHRlciBWTEFOcyBvbiBhIGJyaWRnZSBpZiB0aGVyZSAqaXNuJiMzOTt0KiBhIGJyaWRnZS4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIGJlc3QgcGxhY2UgdG8gZGlnIGRlZXBlciBvbiB0aGlzPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYG5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY2AuIFRoYXQgZmlsZSBsaWtlbHkgZGVhbHMgd2l0aCB0aGUgaW50ZXJhY3Rpb24gb2YgYnJpZGdlIGFuZCBuZXRsaW5rIGFuZCB0dW5uZWxzIHdoaWNoIGNvdWxkIGJlIHJlbGF0ZWQgdG8gdmxhbiBmaWx0ZXJpbmcgd2l0aCBicmlkZ2UuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgc3BvdCB0byBjaGVjayBob3cgVkxBTiBmaWx0ZXJpbmcgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gdHVubmVsaW5nIHNjZW5hcmlvcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX25ldGxpbmtfdHVubmVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlPTg9YnJpZGdlLXlcdDo9IGJyLm8gYnJfZGV2aWNlLm8gYnJfZmRiLm8gYnJfZm9yd2FyZC5vIGJyX2lmLm8gYnJfaW5wdXQubyBcXFxuLS1cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMTAtXHRcdFx0YnJfc3RwX2lmLm8gYnJfc3RwX3RpbWVyLm8gYnJfbmV0bGluay5vIFxcXG5uZXQvYnJpZGdlL01ha2VmaWxlOjExOlx0XHRcdGJyX25ldGxpbmtfdHVubmVsLm8gYnJfYXJwX25kX3Byb3h5Lm9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYGJyX25ldGxpbmtfdHVubmVsLmNgIGFuZCBWTEFOIEVudHJ5IFJhbmdlIGluIHRoZSBCcmlkZ2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyB0aGUgYGJyX25ldGxpbmtfdHVubmVsLmNgIGZpbGUg4oCTIHRoYXQmIzM5O3MgYWx3YXlzIGluIHRoZSBidWlsZCB3aGVuIGBDT05GSUdfQlJJREdFYCBpcyBzZXQsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLiBBIHR1bm5lbCBpbnRlcmZhY2UgaXMgb2Z0ZW4gZ29pbmcgdG8gYmUgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCBicmlkZ2Ugc3VwcG9ydC4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBlc3BlY2lhbGx5IHdpdGggdGhlIGRpcmVjdGlvbiB0aGluZ3MgaGF2ZSBiZWVuIG1vdmluZyB3aXRoIFZ4TEFOIGFuZCByZWxhdGVkIHRlY2hub2xvZ2llcy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAgZnVuY3Rpb24gaW4gYG5ldC9icmlkZ2UvYnJfdmxhbi5jYC4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBWTEFOIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBicmlkZ2UuIFRoaXMgaXMgd2hlcmUgdGhlIGNvZGUgbWFrZXMgc3VyZSB0aGF0IFZMQU4gYXNzaWdubWVudHMgYXJlIHZhbGlkLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBmb3Igc2VjdXJpdHkgYW5kIG5ldHdvcmsgc2VnbWVudGF0aW9uIHdoZW4gdXNpbmcgVkxBTnMgd2l0aCBhIGJyaWRnZS4gTGV0IG1lIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBob3cgdGhlIHJhbmdlIHZhbGlkYXRpb24gbG9naWMgaXMgd29ya2luZyBhbmQgd2hlcmUgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbWlnaHQgZXhpc3QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG92ZXJsYXBwaW5nIHJhbmdlcyBvciBhbnkgZWRnZSBjYXNlcyB3aXRoIHRydW5raW5nIG9yIHRhZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9MjU3PXN0YXRpYyB2b2lkIF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTI3NC1cdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYzoyNzU6XHQgICAgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgKnZfZW5kLCBicl9nZXRfcHZpZCh2ZykpKSB7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjc2LVx0XHQqdl9lbmQgPSB2O1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cdFx0ICAgIGludCBjbWQpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4NzYtXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmM9MTkxMj12b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTgzLS8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoxOTg0OmJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4NS1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTk0PXN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzEtXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjA3MjpcdFx0XHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xubmV0L2JyaWRnZS9icl92bGFuLmMtMjA3My1cdFx0XHR1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpO1xuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9MzAzPWludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTItXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjM1MzpcdFx0XHRpZiAoIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIGN1cnJfZW5kLCBwdmlkKSkge1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTQtXHRcdFx0XHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cdTAwM2V2aWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVkxBTiBUdW5uZWwgUmFuZ2UgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVkxBTiB0dW5uZWwgcmFuZ2UgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyByYW5nZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCAoY3J1Y2lhbCBvbmUgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgKSwgYGJyX3ZsYW5fZHVtcF9kZXZgICh3aGljaCBzZWVtcyB0byBiZSBpbnZvbHZlZCBpbiBvdXRwdXR0aW5nIFZMQU4gZGV2aWNlIGluZm9ybWF0aW9uLCBwcm9iYWJseSBmb3IgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24pLCBhbmQgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCAod2hpY2ggSSBhc3N1bWUgcGFyc2VzIGFuZCBhcHBsaWVzIFZMQU4tcmVsYXRlZCBvcHRpb25zKS4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSB3YW50IHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb24gaG93IHRoaXMgcmFuZ2UgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0sIGFuZCBwcm92aWRlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGlzc3Vlcy4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgaW52b2tpbmcgdGhhdCBjb3JlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYz0yMjI9aW50IGJyX3BhcnNlX3ZsYW5fdHVubmVsX2luZm8oc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjU2LS8qIHNlbmQgYSBub3RpZmljYXRpb24gaWYgdl9jdXJyIGNhbiYjMzk7dCBlbnRlciB0aGUgcmFuZ2UgYW5kIHN0YXJ0IGEgbmV3IG9uZSAqL1xubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjI1NzpzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTI1OC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICoqdl9zdGFydCxcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9Mjg3PWludCBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm8oY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMTgtXHRcdFx0XHQqY2hhbmdlZCA9IGN1cnJfY2hhbmdlO1xubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjMxOTpcdFx0XHRfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShwLCBcdTAwMjZ2X3N0YXJ0LCBcdTAwMjZ2X2VuZCwgdixcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMjAtXHRcdFx0XHRcdFx0ICAgY3Vycl9jaGFuZ2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIFZMQU4gVHVubmVsaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGF0IHRoZSBoZWFydCBvZiB0aGlzIFZMQU4gdHVubmVsaW5nIHByb2Nlc3NpbmcuICBOb3csIHRoZSBjb2RlIHBhdGggc2hvd3MgaXQgY2FsbHMgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gSW50ZXJlc3RpbmcsIHRoZSByYW5nZSBoYW5kbGluZywgc28gdGhhdCBtYWtlcyBzZW5zZS4KCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgaW50ZXJhY3Rpb24gYmV0dGVyLiBMZXQgbWUgcXVpY2tseSBzaGlmdCBmb2N1cyBhbmQgc2VlIHdobyYjMzk7cyBjYWxsaW5nIGBicl92bGFuX2R1bXBfZGV2YC4gIFVuZGVyc3RhbmRpbmcgdGhlIGR1bXAgZnVuY3Rpb24mIzM5O3MgdXNlIHdvdWxkIGhlbHAgcHV0IHRoaXMgd2hvbGUgdmxhbiBwcm9jZXNzIGluIHBlcnNwZWN0aXZlLiBSaWdodCwgbGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgdXNpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX3ZsYW5fZHVtcF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTg0PWJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5OTMtXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoxOTk0OnN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk5NS1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0yMTE5PXN0YXRpYyBpbnQgYnJfdmxhbl9ydG1fZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0My1cdFx0fVxubmV0L2JyaWRnZS9icl92bGFuLmM6MjE0NDpcdFx0ZXJyID0gYnJfdmxhbl9kdW1wX2RldihkZXYsIHNrYiwgY2IsIGR1bXBfZmxhZ3MpO1xubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0NS1cdFx0LyogaWYgdGhlIGR1bXAgY29tcGxldGVkIHdpdGhvdXQgYW4gZXJyb3Igd2UgcmV0dXJuIDAgaGVyZSAqL1xuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTItXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoyMTUzOlx0XHRcdGVyciA9IGJyX3ZsYW5fZHVtcF9kZXYoZGV2LCBza2IsIGNiLCBkdW1wX2ZsYWdzKTtcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTQtXHRcdFx0aWYgKGVyciA9PSAtRU1TR1NJWkUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byBWTEFOIER1bXBpbmcqKgoKT2theSwgc28gSSBzZWUgYGJyX3ZsYW5fcnRtX2R1bXBgIGlzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmV0cmlldmluZyBWTEFOIGluZm9ybWF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgcm91dGUgbWVzc2FnZSBkdW1wLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkdW1waW5nIHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCBkcml2ZW4sIHNvIEkgY2FuIGdyYXNwIHRoZSB3aG9sZSBwaWN0dXJlLgoKTm93LCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBtaWdodCBiZSBjb25maWd1cmluZyBvciBjb250cm9sbGluZyB0aGlzIGR1bXBpbmcgcHJvY2VzcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYC4gVGhhdCBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBmaWx0ZXJzIHRoYXQgbWlnaHQgYmUgYXBwbGllZCB0byB0aGUgVkxBTiBkdW1wLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgaW50byBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIHdpbGwgaGVscCBtZSBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBzb3VyY2VzIGFuZCwgdWx0aW1hdGVseSwgdGhlIGxvZ2ljIGRyaXZpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBWTEFOIGluZm9ybWF0aW9uIHJldHJpZXZhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9wcm9jZXNzX29wdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODk3PXNpemVfdCBicl92bGFuX29wdHNfbmxfc2l6ZSh2b2lkKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE4OTg6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmM9MjE4ND1zdGF0aWMgaW50IGJyX3ZsYW5fcnRtX3Byb2Nlc3Nfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjI4MS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIyODI6XHRcdGVyciA9IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGJyLCBwLCByYW5nZV9zdGFydCwgcmFuZ2VfZW5kLFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjI4My1cdFx0XHRcdFx0ICAgICAgdGIsIGV4dGFjayk7XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMzAyLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozMDM6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMzA0LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBWTEFOIENvbmZpZ3VyYXRpb24gYW5kIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IFZMQU5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdpbmcgZnJhbWV3b3JrLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmVgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLiBNeSBtYWluIGludGVyZXN0IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBsb2dpYyBhbmQgaG93IGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBmdW5jdGlvbnMgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzOiBgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VgIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBoZWFydCBvZiBhbnkgY2hhbmdlIGxpZXMsIGhvd2V2ZXIgc21hbGwsIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gVGhlbiB0aGVyZSBpcyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBtdXN0IGRlYWwgd2l0aCBob3cgdGhlc2UgVkxBTiByYW5nZXMgYXJlIHByb2Nlc3NlZCwgZXNwZWNpYWxseSBpZiB3ZSYjMzk7cmUgbG9va2luZyBhdCB0dW5uZWxpbmcgY29uZmlndXJhdGlvbnMuIE5leHQsIEkgc2hvdWxkIHVuZGVyc3RhbmQgaG93IFZMQU4gaW5mb3JtYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzbyBgYnJfdmxhbl9kdW1wX2RldmAgaXMgaW1wb3J0YW50LiBBbHNvLCBJIG11c3QgdW5kZXJzdGFuZCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGl0c2VsZiwgc2luY2UgdGhhdCYjMzk7cyB3aGVyZSB0aGlzIGFsbCBiZWdpbnMsIGFuZCBmaW5hbGx5LCBgYnJfcHJvY2Vzc192bGFuX3R1bm5lbF9pbmZvYCB3aGljaCBtdXN0IGJlIHJlbGV2YW50IHRvIHRoZSB0dW5uZWwgcHJvY2Vzc2luZy4KCkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJIHNlZSB0aGF0IGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGNydWNpYWwgZm9yIGJvdGggYGJyX3ZsYW4uY2AgYW5kIGBicl92bGFuX29wdGlvbnMuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIGBCUklER0VgIGl0c2VsZiBpcyB0aGUgZm91bmRhdGlvbiwgSSBhc3N1bWUgd2l0aG91dCB0aGUgYmFzZSBicmlkZ2UgZnVuY3Rpb25hbGl0eSwgbm9uZSBvZiB0aGlzIG1hdHRlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgdGhlIG9ubHkgcmVxdWlyZW1lbnQsIG9yIGlmIHRoZXJlIGFyZSBvdGhlcnMgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cdFx0ICAgIGludCBjbWQpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4NzYtXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgI2lmZGVmYCBEaXJlY3RpdmVzIGluIGJyX3ByaXZhdGUuaCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaGAgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aG9zZSBgI2lmZGVmYCBkaXJlY3RpdmVzIGFyb3VuZCBsaW5lcyAxNjI5IGFuZCAxODc3LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBhcmUgbGlrZWx5IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2Nrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBvciBmZWF0dXJlIGZsYWdzIHRoZXkgYXJlIGdhdGluZy4gQXJlIHRoZXNlIHJlbGF0ZWQgdG8gc3BlY2lmaWMgYnJpZGdlIGZ1bmN0aW9uYWxpdGllcywgZGVidWdnaW5nIG9wdGlvbnMsIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgb3IgcGVyaGFwcyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIHBhdGhzPyBVbmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZXNlIGJsb2NrcyBhcmUgY29tcGlsZWQgaXMga2V5LiBBcmUgdGhlcmUgcmVsYXRlZCBkZWZpbmVzIHVzZWQgd2l0aGluIHRoZSBjb25kaXRpb25hbCBzZWN0aW9ucyBhbmQsIGlmIHNvLCB3aGF0IGRvIHRoZXkgY29udHJvbD8gSSBleHBlY3QgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBhbmQgY29tbWVudHMgaW4gdGhlIGNvZGUgdG8gcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiB3aGljaCBkZWZpbmVzIGFyZSBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgYnJpZGdpbmcgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9wcml2YXRlLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MjA6XHR2b2lkIGJyX3ZsYW5fdmxhbl91cHBlcl9ldmVudChzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LFxuMTYyMTpcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcbjE2MjI6XHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbjE2MjM6XHRpbnQgYnJfdmxhbl9ydG5sX2luaXQodm9pZCk7XG4xNjI0Olx0dm9pZCBicl92bGFuX3J0bmxfdW5pbml0KHZvaWQpO1xuMTYyNTpcdHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuMTYyNjpcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbjE2Mjc6XHRcdFx0ICAgIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXG4xNjI4Olx0XHRcdCAgICBpbnQgY21kKTtcbjE2Mjk6XHRib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcbjE2MzA6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbjE2MzE6XHRcdFx0XHQgICAgIHUxNiBwdmlkKTtcbjE2MzI6XHRcbjE2MzM6XHR2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4xNjM0Olx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbjE2MzU6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKTtcbjE2MzY6XHRpbnQgYnJfdmxhbl9maWxsX2ZvcndhcmRfcGF0aF9tb2RlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbjE2Mzc6XHRcdFx0XHRcdCAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKmRzdCxcbjE2Mzg6XHRcdFx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpO1xuMTYzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipOYXZpZ2F0aW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHRyeWluZyB0byBwaW5wb2ludCB0aGUgbG9jYXRpb24gb2YgdGhlIGAjaWZkZWZgIGRpcmVjdGl2ZS4gSSBrbm93IEkmIzM5O20gbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGFuZCB0aGUgYCNpZmRlZmAgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoYXQuIEl0JiMzOTtzIG9mdGVuIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvZGUgYWRhcHRzIHRvIGRpZmZlcmVudCBidWlsZCBjb25maWd1cmF0aW9ucyBvciBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBvciBleGNsdWRlZC4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0zODg9c3RydWN0IG5ldF9icmlkZ2VfcG9ydCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMzk0LVx0dW5zaWduZWQgbG9uZ1x0XHRcdGZsYWdzO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6Mzk1OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0zOTYtXHRzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuX2dyb3VwXHRfX3JjdSAqdmxncnA7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NDk2PXN0cnVjdCBuZXRfYnJpZGdlIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01MDItXHQvKiBUaGVzZSBmaWVsZHMgYXJlIGFjY2Vzc2VkIG9uIGVhY2ggcGFja2V0ICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo1MDM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTUwNC1cdF9fYmUxNlx0XHRcdFx0dmxhbl9wcm90bztcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01OTM9c3RydWN0IGJyX2lucHV0X3NrYl9jYiB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA0LVx0dTggZ3JhdF9hcnA6MTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjYwNTojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA2LVx0dTggdmxhbl9maWx0ZXJlZDoxO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE1NzA9YnJfbXVsdGljYXN0X2N0eF9vcHRpb25zX2VxdWFsKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgxLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE1NzctLyogYnJfdmxhbi5jICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNTc4OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNTc5LWJvb2wgYnJfYWxsb3dlZF9pbmdyZXNzKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODg0PXN0YXRpYyBpbmxpbmUgdTE2IGJyX3ZsYW5fZmxhZ3MoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdiwgdTE2IHB2aWQpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg5MS0vKiBicl92bGFuX29wdGlvbnMuYyAqL1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5MjojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg5My1ib29sIGJyX3ZsYW5fb3B0c19lcV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTkzOT1zdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9zdGF0ZV9hbGxvd2VkKHU4IHN0YXRlLCBib29sIGxlYXJuX2FsbG93KVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE5NTItLyogYnJfbXN0LmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE5NTM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE5NTQtREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGJyX21zdF91c2VkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNjUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFZMQU4gRmlsdGVyaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gYENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbmV0bGlua190dW5uZWwuY2AuIEkgbmVlZCB0byBzZWUgaWYgdGhhdCBtb2R1bGUgbGV2ZXJhZ2VzLCBvciBkZXBlbmRzIG9uLCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYmV5b25kIHRoZSBvYnZpb3VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBhcmVhIG9mIHRoZSBrZXJuZWwgbmV0d29ya2luZyBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIHNvbWUgbGVzcy1vYnZpb3VzIG51YW5jZXMgdG8gaG93IHRoaXMgYWxsIHRpZXMgdG9nZXRoZXIgYW5kIGl0JiMzOTtzIGltcG9ydGFudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0OTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb25kaXRpb25hbCBDb21waWxhdGlvbiBpbiBCcmlkZ2UgVkxBTiBIYW5kbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGJyaWRnZSBWTEFOIHNpdHVhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SHVoLCBubyBgI2lmZGVmYCBkaXJlY3RpdmVzIGluIGBicl9uZXRsaW5rX3R1bm5lbC5jYD8gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiYjMzQ7IEkgaGFkIGEgZmVlbGluZyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1pZ2h0IGJlIGx1cmtpbmcgc29tZXdoZXJlLCBnaXZlbiB0aGUgbnVhbmNlcyBvZiBWTEFOIGltcGxlbWVudGF0aW9ucyBhY3Jvc3MgZGlmZmVyZW50IGtlcm5lbHMgb3IgY29uZmlndXJhdGlvbnMuIFNpbmNlIGl0IHdhc24mIzM5O3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQgaW4gdGhlIHR1bm5lbCBjb2RlLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBicl92bGFuX29wdGlvbnMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlIHRvIGNvbnRhaW4gYW55IGtlcm5lbCBvciBjb25maWd1cmF0aW9uIGRlcGVuZGVudCBWTEFOIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTQwPWJvb2wgYnJfdmxhbl9vcHRzX2VxX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3Vycixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYwLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo2MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVx0aWYgKCFicl92bGFuX2lzX21hc3Rlcih2X2N1cnIpIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NzI9Ym9vbCBicl92bGFuX29wdHNfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2LFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODItXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjgzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXHRpZiAobmxhX3B1dF91OChza2IsIEJSSURHRV9WTEFOREJfRU5UUllfTUNBU1RfUk9VVEVSLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0xMDItXHQgICAgICAgJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpIC8qIEJSSURHRV9WTEFOREJfVElORk9fSUQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMTA0LVx0ICAgICAgICYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfRU5UUllfTUNBU1RfUk9VVEVSICovXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQwLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDItXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVJdKSB7XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0zODg9Ym9vbCBicl92bGFuX2dsb2JhbF9vcHRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDA2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDA3LVx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDgyPXN0YXRpYyBzaXplX3QgcnRubF92bGFuX2dsb2JhbF9vcHRzX25sbXNnX3NpemUoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdilcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4Ni1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUxNikpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfSUQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDg4LVx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HICovXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz01NTA9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3NfZ2xvYmFsX29uZV9vcHRzKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU1OS1cdCpjaGFuZ2VkID0gZmFsc2U7XG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjU2MDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MS1cdGlmICh0YltCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HXSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkV4YW1pbmluZyBJR01QIFNub29waW5nIGFuZCBWTEFOIEZ1bmN0aW9uYWxpdHkqKgoKQWxyaWdodCwgc28gdGhlIGRpc2N1c3Npb24gaGFzIGRyaWZ0ZWQgdG93YXJkcyBgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HYCwgYW5kIHdoaWxlIGl0ICpjb3VsZCogYmUgcmVsZXZhbnQsIGl0JiMzOTtzIG5vdCBhYnNvbHV0ZWx5IGVzc2VudGlhbCBmb3IgdGhlIGNoYW5nZXMgSSYjMzk7bSBmb2N1c2luZyBvbiBpbiB0aGUgY29kZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGNsZWFyIGFuZCBub3QgYSBwb2ludCBvZiBjb25mdXNpb24uIEkgd2FudCB0byBrZWVwIHRoZSBwcmltYXJ5IG9iamVjdGl2ZSBpbiBmb2N1cy4KClRoZSBtb3JlIHByZXNzaW5nIHBvaW50IGZvciB0aGlzIHRhc2sgaXMgdGhlIFZMQU4gaGFuZGxpbmcgYW5kIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFZMQU5zIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhpcyB3aG9sZSBzZXR1cC4gUmlnaHQsIG5leHQgc3RlcCDigJMgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgYnJfdmxhbi5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHByb2JsZW1zKSBsaWtlbHkgbGllIHJlZ2FyZGluZyBWTEFOLXJlbGF0ZWQgdHJhZmZpYywgYWNjZXNzLCBhbmQgZmlsdGVyaW5nLiBHb3R0YSB1bmRlcnN0YW5kIHRoYXQgZnVuY3Rpb24mIzM5O3MgbG9naWMgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTEyPXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5ODMtLyogY2hlY2sgaWYgdl9jdXJyIGNhbiBlbnRlciBhIHJhbmdlIGVuZGluZyBpbiByYW5nZV9lbmQgKi9cbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjE5ODQ6Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTg1LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5OTQ9c3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuLmMtMjA3MS1cdFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XG5uZXQvYnJpZGdlL2JyX3ZsYW4uYzoyMDcyOlx0XHRcdCAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7XG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDczLVx0XHRcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzU4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSBWTEFOIEZ1bmN0aW9ucyBhbmQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGUgcmVjZW50IGNoYW5nZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgbW9kaWZpZWQgZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ6IGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAsIGBicl92bGFuX2R1bXBfZGV2YCwgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCwgYW5kIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIFRoZXNlIGFic29sdXRlbHkgbmVlZCB0byBiZSBhZGRlZCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIG5vLWJyYWluZXIuCgpOb3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGxldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBUaGUgYmlnIG9uZSB0aGF0IGxlYXBzIHRvIG1pbmQgaXMgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AsIG9idmlvdXNseS4gQW5kIG9mIGNvdXJzZSwgYEJSSURHRWAgaXRzZWxmIGlzIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gdG8gY29uc2lkZXIuCgpJIHNob3VsZCB2ZXJpZnkgdGhlIHNjb3BlIGluIGBuZXQvYnJpZGdlL0tjb25maWdgIGZvciB0aGUgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2Agc2V0dGluZyB0byBjb25maXJtIGFsbCBvZiBteSBhc3N1bXB0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTM2PWNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODUyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBWTEFOIEZpbHRlcmluZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGEgYm9vbGVhbiwgZ290IGl0LiBUaGF0IG1lYW5zIGl0JiMzOTtzIGVpdGhlciBlbmFibGVkIG9yIGRpc2FibGVkLCBub3RoaW5nIG1vcmUgY29tcGxleCB0aGFuIHRoYXQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgb3B0aW9uIGFuZCB0aGUgYnJvYWRlciBicmlkZ2luZyBjb250ZXh0LiBHaXZlbiB0aGlzLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBvdmVyYWxsIGJyaWRnaW5nIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gYG5ldC9icmlkZ2UvS2NvbmZpZ2AuIEkmIzM5O2xsIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRWAgY29uZmlnIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGRlZmluaXRpb24gYW5kIGFsbG93IG1lIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTUKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogMzYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyaWRnZSBWTEFOIENvbmZpZ3VyYXRpb24gU3VyZmFjZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5uZWQgZG93biB0aGF0IGBCUklER0VgIGFuZCBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNlci1zcGFjZSByZWFjaGFiaWxpdHkgb2YgdGhvc2UgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBoYW5kbGUgdGhhdCBWTEFOIHJhbmdlLgoKTGV0JiMzOTtzIHNlZS4gUmlnaHQsIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEkgc2VlIGl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIGBicl92bGFuX2R1bXBfZGV2YCwgd2hpY2ggaXMgdHJpZ2dlcmVkIGJ5IGBicl92bGFuX3J0bV9kdW1wYCwgd2hpY2ggaW4gdHVybiwgaXMgYSBoYW5kbGVyIGZvciBhbiBgUlRNX0dFVFZMQU5gIG5ldGxpbmsgbWVzc2FnZS4gRXhjZWxsZW50LiBUaGVuIHRoZXJlJiMzOTtzIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2AgYmVpbmcgY2FsbGVkIGZyb20gYGJyX3ZsYW5fcnRtX3Byb2Nlc3Nfb25lYCwgd2hpY2ggaXMgYW4gYFJUTV9ORVdWTEFOYCBoYW5kbGVyLiBHb29kLCBtb3JlIHVzZXItc3BhY2UgZW50cnkgcG9pbnRzLiBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBhcHBlYXJzIHJlYWNoYWJsZSB0aHJvdWdoIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyX3ZsYW5faW5mb2AsIGFuZCB0aGVuIGBicl9zZXRsaW5rYCB3aGljaCBpcyBsaW5rZWQgdG8gYFJUTV9TRVRMSU5LYC4KClBlcmZlY3QsIHRoZXNlIGFyZSBhbGwgYWNjZXNzaWJsZSB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlIEkgZXhwZWN0ZWQsIGFuZCB0aGV5IGRvbiYjMzk7dCBzZWVtIGxpa2UgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGNvbmZpZ3VyYXRpb24vZHVtcCBzdXJmYWNlIGxvb2tzIHByZXR0eSBnb29kIGZvciB0YXJnZXRlZCBmdXp6aW5nLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvY3VtZW50IHdoYXQgSSYjMzk7dmUgZm91bmQuCgoqKldvcnRoRnV6emluZyoqOiBUcnVlCgoqKkZvY3VzU3ltYm9scyoqOgoqICAgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYAoqICAgYGJyX3ZsYW5fZHVtcF9kZXZgCiogICBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgCiogICBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgCgoqKkVuYWJsZUNvbmZpZ3MqKjoKKiAgIGBCUklER0VgCiogICBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYAoKKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUklER0UmIzM0OywKICAgICYjMzQ7QlJJREdFX1ZMQU5fRklMVEVSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UmIzM0OywKICAgICYjMzQ7YnJfdmxhbl9kdW1wX2RldiYjMzQ7LAogICAgJiMzNDticl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfVkxBTl9GSUxURVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl92bGFuX2Nhbl9lbnRlcl9yYW5nZSYjMzQ7LAogICAgJiMzNDticl92bGFuX2R1bXBfZGV2JiMzNDssCiAgICAmIzM0O2JyX3ZsYW5fcHJvY2Vzc19vcHRpb25zJiMzNDssCiAgICAmIzM0O19fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM0OjQ5LjI1MDg2NjEwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTQwMDcwMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX1ZMQU5fRklMVEVSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VcIixcbiAgICBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgICBcImJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zXCIsXG4gICAgXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuMjUwODczODI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAzNDYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDZiYTFjYTY4MTNjODdjNjZiY2M3NTU5ZDYxMTVkNjgzM2UxOGEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDA5OjM0OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xcbmluZGV4IDcxYTEyZGEzMDAwNGM3Li5hNzEzNjY4ZWEzNGYwZSAxMDA2NDRcXG4tLS0gYS9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcXG5AQCAtMjcxLDcgKzI3MSw4IEBAIHN0YXRpYyB2b2lkIF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuIFxcdGlmICghKnZfc3RhcnQpXFxuIFxcdFxcdGdvdG8gb3V0X2luaXQ7XFxuIFxcbi1cXHRpZiAodiBcXHUwMDI2XFx1MDAyNiBjdXJyX2NoYW5nZSBcXHUwMDI2XFx1MDAyNiBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQpKSB7XFxuK1xcdGlmICh2IFxcdTAwMjZcXHUwMDI2IGN1cnJfY2hhbmdlIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcXG4gXFx0XFx0KnZfZW5kID0gdjtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZDM4ODBmMzFlZGM0ZTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxcbkBAIC0xNjI3LDcgKzE2MjcsOCBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gXFx0XFx0ICAgIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuIFxcdFxcdCAgICBpbnQgY21kKTtcXG4gYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxuLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKTtcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuK1xcdFxcdFxcdCAgICAgdTE2IHB2aWQpO1xcbiBcXG4gdm9pZCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX3B2aWQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5AQCAtMTg3NCw3ICsxODc1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKVxcbitcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHUxNiBwdmlkKVxcbiB7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmNcXG5pbmRleCA1NTYwYWZjYWFjYTMyNy4uMzFjMWIyY2Y3NWQ5MjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xcbkBAIC0xOTgyLDkgKzE5ODIsMTEgQEAgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcbiAvKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xcbiBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXFxuK1xcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbitcXHRcXHRcXHQgICAgIHUxNiBwdmlkKVxcbiB7XFxuLVxcdHJldHVybiB2X2N1cnItXFx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cXHUwMDNldmlkID09IDEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0cmV0dXJuIHZfY3Vyci1cXHUwMDNldmlkICE9IHB2aWQgXFx1MDAyNlxcdTAwMjYgcmFuZ2VfZW5kLVxcdTAwM2V2aWQgIT0gcHZpZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgdl9jdXJyLVxcdTAwM2V2aWQgLSByYW5nZV9lbmQtXFx1MDAzZXZpZCA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAgICByYW5nZV9lbmQtXFx1MDAzZWZsYWdzID09IHZfY3Vyci1cXHUwMDNlZmxhZ3MgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XFxuIH1cXG5AQCAtMjA2Niw4ICsyMDY4LDggQEAgc3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdGlkeCArPSByYW5nZV9lbmQtXFx1MDAzZXZpZCAtIHJhbmdlX3N0YXJ0LVxcdTAwM2V2aWQgKyAxO1xcbiBcXG4gXFx0XFx0XFx0cmFuZ2Vfc3RhcnQgPSB2O1xcbi1cXHRcXHR9IGVsc2UgaWYgKGR1bXBfc3RhdHMgfHwgdi1cXHUwMDNldmlkID09IHB2aWQgfHxcXG4tXFx0XFx0XFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XFxuK1xcdFxcdFxcdCAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCByYW5nZV9lbmQsIHB2aWQpKSB7XFxuIFxcdFxcdFxcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIWJyX3ZsYW5fZmlsbF92aWRzKHNrYiwgcmFuZ2Vfc3RhcnQtXFx1MDAzZXZpZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcXG5pbmRleCBmY2MyMDBjM2UzZGEyNi4uY2IwZjU1NmZmNDBkYmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuY1xcbisrKyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcXG5AQCAtMzUwLDggKzM1MCw3IEBAIGludCBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRcXHR9XFxuIFxcbi1cXHRcXHRcXHRpZiAodi1cXHUwMDNldmlkID09IHB2aWQgfHxcXG4tXFx0XFx0XFx0ICAgICFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCkpIHtcXG4rXFx0XFx0XFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcXG4gXFx0XFx0XFx0XFx0YnJfdmxhbl9ub3RpZnkoYnIsIHAsIGN1cnJfc3RhcnQtXFx1MDAzZXZpZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIGN1cnJfZW5kLVxcdTAwM2V2aWQsIFJUTV9ORVdWTEFOKTtcXG4gXFx0XFx0XFx0XFx0Y3Vycl9zdGFydCA9IHY7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcXG5pbmRleCBhZDY2NzMxZDJhNmYzZS4uOTBlMThlMjEwNGUzNDcgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxcbkBAIC0xMyw2ICsxMyw3IEBAIEFMTF9URVNUUz1cXFwiXFxuIFxcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xcbiBcXHR2bGFuX3JhbmdlX21jYXN0X25fZ3JvdXBzXFxuIFxcdHZsYW5fcmFuZ2VfbWNhc3RfZW5hYmxlZFxcbitcXHR2bGFuX3JhbmdlX3B2aWRcXG4gXFxcIlxcbiBcXG4gc2V0dXBfcHJlcGFyZSgpXFxuQEAgLTE5MSw2ICsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcXG4gXFx0bG9nX3Rlc3QgXFxcIlZMQU4gcmFuZ2UgZ3JvdXBpbmcgd2l0aCBtY2FzdF9lbmFibGVkXFxcIlxcbiB9XFxuIFxcbit2bGFuX3JhbmdlX3B2aWQoKVxcbit7XFxuK1xcdFJFVD0wXFxuK1xcbitcXHRpcCAtbiBcXFwiJE5TXFxcIiBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDFcXG4rXFx0Y2hlY2tfZXJyICQ/IFxcXCJGYWlsZWQgdG8gY29uZmlndXJlIGRlZmF1bHQgUFZJRFxcXCJcXG4rXFx0ZGVmZXIgaXAgLW4gXFxcIiROU1xcXCIgbGluayBzZXQgZGV2IGJyMCB0eXBlIGJyaWRnZSB2bGFuX2RlZmF1bHRfcHZpZCAwXFxuK1xcbitcXHRicmlkZ2UgLW4gXFxcIiROU1xcXCIgdmxhbiBhZGQgdmlkIDIgZGV2IGR1bW15MCB1bnRhZ2dlZFxcbitcXHRjaGVja19lcnIgJD8gXFxcIkZhaWxlZCB0byBhZGQgVkxBTiAyXFxcIlxcbitcXHRkZWZlciBicmlkZ2UgLW4gXFxcIiROU1xcXCIgdmxhbiBkZWwgdmlkIDIgZGV2IGR1bW15MFxcbitcXG4rXFx0YnJpZGdlIC1uIFxcXCIkTlNcXFwiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHxcXG4rXFx0XFx0Z3JlcCAtRXEgJyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCknXFxuK1xcdGNoZWNrX2VyciAkPyBcXFwiVkxBTiBmb2xsb3dpbmcgUFZJRCBpcyBtaXNzaW5nIGZyb20gZGV0YWlsZWQgZHVtcFxcXCJcXG4rXFxuK1xcdGJyaWRnZSAtbiBcXFwiJE5TXFxcIiAtZCB2bGFuIHNob3cgZGV2IGR1bW15MCB8IGdyZXAgLXEgXFxcIjEtMlxcXCJcXG4rXFx0Y2hlY2tfZmFpbCAkPyBcXFwiUFZJRCB3YXMgaW5jb3JyZWN0bHkgaW5jbHVkZWQgaW4gYSBWTEFOIHJhbmdlXFxcIlxcbitcXG4rXFx0bG9nX3Rlc3QgXFxcIlBWSUQgaXMgaXNvbGF0ZWQgZnJvbSBWTEFOIGR1bXAgcmFuZ2VzXFxcIlxcbit9XFxuK1xcbiAjIFZlcmlmeSB0aGUgbmV3ZXN0IHRlc3RlZCBvcHRpb24gaXMgc3VwcG9ydGVkXFxuIGlmICEgYnJpZGdlIHZsYW4gaGVscCAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAtcSBcXFwibmVpZ2hfc3VwcHJlc3NcXFwiOyB0aGVuXFxuIFxcdGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgcGVyLVZMQU4gbmVpZ2hib3Igc3VwcHJlc3Npb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuODgyMTk5NjU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1MDg3MjI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfVkxBTl9GSUxURVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl92bGFuX2Nhbl9lbnRlcl9yYW5nZVwiLFxuICAgIFwiYnJfdmxhbl9kdW1wX2RldlwiLFxuICAgIFwiYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNcIixcbiAgICBcIl9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdkNmJhMWNhNjgxM2M4N2M2NmJjYzc1NTlkNjExNWQ2ODMzZTE4YTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwOTozNDo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYyBiL25ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1xuaW5kZXggNzFhMTJkYTMwMDA0YzcuLmE3MTM2NjhlYTM0ZjBlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNcbkBAIC0yNzEsNyArMjcxLDggQEAgc3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbiBcdGlmICghKnZfc3RhcnQpXG4gXHRcdGdvdG8gb3V0X2luaXQ7XG4gXG4tXHRpZiAodiBcdTAwMjZcdTAwMjYgY3Vycl9jaGFuZ2UgXHUwMDI2XHUwMDI2IGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsICp2X2VuZCkpIHtcbitcdGlmICh2IFx1MDAyNlx1MDAyNiBjdXJyX2NoYW5nZSBcdTAwMjZcdTAwMjZcbitcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcbiBcdFx0KnZfZW5kID0gdjtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5kMzg4MGYzMWVkYzRlMSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuQEAgLTE2MjcsNyArMTYyNyw4IEBAIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIFx0XHQgICAgdTE2IHZpZCwgdTE2IHZpZF9yYW5nZSxcbiBcdFx0ICAgIGludCBjbWQpO1xuIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKTtcbitcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbitcdFx0XHQgICAgIHUxNiBwdmlkKTtcbiBcbiB2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbkBAIC0xODc0LDcgKzE4NzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQpXG4rXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcbitcdFx0XHRcdFx0ICAgdTE2IHB2aWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfdmxhbi5jIGIvbmV0L2JyaWRnZS9icl92bGFuLmNcbmluZGV4IDU1NjBhZmNhYWNhMzI3Li4zMWMxYjJjZjc1ZDkyMyAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfdmxhbi5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ZsYW4uY1xuQEAgLTE5ODIsOSArMTk4MiwxMSBAQCB2b2lkIGJyX3ZsYW5fbm90aWZ5KGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcbiAvKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xuIGJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kKVxuK1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxuK1x0XHRcdCAgICAgdTE2IHB2aWQpXG4ge1xuLVx0cmV0dXJuIHZfY3Vyci1cdTAwM2V2aWQgLSByYW5nZV9lbmQtXHUwMDNldmlkID09IDEgXHUwMDI2XHUwMDI2XG4rXHRyZXR1cm4gdl9jdXJyLVx1MDAzZXZpZCAhPSBwdmlkIFx1MDAyNlx1MDAyNiByYW5nZV9lbmQtXHUwMDNldmlkICE9IHB2aWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgdl9jdXJyLVx1MDAzZXZpZCAtIHJhbmdlX2VuZC1cdTAwM2V2aWQgPT0gMSBcdTAwMjZcdTAwMjZcbiBcdCAgICAgICByYW5nZV9lbmQtXHUwMDNlZmxhZ3MgPT0gdl9jdXJyLVx1MDAzZWZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgICAgIGJyX3ZsYW5fb3B0c19lcV9yYW5nZSh2X2N1cnIsIHJhbmdlX2VuZCk7XG4gfVxuQEAgLTIwNjYsOCArMjA2OCw4IEBAIHN0YXRpYyBpbnQgYnJfdmxhbl9kdW1wX2Rldihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdGlkeCArPSByYW5nZV9lbmQtXHUwMDNldmlkIC0gcmFuZ2Vfc3RhcnQtXHUwMDNldmlkICsgMTtcbiBcbiBcdFx0XHRyYW5nZV9zdGFydCA9IHY7XG4tXHRcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fCB2LVx1MDAzZXZpZCA9PSBwdmlkIHx8XG4tXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCkpIHtcbitcdFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XG4rXHRcdFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCwgcHZpZCkpIHtcbiBcdFx0XHR1MTYgdmxhbl9mbGFncyA9IGJyX3ZsYW5fZmxhZ3MocmFuZ2Vfc3RhcnQsIHB2aWQpO1xuIFxuIFx0XHRcdGlmICghYnJfdmxhbl9maWxsX3ZpZHMoc2tiLCByYW5nZV9zdGFydC1cdTAwM2V2aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbmluZGV4IGZjYzIwMGMzZTNkYTI2Li5jYjBmNTU2ZmY0MGRiZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmNcbkBAIC0zNTAsOCArMzUwLDcgQEAgaW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbi1cdFx0XHRpZiAodi1cdTAwM2V2aWQgPT0gcHZpZCB8fFxuLVx0XHRcdCAgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgY3Vycl9lbmQpKSB7XG4rXHRcdFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcbiBcdFx0XHRcdGJyX3ZsYW5fbm90aWZ5KGJyLCBwLCBjdXJyX3N0YXJ0LVx1MDAzZXZpZCxcbiBcdFx0XHRcdFx0ICAgICAgIGN1cnJfZW5kLVx1MDAzZXZpZCwgUlRNX05FV1ZMQU4pO1xuIFx0XHRcdFx0Y3Vycl9zdGFydCA9IHY7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYnJpZGdlX3ZsYW5fZHVtcC5zaFxuaW5kZXggYWQ2NjczMWQyYTZmM2UuLjkwZTE4ZTIxMDRlMzQ3IDEwMDc1NVxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2JyaWRnZV92bGFuX2R1bXAuc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9icmlkZ2Vfdmxhbl9kdW1wLnNoXG5AQCAtMTMsNiArMTMsNyBAQCBBTExfVEVTVFM9XCJcbiBcdHZsYW5fcmFuZ2VfbWNhc3RfbWF4X2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9uX2dyb3Vwc1xuIFx0dmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkXG4rXHR2bGFuX3JhbmdlX3B2aWRcbiBcIlxuIFxuIHNldHVwX3ByZXBhcmUoKVxuQEAgLTE5MSw2ICsxOTIsMjggQEAgdmxhbl9yYW5nZV9tY2FzdF9lbmFibGVkKClcbiBcdGxvZ190ZXN0IFwiVkxBTiByYW5nZSBncm91cGluZyB3aXRoIG1jYXN0X2VuYWJsZWRcIlxuIH1cbiBcbit2bGFuX3JhbmdlX3B2aWQoKVxuK3tcbitcdFJFVD0wXG4rXG4rXHRpcCAtbiBcIiROU1wiIGxpbmsgc2V0IGRldiBicjAgdHlwZSBicmlkZ2Ugdmxhbl9kZWZhdWx0X3B2aWQgMVxuK1x0Y2hlY2tfZXJyICQ/IFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBkZWZhdWx0IFBWSURcIlxuK1x0ZGVmZXIgaXAgLW4gXCIkTlNcIiBsaW5rIHNldCBkZXYgYnIwIHR5cGUgYnJpZGdlIHZsYW5fZGVmYXVsdF9wdmlkIDBcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIHZsYW4gYWRkIHZpZCAyIGRldiBkdW1teTAgdW50YWdnZWRcbitcdGNoZWNrX2VyciAkPyBcIkZhaWxlZCB0byBhZGQgVkxBTiAyXCJcbitcdGRlZmVyIGJyaWRnZSAtbiBcIiROU1wiIHZsYW4gZGVsIHZpZCAyIGRldiBkdW1teTBcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHxcbitcdFx0Z3JlcCAtRXEgJyhefFtbOnNwYWNlOl1dKTIoW1s6c3BhY2U6XV18JCknXG4rXHRjaGVja19lcnIgJD8gXCJWTEFOIGZvbGxvd2luZyBQVklEIGlzIG1pc3NpbmcgZnJvbSBkZXRhaWxlZCBkdW1wXCJcbitcbitcdGJyaWRnZSAtbiBcIiROU1wiIC1kIHZsYW4gc2hvdyBkZXYgZHVtbXkwIHwgZ3JlcCAtcSBcIjEtMlwiXG4rXHRjaGVja19mYWlsICQ/IFwiUFZJRCB3YXMgaW5jb3JyZWN0bHkgaW5jbHVkZWQgaW4gYSBWTEFOIHJhbmdlXCJcbitcbitcdGxvZ190ZXN0IFwiUFZJRCBpcyBpc29sYXRlZCBmcm9tIFZMQU4gZHVtcCByYW5nZXNcIlxuK31cbitcbiAjIFZlcmlmeSB0aGUgbmV3ZXN0IHRlc3RlZCBvcHRpb24gaXMgc3VwcG9ydGVkXG4gaWYgISBicmlkZ2UgdmxhbiBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcIm5laWdoX3N1cHByZXNzXCI7IHRoZW5cbiBcdGVjaG8gXCJTS0lQOiBpcHJvdXRlMiB0b28gb2xkLCBtaXNzaW5nIHBlci1WTEFOIG5laWdoYm9yIHN1cHByZXNzaW9uIHN1cHBvcnRcIlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NDkuODgyMjAxOTA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNzMwNzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQnJpZGdlIFZMQU4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBWTEFOIGxvZ2ljIHdpdGhpbiB0aGUgTGludXgga2VybmVsJ3MgYnJpZGdlIGltcGxlbWVudGF0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgZmlsZXMgbGlrZSBgYnJfbmV0bGlua190dW5uZWwuY2AsIGBicl9wcml2YXRlLmhgLCBgYnJfdmxhbi5jYCwgYW5kIGBicl92bGFuX29wdGlvbnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiBiZWNhdXNlIG9mIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjb21wb25lbnRzLiBUaGVyZSdzIGFsc28gYSBuZXcgc2VsZnRlc3Qgc2NyaXB0LCBgYnJpZGdlX3ZsYW5fZHVtcC5zaGAsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLCBhcyBpdCB1c3VhbGx5IGdpdmVzIG1lIGFuIGlkZWEgb2YgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIGBwdmlkYCBhcmd1bWVudCBhbmQgaW5jbHVkZWQgYSBjaGVjaywgYHZfY3Vyci1cdTAwM2V2aWQgIT0gcHZpZCBcdTAwMjZcdTAwMjYgcmFuZ2VfZW5kLVx1MDAzZXZpZCAhPSBwdmlkYC4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBwcmV2ZW50cyBhIFZMQU4gcmFuZ2UgZnJvbSBlbmNvbXBhc3NpbmcgdGhlIFBWSUQuIFRoaXMgbG9va3MgbGlrZSBhIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBzb21ldGhpbmcgdGhhdCBpcyBpbXBvcnRhbnQgdG8gdGVzdC5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyBmdXp6LWFibGU/XCIgQWJzb2x1dGVseS4gVGhpcyBtb2RpZmljYXRpb24gaGl0cyBjcml0aWNhbCBicmlkZ2UgVkxBTiBsb2dpYywgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGlzIGlzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsg4oCTIGNvbW1hbmRzIGxpa2UgYFJUTV9ORVdWTEFOYCwgYFJUTV9HRVRWTEFOYCwgYW5kIHNvIG9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBwb3RlbnRpYWwgZXhwb3N1cmUuXG5cblRvIHByb3Blcmx5IGZ1enogdGhpcywgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSB0aGlzIGFsbCBsaXZlcyB1bmRlciBgbmV0L2JyaWRnZS9gLCBJIHNob3VsZCBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9yIGBNYWtlZmlsZWAgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkgdG8gc2VlIHdoYXQgZW5hYmxlcyB0aGUgY29tcGlsYXRpb24gb2YgYGJyX3ZsYW4uY2AgYW5kIGBicl92bGFuX29wdGlvbnMuY2AuIFRoZW4sIEkgY2FuIGJlZ2luIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIHRoZSByaWdodCBrZXJuZWwgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNDo1NS41OTk1MTIwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NzYzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfdmxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9MjE9YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSArPSBicl9tdWx0aWNhc3QubyBicl9tZGIubyBicl9tdWx0aWNhc3RfZWh0Lm9cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxcbm5ldC9icmlkZ2UvTWFrZWZpbGU6MjM6YnJpZGdlLSQoQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklORykgKz0gYnJfdmxhbi5vIGJyX3ZsYW5fdHVubmVsLm8gYnJfdmxhbl9vcHRpb25zLm8gYnJfbXN0Lm9cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNDo1NS43MjE0OTQ3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDMzMjk3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJyaWRnZSBWTEFOIEZpbHRlcmluZyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggVkxBTiBmaWx0ZXJpbmcgb24gYSBicmlkZ2UuIFRoZSBlc3NlbnRpYWwgcHJlcmVxdWlzaXRlcyBoZXJlIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudDogYENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIGEgKm11c3QqLiBUaGF0J3MgdGhlIGNvcmUgZmVhdHVyZSBmbGFnLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYENPTkZJR19CUklER0VgIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgZW5hYmxlZDsgY2FuJ3QgZmlsdGVyIFZMQU5zIG9uIGEgYnJpZGdlIGlmIHRoZXJlICppc24ndCogYSBicmlkZ2UuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbk5vdywgd2hlcmUncyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgZGVlcGVyIG9uIHRoaXM/IExldCdzIHRha2UgYSBsb29rIGF0IGBuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmNgLiBUaGF0IGZpbGUgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGludGVyYWN0aW9uIG9mIGJyaWRnZSBhbmQgbmV0bGluayBhbmQgdHVubmVscyB3aGljaCBjb3VsZCBiZSByZWxhdGVkIHRvIHZsYW4gZmlsdGVyaW5nIHdpdGggYnJpZGdlLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHNwb3QgdG8gY2hlY2sgaG93IFZMQU4gZmlsdGVyaW5nIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgZXNwZWNpYWxseSByZWxhdGVkIHRvIHR1bm5lbGluZyBzY2VuYXJpb3MuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NTkuMTY0ODI4ODY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk3ODcwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9uZXRsaW5rX3R1bm5lbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9OD1icmlkZ2UteVxcdDo9IGJyLm8gYnJfZGV2aWNlLm8gYnJfZmRiLm8gYnJfZm9yd2FyZC5vIGJyX2lmLm8gYnJfaW5wdXQubyBcXFxcXFxuLS1cXG5uZXQvYnJpZGdlL01ha2VmaWxlLTEwLVxcdFxcdFxcdGJyX3N0cF9pZi5vIGJyX3N0cF90aW1lci5vIGJyX25ldGxpbmsubyBcXFxcXFxubmV0L2JyaWRnZS9NYWtlZmlsZToxMTpcXHRcXHRcXHRicl9uZXRsaW5rX3R1bm5lbC5vIGJyX2FycF9uZF9wcm94eS5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0xMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzQ6NTkuMzE1ODEzNDQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMDI5NzQ4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGJyX25ldGxpbmtfdHVubmVsLmNgIGFuZCBWTEFOIEVudHJ5IFJhbmdlIGluIHRoZSBCcmlkZ2UgQ29kZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBgYnJfbmV0bGlua190dW5uZWwuY2AgZmlsZSDigJMgdGhhdCdzIGFsd2F5cyBpbiB0aGUgYnVpbGQgd2hlbiBgQ09ORklHX0JSSURHRWAgaXMgc2V0LCB3aGljaCBpc24ndCBzdXJwcmlzaW5nLiBBIHR1bm5lbCBpbnRlcmZhY2UgaXMgb2Z0ZW4gZ29pbmcgdG8gYmUgcmVxdWlyZWQgd2hlbiB5b3UgbmVlZCBicmlkZ2Ugc3VwcG9ydC4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBlc3BlY2lhbGx5IHdpdGggdGhlIGRpcmVjdGlvbiB0aGluZ3MgaGF2ZSBiZWVuIG1vdmluZyB3aXRoIFZ4TEFOIGFuZCByZWxhdGVkIHRlY2hub2xvZ2llcy5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCBmdW5jdGlvbiBpbiBgbmV0L2JyaWRnZS9icl92bGFuLmNgLiBUaGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIFZMQU4gY29uZmlndXJhdGlvbiBmb3IgdGhlIGJyaWRnZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29kZSBtYWtlcyBzdXJlIHRoYXQgVkxBTiBhc3NpZ25tZW50cyBhcmUgdmFsaWQsIGFuZCBpdCdzIGEgY3JpdGljYWwgcGllY2UgZm9yIHNlY3VyaXR5IGFuZCBuZXR3b3JrIHNlZ21lbnRhdGlvbiB3aGVuIHVzaW5nIFZMQU5zIHdpdGggYSBicmlkZ2UuIExldCBtZSBkaWcgaW50byB0aGF0IGFuZCBzZWUgaG93IHRoZSByYW5nZSB2YWxpZGF0aW9uIGxvZ2ljIGlzIHdvcmtpbmcgYW5kIHdoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG1pZ2h0IGV4aXN0LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIG92ZXJsYXBwaW5nIHJhbmdlcyBvciBhbnkgZWRnZSBjYXNlcyB3aXRoIHRydW5raW5nIG9yIHRhZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNToxMi4zMTg3OTA5MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTE0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYz0yNTc9c3RhdGljIHZvaWQgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0yNzQtXFx0aWYgKHYgXFx1MDAyNlxcdTAwMjYgY3Vycl9jaGFuZ2UgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM6Mjc1OlxcdCAgICBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCAqdl9lbmQsIGJyX2dldF9wdmlkKHZnKSkpIHtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjc2LVxcdFxcdCp2X2VuZCA9IHY7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xNjI1PXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTYyOC1cXHRcXHQgICAgaW50IGNtZCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTYyOTpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNjMwLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg3MD1zdGF0aWMgaW5saW5lIHZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg3Ni1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxODc3OnN0YXRpYyBpbmxpbmUgYm9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTg3OC1cXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0xOTEyPXZvaWQgYnJfdmxhbl9ub3RpZnkoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4My0vKiBjaGVjayBpZiB2X2N1cnIgY2FuIGVudGVyIGEgcmFuZ2UgZW5kaW5nIGluIHJhbmdlX2VuZCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjE5ODQ6Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMTk4NS1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5OTQ9c3RhdGljIGludCBicl92bGFuX2R1bXBfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDcxLVxcdFxcdH0gZWxzZSBpZiAoZHVtcF9zdGF0cyB8fFxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIwNzI6XFx0XFx0XFx0ICAgIWJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKHYsIHJhbmdlX2VuZCwgcHZpZCkpIHtcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMDczLVxcdFxcdFxcdHUxNiB2bGFuX2ZsYWdzID0gYnJfdmxhbl9mbGFncyhyYW5nZV9zdGFydCwgcHZpZCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTMwMz1pbnQgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zNTItXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozNTM6XFx0XFx0XFx0aWYgKCFicl92bGFuX2Nhbl9lbnRlcl9yYW5nZSh2LCBjdXJyX2VuZCwgcHZpZCkpIHtcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTM1NC1cXHRcXHRcXHRcXHRicl92bGFuX25vdGlmeShiciwgcCwgY3Vycl9zdGFydC1cXHUwMDNldmlkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNToxMi40MjYzMTAxODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE3MDQ0ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWTEFOIFR1bm5lbCBSYW5nZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgVkxBTiB0dW5uZWwgcmFuZ2UgY29kZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgaGFuZGxlcyByYW5nZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCAoY3J1Y2lhbCBvbmUgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgKSwgYGJyX3ZsYW5fZHVtcF9kZXZgICh3aGljaCBzZWVtcyB0byBiZSBpbnZvbHZlZCBpbiBvdXRwdXR0aW5nIFZMQU4gZGV2aWNlIGluZm9ybWF0aW9uLCBwcm9iYWJseSBmb3IgZGVidWdnaW5nIG9yIGNvbmZpZ3VyYXRpb24pLCBhbmQgYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCAod2hpY2ggSSBhc3N1bWUgcGFyc2VzIGFuZCBhcHBsaWVzIFZMQU4tcmVsYXRlZCBvcHRpb25zKS5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB1bmRlcnN0YW5kIHdoYXQncyBjYWxsaW5nIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIElkZW50aWZ5aW5nIHRoZSBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCB2aWV3IG9uIGhvdyB0aGlzIHJhbmdlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIHNlZSB3aG8ncyBpbnZva2luZyB0aGF0IGNvcmUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6MTYuMjQzMzU3OTgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ3NzM0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM9MjIyPWludCBicl9wYXJzZV92bGFuX3R1bm5lbF9pbmZvKHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmMtMjU2LS8qIHNlbmQgYSBub3RpZmljYXRpb24gaWYgdl9jdXJyIGNhbid0IGVudGVyIHRoZSByYW5nZSBhbmQgc3RhcnQgYSBuZXcgb25lICovXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jOjI1NzpzdGF0aWMgdm9pZCBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0yNTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKip2X3N0YXJ0LFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jPTI4Nz1pbnQgYnJfcHJvY2Vzc192bGFuX3R1bm5lbF9pbmZvKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuYy0zMTgtXFx0XFx0XFx0XFx0KmNoYW5nZWQgPSBjdXJyX2NoYW5nZTtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmtfdHVubmVsLmM6MzE5OlxcdFxcdFxcdF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlKHAsIFxcdTAwMjZ2X3N0YXJ0LCBcXHUwMDI2dl9lbmQsIHYsXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rX3R1bm5lbC5jLTMyMC1cXHRcXHRcXHRcXHRcXHRcXHQgICBjdXJyX2NoYW5nZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjE2LjMzODg0MTI3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM1MzgwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byBWTEFOIFR1bm5lbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgYGJyX3Byb2Nlc3Nfdmxhbl90dW5uZWxfaW5mb2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBhdCB0aGUgaGVhcnQgb2YgdGhpcyBWTEFOIHR1bm5lbGluZyBwcm9jZXNzaW5nLiAgTm93LCB0aGUgY29kZSBwYXRoIHNob3dzIGl0IGNhbGxzIGBfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZWAuIEludGVyZXN0aW5nLCB0aGUgcmFuZ2UgaGFuZGxpbmcsIHNvIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgaW50ZXJhY3Rpb24gYmV0dGVyLiBMZXQgbWUgcXVpY2tseSBzaGlmdCBmb2N1cyBhbmQgc2VlIHdobydzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiAgVW5kZXJzdGFuZGluZyB0aGUgZHVtcCBmdW5jdGlvbidzIHVzZSB3b3VsZCBoZWxwIHB1dCB0aGlzIHdob2xlIHZsYW4gcHJvY2VzcyBpbiBwZXJzcGVjdGl2ZS4gUmlnaHQsIGxldCdzIHNlZSB3aG8ncyB1c2luZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjE5Ljk3NDIzMzkxNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwNTExMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl92bGFuLmM9MTk4ND1ib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTE5OTMtXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MTk5NDpzdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTk1LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmM9MjExOT1zdGF0aWMgaW50IGJyX3ZsYW5fcnRtX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0My1cXHRcXHR9XFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjE0NDpcXHRcXHRlcnIgPSBicl92bGFuX2R1bXBfZGV2KGRldiwgc2tiLCBjYiwgZHVtcF9mbGFncyk7XFxubmV0L2JyaWRnZS9icl92bGFuLmMtMjE0NS1cXHRcXHQvKiBpZiB0aGUgZHVtcCBjb21wbGV0ZWQgd2l0aG91dCBhbiBlcnJvciB3ZSByZXR1cm4gMCBoZXJlICovXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMTUyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jOjIxNTM6XFx0XFx0XFx0ZXJyID0gYnJfdmxhbl9kdW1wX2RldihkZXYsIHNrYiwgY2IsIGR1bXBfZmxhZ3MpO1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIxNTQtXFx0XFx0XFx0aWYgKGVyciA9PSAtRU1TR1NJWkUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjIwLjExNDc0ODkyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQyMjg0NzgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gVkxBTiBEdW1waW5nKipcblxuT2theSwgc28gSSBzZWUgYGJyX3ZsYW5fcnRtX2R1bXBgIGlzIGNhbGxpbmcgYGJyX3ZsYW5fZHVtcF9kZXZgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZXRyaWV2aW5nIFZMQU4gaW5mb3JtYXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSByb3V0ZSBtZXNzYWdlIGR1bXAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGR1bXBpbmcgcHJvY2VzcyBpcyBpbml0aWF0ZWQgYW5kIGRyaXZlbiwgc28gSSBjYW4gZ3Jhc3AgdGhlIHdob2xlIHBpY3R1cmUuXG5cbk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgbWlnaHQgYmUgY29uZmlndXJpbmcgb3IgY29udHJvbGxpbmcgdGhpcyBkdW1waW5nIHByb2Nlc3MsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2AuIFRoYXQgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgZmlsdGVycyB0aGF0IG1pZ2h0IGJlIGFwcGxpZWQgdG8gdGhlIFZMQU4gZHVtcC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBmbG93IGludG8gYGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zYCB3aWxsIGhlbHAgbWUgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gc291cmNlcyBhbmQsIHVsdGltYXRlbHksIHRoZSBsb2dpYyBkcml2aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgVkxBTiBpbmZvcm1hdGlvbiByZXRyaWV2YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTozNC41Mzc1OTk1MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTA5NTA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTg5Nz1zaXplX3QgYnJfdmxhbl9vcHRzX25sX3NpemUodm9pZCk7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5ODppbnQgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYz0yMTg0PXN0YXRpYyBpbnQgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIyODEtXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjI4MjpcXHRcXHRlcnIgPSBicl92bGFuX3Byb2Nlc3Nfb3B0aW9ucyhiciwgcCwgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCxcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0yMjgzLVxcdFxcdFxcdFxcdFxcdCAgICAgIHRiLCBleHRhY2spO1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0zMDItXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzozMDM6aW50IGJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTMwNC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6MzYuMDQ4NTU2MTExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODg2MTk4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZMQU4gQ29uZmlndXJhdGlvbiBhbmQgUHJvY2Vzc2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IFZMQU5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdpbmcgZnJhbWV3b3JrLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJfdmxhbl9ydG1fcHJvY2Vzc19vbmVgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLiBNeSBtYWluIGludGVyZXN0IGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBsb2dpYyBhbmQgaG93IGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gYSBmZXcga2V5IGZ1bmN0aW9ucyB0byBnZXQgYSBnb29kIGdyYXNwIG9mIHRoaXM6IGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGhlYXJ0IG9mIGFueSBjaGFuZ2UgbGllcywgaG93ZXZlciBzbWFsbCwgaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIFRoZW4gdGhlcmUgaXMgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYCwgd2hpY2ggbXVzdCBkZWFsIHdpdGggaG93IHRoZXNlIFZMQU4gcmFuZ2VzIGFyZSBwcm9jZXNzZWQsIGVzcGVjaWFsbHkgaWYgd2UncmUgbG9va2luZyBhdCB0dW5uZWxpbmcgY29uZmlndXJhdGlvbnMuIE5leHQsIEkgc2hvdWxkIHVuZGVyc3RhbmQgaG93IFZMQU4gaW5mb3JtYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzbyBgYnJfdmxhbl9kdW1wX2RldmAgaXMgaW1wb3J0YW50LiBBbHNvLCBJIG11c3QgdW5kZXJzdGFuZCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGl0c2VsZiwgc2luY2UgdGhhdCdzIHdoZXJlIHRoaXMgYWxsIGJlZ2lucywgYW5kIGZpbmFsbHksIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gIHdoaWNoIG11c3QgYmUgcmVsZXZhbnQgdG8gdGhlIHR1bm5lbCBwcm9jZXNzaW5nLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSBzZWUgdGhhdCBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCBpcyBjcnVjaWFsIGZvciBib3RoIGBicl92bGFuLmNgIGFuZCBgYnJfdmxhbl9vcHRpb25zLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gT2YgY291cnNlLCBgQlJJREdFYCBpdHNlbGYgaXMgdGhlIGZvdW5kYXRpb24sIEkgYXNzdW1lIHdpdGhvdXQgdGhlIGJhc2UgYnJpZGdlIGZ1bmN0aW9uYWxpdHksIG5vbmUgb2YgdGhpcyBtYXR0ZXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGlzIHRoZSBvbmx5IHJlcXVpcmVtZW50LCBvciBpZiB0aGVyZSBhcmUgb3RoZXJzIEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjQxLjYzNzE3NzkyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNjkxNTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE2MjU9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNjI4LVxcdFxcdCAgICBpbnQgY21kKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNjI5OmJvb2wgYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE2MzAtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICpyYW5nZV9lbmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODcwPXN0YXRpYyBpbmxpbmUgdm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc2LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE4Nzc6c3RhdGljIGlubGluZSBib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODc4LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDIuMTI4ODczNDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODc0Nzk4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqQW5hbHl6aW5nIGAjaWZkZWZgIERpcmVjdGl2ZXMgaW4gYnJfcHJpdmF0ZS5oKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L2JyaWRnZS9icl9wcml2YXRlLmhgIGZpbGUuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHplcm8gaW4gb24gdGhvc2UgYCNpZmRlZmAgZGlyZWN0aXZlcyBhcm91bmQgbGluZXMgMTYyOSBhbmQgMTg3Ny4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGxpa2VseSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgZmVhdHVyZSBmbGFncyB0aGV5IGFyZSBnYXRpbmcuIEFyZSB0aGVzZSByZWxhdGVkIHRvIHNwZWNpZmljIGJyaWRnZSBmdW5jdGlvbmFsaXRpZXMsIGRlYnVnZ2luZyBvcHRpb25zLCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIG9yIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBwYXRocz8gVW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBibG9ja3MgYXJlIGNvbXBpbGVkIGlzIGtleS4gQXJlIHRoZXJlIHJlbGF0ZWQgZGVmaW5lcyB1c2VkIHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgc2VjdGlvbnMgYW5kLCBpZiBzbywgd2hhdCBkbyB0aGV5IGNvbnRyb2w/IEkgZXhwZWN0IHRoZSByZWxhdGVkIGRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRzIGluIHRoZSBjb2RlIHRvIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBiYXNlZCBvbiB3aGljaCBkZWZpbmVzIGFyZSBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgYnJpZGdpbmcgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo0NS44MTYzNTU5NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MjA6XFx0dm9pZCBicl92bGFuX3ZsYW5fdXBwZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmJyX2RldixcXG4xNjIxOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICp2bGFuX2RldixcXG4xNjIyOlxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbjE2MjM6XFx0aW50IGJyX3ZsYW5fcnRubF9pbml0KHZvaWQpO1xcbjE2MjQ6XFx0dm9pZCBicl92bGFuX3J0bmxfdW5pbml0KHZvaWQpO1xcbjE2MjU6XFx0dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuMTYyNjpcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4xNjI3OlxcdFxcdFxcdCAgICB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxcbjE2Mjg6XFx0XFx0XFx0ICAgIGludCBjbWQpO1xcbjE2Mjk6XFx0Ym9vbCBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2X2N1cnIsXFxuMTYzMDpcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnJhbmdlX2VuZCxcXG4xNjMxOlxcdFxcdFxcdFxcdCAgICAgdTE2IHB2aWQpO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHR2b2lkIGJyX3ZsYW5fZmlsbF9mb3J3YXJkX3BhdGhfcHZpZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuMTYzNDpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4xNjM1OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKTtcXG4xNjM2OlxcdGludCBicl92bGFuX2ZpbGxfZm9yd2FyZF9wYXRoX21vZGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbjE2Mzc6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqZHN0LFxcbjE2Mzg6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aCk7XFxuMTYzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDUuODE2NDgwMjgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDAyMjIwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmVzKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIGxvY2F0aW9uIG9mIHRoZSBgI2lmZGVmYCBkaXJlY3RpdmUuIEkga25vdyBJJ20gbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGFuZCB0aGUgYCNpZmRlZmAgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoYXQuIEl0J3Mgb2Z0ZW4gdGhlIGVudHJ5IHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgY29kZSBhZGFwdHMgdG8gZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIG9yIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgb3IgZXhjbHVkZWQuIExldCdzIGdldCByaWdodCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NDguNzU2NzA0ODY3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM5NTU3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9wcml2YXRlLmg9Mzg4PXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMzk0LVxcdHVuc2lnbmVkIGxvbmdcXHRcXHRcXHRmbGFncztcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDozOTU6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0zOTYtXFx0c3RydWN0IG5ldF9icmlkZ2Vfdmxhbl9ncm91cFxcdF9fcmN1ICp2bGdycDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTQ5Nj1zdHJ1Y3QgbmV0X2JyaWRnZSB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01MDItXFx0LyogVGhlc2UgZmllbGRzIGFyZSBhY2Nlc3NlZCBvbiBlYWNoIHBhY2tldCAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjUwMzojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTUwNC1cXHRfX2JlMTZcXHRcXHRcXHRcXHR2bGFuX3Byb3RvO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NTkzPXN0cnVjdCBicl9pbnB1dF9za2JfY2Ige1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA0LVxcdHU4IGdyYXRfYXJwOjE7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjA1OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjA2LVxcdHU4IHZsYW5fZmlsdGVyZWQ6MTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE1NzA9YnJfbXVsdGljYXN0X2N0eF9vcHRpb25zX2VxdWFsKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgxLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTU3Ny0vKiBicl92bGFuLmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNTc4OiNpZmRlZiBDT05GSUdfQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTU3OS1ib29sIGJyX2FsbG93ZWRfaW5ncmVzcyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xODg0PXN0YXRpYyBpbmxpbmUgdTE2IGJyX3ZsYW5fZmxhZ3MoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdiwgdTE2IHB2aWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xODkxLS8qIGJyX3ZsYW5fb3B0aW9ucy5jICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTg5MjojaWZkZWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE4OTMtYm9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTkzOT1zdGF0aWMgaW5saW5lIGJvb2wgYnJfdmxhbl9zdGF0ZV9hbGxvd2VkKHU4IHN0YXRlLCBib29sIGxlYXJuX2FsbG93KVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTk1Mi0vKiBicl9tc3QuYyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE5NTM6I2lmZGVmIENPTkZJR19CUklER0VfVkxBTl9GSUxURVJJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xOTU0LURFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShicl9tc3RfdXNlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjQ5LjIzMDY2NDg0OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU2ODIxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFZMQU4gRmlsdGVyaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gYGJyX25ldGxpbmtfdHVubmVsLmNgLiBJIG5lZWQgdG8gc2VlIGlmIHRoYXQgbW9kdWxlIGxldmVyYWdlcywgb3IgZGVwZW5kcyBvbiwgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGJleW9uZCB0aGUgb2J2aW91cy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBhcmVhIG9mIHRoZSBrZXJuZWwgbmV0d29ya2luZyBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIHNvbWUgbGVzcy1vYnZpb3VzIG51YW5jZXMgdG8gaG93IHRoaXMgYWxsIHRpZXMgdG9nZXRoZXIgYW5kIGl0J3MgaW1wb3J0YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo1Mi41ODc0ODg2ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzIzNzIyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2lmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbmV0bGlua190dW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTIuNzI0NzMyNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3MDcyNTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gQnJpZGdlIFZMQU4gSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYnJpZGdlIFZMQU4gc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJIdWgsIG5vIGAjaWZkZWZgIGRpcmVjdGl2ZXMgaW4gYGJyX25ldGxpbmtfdHVubmVsLmNgPyBUaGF0J3Mgbm90IHdoYXQgSSBleHBlY3RlZC5cIiBJIGhhZCBhIGZlZWxpbmcgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBtaWdodCBiZSBsdXJraW5nIHNvbWV3aGVyZSwgZ2l2ZW4gdGhlIG51YW5jZXMgb2YgVkxBTiBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWxzIG9yIGNvbmZpZ3VyYXRpb25zLiBTaW5jZSBpdCB3YXNuJ3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQgaW4gdGhlIHR1bm5lbCBjb2RlLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBicl92bGFuX29wdGlvbnMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlIHRvIGNvbnRhaW4gYW55IGtlcm5lbCBvciBjb25maWd1cmF0aW9uIGRlcGVuZGVudCBWTEFOIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ5NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM1OjU1Ljg5NTQ2Mjc3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzMTEwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy02MC1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodl9jdXJyKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTgyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwNC1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQyLVxcdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9Mzg4PWJvb2wgYnJfdmxhbl9nbG9iYWxfb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjQwNjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDctXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODI9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODYtXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4OC1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NTUwPXN0YXRpYyBpbnQgYnJfdmxhbl9wcm9jZXNzX2dsb2JhbF9vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU1OS1cXHQqY2hhbmdlZCA9IGZhbHNlO1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MS1cXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9HT1BUU19NQ0FTVF9TTk9PUElOR10pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTYuMDE4NTc3MzM3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjEwMzEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkV4YW1pbmluZyBJR01QIFNub29waW5nIGFuZCBWTEFOIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZGlzY3Vzc2lvbiBoYXMgZHJpZnRlZCB0b3dhcmRzIGBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdgLCBhbmQgd2hpbGUgaXQgKmNvdWxkKiBiZSByZWxldmFudCwgaXQncyBub3QgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHRoZSBjaGFuZ2VzIEknbSBmb2N1c2luZyBvbiBpbiB0aGUgY29kZS4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjbGVhciBhbmQgbm90IGEgcG9pbnQgb2YgY29uZnVzaW9uLiBJIHdhbnQgdG8ga2VlcCB0aGUgcHJpbWFyeSBvYmplY3RpdmUgaW4gZm9jdXMuXG5cblRoZSBtb3JlIHByZXNzaW5nIHBvaW50IGZvciB0aGlzIHRhc2sgaXMgdGhlIFZMQU4gaGFuZGxpbmcgYW5kIHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFZMQU5zIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhpcyB3aG9sZSBzZXR1cC4gUmlnaHQsIG5leHQgc3RlcCDigJMgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBicl92bGFuLmNgLiBTcGVjaWZpY2FsbHksIEknbGwgYmUgY2hlY2tpbmcgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgbGlrZWx5IGxpZSByZWdhcmRpbmcgVkxBTi1yZWxhdGVkIHRyYWZmaWMsIGFjY2VzcywgYW5kIGZpbHRlcmluZy4gR290dGEgdW5kZXJzdGFuZCB0aGF0IGZ1bmN0aW9uJ3MgbG9naWMgdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNTo1OS4zMzk2MTE2NzJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3ODgxNzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfdmxhbi5jPTE5MTI9dm9pZCBicl92bGFuX25vdGlmeShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTgzLS8qIGNoZWNrIGlmIHZfY3VyciBjYW4gZW50ZXIgYSByYW5nZSBlbmRpbmcgaW4gcmFuZ2VfZW5kICovXFxubmV0L2JyaWRnZS9icl92bGFuLmM6MTk4NDpib29sIGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnZfY3VycixcXG5uZXQvYnJpZGdlL2JyX3ZsYW4uYy0xOTg1LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqcmFuZ2VfZW5kLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuLmM9MTk5ND1zdGF0aWMgaW50IGJyX3ZsYW5fZHVtcF9kZXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzEtXFx0XFx0fSBlbHNlIGlmIChkdW1wX3N0YXRzIHx8XFxubmV0L2JyaWRnZS9icl92bGFuLmM6MjA3MjpcXHRcXHRcXHQgICAhYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2UodiwgcmFuZ2VfZW5kLCBwdmlkKSkge1xcbm5ldC9icmlkZ2UvYnJfdmxhbi5jLTIwNzMtXFx0XFx0XFx0dTE2IHZsYW5fZmxhZ3MgPSBicl92bGFuX2ZsYWdzKHJhbmdlX3N0YXJ0LCBwdmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzU6NTkuNDM3NDk4ODA0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEzODUyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSWRlbnRpZnlpbmcgS2V5IFZMQU4gRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSByZWNlbnQgY2hhbmdlcywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBtb2RpZmllZCBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZDogYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYCwgYGJyX3ZsYW5fZHVtcF9kZXZgLCBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgLCBhbmQgYF9fdmxhbl90dW5uZWxfaGFuZGxlX3JhbmdlYC4gVGhlc2UgYWJzb2x1dGVseSBuZWVkIHRvIGJlIGFkZGVkIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1icmFpbmVyLlxuXG5Ob3csIGJleW9uZCB0aGUgY29yZSBmdW5jdGlvbnMsIGxldCdzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIFRoZSBiaWcgb25lIHRoYXQgbGVhcHMgdG8gbWluZCBpcyBgQlJJREdFX1ZMQU5fRklMVEVSSU5HYCwgb2J2aW91c2x5LiBBbmQgb2YgY291cnNlLCBgQlJJREdFYCBpdHNlbGYgaXMgdGhlIGJhc2UgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBzY29wZSBpbiBgbmV0L2JyaWRnZS9LY29uZmlnYCBmb3IgdGhlIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIHNldHRpbmcgdG8gY29uZmlybSBhbGwgb2YgbXkgYXNzdW1wdGlvbnMuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA5OjM2OjAzLjU1ODg4NzA4NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NDMwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz0zNj1jb25maWcgQlJJREdFX0lHTVBfU05PT1BJTkdcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzY6MDQuMDIzMzIyMjM4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Mzk4OTIxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBWTEFOIEZpbHRlcmluZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gYEJSSURHRV9WTEFOX0ZJTFRFUklOR2AgaXMgYSBib29sZWFuLCBnb3QgaXQuIFRoYXQgbWVhbnMgaXQncyBlaXRoZXIgZW5hYmxlZCBvciBkaXNhYmxlZCwgbm90aGluZyBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGF0IG9wdGlvbiBhbmQgdGhlIGJyb2FkZXIgYnJpZGdpbmcgY29udGV4dC4gR2l2ZW4gdGhpcywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSBpdHMgZGVmaW5pdGlvbiBhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBicmlkZ2luZyBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvYnJpZGdlL0tjb25maWdgLiBJJ2xsIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRWAgY29uZmlnIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGRlZmluaXRpb24gYW5kIGFsbG93IG1lIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4NTIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNjowNi44NjMyNDg0MTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTQzOTQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDk6MzY6MDcuMDEyNjk0MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIwODk0NTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCcmlkZ2UgVkxBTiBDb25maWd1cmF0aW9uIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbm5lZCBkb3duIHRoYXQgYEJSSURHRWAgYW5kIGBCUklER0VfVkxBTl9GSUxURVJJTkdgIGFyZSBlc3NlbnRpYWwgZm9yIHRoaXMgcGFydCBvZiB0aGUgc3lzdGVtLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1c2VyLXNwYWNlIHJlYWNoYWJpbGl0eSBvZiB0aG9zZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGF0IFZMQU4gcmFuZ2UuXG5cbkxldCdzIHNlZS4gUmlnaHQsIGBicl92bGFuX2Nhbl9lbnRlcl9yYW5nZWAuIEkgc2VlIGl0J3MgYWNjZXNzaWJsZSB2aWEgYGJyX3ZsYW5fZHVtcF9kZXZgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYGJyX3ZsYW5fcnRtX2R1bXBgLCB3aGljaCBpbiB0dXJuLCBpcyBhIGhhbmRsZXIgZm9yIGFuIGBSVE1fR0VUVkxBTmAgbmV0bGluayBtZXNzYWdlLiBFeGNlbGxlbnQuIFRoZW4gdGhlcmUncyBgYnJfdmxhbl9wcm9jZXNzX29wdGlvbnNgIGJlaW5nIGNhbGxlZCBmcm9tIGBicl92bGFuX3J0bV9wcm9jZXNzX29uZWAsIHdoaWNoIGlzIGFuIGBSVE1fTkVXVkxBTmAgaGFuZGxlci4gR29vZCwgbW9yZSB1c2VyLXNwYWNlIGVudHJ5IHBvaW50cy4gRmluYWxseSwgdGhlcmUncyBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgLCB3aGljaCBhcHBlYXJzIHJlYWNoYWJsZSB0aHJvdWdoIGBicl9wcm9jZXNzX3ZsYW5fdHVubmVsX2luZm9gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYGJyX3ZsYW5faW5mb2AsIGFuZCB0aGVuIGBicl9zZXRsaW5rYCB3aGljaCBpcyBsaW5rZWQgdG8gYFJUTV9TRVRMSU5LYC5cblxuUGVyZmVjdCwgdGhlc2UgYXJlIGFsbCBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLCB3aGljaCBpcyB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgSSBleHBlY3RlZCwgYW5kIHRoZXkgZG9uJ3Qgc2VlbSBsaWtlIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBjb25maWd1cmF0aW9uL2R1bXAgc3VyZmFjZSBsb29rcyBwcmV0dHkgZ29vZCBmb3IgdGFyZ2V0ZWQgZnV6emluZy5cblxuQWxyaWdodCwgbGV0J3MgZG9jdW1lbnQgd2hhdCBJJ3ZlIGZvdW5kLlxuXG4qKldvcnRoRnV6emluZyoqOiBUcnVlXG5cbioqRm9jdXNTeW1ib2xzKio6XG4qICAgYGJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlYFxuKiAgIGBicl92bGFuX2R1bXBfZGV2YFxuKiAgIGBicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc2BcbiogICBgX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VgXG5cbioqRW5hYmxlQ29uZmlncyoqOlxuKiAgIGBCUklER0VgXG4qICAgYEJSSURHRV9WTEFOX0ZJTFRFUklOR2BcblxuKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgYnJpZGdlIFZMQU4gbG9naWMgdG8gcHJldmVudCBhIFZMQU4gcmFuZ2UgZnJvbSBpbmNsdWRpbmcgdGhlIFBWSUQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoUlRNX05FV1ZMQU4sIFJUTV9HRVRWTEFOLCBSVE1fU0VUTElOSykgYW5kIGFyZSBub3QgaG90LXBhdGggZnVuY3Rpb25zLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzE1LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwOTozNjoxNC4yMjE2NDE5MjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyNzYyMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX1ZMQU5fRklMVEVSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfdmxhbl9jYW5fZW50ZXJfcmFuZ2VcIixcbiAgICBcImJyX3ZsYW5fZHVtcF9kZXZcIixcbiAgICBcImJyX3ZsYW5fcHJvY2Vzc19vcHRpb25zXCIsXG4gICAgXCJfX3ZsYW5fdHVubmVsX2hhbmRsZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGJyaWRnZSBWTEFOIGxvZ2ljIHRvIHByZXZlbnQgYSBWTEFOIHJhbmdlIGZyb20gaW5jbHVkaW5nIHRoZSBQVklELiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKFJUTV9ORVdWTEFOLCBSVE1fR0VUVkxBTiwgUlRNX1NFVExJTkspIGFuZCBhcmUgbm90IGhvdC1wYXRoIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9WTEFOX0ZJTFRFUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyX3ZsYW5fY2FuX2VudGVyX3JhbmdlXCIsXG4gICAgXCJicl92bGFuX2R1bXBfZGV2XCIsXG4gICAgXCJicl92bGFuX3Byb2Nlc3Nfb3B0aW9uc1wiLFxuICAgIFwiX192bGFuX3R1bm5lbF9oYW5kbGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBicmlkZ2UgVkxBTiBsb2dpYyB0byBwcmV2ZW50IGEgVkxBTiByYW5nZSBmcm9tIGluY2x1ZGluZyB0aGUgUFZJRC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChSVE1fTkVXVkxBTiwgUlRNX0dFVFZMQU4sIFJUTV9TRVRMSU5LKSBhbmQgYXJlIG5vdCBob3QtcGF0aCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[1] Phase: Succeeded StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 09:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 09:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2] Phase: Succeeded StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 09:36:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 09:36:26 +0000 UTC FinishedAt: 2026-07-22 09:36:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrscmq/series-workflowrscmq-convert-artifact-1137453442/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 09:36:36 +0000 UTC FinishedAt: 2026-07-22 10:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 09:36:36 +0000 UTC FinishedAt: 2026-07-22 10:49:12 +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:*ceb3f643-84fa-4903-90b3-bd3ad916d2ca,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-workflowrscmq/series-workflowrscmq-convert-artifact-1137453442/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": "9ba700fe-03cf-46d3-8270-883a8c47ccb0", "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-workflowrscmq/series-workflowrscmq-build-action-2813048896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 09:36:36 +0000 UTC FinishedAt: 2026-07-22 10:49:08 +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:*ceb3f643-84fa-4903-90b3-bd3ad916d2ca,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-workflowrscmq/series-workflowrscmq-convert-artifact-1137453442/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": "9ba700fe-03cf-46d3-8270-883a8c47ccb0", "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-workflowrscmq/series-workflowrscmq-build-action-2813048896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 10:49:12 +0000 UTC FinishedAt: 2026-07-22 10:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 10:49:12 +0000 UTC FinishedAt: 2026-07-22 10:49:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 10:49:12 +0000 UTC FinishedAt: 2026-07-22 10:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 10:49:12 +0000 UTC FinishedAt: 2026-07-22 10:49:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrscmq/series-workflowrscmq-convert-artifact-541757661/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 10:49:33 +0000 UTC FinishedAt: 2026-07-22 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 10:49:33 +0000 UTC FinishedAt: 2026-07-22 10:51:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ba700fe-03cf-46d3-8270-883a8c47ccb0,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-workflowrscmq/series-workflowrscmq-build-action-2813048896/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-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 10:51:36 +0000 UTC FinishedAt: 2026-07-22 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 10:51:36 +0000 UTC FinishedAt: 2026-07-22 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 10:51:36 +0000 UTC FinishedAt: 2026-07-22 11:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 10:51:36 +0000 UTC FinishedAt: 2026-07-22 11:31:52 +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:*ceb3f643-84fa-4903-90b3-bd3ad916d2ca,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-workflowrscmq/series-workflowrscmq-convert-artifact-541757661/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": "8128c330-88e5-4196-b762-4d2c18b2185f", "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-workflowrscmq/series-workflowrscmq-build-action-1268765113/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 10:51:36 +0000 UTC FinishedAt: 2026-07-22 11:31:42 +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:*ceb3f643-84fa-4903-90b3-bd3ad916d2ca,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-workflowrscmq/series-workflowrscmq-convert-artifact-541757661/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": "8128c330-88e5-4196-b762-4d2c18b2185f", "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-workflowrscmq/series-workflowrscmq-build-action-1268765113/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 11:31:52 +0000 UTC FinishedAt: 2026-07-22 11:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 11:31:52 +0000 UTC FinishedAt: 2026-07-22 11:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 11:31:52 +0000 UTC FinishedAt: 2026-07-22 11:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 11:31:52 +0000 UTC FinishedAt: 2026-07-22 11:33:47 +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:*8128c330-88e5-4196-b762-4d2c18b2185f,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-workflowrscmq/series-workflowrscmq-build-action-1268765113/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-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +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":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"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:*9ba700fe-03cf-46d3-8270-883a8c47ccb0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8128c330-88e5-4196-b762-4d2c18b2185f,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-workflowrscmq/series-workflowrscmq-build-action-2813048896/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-workflowrscmq/series-workflowrscmq-build-action-1268765113/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 11:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 11:34:01 +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":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"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-workflowrscmq/series-workflowrscmq-convert-artifact-333439074/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 11:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 11:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 11:33:57 +0000 UTC FinishedAt: 2026-07-22 11:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 11:34:07 +0000 UTC FinishedAt: 2026-07-22 14:37:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrscmq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_vlan_can_enter_range","br_vlan_dump_dev","br_vlan_process_options","__vlan_tunnel_handle_range"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ba712ecfd942b68b21a4b0a5daaf72f6616cc66d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_VLAN_FILTERING"],"series_id":"8da6b18e-e24d-4781-8ffb-d0f438e1764f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 11:34:07 +0000 UTC FinishedAt: 2026-07-22 14:37:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ba700fe-03cf-46d3-8270-883a8c47ccb0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8128c330-88e5-4196-b762-4d2c18b2185f,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-workflowrscmq/series-workflowrscmq-build-action-2813048896/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-workflowrscmq/series-workflowrscmq-build-action-1268765113/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-workflowrscmq/series-workflowrscmq-convert-artifact-333439074/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,}