Name: series-workflowpjgxm Phase: Succeeded StartedAt: 2026-07-15 22:59:41 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[0] Phase: Succeeded StartedAt: 2026-07-15 22:59:41 +0000 UTC FinishedAt: 2026-07-15 23:16:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 22:59:41 +0000 UTC FinishedAt: 2026-07-15 23:16:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "edf69d8d-534e-40b3-9f53-1736c249aafc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_iter_profile_continuation", "cfg80211_merge_profile", "cfg80211_parse_mbssid_data" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbiYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9tZXJnZV9wcm9maWxlJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyBpbiB3aXJlbGVzcyBzY2FuIHJlc3VsdHMuIEl0IGludHJvZHVjZXMgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIHRvIGNvcnJlY3RseSBpdGVyYXRlIG92ZXIgcHJvZmlsZSBjb250aW51YXRpb25zIGFuZCB1cGRhdGVzIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCB0byB1c2UgaXQuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHByb2Nlc3NpbmcgbWFsaWNpb3VzIG1hbmFnZW1lbnQgZnJhbWVzIChlLmcuLCBiZWFjb25zIG9yIHByb2JlIHJlc3BvbnNlcykgY29udGFpbmluZyBjcmFmdGVkIE1CU1NJRCBpbmZvcm1hdGlvbiBlbGVtZW50cy4gSXQgaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyNTVhYzJmZTcwOGY4MzdhNDY3MTc5ZTUyNWU0YTY5MTEyYmM2YzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLmU2MmI3ZGQyYjdjMmQ4IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTI0MDMsMTIgJiM0MzsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKm1ic3NpZF9lbGVtLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKVxuJiM0MztzdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqbWJzc2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqc3ViX2VsZW0pXG4ge1xuLVx0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSBtYnNzaWRfZWxlbS1cdTAwM2VkYXRhICYjNDM7IG1ic3NpZF9lbGVtLVx1MDAzZWRhdGFsZW47XG4mIzQzO1x0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSAoKm1ic3NpZCktXHUwMDNlZGF0YSAmIzQzOyAoKm1ic3NpZCktXHUwMDNlZGF0YWxlbjtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcbiBcbkBAIC0yNDIwLDMwICYjNDM7MjQxOSwzNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbiBcdCAqIElmIGl0IGlzIG5vdCB0aGUgbGFzdCBzdWJlbGVtZW50IGluIGN1cnJlbnQgTUJTU0lEIElFIG9yIHRoZXJlIGlzbiYjMzk7dFxuIFx0ICogYSBuZXh0IE1CU1NJRCBJRSAtIHByb2ZpbGUgaXMgY29tcGxldGUuXG4gXHQqL1xuLVx0aWYgKChzdWJfZWxlbS1cdTAwM2VkYXRhICYjNDM7IHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNjIG1ic3NpZF9lbmQgLSAxKSB8fFxuJiM0MztcdGlmICgoKCpzdWJfZWxlbSktXHUwMDNlZGF0YSAmIzQzOyAoKnN1Yl9lbGVtKS1cdTAwM2VkYXRhbGVuIFx1MDAzYyBtYnNzaWRfZW5kIC0gMSkgfHxcbiBcdCAgICAhbmV4dF9tYnNzaWQpXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0LyogRm9yIGFueSBsZW5ndGggZXJyb3IsIGp1c3QgcmV0dXJuIE5VTEwgKi9cbiYjNDM7XHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gZmFsc2UgdG8gc3RvcCBpdGVyYXRpb24gKi9cbiBcbiBcdGlmIChuZXh0X21ic3NpZC1cdTAwM2VkYXRhbGVuIFx1MDAzYyA0KVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdG5leHRfc3ViID0gKHZvaWQgKilcdTAwMjZuZXh0X21ic3NpZC1cdTAwM2VkYXRhWzFdO1xuIFxuIFx0aWYgKG5leHRfbWJzc2lkLVx1MDAzZWRhdGEgJiM0MzsgbmV4dF9tYnNzaWQtXHUwMDNlZGF0YWxlbiBcdTAwM2NcbiBcdCAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhICYjNDM7IG5leHRfc3ViLVx1MDAzZWRhdGFsZW4pXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKG5leHRfc3ViLVx1MDAzZWlkICE9IDAgfHwgbmV4dF9zdWItXHUwMDNlZGF0YWxlbiBcdTAwM2MgMilcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHQvKlxuIFx0ICogQ2hlY2sgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIG5leHQgc3ViIGVsZW1lbnQgaXMgYSBzdGFydFxuIFx0ICogb2YgYSBuZXcgcHJvZmlsZVxuIFx0ICovXG4tXHRyZXR1cm4gbmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cbi1cdCAgICAgICBOVUxMIDogbmV4dF9tYnNzaWQ7XG4mIzQzO1x0aWYgKG5leHRfc3ViLVx1MDAzZWRhdGFbMF0gPT0gV0xBTl9FSURfTk9OX1RYX0JTU0lEX0NBUClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Km1ic3NpZCA9IG5leHRfbWJzc2lkO1xuJiM0MztcdCpzdWJfZWxlbSA9IG5leHRfc3ViO1xuJiM0MztcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbkBAIC0yNDUyLDI2ICYjNDM7MjQ1NSwyMCBAQCBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbiBcdFx0XHQgICAgICB1OCAqbWVyZ2VkX2llLCBzaXplX3QgbWF4X2NvcHlfbGVuKVxuIHtcbiBcdHNpemVfdCBjb3BpZWRfbGVuID0gc3ViX2VsZW0tXHUwMDNlZGF0YWxlbjtcbi1cdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcbiBcdGlmIChzdWJfZWxlbS1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0bWVtY3B5KG1lcmdlZF9pZSwgc3ViX2VsZW0tXHUwMDNlZGF0YSwgc3ViX2VsZW0tXHUwMDNlZGF0YWxlbik7XG4gXG4tXHR3aGlsZSAoKG5leHRfbWJzc2lkID0gY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbixcbi1cdFx0XHRcdFx0XHRcdFx0bWJzc2lkX2VsZW0sXG4tXHRcdFx0XHRcdFx0XHRcdHN1Yl9lbGVtKSkpIHtcbi1cdFx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfc3ViID0gKHZvaWQgKilcdTAwMjZuZXh0X21ic3NpZC1cdTAwM2VkYXRhWzFdO1xuLVxuLVx0XHRpZiAoY29waWVkX2xlbiAmIzQzOyBuZXh0X3N1Yi1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4mIzQzO1x0d2hpbGUgKGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuJiM0MztcdFx0XHRcdFx0XHQgIFx1MDAyNm1ic3NpZF9lbGVtLFxuJiM0MztcdFx0XHRcdFx0XHQgIFx1MDAyNnN1Yl9lbGVtKSkge1xuJiM0MztcdFx0aWYgKGNvcGllZF9sZW4gJiM0Mzsgc3ViX2VsZW0tXHUwMDNlZGF0YWxlbiBcdTAwM2UgbWF4X2NvcHlfbGVuKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRtZW1jcHkobWVyZ2VkX2llICYjNDM7IGNvcGllZF9sZW4sIG5leHRfc3ViLVx1MDAzZWRhdGEsXG4tXHRcdCAgICAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhbGVuKTtcbi1cdFx0Y29waWVkX2xlbiAmIzQzOz0gbmV4dF9zdWItXHUwMDNlZGF0YWxlbjtcbi1cbi1cdFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcbi1cdFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcbiYjNDM7XHRcdG1lbWNweShtZXJnZWRfaWUgJiM0MzsgY29waWVkX2xlbiwgc3ViX2VsZW0tXHUwMDNlZGF0YSxcbiYjNDM7XHRcdCAgICAgICBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbiYjNDM7XHRcdGNvcGllZF9sZW4gJiM0Mzs9IHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gY29waWVkX2xlbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyNTVhYzJmZTcwOGY4MzdhNDY3MTc5ZTUyNWU0YTY5MTEyYmM2YzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zY2FuLmMgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCkBAIC0yNDAzLDEyICYjNDM7MjQwMywxMSBAQCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudAotKmNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbihjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sCi0JCQkJICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKQomIzQzO3N0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sCiYjNDM7CQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKiptYnNzaWQsCiYjNDM7CQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKipzdWJfZWxlbSkKIHsKLQljb25zdCB1OCAqbWJzc2lkX2VuZCA9IG1ic3NpZF9lbGVtLSZndDtkYXRhICYjNDM7IG1ic3NpZF9lbGVtLSZndDtkYXRhbGVuOwomIzQzOwljb25zdCB1OCAqbWJzc2lkX2VuZCA9ICgqbWJzc2lkKS0mZ3Q7ZGF0YSAmIzQzOyAoKm1ic3NpZCktJmd0O2RhdGFsZW47CiAJY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkOwogCWNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjsKIApAQCAtMjQyMCwzMCAmIzQzOzI0MTksMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlbGVtZW50CiAJICogSWYgaXQgaXMgbm90IHRoZSBsYXN0IHN1YmVsZW1lbnQgaW4gY3VycmVudCBNQlNTSUQgSUUgb3IgdGhlcmUgaXNuJiMzOTt0CiAJICogYSBuZXh0IE1CU1NJRCBJRSAtIHByb2ZpbGUgaXMgY29tcGxldGUuCiAJKi8KLQlpZiAoKHN1Yl9lbGVtLSZndDtkYXRhICYjNDM7IHN1Yl9lbGVtLSZndDtkYXRhbGVuICZsdDsgbWJzc2lkX2VuZCAtIDEpIHx8CiYjNDM7CWlmICgoKCpzdWJfZWxlbSktJmd0O2RhdGEgJiM0MzsgKCpzdWJfZWxlbSktJmd0O2RhdGFsZW4gJmx0OyBtYnNzaWRfZW5kIC0gMSkgfHwKIAkgICAgIW5leHRfbWJzc2lkKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAotCS8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBOVUxMICovCiYjNDM7CS8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBmYWxzZSB0byBzdG9wIGl0ZXJhdGlvbiAqLwogCiAJaWYgKG5leHRfbWJzc2lkLSZndDtkYXRhbGVuICZsdDsgNCkKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAKIAluZXh0X3N1YiA9ICh2b2lkICopJmFtcDtuZXh0X21ic3NpZC0mZ3Q7ZGF0YVsxXTsKIAogCWlmIChuZXh0X21ic3NpZC0mZ3Q7ZGF0YSAmIzQzOyBuZXh0X21ic3NpZC0mZ3Q7ZGF0YWxlbiAmbHQ7CiAJICAgIG5leHRfc3ViLSZndDtkYXRhICYjNDM7IG5leHRfc3ViLSZndDtkYXRhbGVuKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAogCWlmIChuZXh0X3N1Yi0mZ3Q7aWQgIT0gMCB8fCBuZXh0X3N1Yi0mZ3Q7ZGF0YWxlbiAmbHQ7IDIpCi0JCXJldHVybiBOVUxMOwomIzQzOwkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBDaGVjayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbmV4dCBzdWIgZWxlbWVudCBpcyBhIHN0YXJ0CiAJICogb2YgYSBuZXcgcHJvZmlsZQogCSAqLwotCXJldHVybiBuZXh0X3N1Yi0mZ3Q7ZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID8KLQkgICAgICAgTlVMTCA6IG5leHRfbWJzc2lkOwomIzQzOwlpZiAobmV4dF9zdWItJmd0O2RhdGFbMF0gPT0gV0xBTl9FSURfTk9OX1RYX0JTU0lEX0NBUCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJKm1ic3NpZCA9IG5leHRfbWJzc2lkOwomIzQzOwkqc3ViX2VsZW0gPSBuZXh0X3N1YjsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLApAQCAtMjQ1MiwyNiAmIzQzOzI0NTUsMjAgQEAgc2l6ZV90IGNmZzgwMjExX21lcmdlX3Byb2ZpbGUoY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sCiAJCQkgICAgICB1OCAqbWVyZ2VkX2llLCBzaXplX3QgbWF4X2NvcHlfbGVuKQogewogCXNpemVfdCBjb3BpZWRfbGVuID0gc3ViX2VsZW0tJmd0O2RhdGFsZW47Ci0JY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkOwogCiAJaWYgKHN1Yl9lbGVtLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQogCQlyZXR1cm4gMDsKIAogCW1lbWNweShtZXJnZWRfaWUsIHN1Yl9lbGVtLSZndDtkYXRhLCBzdWJfZWxlbS0mZ3Q7ZGF0YWxlbik7CiAKLQl3aGlsZSAoKG5leHRfbWJzc2lkID0gY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbiwKLQkJCQkJCQkJbWJzc2lkX2VsZW0sCi0JCQkJCQkJCXN1Yl9lbGVtKSkpIHsKLQkJY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfc3ViID0gKHZvaWQgKikmYW1wO25leHRfbWJzc2lkLSZndDtkYXRhWzFdOwotCi0JCWlmIChjb3BpZWRfbGVuICYjNDM7IG5leHRfc3ViLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQomIzQzOwl3aGlsZSAoY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbihpZSwgaWVsZW4sCiYjNDM7CQkJCQkJICAmYW1wO21ic3NpZF9lbGVtLAomIzQzOwkJCQkJCSAgJmFtcDtzdWJfZWxlbSkpIHsKJiM0MzsJCWlmIChjb3BpZWRfbGVuICYjNDM7IHN1Yl9lbGVtLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQogCQkJYnJlYWs7Ci0JCW1lbWNweShtZXJnZWRfaWUgJiM0MzsgY29waWVkX2xlbiwgbmV4dF9zdWItJmd0O2RhdGEsCi0JCSAgICAgICBuZXh0X3N1Yi0mZ3Q7ZGF0YWxlbik7Ci0JCWNvcGllZF9sZW4gJiM0Mzs9IG5leHRfc3ViLSZndDtkYXRhbGVuOwotCi0JCW1ic3NpZF9lbGVtID0gbmV4dF9tYnNzaWQ7Ci0JCXN1Yl9lbGVtID0gbmV4dF9zdWI7CiYjNDM7CQltZW1jcHkobWVyZ2VkX2llICYjNDM7IGNvcGllZF9sZW4sIHN1Yl9lbGVtLSZndDtkYXRhLAomIzQzOwkJICAgICAgIHN1Yl9lbGVtLSZndDtkYXRhbGVuKTsKJiM0MzsJCWNvcGllZF9sZW4gJiM0Mzs9IHN1Yl9lbGVtLSZndDtkYXRhbGVuOwogCX0KIAogCXJldHVybiBjb3BpZWRfbGVuOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCB0aGUgZm9jdXMgaXMgb24gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBUaGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGEgbmFtZSBjaGFuZ2UsIGZyb20gYGNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLiBGdW5jdGlvbmFsbHksIHRoaXMgbGlrZWx5IGluZGljYXRlcyBhbiBpdGVyYXRpb24gaXMgcmVwbGFjaW5nIGEgc2ltcGxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBwcm9maWxlcy4gVGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbiBoYXMgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gdXRpbGl6ZSB0aGlzIG5ldyBpdGVyYXRvci4gVGhpcyBjbGVhcmx5IGZhbGxzIHdpdGhpbiB0aGUgcmVhbG0gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIG1hYzgwMjExL2NmZzgwMjExIGNvbXBvbmVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgSSB3b3VsZCBleHBlY3QgdGhpcyB0byBiZSBzb21ldGhpbmcgZnV6emVkIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSYjMzk7bGwga2VlcCBpbiBtaW5kIGZvciB0ZXN0aW5nLgoKTm93LCBiZWZvcmUgSSBkaWcgZGVlcGVyLCBJIG5lZWQgdG8gdmVyaWZ5IGEgZmV3IHRoaW5ncy4gRmlyc3QsIGxldCYjMzk7cyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGZhbGxzIHVuZGVyIHRoZSBgY2ZnODAyMTFgIHVtYnJlbGxhLCBzbyB0aGUgYENGRzgwMjExYCBjb25maWcgb3B0aW9uIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkLiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvTWFrZWZpbGVgIHRvIGNvcnJvYm9yYXRlIHRoYXQgdGhpcyBpcyB0aGUgY29ycmVjdCBkZXBlbmRlbmN5LiBUaGlzIHF1aWNrIHZlcmlmaWNhdGlvbiB3aWxsIGVuc3VyZSBJIGNhbiByZXByb2R1Y2UgYW5kIGFuYWx5emUgdGhpcyBjb2RlIGNvcnJlY3RseSB3aXRoaW4gbXkgdGVzdCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NhblxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgJiM0Mzs9IHdleHQtcHJpdi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZTo5OmNmZzgwMjExLXkgJiM0Mzs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xMC1jZmc4MDIxMS15ICYjNDM7PSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gd2lyZWxlc3MgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFNlZW1zIGxpa2UgYENGRzgwMjExYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gYXJlYS4gV2FpdCwgSSByZW1lbWJlciBub3csIGBjZmc4MDIxMS15YCBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBNYWtlZmlsZSBpbiBgbmV0L3dpcmVsZXNzYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgbG9naWMgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgJiM0Mzs9IGNmZzgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICYjNDM7PSB0ZXN0cy9cbi0tXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfV0VYVF9QUklWKSAmIzQzOz0gd2V4dC1wcml2Lm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS04LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSAmIzQzOz0gY29yZS5vIHN5c2ZzLm8gcmFkaW90YXAubyB1dGlsLm8gcmVnLm8gc2Nhbi5vIG5sODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEwOmNmZzgwMjExLXkgJiM0Mzs9IG1sbWUubyBpYnNzLm8gc21lLm8gY2hhbi5vIGV0aHRvb2wubyBtZXNoLm8gYXAubyB0cmFjZS5vIG9jYi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTE6Y2ZnODAyMTEteSAmIzQzOz0gbWljaGFlbC1taWMubyBwbXNyLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpjZmc4MDIxMS0kKENPTkZJR19PRikgJiM0Mzs9IG9mLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMzpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTQ6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfV0VYVCkgJiM0Mzs9IHdleHQtY29tcGF0Lm8gd2V4dC1zbWUub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE1LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTctXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTg6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTKSAmIzQzOz0gc2hpcHBlZC1jZXJ0cy5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTktaWZuZXEgKCQoQ09ORklHX0NGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUiksKVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgJiM0Mzs9IGV4dHJhLWNlcnRzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCBgQ09ORklHX0NGRzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBjb25maWcsIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IG5vdyBJJiMzOTttIHdvbmRlcmluZywgZG8gd2UgaGF2ZSBzb21ldGhpbmcgbW9yZSBncmFudWxhciBmb3IgTXVsdGktQlNTSUQgb3IgZm9yIHNwZWNpZmljIHNjYW5uaW5nIGJlaGF2aW9ycz8gSXQmIzM5O3MgYSBjb21tb24gcXVlc3Rpb24gd2hlbiB0dW5pbmcgb3IgZGVidWdnaW5nLiBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgYSBzcGVjaWZpYyBjb25maWcgb3B0aW9uIGp1bXBpbmcgdG8gbWluZC4KCkFscmlnaHQsIHRpbWUgdG8gZGlnLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGxvb2sgYXJvdW5kIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCwgZXNwZWNpYWxseSBuZWFyIHRoZSBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlIHNjYW5uaW5nIGxvZ2ljIGFuZCBwcm9maWxlIG1hbmFnZW1lbnQgaGFwcGVucywgc28gaXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBodW50IGZvciBhbnkgTUJTU0lELXJlbGF0ZWQgaG9va3Mgb3Igc2Nhbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX21lcmdlX3Byb2ZpbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MjQwNj1zdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1MS1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ1MjpzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1My1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDc1LX1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3NjpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX21lcmdlX3Byb2ZpbGUpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDc3LVxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MjQ3OT1jZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMjU0My1cdFx0XHRtZW1zZXQocHJvZmlsZSwgMCwgdHhfZGF0YS1cdTAwM2VpZWxlbik7XG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjI1NDQ6XHRcdFx0cHJvZmlsZV9sZW4gPSBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKHR4X2RhdGEtXHUwMDNlaWUsXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI1NDUtXHRcdFx0XHRcdFx0XHQgICAgIHR4X2RhdGEtXHUwMDNlaWVsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBhbmQgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24sIGV4cG9ydGVkIGZyb20gdGhlIGBjZmc4MDIxMWAgY29yZS4gVGhhdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIHN0YWNrLCBvYnZpb3VzbHkuIEkgYWxzbyBzZWUgYE1BQzgwMjExX0hXU0lNYCBtZW50aW9uZWQg4oCTIHRoYXQmIzM5O3MgdGhlIGhhcmR3YXJlIHNpbXVsYXRvciBmb3IgdGVzdGluZywgYW5kIGEgaGFuZHkgdG9vbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgd2UgKm5lZWQqIGBNQUM4MDIxMV9IV1NJTWAsIGFsdGhvdWdoIHRoZSBmb2N1cyBpcyByZWFsbHkgdGhlIGBDRkc4MDIxMWAgY29yZS4gQnV0IHdhaXQsIGBNQUM4MDIxMV9IV1NJTWAgaXMgYSAqZHJpdmVyKiwgcmlnaHQ/IFNvLCBpbmNsdWRpbmcgaXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIG1vdmUgZm9yIGVuc3VyaW5nIGNvbXByZWhlbnNpdmUgdGVzdGFiaWxpdHkgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLiBSZWFsbHksIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWAgdG9nZXRoZXIgYXJlIHRoZSBpbXBvcnRhbnQgYnVpbGRpbmcgYmxvY2tzLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEkmIzM5O20gZm9jdXNpbmcgb24gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAsIGFuZCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgIGJlY2F1c2UgaXQgY2FsbHMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBMZXQmIzM5O3MgY2xhcmlmeSBpZiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgc3RhdGljIGludGVybmFsbHkuIEFoLCB5ZXMsIGl0IGlzLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgaXMgZXhwb3J0ZWQuIE5vdywgd2hhdCBhYm91dCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgPyBJcyBpdCBzdGF0aWMgb3IgZXhwb3J0ZWQ/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jPTI0Nzg9c3RhdGljIHZvaWRcbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3OTpjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDgwLVx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhICp0eF9kYXRhLFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MzIxMT1jZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNDItXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjMyNDM6XHRjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSh3aXBoeSwgXHUwMDI2aW5mb3JtX2RhdGEsIHJlcywgZ2ZwKTtcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzI0NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdGhlIEV4cG9ydCBTdGF0dXMgb2YgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGZ1bmN0aW9uLCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gSXQmIzM5O3Mgb25lIG9mIHRob3NlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBhbmQgbmV0d29ya2luZyBwaWVjZXMuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIHJhdHRsaW5nIGFyb3VuZCBpbiBteSBoZWFkIGlzOiBpcyBpdCBleHBvcnRlZD8gU3BlY2lmaWNhbGx5LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCogZnJvbSB3aGF0ZXZlciBtb2R1bGUgaXQgcmVzaWRlcyBpbj8gVGhhdCYjMzk7cyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgbWVhbnMgZXZlcnl0aGluZy4gSXQgZGljdGF0ZXMgaG93IGVhc3kgaXQgaXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGZ1bmN0aW9uIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLCBpZiBJIG5lZWQgdG8uIElmIGl0JiMzOTtzIGV4cG9ydGVkLCB0aGVuIEkgY2FuIGNhbGwgaXQgZGlyZWN0bHkgYW5kIGdldCBhY2Nlc3MgdG8gaXRzIGNhcGFiaWxpdGllcy4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHdheXMgdG8gdXNlIGl0LiBLbm93aW5nIGl0cyBleHBvcnQgc3RhdHVzIGdpdmVzIG1lIHRoZSBmb3VuZGF0aW9uIHRvIGRldGVybWluZSBob3cgZmxleGlibGUgbXkgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGNhbiBiZS4gSXQgc2hhcGVzIG15IGVudGlyZSBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIGFuZCB1dGlsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBrbm93IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MzIxMD1zdHJ1Y3QgY2ZnODAyMTFfYnNzICpcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzIxMTpjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzIxMi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX2luZm9ybV9ic3MgKmRhdGEsXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQ4LX1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0OTpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YSk7XG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNTAtXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjUyPWNmZzgwMjExX2luZm9ybV9ic3NfZnJhbWVfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMzMyNS1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzMyNjpcdHJldHVybiBjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEod2lwaHksIGRhdGEsIGZ0eXBlLFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMzI3LVx0XHRcdFx0XHRic3NpZCwgdHNmLCBjYXBhYmlsaXR5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUJTU0lEIFBhcnNpbmcgRml4KioKCk9rYXksIHNvIGBjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGFgIGlzIGV4cG9ydGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBhIGZldyBmdW5jdGlvbnM6IGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAgaXMgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGhlcmUuIEl0JiMzOTtzIHRyaWdnZXJlZCB3aXRoIGV2ZXJ5IEJTUyBkaXNjb3ZlcnksIGR1cmluZyBhIHNjYW4sIHNvIGl0IG1pZ2h0IGhhdmUgYSBtb2RlcmF0ZSBpbXBhY3QsIGJ1dCBwcm9iYWJseSBpc24mIzM5O3QgdGhlIHByaW1hcnkgYXJlYSBvZiBjb25jZXJuLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgYXJlIGxpa2VseSB0byBiZSBtb3JlIGludGVyZXN0aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB3aGF0IGNvbmZpZ3MgYXJlIG5lZWRlZDsgYENGRzgwMjExYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBJIGNhbiBhbHNvIHVzZSBgTUFDODAyMTFfSFdTSU1gIGZvciBlZmZlY3RpdmUgc29mdHdhcmUtYmFzZWQgd2lyZWxlc3MgdGVzdGluZy4gSSBzaG91bGQgdmVyaWZ5IHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgbmFtZSBhbmQgY29uZmlybSBpdCYjMzk7cyBlbmFibGVkLgoKTm93LCBhIHF1aWNrIGNoZWNrOiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIGFzIEkgc3VzcGVjdGVkLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIGEgYnVnIGluIGhvdyBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyBhcmUgcGFyc2VkIGZyb20gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCByZXZpc2VzIGhvdyBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYXJlIGl0ZXJhdGVkLCBtb2RpZnlpbmcgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIGFuZCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAuIFRoaXMgaXMgY2xlYXJseSByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYywgdnVsbmVyYWJsZSB0byBjcmFmdGVkIG1hbmFnZW1lbnQgZnJhbWVzIChiZWFjb25zIG9yIHByb2JlIHJlc3BvbnNlcykgY29udGFpbmluZyBtYWxpY2lvdXMgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGhhcyBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucywgYW5kIEkgbmVlZCB0byBwcmlvcml0aXplIGl0IGZvciBmdXp6aW5nLgoKTXkgbGlzdCBvZiBlc3NlbnRpYWwgY29uZmlncyBhbmQgc3ltYm9scyBpcyBjb25maXJtZWQ6CgpDb25maWdzOgpgQ0ZHODAyMTFgCmBNQUM4MDIxMWAKYE1BQzgwMjExX0hXU0lNYAoKRm9jdXMgc3ltYm9sczoKYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gCmBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYApgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6MTpvYmotJChDT05GSUdfTUFDODAyMTFfSFdTSU0pXHQmIzQzOz0gbWFjODAyMTFfaHdzaW0ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcdFx0JiM0Mzs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoxMDojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yMTc9c3RydWN0IGh3c2ltX3R4X3JhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzE6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTOiBVc2UgUlRTL0NUUyBleGNoYW5nZSBmb3IgdGhpcyByYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlx0VGhpcyBpcyBzZXQgaWYgdGhlIGN1cnJlbnQgQlNTIHJlcXVpcmVzIEVSUCBwcm90ZWN0aW9uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM2OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTOiBWSFQgTUNTIHJhdGUsIGluIHRoaXMgY2FzZSB0aGUgaWR4IGZpZWxkIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTEQ6IEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmF0ZSBzaG91bGQgYmUgdXNlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlx0aW4gR3JlZW5maWVsZCBtb2RlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgaWYgdGhlIENoYW5uZWwgV2lkdGggc2hvdWxkIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXHQ0MCBNSHouXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg6IEluZGljYXRlcyA4MCBNSHogdHJhbnNtaXNzaW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcdCg4MCYjNDM7ODAgaXNuJiMzOTt0IHN1cHBvcnRlZCB5ZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ2LSAqXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcdE5MODAyMTFfQ0hBTl9IVDQwTUlOVVMgb3IgTkw4MDIxMV9DSEFOX0hUNDBQTFVTLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXHRyYXRlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1x0XHQ9IEJJVCgwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcdFx0PSBCSVQoMSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0Olx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFXHQ9IEJJVCgyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU2LVx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1NcdFx0XHQ9IEJJVCgzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFx0XHQ9IEJJVCg0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEhcdFx0PSBCSVQoNSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYwOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcdFx0PSBCSVQoNiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcdFx0PSBCSVQoNyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DU1x0XHRcdD0gQklUKDgpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFx0XHQ9IEJJVCg5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIXHRcdD0gQklUKDEwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTE6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg9MTY1PXZvaWQgaWVlZTgwMjExX2h3c2ltX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTY4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0lfSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTgtc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU2OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTcxOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzQtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzc6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzgtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgwLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19EVVBfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODU6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Ni1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfODBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg5Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg3LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ4ODpcdFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg5LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ5Mj1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDg6XHRXQVJOX09OKGkgIT0gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjEyPXN0YXRpYyBjb25zdCB1OCBpZnR5cGVzX2V4dF9jYXBhX2FwW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MjE6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MzQtXHRcdFx0XHQgICAgSUVFRTgwMjExX0VNTF9DQVBfRU1MTVJfU1VQUE9SVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XHRcdC5tbGRfY2FwYV9hbmRfb3BzID0gTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwODQ6XHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA4NS1cdC52ZXJzaW9uID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDAyPXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTE6LyogTUFDODAyMTFfSFdTSU0gdmlydGlvIGRldmljZSBpZCB0YWJsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTM6XHR7IFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTSwgVklSVElPX0RFVl9BTllfSUQgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXHR7IDAgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cdFx0bWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTIxNj12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9yeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cdGlmICgoc2xvdCAhPSBTTE9UXzI0R0haX0RXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoyNzQ6XHQgICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzUtXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzNi1cdFx0ICAgIChjZyA9PSBvd25fY2cgXHUwMDI2XHUwMDI2IGZyYW1lX2FtciBcdTAwM2UgY3Vycl9hbXIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjQzNzpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cdFx0XHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ2OC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NzAtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTYxMj1tYWM4MDIxMV9od3NpbV9uYW5fZXhlY19zdGF0ZV90cmFuc2l0aW9ucyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cdGlmIChkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI2Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI4LVx0XHQgZGF0YS1cdTAwM2VuYW4ubWFzdGVyX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNlPSAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzA6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXHRcdCBkYXRhLVx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNjIDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzNTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0MS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cdCAgICAhaHJ0aW1lcl9hY3RpdmUoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjYxLVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02OTU9bWFjODAyMTFfaHdzaW1fbmFuX3R4X2JlYWNvbihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cdG5hbl9hdHRyLmxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihtYXN0ZXJfaW5kaWNhdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cdFx0bWFzdGVyX2luZGljYXRpb24ubWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTc3ND1tYWM4MDIxMV9od3NpbV9uYW5fc2xvdF90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXHRcdHR4X3N5bmNfYmVhY29uID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXHUwMDI2ZGF0YS1cdTAwM2VuYW4uc3RhdGVfbG9jaykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XHRcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODE6XHRcdCAgICBkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVx0XHRcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTkwOT1pbnQgbWFjODAyMTFfaHdzaW1fbmFuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVx0XHQvKiBTdGFydCBpbiB0aGUgXCYjMzQ7c2NhblwmIzM0OyBwaGFzZSBhbmQgc3RheSB0aGVyZSBmb3IgYSBsaXR0bGUgYml0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVx0XHRkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXHUwMDNlbWFzdGVyX3ByZWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkzMTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVx0XHRtZW1zZXQoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2Olx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVx0XHRyZXR1cm4gY2hhbm5lbC1cdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEzOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE5Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMDAKCQkJCQkJCW91dHB1dDogMjEzCgkJCQkJCQl0aG91Z2h0czogNDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBXaXJlbGVzcyBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBqdW1wcyBvdXQsIGFsb25nIHdpdGggYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZS4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlIG9mIHRoZSB0YXJnZXQgZnVuY3Rpb25zLiBJIHNlZSBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgLiBMZXQmIzM5O3MgY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBzdGF0aWMuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggbGltaXRzIGRpcmVjdCBleHRlcm5hbCBhY2Nlc3MuIFRoZW4sIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBpcyBleHBvcnRlZC4gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIGFwcGVhcnMgdG8gYmUgc3RhdGljIGFzIHdlbGwuCgpTbyB0aGUgbWFpbiBzeW1ib2xzIEkgc2hvdWxkIGZvY3VzIG9uIGFyZSBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYC4KCkhhbmcgb24sIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aGF0IEkmIzM5O20gc2VlaW5nIGZvciBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGlzIGl0IGBzdGF0aWMgaW5saW5lYCBvciBqdXN0IHN0YXRpYz8gT2ssIGl0JiMzOTtzIGBzdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKC4uLilgLCB0aGF0JiMzOTtzIGdvb2QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGZvciBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIHNlZS4uLkkgc2VlIGBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhYCBhbmQgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAuIFRoZXNlIG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGJ1dCBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSBhc2lkZSBmb3Igbm93LgoKR2l2ZW4gdGhhdCBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgSSB0aGluayBJIHNob3VsZCBiZSBnb29kLgoKUmlnaHQsIHRpbWUgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy4gVGhlIHBhdGNoIGlzIGFib3V0IGZpeGluZyBhIHBhcnNpbmcgaXNzdWUgcmVsYXRlZCB0byBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyB3aXRoaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBzZWVtcyB0aGUgZml4IGFsdGVycyB0aGUgcHJvZmlsZSBjb250aW51YXRpb24gaXRlcmF0aW9uIHZpYSBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgYW5kIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYC4gVGhpcyBpcyByZWFjaGFibGUgd2lyZWxlc3MgbG9naWMgYW5kLCBjcml0aWNhbGx5LCBpcyB0cmlnZ2VyZWQgYnkgY3JhZnRlZCBtYW5hZ2VtZW50IGZyYW1lcyDigJMgYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzIOKAkyB0aGF0IGNvbnRhaW4gbWFsaWNpb3VzIE1CU1NJRCBkYXRhLiBUaGF0IG1lYW5zIHdlIGNvdWxkIGhhdmUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBoZXJlLiBJdCYjMzk7cyBmdW5jdGlvbmFsLCBtZWFuaW5nIGl0IHNob3VsZCBiZSBlYXN5IHRvIGZ1enogYW5kIEkgd2lsbCBzZXQgdXAgc2V0LXJlc3VsdHMgZm9yIHRoaXMgbm93LgoKQ29uZmlnczoKYENGRzgwMjExYApgTUFDODAyMTFgCmBNQUM4MDIxMV9IV1NJTWAKCkZvY3VzIHN5bWJvbHM6CmBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYApgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAKYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21lcmdlX3Byb2ZpbGUmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIGluIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgaW50cm9kdWNlcyBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gY29ycmVjdGx5IGl0ZXJhdGUgb3ZlciBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYW5kIHVwZGF0ZXMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIHRvIHVzZSBpdC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgcHJvY2Vzc2luZyBtYWxpY2lvdXMgbWFuYWdlbWVudCBmcmFtZXMgKGUuZy4sIGJlYWNvbnMgb3IgcHJvYmUgcmVzcG9uc2VzKSBjb250YWluaW5nIGNyYWZ0ZWQgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTozNi4zNjgxNDk1MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDYyNTAyNjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjM2LjM2ODE1NjgzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNTA5NTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTI1NWFjMmZlNzA4ZjgzN2E0NjcxNzllNTI1ZTRhNjkxMTJiYzZjMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbkBAIC0yNDAzLDEyICsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudFxcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxcbi1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXFxuLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICpzdWJfZWxlbSlcXG4rc3RhdGljIGJvb2wgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbihjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqbWJzc2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKipzdWJfZWxlbSlcXG4ge1xcbi1cXHRjb25zdCB1OCAqbWJzc2lkX2VuZCA9IG1ic3NpZF9lbGVtLVxcdTAwM2VkYXRhICsgbWJzc2lkX2VsZW0tXFx1MDAzZWRhdGFsZW47XFxuK1xcdGNvbnN0IHU4ICptYnNzaWRfZW5kID0gKCptYnNzaWQpLVxcdTAwM2VkYXRhICsgKCptYnNzaWQpLVxcdTAwM2VkYXRhbGVuO1xcbiBcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9tYnNzaWQ7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcXG4gXFxuQEAgLTI0MjAsMzAgKzI0MTksMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlbGVtZW50XFxuIFxcdCAqIElmIGl0IGlzIG5vdCB0aGUgbGFzdCBzdWJlbGVtZW50IGluIGN1cnJlbnQgTUJTU0lEIElFIG9yIHRoZXJlIGlzbid0XFxuIFxcdCAqIGEgbmV4dCBNQlNTSUQgSUUgLSBwcm9maWxlIGlzIGNvbXBsZXRlLlxcbiBcXHQqL1xcbi1cXHRpZiAoKHN1Yl9lbGVtLVxcdTAwM2VkYXRhICsgc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4gXFx1MDAzYyBtYnNzaWRfZW5kIC0gMSkgfHxcXG4rXFx0aWYgKCgoKnN1Yl9lbGVtKS1cXHUwMDNlZGF0YSArICgqc3ViX2VsZW0pLVxcdTAwM2VkYXRhbGVuIFxcdTAwM2MgbWJzc2lkX2VuZCAtIDEpIHx8XFxuIFxcdCAgICAhbmV4dF9tYnNzaWQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gTlVMTCAqL1xcbitcXHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gZmFsc2UgdG8gc3RvcCBpdGVyYXRpb24gKi9cXG4gXFxuIFxcdGlmIChuZXh0X21ic3NpZC1cXHUwMDNlZGF0YWxlbiBcXHUwMDNjIDQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRuZXh0X3N1YiA9ICh2b2lkICopXFx1MDAyNm5leHRfbWJzc2lkLVxcdTAwM2VkYXRhWzFdO1xcbiBcXG4gXFx0aWYgKG5leHRfbWJzc2lkLVxcdTAwM2VkYXRhICsgbmV4dF9tYnNzaWQtXFx1MDAzZWRhdGFsZW4gXFx1MDAzY1xcbiBcXHQgICAgbmV4dF9zdWItXFx1MDAzZWRhdGEgKyBuZXh0X3N1Yi1cXHUwMDNlZGF0YWxlbilcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChuZXh0X3N1Yi1cXHUwMDNlaWQgIT0gMCB8fCBuZXh0X3N1Yi1cXHUwMDNlZGF0YWxlbiBcXHUwMDNjIDIpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBDaGVjayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbmV4dCBzdWIgZWxlbWVudCBpcyBhIHN0YXJ0XFxuIFxcdCAqIG9mIGEgbmV3IHByb2ZpbGVcXG4gXFx0ICovXFxuLVxcdHJldHVybiBuZXh0X3N1Yi1cXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cXG4tXFx0ICAgICAgIE5VTEwgOiBuZXh0X21ic3NpZDtcXG4rXFx0aWYgKG5leHRfc3ViLVxcdTAwM2VkYXRhWzBdID09IFdMQU5fRUlEX05PTl9UWF9CU1NJRF9DQVApXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdCptYnNzaWQgPSBuZXh0X21ic3NpZDtcXG4rXFx0KnN1Yl9lbGVtID0gbmV4dF9zdWI7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG5AQCAtMjQ1MiwyNiArMjQ1NSwyMCBAQCBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG4gXFx0XFx0XFx0ICAgICAgdTggKm1lcmdlZF9pZSwgc2l6ZV90IG1heF9jb3B5X2xlbilcXG4ge1xcbiBcXHRzaXplX3QgY29waWVkX2xlbiA9IHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuO1xcbi1cXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9tYnNzaWQ7XFxuIFxcbiBcXHRpZiAoc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4gXFx1MDAzZSBtYXhfY29weV9sZW4pXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bWVtY3B5KG1lcmdlZF9pZSwgc3ViX2VsZW0tXFx1MDAzZWRhdGEsIHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuKTtcXG4gXFxuLVxcdHdoaWxlICgobmV4dF9tYnNzaWQgPSBjZmc4MDIxMV9nZXRfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRtYnNzaWRfZWxlbSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3ViX2VsZW0pKSkge1xcbi1cXHRcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9zdWIgPSAodm9pZCAqKVxcdTAwMjZuZXh0X21ic3NpZC1cXHUwMDNlZGF0YVsxXTtcXG4tXFxuLVxcdFxcdGlmIChjb3BpZWRfbGVuICsgbmV4dF9zdWItXFx1MDAzZWRhdGFsZW4gXFx1MDAzZSBtYXhfY29weV9sZW4pXFxuK1xcdHdoaWxlIChjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2bWJzc2lkX2VsZW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNnN1Yl9lbGVtKSkge1xcbitcXHRcXHRpZiAoY29waWVkX2xlbiArIHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuIFxcdTAwM2UgbWF4X2NvcHlfbGVuKVxcbiBcXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIG5leHRfc3ViLVxcdTAwM2VkYXRhLFxcbi1cXHRcXHQgICAgICAgbmV4dF9zdWItXFx1MDAzZWRhdGFsZW4pO1xcbi1cXHRcXHRjb3BpZWRfbGVuICs9IG5leHRfc3ViLVxcdTAwM2VkYXRhbGVuO1xcbi1cXG4tXFx0XFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcXG4tXFx0XFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcXG4rXFx0XFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIHN1Yl9lbGVtLVxcdTAwM2VkYXRhLFxcbitcXHRcXHQgICAgICAgc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4pO1xcbitcXHRcXHRjb3BpZWRfbGVuICs9IHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gY29waWVkX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6MzYuOTIyNDk2MzYxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA3MDY2OTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI1NWFjMmZlNzA4ZjgzN2E0NjcxNzllNTI1ZTRhNjkxMTJiYzZjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDIzOjE1OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NjYW4uYyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmNcbisrKyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbkBAIC0yNDAzLDEyICsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKm1ic3NpZF9lbGVtLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKVxuK3N0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sXG4rXHRcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqKm1ic3NpZCxcbitcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqc3ViX2VsZW0pXG4ge1xuLVx0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSBtYnNzaWRfZWxlbS1cdTAwM2VkYXRhICsgbWJzc2lkX2VsZW0tXHUwMDNlZGF0YWxlbjtcbitcdGNvbnN0IHU4ICptYnNzaWRfZW5kID0gKCptYnNzaWQpLVx1MDAzZWRhdGEgKyAoKm1ic3NpZCktXHUwMDNlZGF0YWxlbjtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcbiBcbkBAIC0yNDIwLDMwICsyNDE5LDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudFxuIFx0ICogSWYgaXQgaXMgbm90IHRoZSBsYXN0IHN1YmVsZW1lbnQgaW4gY3VycmVudCBNQlNTSUQgSUUgb3IgdGhlcmUgaXNuJ3RcbiBcdCAqIGEgbmV4dCBNQlNTSUQgSUUgLSBwcm9maWxlIGlzIGNvbXBsZXRlLlxuIFx0Ki9cbi1cdGlmICgoc3ViX2VsZW0tXHUwMDNlZGF0YSArIHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNjIG1ic3NpZF9lbmQgLSAxKSB8fFxuK1x0aWYgKCgoKnN1Yl9lbGVtKS1cdTAwM2VkYXRhICsgKCpzdWJfZWxlbSktXHUwMDNlZGF0YWxlbiBcdTAwM2MgbWJzc2lkX2VuZCAtIDEpIHx8XG4gXHQgICAgIW5leHRfbWJzc2lkKVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0LyogRm9yIGFueSBsZW5ndGggZXJyb3IsIGp1c3QgcmV0dXJuIE5VTEwgKi9cbitcdC8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBmYWxzZSB0byBzdG9wIGl0ZXJhdGlvbiAqL1xuIFxuIFx0aWYgKG5leHRfbWJzc2lkLVx1MDAzZWRhdGFsZW4gXHUwMDNjIDQpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRuZXh0X3N1YiA9ICh2b2lkICopXHUwMDI2bmV4dF9tYnNzaWQtXHUwMDNlZGF0YVsxXTtcbiBcbiBcdGlmIChuZXh0X21ic3NpZC1cdTAwM2VkYXRhICsgbmV4dF9tYnNzaWQtXHUwMDNlZGF0YWxlbiBcdTAwM2NcbiBcdCAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhICsgbmV4dF9zdWItXHUwMDNlZGF0YWxlbilcbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChuZXh0X3N1Yi1cdTAwM2VpZCAhPSAwIHx8IG5leHRfc3ViLVx1MDAzZWRhdGFsZW4gXHUwMDNjIDIpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHQvKlxuIFx0ICogQ2hlY2sgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIG5leHQgc3ViIGVsZW1lbnQgaXMgYSBzdGFydFxuIFx0ICogb2YgYSBuZXcgcHJvZmlsZVxuIFx0ICovXG4tXHRyZXR1cm4gbmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cbi1cdCAgICAgICBOVUxMIDogbmV4dF9tYnNzaWQ7XG4rXHRpZiAobmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHQqbWJzc2lkID0gbmV4dF9tYnNzaWQ7XG4rXHQqc3ViX2VsZW0gPSBuZXh0X3N1YjtcbitcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbkBAIC0yNDUyLDI2ICsyNDU1LDIwIEBAIHNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuIFx0XHRcdCAgICAgIHU4ICptZXJnZWRfaWUsIHNpemVfdCBtYXhfY29weV9sZW4pXG4ge1xuIFx0c2l6ZV90IGNvcGllZF9sZW4gPSBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkO1xuIFxuIFx0aWYgKHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNlIG1heF9jb3B5X2xlbilcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRtZW1jcHkobWVyZ2VkX2llLCBzdWJfZWxlbS1cdTAwM2VkYXRhLCBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbiBcbi1cdHdoaWxlICgobmV4dF9tYnNzaWQgPSBjZmc4MDIxMV9nZXRfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuLVx0XHRcdFx0XHRcdFx0XHRtYnNzaWRfZWxlbSxcbi1cdFx0XHRcdFx0XHRcdFx0c3ViX2VsZW0pKSkge1xuLVx0XHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9zdWIgPSAodm9pZCAqKVx1MDAyNm5leHRfbWJzc2lkLVx1MDAzZWRhdGFbMV07XG4tXG4tXHRcdGlmIChjb3BpZWRfbGVuICsgbmV4dF9zdWItXHUwMDNlZGF0YWxlbiBcdTAwM2UgbWF4X2NvcHlfbGVuKVxuK1x0d2hpbGUgKGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuK1x0XHRcdFx0XHRcdCAgXHUwMDI2bWJzc2lkX2VsZW0sXG4rXHRcdFx0XHRcdFx0ICBcdTAwMjZzdWJfZWxlbSkpIHtcbitcdFx0aWYgKGNvcGllZF9sZW4gKyBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4gXHRcdFx0YnJlYWs7XG4tXHRcdG1lbWNweShtZXJnZWRfaWUgKyBjb3BpZWRfbGVuLCBuZXh0X3N1Yi1cdTAwM2VkYXRhLFxuLVx0XHQgICAgICAgbmV4dF9zdWItXHUwMDNlZGF0YWxlbik7XG4tXHRcdGNvcGllZF9sZW4gKz0gbmV4dF9zdWItXHUwMDNlZGF0YWxlbjtcbi1cbi1cdFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcbi1cdFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcbitcdFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIHN1Yl9lbGVtLVx1MDAzZWRhdGEsXG4rXHRcdCAgICAgICBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbitcdFx0Y29waWVkX2xlbiArPSBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGNvcGllZF9sZW47XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTozNi45MjI0OTc3MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQwMzgzNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFN0YWNrIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCB0aGUgZm9jdXMgaXMgb24gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBUaGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGEgbmFtZSBjaGFuZ2UsIGZyb20gYGNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLiBGdW5jdGlvbmFsbHksIHRoaXMgbGlrZWx5IGluZGljYXRlcyBhbiBpdGVyYXRpb24gaXMgcmVwbGFjaW5nIGEgc2ltcGxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBwcm9maWxlcy4gVGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbiBoYXMgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gdXRpbGl6ZSB0aGlzIG5ldyBpdGVyYXRvci4gVGhpcyBjbGVhcmx5IGZhbGxzIHdpdGhpbiB0aGUgcmVhbG0gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIG1hYzgwMjExL2NmZzgwMjExIGNvbXBvbmVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgSSB3b3VsZCBleHBlY3QgdGhpcyB0byBiZSBzb21ldGhpbmcgZnV6emVkIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSdsbCBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHZlcmlmeSBhIGZldyB0aGluZ3MuIEZpcnN0LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGZhbGxzIHVuZGVyIHRoZSBgY2ZnODAyMTFgIHVtYnJlbGxhLCBzbyB0aGUgYENGRzgwMjExYCBjb25maWcgb3B0aW9uIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkLiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvTWFrZWZpbGVgIHRvIGNvcnJvYm9yYXRlIHRoYXQgdGhpcyBpcyB0aGUgY29ycmVjdCBkZXBlbmRlbmN5LiBUaGlzIHF1aWNrIHZlcmlmaWNhdGlvbiB3aWxsIGVuc3VyZSBJIGNhbiByZXByb2R1Y2UgYW5kIGFuYWx5emUgdGhpcyBjb2RlIGNvcnJlY3RseSB3aXRoaW4gbXkgdGVzdCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0MS43NjI4ODU5OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNDA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NhblxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTAtY2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0MS44MjMyMzMxNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwODI3ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gd2lyZWxlc3MgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFNlZW1zIGxpa2UgYENGRzgwMjExYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gYXJlYS4gV2FpdCwgSSByZW1lbWJlciBub3csIGBjZmc4MDIxMS15YCBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBNYWtlZmlsZSBpbiBgbmV0L3dpcmVsZXNzYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcy4gTGV0J3MgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjQ0LjUwNDA2MzExNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM4Mzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgKz0gY2ZnODAyMTEub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICs9IHRlc3RzL1xcbi0tXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICs9IG1pY2hhZWwtbWljLm8gcG1zci5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSArPSBvZi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSArPSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE3LVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICs9IHNoaXBwZWQtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgKz0gZXh0cmEtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0NC41NjA0NTIyOTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA4ODg0MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYENPTkZJR19DRkc4MDIxMWAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBjb25maWcsIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IG5vdyBJJ20gd29uZGVyaW5nLCBkbyB3ZSBoYXZlIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyIGZvciBNdWx0aS1CU1NJRCBvciBmb3Igc3BlY2lmaWMgc2Nhbm5pbmcgYmVoYXZpb3JzPyBJdCdzIGEgY29tbW9uIHF1ZXN0aW9uIHdoZW4gdHVuaW5nIG9yIGRlYnVnZ2luZy4gSSBjYW4ndCBpbW1lZGlhdGVseSByZWNhbGwgYSBzcGVjaWZpYyBjb25maWcgb3B0aW9uIGp1bXBpbmcgdG8gbWluZC5cblxuQWxyaWdodCwgdGltZSB0byBkaWcuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBhcm91bmQgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBlc3BlY2lhbGx5IG5lYXIgdGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIGEgbG90IG9mIHRoZSBzY2FubmluZyBsb2dpYyBhbmQgcHJvZmlsZSBtYW5hZ2VtZW50IGhhcHBlbnMsIHNvIGl04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCBmb3IgYW55IE1CU1NJRC1yZWxhdGVkIGhvb2tzIG9yIHNjYW4tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBIb3BlZnVsbHksIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzZXR0aW5ncyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDIzMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjQ3LjQ2OTMzODcyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAxNjc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9tZXJnZV9wcm9maWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0yNDA2PXN0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI0NTEtXFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNDUyOnNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1My1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI0NzUtfVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3NjpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX21lcmdlX3Byb2ZpbGUpO1xcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ3Ny1cXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MjQ3OT1jZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNTQzLVxcdFxcdFxcdG1lbXNldChwcm9maWxlLCAwLCB0eF9kYXRhLVxcdTAwM2VpZWxlbik7XFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNTQ0OlxcdFxcdFxcdHByb2ZpbGVfbGVuID0gY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSh0eF9kYXRhLVxcdTAwM2VpZSxcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI1NDUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB0eF9kYXRhLVxcdTAwM2VpZWxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NDcuNTI1MzU5ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1NDgwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBUZXN0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24sIGV4cG9ydGVkIGZyb20gdGhlIGBjZmc4MDIxMWAgY29yZS4gVGhhdCdzIGEga2V5IHBhcnQgb2YgdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gc3RhY2ssIG9idmlvdXNseS4gSSBhbHNvIHNlZSBgTUFDODAyMTFfSFdTSU1gIG1lbnRpb25lZCDigJMgdGhhdCdzIHRoZSBoYXJkd2FyZSBzaW11bGF0b3IgZm9yIHRlc3RpbmcsIGFuZCBhIGhhbmR5IHRvb2wuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHdlICpuZWVkKiBgTUFDODAyMTFfSFdTSU1gLCBhbHRob3VnaCB0aGUgZm9jdXMgaXMgcmVhbGx5IHRoZSBgQ0ZHODAyMTFgIGNvcmUuIEJ1dCB3YWl0LCBgTUFDODAyMTFfSFdTSU1gIGlzIGEgKmRyaXZlciosIHJpZ2h0PyBTbywgaW5jbHVkaW5nIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBtb3ZlIGZvciBlbnN1cmluZyBjb21wcmVoZW5zaXZlIHRlc3RhYmlsaXR5IG9mIHRoZSB3aXJlbGVzcyBzdGFjay4gUmVhbGx5LCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgIHRvZ2V0aGVyIGFyZSB0aGUgaW1wb3J0YW50IGJ1aWxkaW5nIGJsb2Nrcy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gSSdtIGZvY3VzaW5nIG9uIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYCBiZWNhdXNlIGl0IGNhbGxzIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYC4gTGV0J3MgY2xhcmlmeSBpZiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgc3RhdGljIGludGVybmFsbHkuIEFoLCB5ZXMsIGl0IGlzLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgaXMgZXhwb3J0ZWQuIE5vdywgd2hhdCBhYm91dCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgPyBJcyBpdCBzdGF0aWMgb3IgZXhwb3J0ZWQ/IEknbGwgbmVlZCB0byBjaGVjayB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo1Mi44MjA4NDE4MTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTMwNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0yNDc4PXN0YXRpYyB2b2lkXFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNDc5OmNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDgwLVxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhICp0eF9kYXRhLFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjExPWNmZzgwMjExX2luZm9ybV9ic3NfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQyLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0MzpcXHRjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSh3aXBoeSwgXFx1MDAyNmluZm9ybV9kYXRhLCByZXMsIGdmcCk7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQ0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo1Mi44ODM4MDEwNTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTM4MjA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRXhwb3J0IFN0YXR1cyBvZiBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGZ1bmN0aW9uLCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gSXQncyBvbmUgb2YgdGhvc2UgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGFuZCBuZXR3b3JraW5nIHBpZWNlcy4gVGhlIHF1ZXN0aW9uIHRoYXQncyByYXR0bGluZyBhcm91bmQgaW4gbXkgaGVhZCBpczogaXMgaXQgZXhwb3J0ZWQ/IFNwZWNpZmljYWxseSwgaXMgdGhpcyBmdW5jdGlvbiAqZXhwb3J0ZWQqIGZyb20gd2hhdGV2ZXIgbW9kdWxlIGl0IHJlc2lkZXMgaW4/IFRoYXQncyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQncyBleHBvcnRlZCBtZWFucyBldmVyeXRoaW5nLiBJdCBkaWN0YXRlcyBob3cgZWFzeSBpdCBpcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZnVuY3Rpb24gZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUsIGlmIEkgbmVlZCB0by4gSWYgaXQncyBleHBvcnRlZCwgdGhlbiBJIGNhbiBjYWxsIGl0IGRpcmVjdGx5IGFuZCBnZXQgYWNjZXNzIHRvIGl0cyBjYXBhYmlsaXRpZXMuIElmIGl0J3Mgbm90IGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHdheXMgdG8gdXNlIGl0LiBLbm93aW5nIGl0cyBleHBvcnQgc3RhdHVzIGdpdmVzIG1lIHRoZSBmb3VuZGF0aW9uIHRvIGRldGVybWluZSBob3cgZmxleGlibGUgbXkgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGNhbiBiZS4gSXQgc2hhcGVzIG15IGVudGlyZSBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIGFuZCB1dGlsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBrbm93IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NTUuOTQ1MTg1NDg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0MzIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jPTMyMTA9c3RydWN0IGNmZzgwMjExX2JzcyAqXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozMjExOmNmZzgwMjExX2luZm9ybV9ic3NfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzIxMi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX2luZm9ybV9ic3MgKmRhdGEsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNDgtfVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0OTpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YSk7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjUwLVxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjUyPWNmZzgwMjExX2luZm9ybV9ic3NfZnJhbWVfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMzI1LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzMyNjpcXHRyZXR1cm4gY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhKHdpcGh5LCBkYXRhLCBmdHlwZSxcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMzMjctXFx0XFx0XFx0XFx0XFx0YnNzaWQsIHRzZiwgY2FwYWJpbGl0eSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NTYuMDAxOTMyOTY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTU0MDExNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQlNTSUQgUGFyc2luZyBGaXgqKlxuXG5Pa2F5LCBzbyBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYCBpcyBleHBvcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYSBmZXcgZnVuY3Rpb25zOiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCwgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuIEknbSB3b25kZXJpbmcgaWYgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAgaXMgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGhlcmUuIEl0J3MgdHJpZ2dlcmVkIHdpdGggZXZlcnkgQlNTIGRpc2NvdmVyeSwgZHVyaW5nIGEgc2Nhbiwgc28gaXQgbWlnaHQgaGF2ZSBhIG1vZGVyYXRlIGltcGFjdCwgYnV0IHByb2JhYmx5IGlzbid0IHRoZSBwcmltYXJ5IGFyZWEgb2YgY29uY2Vybi4gYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIGFuZCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgIGFyZSBsaWtlbHkgdG8gYmUgbW9yZSBpbnRlcmVzdGluZy5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkOyBgQ0ZHODAyMTFgIGlzIG9idmlvdXNseSBlc3NlbnRpYWwuIEkgY2FuIGFsc28gdXNlIGBNQUM4MDIxMV9IV1NJTWAgZm9yIGVmZmVjdGl2ZSBzb2Z0d2FyZS1iYXNlZCB3aXJlbGVzcyB0ZXN0aW5nLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCdzIHRoZSBjb3JyZWN0IG5hbWUgYW5kIGNvbmZpcm0gaXQncyBlbmFibGVkLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2s6IGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBpcyBkZWZpbmVkIGFzIHN0YXRpYywgYXMgSSBzdXNwZWN0ZWQuXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBob3cgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgYXJlIHBhcnNlZCBmcm9tIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgcmV2aXNlcyBob3cgcHJvZmlsZSBjb250aW51YXRpb25zIGFyZSBpdGVyYXRlZCwgbW9kaWZ5aW5nIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBhbmQgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBUaGlzIGlzIGNsZWFybHkgcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgbG9naWMsIHZ1bG5lcmFibGUgdG8gY3JhZnRlZCBtYW5hZ2VtZW50IGZyYW1lcyAoYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgbWFsaWNpb3VzIE1CU1NJRCBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBoYXMgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMsIGFuZCBJIG5lZWQgdG8gcHJpb3JpdGl6ZSBpdCBmb3IgZnV6emluZy5cblxuTXkgbGlzdCBvZiBlc3NlbnRpYWwgY29uZmlncyBhbmQgc3ltYm9scyBpcyBjb25maXJtZWQ6XG5cbkNvbmZpZ3M6XG5gQ0ZHODAyMTFgXG5gTUFDODAyMTFgXG5gTUFDODAyMTFfSFdTSU1gXG5cbkZvY3VzIHN5bWJvbHM6XG5gY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmBcbmBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYFxuYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYFxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE2OjAyLjYxNzMzNzE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDc0OTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcXHQrPSBtYWM4MDIxMV9od3NpbS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcXHRcXHQrPSBtYWM4MDIxMV9od3NpbV9tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDo5OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzMtICpcXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTOiBIVCByYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXFx0c3BsaXQgaW50byBhIGhpZ2hlciA0IGJpdHMgKE5zcykgYW5kIGxvd2VyIDQgYml0cyAoTUNTIG51bWJlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlxcdGluIEdyZWVuZmllbGQgbW9kZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXFx0NDAgTUh6LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ0LSAqXFx0KDgwKzgwIGlzbid0IHN1cHBvcnRlZCB5ZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0NTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE6IFRoZSBmcmFtZSBzaG91bGQgYmUgdHJhbnNtaXR0ZWQgb24gYm90aCBvZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ3LSAqXFx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0OS0gKlxcdHJhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjUxPWVudW0gaHdzaW1fdHhfcmF0ZV9mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1xcdFxcdD0gQklUKDApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUXFx0XFx0PSBCSVQoMSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcXHQ9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXFx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU3OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1xcdFxcdFxcdD0gQklUKDMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTERcXHRcXHQ9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU5OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFxcdFxcdD0gQklUKDUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcXHRcXHQ9IEJJVCg2KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJXFx0XFx0PSBCSVQoNyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXFx0XFx0XFx0PSBCSVQoOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCg5KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjY0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCgxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTMyOD1lbnVtIGh3c2ltX3JhdGVfaW5mb19hdHRyaWJ1dGVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjM0ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjEwOiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTI9c3RhdGljIHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpnZXRfaHdzaW1fZGF0YV9yZWZfZnJvbV9hZGRyKGNvbnN0IHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNzovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgaHdzaW1fbWNncnBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI4Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9ODY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAzLXN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpod3NpbV92cXNbSFdTSU1fTlVNX1ZRU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODQtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0ODg6XFx0XFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0OTI9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTA4OlxcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVxcdEZJRUxEX1BSRVBfQ09OU1QoSUVFRTgwMjExX01MRF9DQVBfT1BfVElEX1RPX0xJTktfTUFQX05FR19TVVBQLCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM0LVxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XFx0XFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDg0OlxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVxcdC52ZXJzaW9uID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDEzOlxcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXFx0eyAwIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cXHRcXHRtYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzMtXFx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcXHQgICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVxcdFxcdCAgICAoY2cgPT0gb3duX2NnIFxcdTAwMjZcXHUwMDI2IGZyYW1lX2FtciBcXHUwMDNlIGN1cnJfYW1yKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3OlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cXHRcXHRcXHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjUtXFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI5OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzEtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzZT0gMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMzOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzYyAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjQyOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cXHQgICAgIWhydGltZXJfYWN0aXZlKFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NTU6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gTkFOX1dBUk1VUF9EV1NUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy03NTAtXFx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cXHRcXHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODA3LVxcdFxcdHR4X3N5bmNfYmVhY29uID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwODpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgxMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTg2Nz1tYWM4MDIxMV9od3NpbV9uYW5fZGlzY292ZXJ5X2JlYWNvbl90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2ssIFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uc3RhdGVfbG9jaykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgwOlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcXHRcXHQgICAgZGF0YS1cXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVxcdFxcdFxcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyNi1cXHRcXHQvKiBTdGFydCBpbiB0aGUgXFxcInNjYW5cXFwiIHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyOC1cXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXFx1MDAzZW1hc3Rlcl9wcmVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVxcdFxcdG1lbXNldChcXHUwMDI2ZGF0YS1cXHUwMDNlbmFuLmN1cnJlbnRfYW1pLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2OlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVxcdFxcdHJldHVybiBjaGFubmVsLVxcdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjg6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX05BTl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTE6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxNzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0yMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTY6MDIuNzA4MDkyODI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxOTM3OTk3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBqdW1wcyBvdXQsIGFsb25nIHdpdGggYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlIHRhcmdldCBmdW5jdGlvbnMuIEkgc2VlIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuIExldCdzIGNvbmZpcm0gaWYgaXQncyBleHBvcnRlZCBvciBzdGF0aWMuIEl0J3Mgc3RhdGljLCB3aGljaCBsaW1pdHMgZGlyZWN0IGV4dGVybmFsIGFjY2Vzcy4gVGhlbiwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIGlzIGV4cG9ydGVkLiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgYXBwZWFycyB0byBiZSBzdGF0aWMgYXMgd2VsbC5cblxuU28gdGhlIG1haW4gc3ltYm9scyBJIHNob3VsZCBmb2N1cyBvbiBhcmUgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuXG5cbkhhbmcgb24sIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aGF0IEknbSBzZWVpbmcgZm9yIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgaXMgaXQgYHN0YXRpYyBpbmxpbmVgIG9yIGp1c3Qgc3RhdGljPyBPaywgaXQncyBgc3RhdGljIGJvb2wgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbiguLi4pYCwgdGhhdCdzIGdvb2QuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgZm9yIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uSSBzZWUgYGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGFgIGFuZCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gVGhlc2UgbWlnaHQgYWxzbyBiZSByZWxldmFudCwgYnV0IEknbSBnb2luZyB0byBzZXQgdGhlc2UgYXNpZGUgZm9yIG5vdy5cblxuR2l2ZW4gdGhhdCBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgSSB0aGluayBJIHNob3VsZCBiZSBnb29kLlxuXG5SaWdodCwgdGltZSB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIGEgcGFyc2luZyBpc3N1ZSByZWxhdGVkIHRvIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIHdpdGhpbiB3aXJlbGVzcyBzY2FuIHJlc3VsdHMuIEl0IHNlZW1zIHRoZSBmaXggYWx0ZXJzIHRoZSBwcm9maWxlIGNvbnRpbnVhdGlvbiBpdGVyYXRpb24gdmlhIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBhbmQgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBUaGlzIGlzIHJlYWNoYWJsZSB3aXJlbGVzcyBsb2dpYyBhbmQsIGNyaXRpY2FsbHksIGlzIHRyaWdnZXJlZCBieSBjcmFmdGVkIG1hbmFnZW1lbnQgZnJhbWVzIOKAkyBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMg4oCTIHRoYXQgY29udGFpbiBtYWxpY2lvdXMgTUJTU0lEIGRhdGEuIFRoYXQgbWVhbnMgd2UgY291bGQgaGF2ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGhlcmUuIEl0J3MgZnVuY3Rpb25hbCwgbWVhbmluZyBpdCBzaG91bGQgYmUgZWFzeSB0byBmdXp6IGFuZCBJIHdpbGwgc2V0IHVwIHNldC1yZXN1bHRzIGZvciB0aGlzIG5vdy5cblxuQ29uZmlnczpcbmBDRkc4MDIxMWBcbmBNQUM4MDIxMWBcbmBNQUM4MDIxMV9IV1NJTWBcblxuRm9jdXMgc3ltYm9sczpcbmBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYFxuYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgXG5gY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjAwLCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNjoxMC45MDE4OTQ3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMjY2ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25cIixcbiAgICBcImNmZzgwMjExX21lcmdlX3Byb2ZpbGVcIixcbiAgICBcImNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIGluIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgaW50cm9kdWNlcyBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gY29ycmVjdGx5IGl0ZXJhdGUgb3ZlciBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYW5kIHVwZGF0ZXMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIHRvIHVzZSBpdC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgcHJvY2Vzc2luZyBtYWxpY2lvdXMgbWFuYWdlbWVudCBmcmFtZXMgKGUuZy4sIGJlYWNvbnMgb3IgcHJvYmUgcmVzcG9uc2VzKSBjb250YWluaW5nIGNyYWZ0ZWQgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 22:59:41 +0000 UTC FinishedAt: 2026-07-15 23:16:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "edf69d8d-534e-40b3-9f53-1736c249aafc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_iter_profile_continuation", "cfg80211_merge_profile", "cfg80211_parse_mbssid_data" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbiYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9tZXJnZV9wcm9maWxlJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyBpbiB3aXJlbGVzcyBzY2FuIHJlc3VsdHMuIEl0IGludHJvZHVjZXMgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIHRvIGNvcnJlY3RseSBpdGVyYXRlIG92ZXIgcHJvZmlsZSBjb250aW51YXRpb25zIGFuZCB1cGRhdGVzIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCB0byB1c2UgaXQuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHByb2Nlc3NpbmcgbWFsaWNpb3VzIG1hbmFnZW1lbnQgZnJhbWVzIChlLmcuLCBiZWFjb25zIG9yIHByb2JlIHJlc3BvbnNlcykgY29udGFpbmluZyBjcmFmdGVkIE1CU1NJRCBpbmZvcm1hdGlvbiBlbGVtZW50cy4gSXQgaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyNTVhYzJmZTcwOGY4MzdhNDY3MTc5ZTUyNWU0YTY5MTEyYmM2YzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLmU2MmI3ZGQyYjdjMmQ4IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTI0MDMsMTIgJiM0MzsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKm1ic3NpZF9lbGVtLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKVxuJiM0MztzdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqbWJzc2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqc3ViX2VsZW0pXG4ge1xuLVx0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSBtYnNzaWRfZWxlbS1cdTAwM2VkYXRhICYjNDM7IG1ic3NpZF9lbGVtLVx1MDAzZWRhdGFsZW47XG4mIzQzO1x0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSAoKm1ic3NpZCktXHUwMDNlZGF0YSAmIzQzOyAoKm1ic3NpZCktXHUwMDNlZGF0YWxlbjtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcbiBcbkBAIC0yNDIwLDMwICYjNDM7MjQxOSwzNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbiBcdCAqIElmIGl0IGlzIG5vdCB0aGUgbGFzdCBzdWJlbGVtZW50IGluIGN1cnJlbnQgTUJTU0lEIElFIG9yIHRoZXJlIGlzbiYjMzk7dFxuIFx0ICogYSBuZXh0IE1CU1NJRCBJRSAtIHByb2ZpbGUgaXMgY29tcGxldGUuXG4gXHQqL1xuLVx0aWYgKChzdWJfZWxlbS1cdTAwM2VkYXRhICYjNDM7IHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNjIG1ic3NpZF9lbmQgLSAxKSB8fFxuJiM0MztcdGlmICgoKCpzdWJfZWxlbSktXHUwMDNlZGF0YSAmIzQzOyAoKnN1Yl9lbGVtKS1cdTAwM2VkYXRhbGVuIFx1MDAzYyBtYnNzaWRfZW5kIC0gMSkgfHxcbiBcdCAgICAhbmV4dF9tYnNzaWQpXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0LyogRm9yIGFueSBsZW5ndGggZXJyb3IsIGp1c3QgcmV0dXJuIE5VTEwgKi9cbiYjNDM7XHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gZmFsc2UgdG8gc3RvcCBpdGVyYXRpb24gKi9cbiBcbiBcdGlmIChuZXh0X21ic3NpZC1cdTAwM2VkYXRhbGVuIFx1MDAzYyA0KVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdG5leHRfc3ViID0gKHZvaWQgKilcdTAwMjZuZXh0X21ic3NpZC1cdTAwM2VkYXRhWzFdO1xuIFxuIFx0aWYgKG5leHRfbWJzc2lkLVx1MDAzZWRhdGEgJiM0MzsgbmV4dF9tYnNzaWQtXHUwMDNlZGF0YWxlbiBcdTAwM2NcbiBcdCAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhICYjNDM7IG5leHRfc3ViLVx1MDAzZWRhdGFsZW4pXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKG5leHRfc3ViLVx1MDAzZWlkICE9IDAgfHwgbmV4dF9zdWItXHUwMDNlZGF0YWxlbiBcdTAwM2MgMilcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHQvKlxuIFx0ICogQ2hlY2sgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIG5leHQgc3ViIGVsZW1lbnQgaXMgYSBzdGFydFxuIFx0ICogb2YgYSBuZXcgcHJvZmlsZVxuIFx0ICovXG4tXHRyZXR1cm4gbmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cbi1cdCAgICAgICBOVUxMIDogbmV4dF9tYnNzaWQ7XG4mIzQzO1x0aWYgKG5leHRfc3ViLVx1MDAzZWRhdGFbMF0gPT0gV0xBTl9FSURfTk9OX1RYX0JTU0lEX0NBUClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Km1ic3NpZCA9IG5leHRfbWJzc2lkO1xuJiM0MztcdCpzdWJfZWxlbSA9IG5leHRfc3ViO1xuJiM0MztcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbkBAIC0yNDUyLDI2ICYjNDM7MjQ1NSwyMCBAQCBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbiBcdFx0XHQgICAgICB1OCAqbWVyZ2VkX2llLCBzaXplX3QgbWF4X2NvcHlfbGVuKVxuIHtcbiBcdHNpemVfdCBjb3BpZWRfbGVuID0gc3ViX2VsZW0tXHUwMDNlZGF0YWxlbjtcbi1cdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcbiBcdGlmIChzdWJfZWxlbS1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0bWVtY3B5KG1lcmdlZF9pZSwgc3ViX2VsZW0tXHUwMDNlZGF0YSwgc3ViX2VsZW0tXHUwMDNlZGF0YWxlbik7XG4gXG4tXHR3aGlsZSAoKG5leHRfbWJzc2lkID0gY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbixcbi1cdFx0XHRcdFx0XHRcdFx0bWJzc2lkX2VsZW0sXG4tXHRcdFx0XHRcdFx0XHRcdHN1Yl9lbGVtKSkpIHtcbi1cdFx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfc3ViID0gKHZvaWQgKilcdTAwMjZuZXh0X21ic3NpZC1cdTAwM2VkYXRhWzFdO1xuLVxuLVx0XHRpZiAoY29waWVkX2xlbiAmIzQzOyBuZXh0X3N1Yi1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4mIzQzO1x0d2hpbGUgKGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuJiM0MztcdFx0XHRcdFx0XHQgIFx1MDAyNm1ic3NpZF9lbGVtLFxuJiM0MztcdFx0XHRcdFx0XHQgIFx1MDAyNnN1Yl9lbGVtKSkge1xuJiM0MztcdFx0aWYgKGNvcGllZF9sZW4gJiM0Mzsgc3ViX2VsZW0tXHUwMDNlZGF0YWxlbiBcdTAwM2UgbWF4X2NvcHlfbGVuKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRtZW1jcHkobWVyZ2VkX2llICYjNDM7IGNvcGllZF9sZW4sIG5leHRfc3ViLVx1MDAzZWRhdGEsXG4tXHRcdCAgICAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhbGVuKTtcbi1cdFx0Y29waWVkX2xlbiAmIzQzOz0gbmV4dF9zdWItXHUwMDNlZGF0YWxlbjtcbi1cbi1cdFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcbi1cdFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcbiYjNDM7XHRcdG1lbWNweShtZXJnZWRfaWUgJiM0MzsgY29waWVkX2xlbiwgc3ViX2VsZW0tXHUwMDNlZGF0YSxcbiYjNDM7XHRcdCAgICAgICBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbiYjNDM7XHRcdGNvcGllZF9sZW4gJiM0Mzs9IHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW47XG4gXHR9XG4gXG4gXHRyZXR1cm4gY29waWVkX2xlbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyNTVhYzJmZTcwOGY4MzdhNDY3MTc5ZTUyNWU0YTY5MTEyYmM2YzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zY2FuLmMgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCkBAIC0yNDAzLDEyICYjNDM7MjQwMywxMSBAQCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudAotKmNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbihjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sCi0JCQkJICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKQomIzQzO3N0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sCiYjNDM7CQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKiptYnNzaWQsCiYjNDM7CQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKipzdWJfZWxlbSkKIHsKLQljb25zdCB1OCAqbWJzc2lkX2VuZCA9IG1ic3NpZF9lbGVtLSZndDtkYXRhICYjNDM7IG1ic3NpZF9lbGVtLSZndDtkYXRhbGVuOwomIzQzOwljb25zdCB1OCAqbWJzc2lkX2VuZCA9ICgqbWJzc2lkKS0mZ3Q7ZGF0YSAmIzQzOyAoKm1ic3NpZCktJmd0O2RhdGFsZW47CiAJY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkOwogCWNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjsKIApAQCAtMjQyMCwzMCAmIzQzOzI0MTksMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlbGVtZW50CiAJICogSWYgaXQgaXMgbm90IHRoZSBsYXN0IHN1YmVsZW1lbnQgaW4gY3VycmVudCBNQlNTSUQgSUUgb3IgdGhlcmUgaXNuJiMzOTt0CiAJICogYSBuZXh0IE1CU1NJRCBJRSAtIHByb2ZpbGUgaXMgY29tcGxldGUuCiAJKi8KLQlpZiAoKHN1Yl9lbGVtLSZndDtkYXRhICYjNDM7IHN1Yl9lbGVtLSZndDtkYXRhbGVuICZsdDsgbWJzc2lkX2VuZCAtIDEpIHx8CiYjNDM7CWlmICgoKCpzdWJfZWxlbSktJmd0O2RhdGEgJiM0MzsgKCpzdWJfZWxlbSktJmd0O2RhdGFsZW4gJmx0OyBtYnNzaWRfZW5kIC0gMSkgfHwKIAkgICAgIW5leHRfbWJzc2lkKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAotCS8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBOVUxMICovCiYjNDM7CS8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBmYWxzZSB0byBzdG9wIGl0ZXJhdGlvbiAqLwogCiAJaWYgKG5leHRfbWJzc2lkLSZndDtkYXRhbGVuICZsdDsgNCkKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAKIAluZXh0X3N1YiA9ICh2b2lkICopJmFtcDtuZXh0X21ic3NpZC0mZ3Q7ZGF0YVsxXTsKIAogCWlmIChuZXh0X21ic3NpZC0mZ3Q7ZGF0YSAmIzQzOyBuZXh0X21ic3NpZC0mZ3Q7ZGF0YWxlbiAmbHQ7CiAJICAgIG5leHRfc3ViLSZndDtkYXRhICYjNDM7IG5leHRfc3ViLSZndDtkYXRhbGVuKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAogCWlmIChuZXh0X3N1Yi0mZ3Q7aWQgIT0gMCB8fCBuZXh0X3N1Yi0mZ3Q7ZGF0YWxlbiAmbHQ7IDIpCi0JCXJldHVybiBOVUxMOwomIzQzOwkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBDaGVjayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbmV4dCBzdWIgZWxlbWVudCBpcyBhIHN0YXJ0CiAJICogb2YgYSBuZXcgcHJvZmlsZQogCSAqLwotCXJldHVybiBuZXh0X3N1Yi0mZ3Q7ZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID8KLQkgICAgICAgTlVMTCA6IG5leHRfbWJzc2lkOwomIzQzOwlpZiAobmV4dF9zdWItJmd0O2RhdGFbMF0gPT0gV0xBTl9FSURfTk9OX1RYX0JTU0lEX0NBUCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJKm1ic3NpZCA9IG5leHRfbWJzc2lkOwomIzQzOwkqc3ViX2VsZW0gPSBuZXh0X3N1YjsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLApAQCAtMjQ1MiwyNiAmIzQzOzI0NTUsMjAgQEAgc2l6ZV90IGNmZzgwMjExX21lcmdlX3Byb2ZpbGUoY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sCiAJCQkgICAgICB1OCAqbWVyZ2VkX2llLCBzaXplX3QgbWF4X2NvcHlfbGVuKQogewogCXNpemVfdCBjb3BpZWRfbGVuID0gc3ViX2VsZW0tJmd0O2RhdGFsZW47Ci0JY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkOwogCiAJaWYgKHN1Yl9lbGVtLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQogCQlyZXR1cm4gMDsKIAogCW1lbWNweShtZXJnZWRfaWUsIHN1Yl9lbGVtLSZndDtkYXRhLCBzdWJfZWxlbS0mZ3Q7ZGF0YWxlbik7CiAKLQl3aGlsZSAoKG5leHRfbWJzc2lkID0gY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbiwKLQkJCQkJCQkJbWJzc2lkX2VsZW0sCi0JCQkJCQkJCXN1Yl9lbGVtKSkpIHsKLQkJY29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfc3ViID0gKHZvaWQgKikmYW1wO25leHRfbWJzc2lkLSZndDtkYXRhWzFdOwotCi0JCWlmIChjb3BpZWRfbGVuICYjNDM7IG5leHRfc3ViLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQomIzQzOwl3aGlsZSAoY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbihpZSwgaWVsZW4sCiYjNDM7CQkJCQkJICAmYW1wO21ic3NpZF9lbGVtLAomIzQzOwkJCQkJCSAgJmFtcDtzdWJfZWxlbSkpIHsKJiM0MzsJCWlmIChjb3BpZWRfbGVuICYjNDM7IHN1Yl9lbGVtLSZndDtkYXRhbGVuICZndDsgbWF4X2NvcHlfbGVuKQogCQkJYnJlYWs7Ci0JCW1lbWNweShtZXJnZWRfaWUgJiM0MzsgY29waWVkX2xlbiwgbmV4dF9zdWItJmd0O2RhdGEsCi0JCSAgICAgICBuZXh0X3N1Yi0mZ3Q7ZGF0YWxlbik7Ci0JCWNvcGllZF9sZW4gJiM0Mzs9IG5leHRfc3ViLSZndDtkYXRhbGVuOwotCi0JCW1ic3NpZF9lbGVtID0gbmV4dF9tYnNzaWQ7Ci0JCXN1Yl9lbGVtID0gbmV4dF9zdWI7CiYjNDM7CQltZW1jcHkobWVyZ2VkX2llICYjNDM7IGNvcGllZF9sZW4sIHN1Yl9lbGVtLSZndDtkYXRhLAomIzQzOwkJICAgICAgIHN1Yl9lbGVtLSZndDtkYXRhbGVuKTsKJiM0MzsJCWNvcGllZF9sZW4gJiM0Mzs9IHN1Yl9lbGVtLSZndDtkYXRhbGVuOwogCX0KIAogCXJldHVybiBjb3BpZWRfbGVuOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCB0aGUgZm9jdXMgaXMgb24gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBUaGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGEgbmFtZSBjaGFuZ2UsIGZyb20gYGNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLiBGdW5jdGlvbmFsbHksIHRoaXMgbGlrZWx5IGluZGljYXRlcyBhbiBpdGVyYXRpb24gaXMgcmVwbGFjaW5nIGEgc2ltcGxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBwcm9maWxlcy4gVGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbiBoYXMgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gdXRpbGl6ZSB0aGlzIG5ldyBpdGVyYXRvci4gVGhpcyBjbGVhcmx5IGZhbGxzIHdpdGhpbiB0aGUgcmVhbG0gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIG1hYzgwMjExL2NmZzgwMjExIGNvbXBvbmVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgSSB3b3VsZCBleHBlY3QgdGhpcyB0byBiZSBzb21ldGhpbmcgZnV6emVkIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSYjMzk7bGwga2VlcCBpbiBtaW5kIGZvciB0ZXN0aW5nLgoKTm93LCBiZWZvcmUgSSBkaWcgZGVlcGVyLCBJIG5lZWQgdG8gdmVyaWZ5IGEgZmV3IHRoaW5ncy4gRmlyc3QsIGxldCYjMzk7cyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGZhbGxzIHVuZGVyIHRoZSBgY2ZnODAyMTFgIHVtYnJlbGxhLCBzbyB0aGUgYENGRzgwMjExYCBjb25maWcgb3B0aW9uIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkLiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvTWFrZWZpbGVgIHRvIGNvcnJvYm9yYXRlIHRoYXQgdGhpcyBpcyB0aGUgY29ycmVjdCBkZXBlbmRlbmN5LiBUaGlzIHF1aWNrIHZlcmlmaWNhdGlvbiB3aWxsIGVuc3VyZSBJIGNhbiByZXByb2R1Y2UgYW5kIGFuYWx5emUgdGhpcyBjb2RlIGNvcnJlY3RseSB3aXRoaW4gbXkgdGVzdCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NhblxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgJiM0Mzs9IHdleHQtcHJpdi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZTo5OmNmZzgwMjExLXkgJiM0Mzs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xMC1jZmc4MDIxMS15ICYjNDM7PSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gd2lyZWxlc3MgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFNlZW1zIGxpa2UgYENGRzgwMjExYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gYXJlYS4gV2FpdCwgSSByZW1lbWJlciBub3csIGBjZmc4MDIxMS15YCBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBNYWtlZmlsZSBpbiBgbmV0L3dpcmVsZXNzYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgbG9naWMgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgJiM0Mzs9IGNmZzgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICYjNDM7PSB0ZXN0cy9cbi0tXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfV0VYVF9QUklWKSAmIzQzOz0gd2V4dC1wcml2Lm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS04LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSAmIzQzOz0gY29yZS5vIHN5c2ZzLm8gcmFkaW90YXAubyB1dGlsLm8gcmVnLm8gc2Nhbi5vIG5sODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEwOmNmZzgwMjExLXkgJiM0Mzs9IG1sbWUubyBpYnNzLm8gc21lLm8gY2hhbi5vIGV0aHRvb2wubyBtZXNoLm8gYXAubyB0cmFjZS5vIG9jYi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTE6Y2ZnODAyMTEteSAmIzQzOz0gbWljaGFlbC1taWMubyBwbXNyLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpjZmc4MDIxMS0kKENPTkZJR19PRikgJiM0Mzs9IG9mLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMzpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTQ6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfV0VYVCkgJiM0Mzs9IHdleHQtY29tcGF0Lm8gd2V4dC1zbWUub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE1LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTctXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTg6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTKSAmIzQzOz0gc2hpcHBlZC1jZXJ0cy5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTktaWZuZXEgKCQoQ09ORklHX0NGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUiksKVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgJiM0Mzs9IGV4dHJhLWNlcnRzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgc3RhcnRpbmcgd2l0aCBgQ09ORklHX0NGRzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBjb25maWcsIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IG5vdyBJJiMzOTttIHdvbmRlcmluZywgZG8gd2UgaGF2ZSBzb21ldGhpbmcgbW9yZSBncmFudWxhciBmb3IgTXVsdGktQlNTSUQgb3IgZm9yIHNwZWNpZmljIHNjYW5uaW5nIGJlaGF2aW9ycz8gSXQmIzM5O3MgYSBjb21tb24gcXVlc3Rpb24gd2hlbiB0dW5pbmcgb3IgZGVidWdnaW5nLiBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgYSBzcGVjaWZpYyBjb25maWcgb3B0aW9uIGp1bXBpbmcgdG8gbWluZC4KCkFscmlnaHQsIHRpbWUgdG8gZGlnLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIGxvb2sgYXJvdW5kIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCwgZXNwZWNpYWxseSBuZWFyIHRoZSBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlIHNjYW5uaW5nIGxvZ2ljIGFuZCBwcm9maWxlIG1hbmFnZW1lbnQgaGFwcGVucywgc28gaXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBodW50IGZvciBhbnkgTUJTU0lELXJlbGF0ZWQgaG9va3Mgb3Igc2Nhbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX21lcmdlX3Byb2ZpbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MjQwNj1zdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1MS1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ1MjpzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1My1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDc1LX1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3NjpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX21lcmdlX3Byb2ZpbGUpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDc3LVxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MjQ3OT1jZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMjU0My1cdFx0XHRtZW1zZXQocHJvZmlsZSwgMCwgdHhfZGF0YS1cdTAwM2VpZWxlbik7XG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjI1NDQ6XHRcdFx0cHJvZmlsZV9sZW4gPSBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKHR4X2RhdGEtXHUwMDNlaWUsXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI1NDUtXHRcdFx0XHRcdFx0XHQgICAgIHR4X2RhdGEtXHUwMDNlaWVsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBhbmQgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24sIGV4cG9ydGVkIGZyb20gdGhlIGBjZmc4MDIxMWAgY29yZS4gVGhhdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIHN0YWNrLCBvYnZpb3VzbHkuIEkgYWxzbyBzZWUgYE1BQzgwMjExX0hXU0lNYCBtZW50aW9uZWQg4oCTIHRoYXQmIzM5O3MgdGhlIGhhcmR3YXJlIHNpbXVsYXRvciBmb3IgdGVzdGluZywgYW5kIGEgaGFuZHkgdG9vbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgd2UgKm5lZWQqIGBNQUM4MDIxMV9IV1NJTWAsIGFsdGhvdWdoIHRoZSBmb2N1cyBpcyByZWFsbHkgdGhlIGBDRkc4MDIxMWAgY29yZS4gQnV0IHdhaXQsIGBNQUM4MDIxMV9IV1NJTWAgaXMgYSAqZHJpdmVyKiwgcmlnaHQ/IFNvLCBpbmNsdWRpbmcgaXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIG1vdmUgZm9yIGVuc3VyaW5nIGNvbXByZWhlbnNpdmUgdGVzdGFiaWxpdHkgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLiBSZWFsbHksIGBDRkc4MDIxMWAgYW5kIGBNQUM4MDIxMWAgdG9nZXRoZXIgYXJlIHRoZSBpbXBvcnRhbnQgYnVpbGRpbmcgYmxvY2tzLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIEkmIzM5O20gZm9jdXNpbmcgb24gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAsIGFuZCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgIGJlY2F1c2UgaXQgY2FsbHMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBMZXQmIzM5O3MgY2xhcmlmeSBpZiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgc3RhdGljIGludGVybmFsbHkuIEFoLCB5ZXMsIGl0IGlzLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgaXMgZXhwb3J0ZWQuIE5vdywgd2hhdCBhYm91dCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgPyBJcyBpdCBzdGF0aWMgb3IgZXhwb3J0ZWQ/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jPTI0Nzg9c3RhdGljIHZvaWRcbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3OTpjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDgwLVx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhICp0eF9kYXRhLFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MzIxMT1jZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNDItXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjMyNDM6XHRjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSh3aXBoeSwgXHUwMDI2aW5mb3JtX2RhdGEsIHJlcywgZ2ZwKTtcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzI0NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgdGhlIEV4cG9ydCBTdGF0dXMgb2YgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGZ1bmN0aW9uLCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gSXQmIzM5O3Mgb25lIG9mIHRob3NlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBhbmQgbmV0d29ya2luZyBwaWVjZXMuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIHJhdHRsaW5nIGFyb3VuZCBpbiBteSBoZWFkIGlzOiBpcyBpdCBleHBvcnRlZD8gU3BlY2lmaWNhbGx5LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCogZnJvbSB3aGF0ZXZlciBtb2R1bGUgaXQgcmVzaWRlcyBpbj8gVGhhdCYjMzk7cyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgbWVhbnMgZXZlcnl0aGluZy4gSXQgZGljdGF0ZXMgaG93IGVhc3kgaXQgaXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGZ1bmN0aW9uIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLCBpZiBJIG5lZWQgdG8uIElmIGl0JiMzOTtzIGV4cG9ydGVkLCB0aGVuIEkgY2FuIGNhbGwgaXQgZGlyZWN0bHkgYW5kIGdldCBhY2Nlc3MgdG8gaXRzIGNhcGFiaWxpdGllcy4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHdheXMgdG8gdXNlIGl0LiBLbm93aW5nIGl0cyBleHBvcnQgc3RhdHVzIGdpdmVzIG1lIHRoZSBmb3VuZGF0aW9uIHRvIGRldGVybWluZSBob3cgZmxleGlibGUgbXkgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGNhbiBiZS4gSXQgc2hhcGVzIG15IGVudGlyZSBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIGFuZCB1dGlsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBrbm93IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MzIxMD1zdHJ1Y3QgY2ZnODAyMTFfYnNzICpcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzIxMTpjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzIxMi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX2luZm9ybV9ic3MgKmRhdGEsXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQ4LX1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0OTpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YSk7XG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNTAtXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjUyPWNmZzgwMjExX2luZm9ybV9ic3NfZnJhbWVfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMzMyNS1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzMyNjpcdHJldHVybiBjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGEod2lwaHksIGRhdGEsIGZ0eXBlLFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMzI3LVx0XHRcdFx0XHRic3NpZCwgdHNmLCBjYXBhYmlsaXR5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjkyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUJTU0lEIFBhcnNpbmcgRml4KioKCk9rYXksIHNvIGBjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGFgIGlzIGV4cG9ydGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBhIGZldyBmdW5jdGlvbnM6IGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAgaXMgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGhlcmUuIEl0JiMzOTtzIHRyaWdnZXJlZCB3aXRoIGV2ZXJ5IEJTUyBkaXNjb3ZlcnksIGR1cmluZyBhIHNjYW4sIHNvIGl0IG1pZ2h0IGhhdmUgYSBtb2RlcmF0ZSBpbXBhY3QsIGJ1dCBwcm9iYWJseSBpc24mIzM5O3QgdGhlIHByaW1hcnkgYXJlYSBvZiBjb25jZXJuLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgYXJlIGxpa2VseSB0byBiZSBtb3JlIGludGVyZXN0aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB3aGF0IGNvbmZpZ3MgYXJlIG5lZWRlZDsgYENGRzgwMjExYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBJIGNhbiBhbHNvIHVzZSBgTUFDODAyMTFfSFdTSU1gIGZvciBlZmZlY3RpdmUgc29mdHdhcmUtYmFzZWQgd2lyZWxlc3MgdGVzdGluZy4gSSBzaG91bGQgdmVyaWZ5IHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgbmFtZSBhbmQgY29uZmlybSBpdCYjMzk7cyBlbmFibGVkLgoKTm93LCBhIHF1aWNrIGNoZWNrOiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIGFzIEkgc3VzcGVjdGVkLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIGEgYnVnIGluIGhvdyBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyBhcmUgcGFyc2VkIGZyb20gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCByZXZpc2VzIGhvdyBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYXJlIGl0ZXJhdGVkLCBtb2RpZnlpbmcgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIGFuZCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAuIFRoaXMgaXMgY2xlYXJseSByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYywgdnVsbmVyYWJsZSB0byBjcmFmdGVkIG1hbmFnZW1lbnQgZnJhbWVzIChiZWFjb25zIG9yIHByb2JlIHJlc3BvbnNlcykgY29udGFpbmluZyBtYWxpY2lvdXMgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGhhcyBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucywgYW5kIEkgbmVlZCB0byBwcmlvcml0aXplIGl0IGZvciBmdXp6aW5nLgoKTXkgbGlzdCBvZiBlc3NlbnRpYWwgY29uZmlncyBhbmQgc3ltYm9scyBpcyBjb25maXJtZWQ6CgpDb25maWdzOgpgQ0ZHODAyMTFgCmBNQUM4MDIxMWAKYE1BQzgwMjExX0hXU0lNYAoKRm9jdXMgc3ltYm9sczoKYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gCmBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYApgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6MTpvYmotJChDT05GSUdfTUFDODAyMTFfSFdTSU0pXHQmIzQzOz0gbWFjODAyMTFfaHdzaW0ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcdFx0JiM0Mzs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoxMDojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yMTc9c3RydWN0IGh3c2ltX3R4X3JhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzE6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTOiBVc2UgUlRTL0NUUyBleGNoYW5nZSBmb3IgdGhpcyByYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlx0VGhpcyBpcyBzZXQgaWYgdGhlIGN1cnJlbnQgQlNTIHJlcXVpcmVzIEVSUCBwcm90ZWN0aW9uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM2OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTOiBWSFQgTUNTIHJhdGUsIGluIHRoaXMgY2FzZSB0aGUgaWR4IGZpZWxkIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTEQ6IEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmF0ZSBzaG91bGQgYmUgdXNlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlx0aW4gR3JlZW5maWVsZCBtb2RlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgaWYgdGhlIENoYW5uZWwgV2lkdGggc2hvdWxkIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXHQ0MCBNSHouXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg6IEluZGljYXRlcyA4MCBNSHogdHJhbnNtaXNzaW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcdCg4MCYjNDM7ODAgaXNuJiMzOTt0IHN1cHBvcnRlZCB5ZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ2LSAqXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcdE5MODAyMTFfQ0hBTl9IVDQwTUlOVVMgb3IgTkw4MDIxMV9DSEFOX0hUNDBQTFVTLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXHRyYXRlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1x0XHQ9IEJJVCgwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcdFx0PSBCSVQoMSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0Olx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFXHQ9IEJJVCgyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU2LVx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1NcdFx0XHQ9IEJJVCgzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFx0XHQ9IEJJVCg0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEhcdFx0PSBCSVQoNSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYwOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcdFx0PSBCSVQoNiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcdFx0PSBCSVQoNyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DU1x0XHRcdD0gQklUKDgpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFx0XHQ9IEJJVCg5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIXHRcdD0gQklUKDEwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTE6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg9MTY1PXZvaWQgaWVlZTgwMjExX2h3c2ltX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTY4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0lfSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTgtc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU2OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTcxOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzQtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzc6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzgtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgwLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19EVVBfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODU6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Ni1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfODBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg5Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg3LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ4ODpcdFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg5LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ5Mj1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDg6XHRXQVJOX09OKGkgIT0gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjEyPXN0YXRpYyBjb25zdCB1OCBpZnR5cGVzX2V4dF9jYXBhX2FwW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MjE6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MzQtXHRcdFx0XHQgICAgSUVFRTgwMjExX0VNTF9DQVBfRU1MTVJfU1VQUE9SVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XHRcdC5tbGRfY2FwYV9hbmRfb3BzID0gTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cdH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwODQ6XHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA4NS1cdC52ZXJzaW9uID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDAyPXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTE6LyogTUFDODAyMTFfSFdTSU0gdmlydGlvIGRldmljZSBpZCB0YWJsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTM6XHR7IFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTSwgVklSVElPX0RFVl9BTllfSUQgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXHR7IDAgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cdFx0bWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTIxNj12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9yeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cdGlmICgoc2xvdCAhPSBTTE9UXzI0R0haX0RXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoyNzQ6XHQgICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzUtXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzNi1cdFx0ICAgIChjZyA9PSBvd25fY2cgXHUwMDI2XHUwMDI2IGZyYW1lX2FtciBcdTAwM2UgY3Vycl9hbXIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjQzNzpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cdFx0XHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ2OC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NzAtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTYxMj1tYWM4MDIxMV9od3NpbV9uYW5fZXhlY19zdGF0ZV90cmFuc2l0aW9ucyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cdGlmIChkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI2Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI4LVx0XHQgZGF0YS1cdTAwM2VuYW4ubWFzdGVyX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNlPSAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzA6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXHRcdCBkYXRhLVx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNjIDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzNTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0MS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cdCAgICAhaHJ0aW1lcl9hY3RpdmUoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjYxLVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02OTU9bWFjODAyMTFfaHdzaW1fbmFuX3R4X2JlYWNvbihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cdG5hbl9hdHRyLmxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihtYXN0ZXJfaW5kaWNhdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cdFx0bWFzdGVyX2luZGljYXRpb24ubWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTc3ND1tYWM4MDIxMV9od3NpbV9uYW5fc2xvdF90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXHRcdHR4X3N5bmNfYmVhY29uID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXHUwMDI2ZGF0YS1cdTAwM2VuYW4uc3RhdGVfbG9jaykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XHRcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODE6XHRcdCAgICBkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVx0XHRcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTkwOT1pbnQgbWFjODAyMTFfaHdzaW1fbmFuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVx0XHQvKiBTdGFydCBpbiB0aGUgXCYjMzQ7c2NhblwmIzM0OyBwaGFzZSBhbmQgc3RheSB0aGVyZSBmb3IgYSBsaXR0bGUgYml0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVx0XHRkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXHUwMDNlbWFzdGVyX3ByZWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkzMTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVx0XHRtZW1zZXQoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2Olx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVx0XHRyZXR1cm4gY2hhbm5lbC1cdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEzOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE5Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMDAKCQkJCQkJCW91dHB1dDogMjEzCgkJCQkJCQl0aG91Z2h0czogNDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBXaXJlbGVzcyBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBqdW1wcyBvdXQsIGFsb25nIHdpdGggYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZS4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlIG9mIHRoZSB0YXJnZXQgZnVuY3Rpb25zLiBJIHNlZSBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgLiBMZXQmIzM5O3MgY29uZmlybSBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBzdGF0aWMuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggbGltaXRzIGRpcmVjdCBleHRlcm5hbCBhY2Nlc3MuIFRoZW4sIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBpcyBleHBvcnRlZC4gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gIGFwcGVhcnMgdG8gYmUgc3RhdGljIGFzIHdlbGwuCgpTbyB0aGUgbWFpbiBzeW1ib2xzIEkgc2hvdWxkIGZvY3VzIG9uIGFyZSBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYC4KCkhhbmcgb24sIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aGF0IEkmIzM5O20gc2VlaW5nIGZvciBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGlzIGl0IGBzdGF0aWMgaW5saW5lYCBvciBqdXN0IHN0YXRpYz8gT2ssIGl0JiMzOTtzIGBzdGF0aWMgYm9vbCBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKC4uLilgLCB0aGF0JiMzOTtzIGdvb2QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGZvciBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0IG1lIHNlZS4uLkkgc2VlIGBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhYCBhbmQgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAuIFRoZXNlIG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGJ1dCBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSBhc2lkZSBmb3Igbm93LgoKR2l2ZW4gdGhhdCBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgSSB0aGluayBJIHNob3VsZCBiZSBnb29kLgoKUmlnaHQsIHRpbWUgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy4gVGhlIHBhdGNoIGlzIGFib3V0IGZpeGluZyBhIHBhcnNpbmcgaXNzdWUgcmVsYXRlZCB0byBNdWx0aXBsZSBCU1NJRCAoTUJTU0lEKSBlbGVtZW50cyB3aXRoaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBzZWVtcyB0aGUgZml4IGFsdGVycyB0aGUgcHJvZmlsZSBjb250aW51YXRpb24gaXRlcmF0aW9uIHZpYSBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgYW5kIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYC4gVGhpcyBpcyByZWFjaGFibGUgd2lyZWxlc3MgbG9naWMgYW5kLCBjcml0aWNhbGx5LCBpcyB0cmlnZ2VyZWQgYnkgY3JhZnRlZCBtYW5hZ2VtZW50IGZyYW1lcyDigJMgYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzIOKAkyB0aGF0IGNvbnRhaW4gbWFsaWNpb3VzIE1CU1NJRCBkYXRhLiBUaGF0IG1lYW5zIHdlIGNvdWxkIGhhdmUgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBoZXJlLiBJdCYjMzk7cyBmdW5jdGlvbmFsLCBtZWFuaW5nIGl0IHNob3VsZCBiZSBlYXN5IHRvIGZ1enogYW5kIEkgd2lsbCBzZXQgdXAgc2V0LXJlc3VsdHMgZm9yIHRoaXMgbm93LgoKQ29uZmlnczoKYENGRzgwMjExYApgTUFDODAyMTFgCmBNQUM4MDIxMV9IV1NJTWAKCkZvY3VzIHN5bWJvbHM6CmBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYApgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAKYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uJiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21lcmdlX3Byb2ZpbGUmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIGluIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgaW50cm9kdWNlcyBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gY29ycmVjdGx5IGl0ZXJhdGUgb3ZlciBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYW5kIHVwZGF0ZXMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIHRvIHVzZSBpdC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgcHJvY2Vzc2luZyBtYWxpY2lvdXMgbWFuYWdlbWVudCBmcmFtZXMgKGUuZy4sIGJlYWNvbnMgb3IgcHJvYmUgcmVzcG9uc2VzKSBjb250YWluaW5nIGNyYWZ0ZWQgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24mIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTozNi4zNjgxNDk1MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDYyNTAyNjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjM2LjM2ODE1NjgzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNTA5NTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTI1NWFjMmZlNzA4ZjgzN2E0NjcxNzllNTI1ZTRhNjkxMTJiYzZjMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMzoxNTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbkBAIC0yNDAzLDEyICsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudFxcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxcbi1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXFxuLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICpzdWJfZWxlbSlcXG4rc3RhdGljIGJvb2wgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbihjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqbWJzc2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKipzdWJfZWxlbSlcXG4ge1xcbi1cXHRjb25zdCB1OCAqbWJzc2lkX2VuZCA9IG1ic3NpZF9lbGVtLVxcdTAwM2VkYXRhICsgbWJzc2lkX2VsZW0tXFx1MDAzZWRhdGFsZW47XFxuK1xcdGNvbnN0IHU4ICptYnNzaWRfZW5kID0gKCptYnNzaWQpLVxcdTAwM2VkYXRhICsgKCptYnNzaWQpLVxcdTAwM2VkYXRhbGVuO1xcbiBcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9tYnNzaWQ7XFxuIFxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcXG4gXFxuQEAgLTI0MjAsMzAgKzI0MTksMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlbGVtZW50XFxuIFxcdCAqIElmIGl0IGlzIG5vdCB0aGUgbGFzdCBzdWJlbGVtZW50IGluIGN1cnJlbnQgTUJTU0lEIElFIG9yIHRoZXJlIGlzbid0XFxuIFxcdCAqIGEgbmV4dCBNQlNTSUQgSUUgLSBwcm9maWxlIGlzIGNvbXBsZXRlLlxcbiBcXHQqL1xcbi1cXHRpZiAoKHN1Yl9lbGVtLVxcdTAwM2VkYXRhICsgc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4gXFx1MDAzYyBtYnNzaWRfZW5kIC0gMSkgfHxcXG4rXFx0aWYgKCgoKnN1Yl9lbGVtKS1cXHUwMDNlZGF0YSArICgqc3ViX2VsZW0pLVxcdTAwM2VkYXRhbGVuIFxcdTAwM2MgbWJzc2lkX2VuZCAtIDEpIHx8XFxuIFxcdCAgICAhbmV4dF9tYnNzaWQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gTlVMTCAqL1xcbitcXHQvKiBGb3IgYW55IGxlbmd0aCBlcnJvciwganVzdCByZXR1cm4gZmFsc2UgdG8gc3RvcCBpdGVyYXRpb24gKi9cXG4gXFxuIFxcdGlmIChuZXh0X21ic3NpZC1cXHUwMDNlZGF0YWxlbiBcXHUwMDNjIDQpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRuZXh0X3N1YiA9ICh2b2lkICopXFx1MDAyNm5leHRfbWJzc2lkLVxcdTAwM2VkYXRhWzFdO1xcbiBcXG4gXFx0aWYgKG5leHRfbWJzc2lkLVxcdTAwM2VkYXRhICsgbmV4dF9tYnNzaWQtXFx1MDAzZWRhdGFsZW4gXFx1MDAzY1xcbiBcXHQgICAgbmV4dF9zdWItXFx1MDAzZWRhdGEgKyBuZXh0X3N1Yi1cXHUwMDNlZGF0YWxlbilcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChuZXh0X3N1Yi1cXHUwMDNlaWQgIT0gMCB8fCBuZXh0X3N1Yi1cXHUwMDNlZGF0YWxlbiBcXHUwMDNjIDIpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBDaGVjayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbmV4dCBzdWIgZWxlbWVudCBpcyBhIHN0YXJ0XFxuIFxcdCAqIG9mIGEgbmV3IHByb2ZpbGVcXG4gXFx0ICovXFxuLVxcdHJldHVybiBuZXh0X3N1Yi1cXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cXG4tXFx0ICAgICAgIE5VTEwgOiBuZXh0X21ic3NpZDtcXG4rXFx0aWYgKG5leHRfc3ViLVxcdTAwM2VkYXRhWzBdID09IFdMQU5fRUlEX05PTl9UWF9CU1NJRF9DQVApXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdCptYnNzaWQgPSBuZXh0X21ic3NpZDtcXG4rXFx0KnN1Yl9lbGVtID0gbmV4dF9zdWI7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG5AQCAtMjQ1MiwyNiArMjQ1NSwyMCBAQCBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcXG4gXFx0XFx0XFx0ICAgICAgdTggKm1lcmdlZF9pZSwgc2l6ZV90IG1heF9jb3B5X2xlbilcXG4ge1xcbiBcXHRzaXplX3QgY29waWVkX2xlbiA9IHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuO1xcbi1cXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9tYnNzaWQ7XFxuIFxcbiBcXHRpZiAoc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4gXFx1MDAzZSBtYXhfY29weV9sZW4pXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bWVtY3B5KG1lcmdlZF9pZSwgc3ViX2VsZW0tXFx1MDAzZWRhdGEsIHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuKTtcXG4gXFxuLVxcdHdoaWxlICgobmV4dF9tYnNzaWQgPSBjZmc4MDIxMV9nZXRfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRtYnNzaWRfZWxlbSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3ViX2VsZW0pKSkge1xcbi1cXHRcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9zdWIgPSAodm9pZCAqKVxcdTAwMjZuZXh0X21ic3NpZC1cXHUwMDNlZGF0YVsxXTtcXG4tXFxuLVxcdFxcdGlmIChjb3BpZWRfbGVuICsgbmV4dF9zdWItXFx1MDAzZWRhdGFsZW4gXFx1MDAzZSBtYXhfY29weV9sZW4pXFxuK1xcdHdoaWxlIChjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uKGllLCBpZWxlbixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2bWJzc2lkX2VsZW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNnN1Yl9lbGVtKSkge1xcbitcXHRcXHRpZiAoY29waWVkX2xlbiArIHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuIFxcdTAwM2UgbWF4X2NvcHlfbGVuKVxcbiBcXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIG5leHRfc3ViLVxcdTAwM2VkYXRhLFxcbi1cXHRcXHQgICAgICAgbmV4dF9zdWItXFx1MDAzZWRhdGFsZW4pO1xcbi1cXHRcXHRjb3BpZWRfbGVuICs9IG5leHRfc3ViLVxcdTAwM2VkYXRhbGVuO1xcbi1cXG4tXFx0XFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcXG4tXFx0XFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcXG4rXFx0XFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIHN1Yl9lbGVtLVxcdTAwM2VkYXRhLFxcbitcXHRcXHQgICAgICAgc3ViX2VsZW0tXFx1MDAzZWRhdGFsZW4pO1xcbitcXHRcXHRjb3BpZWRfbGVuICs9IHN1Yl9lbGVtLVxcdTAwM2VkYXRhbGVuO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gY29waWVkX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6MzYuOTIyNDk2MzYxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA3MDY2OTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTI1NWFjMmZlNzA4ZjgzN2E0NjcxNzllNTI1ZTRhNjkxMTJiYzZjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDIzOjE1OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NjYW4uYyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li5lNjJiN2RkMmI3YzJkOCAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmNcbisrKyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbkBAIC0yNDAzLDEyICsyNDAzLDExIEBAIGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGVsZW1lbnRcbi0qY2ZnODAyMTFfZ2V0X3Byb2ZpbGVfY29udGludWF0aW9uKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKm1ic3NpZF9lbGVtLFxuLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVsZW1lbnQgKnN1Yl9lbGVtKVxuK3N0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sXG4rXHRcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqKm1ic3NpZCxcbitcdFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBlbGVtZW50ICoqc3ViX2VsZW0pXG4ge1xuLVx0Y29uc3QgdTggKm1ic3NpZF9lbmQgPSBtYnNzaWRfZWxlbS1cdTAwM2VkYXRhICsgbWJzc2lkX2VsZW0tXHUwMDNlZGF0YWxlbjtcbitcdGNvbnN0IHU4ICptYnNzaWRfZW5kID0gKCptYnNzaWQpLVx1MDAzZWRhdGEgKyAoKm1ic3NpZCktXHUwMDNlZGF0YWxlbjtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X21ic3NpZDtcbiBcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICpuZXh0X3N1YjtcbiBcbkBAIC0yNDIwLDMwICsyNDE5LDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZWxlbWVudFxuIFx0ICogSWYgaXQgaXMgbm90IHRoZSBsYXN0IHN1YmVsZW1lbnQgaW4gY3VycmVudCBNQlNTSUQgSUUgb3IgdGhlcmUgaXNuJ3RcbiBcdCAqIGEgbmV4dCBNQlNTSUQgSUUgLSBwcm9maWxlIGlzIGNvbXBsZXRlLlxuIFx0Ki9cbi1cdGlmICgoc3ViX2VsZW0tXHUwMDNlZGF0YSArIHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNjIG1ic3NpZF9lbmQgLSAxKSB8fFxuK1x0aWYgKCgoKnN1Yl9lbGVtKS1cdTAwM2VkYXRhICsgKCpzdWJfZWxlbSktXHUwMDNlZGF0YWxlbiBcdTAwM2MgbWJzc2lkX2VuZCAtIDEpIHx8XG4gXHQgICAgIW5leHRfbWJzc2lkKVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0LyogRm9yIGFueSBsZW5ndGggZXJyb3IsIGp1c3QgcmV0dXJuIE5VTEwgKi9cbitcdC8qIEZvciBhbnkgbGVuZ3RoIGVycm9yLCBqdXN0IHJldHVybiBmYWxzZSB0byBzdG9wIGl0ZXJhdGlvbiAqL1xuIFxuIFx0aWYgKG5leHRfbWJzc2lkLVx1MDAzZWRhdGFsZW4gXHUwMDNjIDQpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRuZXh0X3N1YiA9ICh2b2lkICopXHUwMDI2bmV4dF9tYnNzaWQtXHUwMDNlZGF0YVsxXTtcbiBcbiBcdGlmIChuZXh0X21ic3NpZC1cdTAwM2VkYXRhICsgbmV4dF9tYnNzaWQtXHUwMDNlZGF0YWxlbiBcdTAwM2NcbiBcdCAgICBuZXh0X3N1Yi1cdTAwM2VkYXRhICsgbmV4dF9zdWItXHUwMDNlZGF0YWxlbilcbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmIChuZXh0X3N1Yi1cdTAwM2VpZCAhPSAwIHx8IG5leHRfc3ViLVx1MDAzZWRhdGFsZW4gXHUwMDNjIDIpXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHQvKlxuIFx0ICogQ2hlY2sgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIG5leHQgc3ViIGVsZW1lbnQgaXMgYSBzdGFydFxuIFx0ICogb2YgYSBuZXcgcHJvZmlsZVxuIFx0ICovXG4tXHRyZXR1cm4gbmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQID9cbi1cdCAgICAgICBOVUxMIDogbmV4dF9tYnNzaWQ7XG4rXHRpZiAobmV4dF9zdWItXHUwMDNlZGF0YVswXSA9PSBXTEFOX0VJRF9OT05fVFhfQlNTSURfQ0FQKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHQqbWJzc2lkID0gbmV4dF9tYnNzaWQ7XG4rXHQqc3ViX2VsZW0gPSBuZXh0X3N1YjtcbitcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzaXplX3QgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZShjb25zdCB1OCAqaWUsIHNpemVfdCBpZWxlbixcbkBAIC0yNDUyLDI2ICsyNDU1LDIwIEBAIHNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxuIFx0XHRcdCAgICAgIHU4ICptZXJnZWRfaWUsIHNpemVfdCBtYXhfY29weV9sZW4pXG4ge1xuIFx0c2l6ZV90IGNvcGllZF9sZW4gPSBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKm5leHRfbWJzc2lkO1xuIFxuIFx0aWYgKHN1Yl9lbGVtLVx1MDAzZWRhdGFsZW4gXHUwMDNlIG1heF9jb3B5X2xlbilcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRtZW1jcHkobWVyZ2VkX2llLCBzdWJfZWxlbS1cdTAwM2VkYXRhLCBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbiBcbi1cdHdoaWxlICgobmV4dF9tYnNzaWQgPSBjZmc4MDIxMV9nZXRfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuLVx0XHRcdFx0XHRcdFx0XHRtYnNzaWRfZWxlbSxcbi1cdFx0XHRcdFx0XHRcdFx0c3ViX2VsZW0pKSkge1xuLVx0XHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbmV4dF9zdWIgPSAodm9pZCAqKVx1MDAyNm5leHRfbWJzc2lkLVx1MDAzZWRhdGFbMV07XG4tXG4tXHRcdGlmIChjb3BpZWRfbGVuICsgbmV4dF9zdWItXHUwMDNlZGF0YWxlbiBcdTAwM2UgbWF4X2NvcHlfbGVuKVxuK1x0d2hpbGUgKGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oaWUsIGllbGVuLFxuK1x0XHRcdFx0XHRcdCAgXHUwMDI2bWJzc2lkX2VsZW0sXG4rXHRcdFx0XHRcdFx0ICBcdTAwMjZzdWJfZWxlbSkpIHtcbitcdFx0aWYgKGNvcGllZF9sZW4gKyBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuIFx1MDAzZSBtYXhfY29weV9sZW4pXG4gXHRcdFx0YnJlYWs7XG4tXHRcdG1lbWNweShtZXJnZWRfaWUgKyBjb3BpZWRfbGVuLCBuZXh0X3N1Yi1cdTAwM2VkYXRhLFxuLVx0XHQgICAgICAgbmV4dF9zdWItXHUwMDNlZGF0YWxlbik7XG4tXHRcdGNvcGllZF9sZW4gKz0gbmV4dF9zdWItXHUwMDNlZGF0YWxlbjtcbi1cbi1cdFx0bWJzc2lkX2VsZW0gPSBuZXh0X21ic3NpZDtcbi1cdFx0c3ViX2VsZW0gPSBuZXh0X3N1YjtcbitcdFx0bWVtY3B5KG1lcmdlZF9pZSArIGNvcGllZF9sZW4sIHN1Yl9lbGVtLVx1MDAzZWRhdGEsXG4rXHRcdCAgICAgICBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuKTtcbitcdFx0Y29waWVkX2xlbiArPSBzdWJfZWxlbS1cdTAwM2VkYXRhbGVuO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGNvcGllZF9sZW47XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTozNi45MjI0OTc3MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQwMzgzNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFN0YWNrIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gU3BlY2lmaWNhbGx5LCB0aGUgZm9jdXMgaXMgb24gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBUaGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGEgbmFtZSBjaGFuZ2UsIGZyb20gYGNmZzgwMjExX2dldF9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLiBGdW5jdGlvbmFsbHksIHRoaXMgbGlrZWx5IGluZGljYXRlcyBhbiBpdGVyYXRpb24gaXMgcmVwbGFjaW5nIGEgc2ltcGxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBwcm9maWxlcy4gVGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbiBoYXMgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gdXRpbGl6ZSB0aGlzIG5ldyBpdGVyYXRvci4gVGhpcyBjbGVhcmx5IGZhbGxzIHdpdGhpbiB0aGUgcmVhbG0gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIG1hYzgwMjExL2NmZzgwMjExIGNvbXBvbmVudHMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgSSB3b3VsZCBleHBlY3QgdGhpcyB0byBiZSBzb21ldGhpbmcgZnV6emVkIHdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSdsbCBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBuZWVkIHRvIHZlcmlmeSBhIGZldyB0aGluZ3MuIEZpcnN0LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGZhbGxzIHVuZGVyIHRoZSBgY2ZnODAyMTFgIHVtYnJlbGxhLCBzbyB0aGUgYENGRzgwMjExYCBjb25maWcgb3B0aW9uIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkLiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvd2lyZWxlc3MvTWFrZWZpbGVgIHRvIGNvcnJvYm9yYXRlIHRoYXQgdGhpcyBpcyB0aGUgY29ycmVjdCBkZXBlbmRlbmN5LiBUaGlzIHF1aWNrIHZlcmlmaWNhdGlvbiB3aWxsIGVuc3VyZSBJIGNhbiByZXByb2R1Y2UgYW5kIGFuYWx5emUgdGhpcyBjb2RlIGNvcnJlY3RseSB3aXRoaW4gbXkgdGVzdCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0MS43NjI4ODU5OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNDA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NhblxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTAtY2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0MS44MjMyMzMxNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwODI3ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gd2lyZWxlc3MgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFNlZW1zIGxpa2UgYENGRzgwMjExYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gYXJlYS4gV2FpdCwgSSByZW1lbWJlciBub3csIGBjZmc4MDIxMS15YCBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBNYWtlZmlsZSBpbiBgbmV0L3dpcmVsZXNzYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcy4gTGV0J3MgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGxvZ2ljIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjQ0LjUwNDA2MzExNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM4Mzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgKz0gY2ZnODAyMTEub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICs9IHRlc3RzL1xcbi0tXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICs9IG1pY2hhZWwtbWljLm8gcG1zci5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSArPSBvZi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSArPSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE3LVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICs9IHNoaXBwZWQtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgKz0gZXh0cmEtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo0NC41NjA0NTIyOTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA4ODg0MjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYENPTkZJR19DRkc4MDIxMWAuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBjb25maWcsIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IG5vdyBJJ20gd29uZGVyaW5nLCBkbyB3ZSBoYXZlIHNvbWV0aGluZyBtb3JlIGdyYW51bGFyIGZvciBNdWx0aS1CU1NJRCBvciBmb3Igc3BlY2lmaWMgc2Nhbm5pbmcgYmVoYXZpb3JzPyBJdCdzIGEgY29tbW9uIHF1ZXN0aW9uIHdoZW4gdHVuaW5nIG9yIGRlYnVnZ2luZy4gSSBjYW4ndCBpbW1lZGlhdGVseSByZWNhbGwgYSBzcGVjaWZpYyBjb25maWcgb3B0aW9uIGp1bXBpbmcgdG8gbWluZC5cblxuQWxyaWdodCwgdGltZSB0byBkaWcuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gbG9vayBhcm91bmQgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBlc3BlY2lhbGx5IG5lYXIgdGhlIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIGEgbG90IG9mIHRoZSBzY2FubmluZyBsb2dpYyBhbmQgcHJvZmlsZSBtYW5hZ2VtZW50IGhhcHBlbnMsIHNvIGl04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gaHVudCBmb3IgYW55IE1CU1NJRC1yZWxhdGVkIGhvb2tzIG9yIHNjYW4tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBIb3BlZnVsbHksIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBzZXR0aW5ncyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDIzMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE1OjQ3LjQ2OTMzODcyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAxNjc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9tZXJnZV9wcm9maWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0yNDA2PXN0YXRpYyBib29sIGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb24oY29uc3QgdTggKmllLCBzaXplX3QgaWVsZW4sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI0NTEtXFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNDUyOnNpemVfdCBjZmc4MDIxMV9tZXJnZV9wcm9maWxlKGNvbnN0IHU4ICppZSwgc2l6ZV90IGllbGVuLFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ1My1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZWxlbWVudCAqbWJzc2lkX2VsZW0sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI0NzUtfVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MjQ3NjpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX21lcmdlX3Byb2ZpbGUpO1xcbm5ldC93aXJlbGVzcy9zY2FuLmMtMjQ3Ny1cXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MjQ3OT1jZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNTQzLVxcdFxcdFxcdG1lbXNldChwcm9maWxlLCAwLCB0eF9kYXRhLVxcdTAwM2VpZWxlbik7XFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNTQ0OlxcdFxcdFxcdHByb2ZpbGVfbGVuID0gY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZSh0eF9kYXRhLVxcdTAwM2VpZSxcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTI1NDUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB0eF9kYXRhLVxcdTAwM2VpZWxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NDcuNTI1MzU5ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1NDgwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBUZXN0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgZnVuY3Rpb24sIGV4cG9ydGVkIGZyb20gdGhlIGBjZmc4MDIxMWAgY29yZS4gVGhhdCdzIGEga2V5IHBhcnQgb2YgdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gc3RhY2ssIG9idmlvdXNseS4gSSBhbHNvIHNlZSBgTUFDODAyMTFfSFdTSU1gIG1lbnRpb25lZCDigJMgdGhhdCdzIHRoZSBoYXJkd2FyZSBzaW11bGF0b3IgZm9yIHRlc3RpbmcsIGFuZCBhIGhhbmR5IHRvb2wuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHdlICpuZWVkKiBgTUFDODAyMTFfSFdTSU1gLCBhbHRob3VnaCB0aGUgZm9jdXMgaXMgcmVhbGx5IHRoZSBgQ0ZHODAyMTFgIGNvcmUuIEJ1dCB3YWl0LCBgTUFDODAyMTFfSFdTSU1gIGlzIGEgKmRyaXZlciosIHJpZ2h0PyBTbywgaW5jbHVkaW5nIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBtb3ZlIGZvciBlbnN1cmluZyBjb21wcmVoZW5zaXZlIHRlc3RhYmlsaXR5IG9mIHRoZSB3aXJlbGVzcyBzdGFjay4gUmVhbGx5LCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgIHRvZ2V0aGVyIGFyZSB0aGUgaW1wb3J0YW50IGJ1aWxkaW5nIGJsb2Nrcy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gSSdtIGZvY3VzaW5nIG9uIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLCBhbmQgYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYCBiZWNhdXNlIGl0IGNhbGxzIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYC4gTGV0J3MgY2xhcmlmeSBpZiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgaXMgc3RhdGljIGludGVybmFsbHkuIEFoLCB5ZXMsIGl0IGlzLiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgaXMgZXhwb3J0ZWQuIE5vdywgd2hhdCBhYm91dCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgPyBJcyBpdCBzdGF0aWMgb3IgZXhwb3J0ZWQ/IEknbGwgbmVlZCB0byBjaGVjayB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo1Mi44MjA4NDE4MTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTMwNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0yNDc4PXN0YXRpYyB2b2lkXFxubmV0L3dpcmVsZXNzL3NjYW4uYzoyNDc5OmNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0yNDgwLVxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9pbmZvcm1fc2luZ2xlX2Jzc19kYXRhICp0eF9kYXRhLFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjExPWNmZzgwMjExX2luZm9ybV9ic3NfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQyLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0MzpcXHRjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YSh3aXBoeSwgXFx1MDAyNmluZm9ybV9kYXRhLCByZXMsIGdmcCk7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjQ0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNTo1Mi44ODM4MDEwNTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTM4MjA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRXhwb3J0IFN0YXR1cyBvZiBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGZ1bmN0aW9uLCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gSXQncyBvbmUgb2YgdGhvc2UgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGFuZCBuZXR3b3JraW5nIHBpZWNlcy4gVGhlIHF1ZXN0aW9uIHRoYXQncyByYXR0bGluZyBhcm91bmQgaW4gbXkgaGVhZCBpczogaXMgaXQgZXhwb3J0ZWQ/IFNwZWNpZmljYWxseSwgaXMgdGhpcyBmdW5jdGlvbiAqZXhwb3J0ZWQqIGZyb20gd2hhdGV2ZXIgbW9kdWxlIGl0IHJlc2lkZXMgaW4/IFRoYXQncyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQncyBleHBvcnRlZCBtZWFucyBldmVyeXRoaW5nLiBJdCBkaWN0YXRlcyBob3cgZWFzeSBpdCBpcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZnVuY3Rpb24gZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUsIGlmIEkgbmVlZCB0by4gSWYgaXQncyBleHBvcnRlZCwgdGhlbiBJIGNhbiBjYWxsIGl0IGRpcmVjdGx5IGFuZCBnZXQgYWNjZXNzIHRvIGl0cyBjYXBhYmlsaXRpZXMuIElmIGl0J3Mgbm90IGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHdheXMgdG8gdXNlIGl0LiBLbm93aW5nIGl0cyBleHBvcnQgc3RhdHVzIGdpdmVzIG1lIHRoZSBmb3VuZGF0aW9uIHRvIGRldGVybWluZSBob3cgZmxleGlibGUgbXkgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGNhbiBiZS4gSXQgc2hhcGVzIG15IGVudGlyZSBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIGFuZCB1dGlsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBrbm93IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NTUuOTQ1MTg1NDg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0MzIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9pbmZvcm1fYnNzX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jPTMyMTA9c3RydWN0IGNmZzgwMjExX2JzcyAqXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozMjExOmNmZzgwMjExX2luZm9ybV9ic3NfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzIxMi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX2luZm9ybV9ic3MgKmRhdGEsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMyNDgtfVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzI0OTpFWFBPUlRfU1lNQk9MKGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YSk7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMjUwLVxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zMjUyPWNmZzgwMjExX2luZm9ybV9ic3NfZnJhbWVfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zMzI1LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzMyNjpcXHRyZXR1cm4gY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhKHdpcGh5LCBkYXRhLCBmdHlwZSxcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTMzMjctXFx0XFx0XFx0XFx0XFx0YnNzaWQsIHRzZiwgY2FwYWJpbGl0eSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTU6NTYuMDAxOTMyOTY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTU0MDExNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQlNTSUQgUGFyc2luZyBGaXgqKlxuXG5Pa2F5LCBzbyBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYCBpcyBleHBvcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYSBmZXcgZnVuY3Rpb25zOiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAsIGBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYCwgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuIEknbSB3b25kZXJpbmcgaWYgYGNmZzgwMjExX2luZm9ybV9ic3NfZGF0YWAgaXMgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGhlcmUuIEl0J3MgdHJpZ2dlcmVkIHdpdGggZXZlcnkgQlNTIGRpc2NvdmVyeSwgZHVyaW5nIGEgc2Nhbiwgc28gaXQgbWlnaHQgaGF2ZSBhIG1vZGVyYXRlIGltcGFjdCwgYnV0IHByb2JhYmx5IGlzbid0IHRoZSBwcmltYXJ5IGFyZWEgb2YgY29uY2Vybi4gYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIGFuZCBgY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgIGFyZSBsaWtlbHkgdG8gYmUgbW9yZSBpbnRlcmVzdGluZy5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkOyBgQ0ZHODAyMTFgIGlzIG9idmlvdXNseSBlc3NlbnRpYWwuIEkgY2FuIGFsc28gdXNlIGBNQUM4MDIxMV9IV1NJTWAgZm9yIGVmZmVjdGl2ZSBzb2Z0d2FyZS1iYXNlZCB3aXJlbGVzcyB0ZXN0aW5nLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCdzIHRoZSBjb3JyZWN0IG5hbWUgYW5kIGNvbmZpcm0gaXQncyBlbmFibGVkLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2s6IGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBpcyBkZWZpbmVkIGFzIHN0YXRpYywgYXMgSSBzdXNwZWN0ZWQuXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBob3cgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgYXJlIHBhcnNlZCBmcm9tIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgcmV2aXNlcyBob3cgcHJvZmlsZSBjb250aW51YXRpb25zIGFyZSBpdGVyYXRlZCwgbW9kaWZ5aW5nIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBhbmQgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBUaGlzIGlzIGNsZWFybHkgcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgbG9naWMsIHZ1bG5lcmFibGUgdG8gY3JhZnRlZCBtYW5hZ2VtZW50IGZyYW1lcyAoYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgbWFsaWNpb3VzIE1CU1NJRCBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBoYXMgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMsIGFuZCBJIG5lZWQgdG8gcHJpb3JpdGl6ZSBpdCBmb3IgZnV6emluZy5cblxuTXkgbGlzdCBvZiBlc3NlbnRpYWwgY29uZmlncyBhbmQgc3ltYm9scyBpcyBjb25maXJtZWQ6XG5cbkNvbmZpZ3M6XG5gQ0ZHODAyMTFgXG5gTUFDODAyMTFgXG5gTUFDODAyMTFfSFdTSU1gXG5cbkZvY3VzIHN5bWJvbHM6XG5gY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmBcbmBjZmc4MDIxMV9tZXJnZV9wcm9maWxlYFxuYGNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhYFxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjE2OjAyLjYxNzMzNzE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDc0OTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcXHQrPSBtYWM4MDIxMV9od3NpbS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcXHRcXHQrPSBtYWM4MDIxMV9od3NpbV9tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDo5OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzMtICpcXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTOiBIVCByYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXFx0c3BsaXQgaW50byBhIGhpZ2hlciA0IGJpdHMgKE5zcykgYW5kIGxvd2VyIDQgYml0cyAoTUNTIG51bWJlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlxcdGluIEdyZWVuZmllbGQgbW9kZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXFx0NDAgTUh6LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ0LSAqXFx0KDgwKzgwIGlzbid0IHN1cHBvcnRlZCB5ZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0NTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE6IFRoZSBmcmFtZSBzaG91bGQgYmUgdHJhbnNtaXR0ZWQgb24gYm90aCBvZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ3LSAqXFx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0OS0gKlxcdHJhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjUxPWVudW0gaHdzaW1fdHhfcmF0ZV9mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1xcdFxcdD0gQklUKDApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUXFx0XFx0PSBCSVQoMSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcXHQ9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXFx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU3OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1xcdFxcdFxcdD0gQklUKDMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTERcXHRcXHQ9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU5OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFxcdFxcdD0gQklUKDUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcXHRcXHQ9IEJJVCg2KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJXFx0XFx0PSBCSVQoNyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXFx0XFx0XFx0PSBCSVQoOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCg5KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjY0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCgxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTMyOD1lbnVtIGh3c2ltX3JhdGVfaW5mb19hdHRyaWJ1dGVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjM0ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjEwOiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTI9c3RhdGljIHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpnZXRfaHdzaW1fZGF0YV9yZWZfZnJvbV9hZGRyKGNvbnN0IHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNzovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgaHdzaW1fbWNncnBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI4Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9ODY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAzLXN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpod3NpbV92cXNbSFdTSU1fTlVNX1ZRU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODQtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0ODg6XFx0XFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0OTI9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTA4OlxcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVxcdEZJRUxEX1BSRVBfQ09OU1QoSUVFRTgwMjExX01MRF9DQVBfT1BfVElEX1RPX0xJTktfTUFQX05FR19TVVBQLCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM0LVxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XFx0XFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDg0OlxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVxcdC52ZXJzaW9uID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDEzOlxcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXFx0eyAwIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cXHRcXHRtYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzMtXFx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcXHQgICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVxcdFxcdCAgICAoY2cgPT0gb3duX2NnIFxcdTAwMjZcXHUwMDI2IGZyYW1lX2FtciBcXHUwMDNlIGN1cnJfYW1yKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3OlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cXHRcXHRcXHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjUtXFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI5OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzEtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzZT0gMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMzOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzYyAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjQyOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cXHQgICAgIWhydGltZXJfYWN0aXZlKFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NTU6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gTkFOX1dBUk1VUF9EV1NUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy03NTAtXFx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cXHRcXHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODA3LVxcdFxcdHR4X3N5bmNfYmVhY29uID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwODpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgxMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTg2Nz1tYWM4MDIxMV9od3NpbV9uYW5fZGlzY292ZXJ5X2JlYWNvbl90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2ssIFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uc3RhdGVfbG9jaykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgwOlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcXHRcXHQgICAgZGF0YS1cXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVxcdFxcdFxcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyNi1cXHRcXHQvKiBTdGFydCBpbiB0aGUgXFxcInNjYW5cXFwiIHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyOC1cXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXFx1MDAzZW1hc3Rlcl9wcmVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVxcdFxcdG1lbXNldChcXHUwMDI2ZGF0YS1cXHUwMDNlbmFuLmN1cnJlbnRfYW1pLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2OlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVxcdFxcdHJldHVybiBjaGFubmVsLVxcdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjg6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX05BTl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTE6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxNzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0yMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MTY6MDIuNzA4MDkyODI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxOTM3OTk3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBqdW1wcyBvdXQsIGFsb25nIHdpdGggYENGRzgwMjExYCBhbmQgYE1BQzgwMjExYCDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUgb2YgdGhlIHRhcmdldCBmdW5jdGlvbnMuIEkgc2VlIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuIExldCdzIGNvbmZpcm0gaWYgaXQncyBleHBvcnRlZCBvciBzdGF0aWMuIEl0J3Mgc3RhdGljLCB3aGljaCBsaW1pdHMgZGlyZWN0IGV4dGVybmFsIGFjY2Vzcy4gVGhlbiwgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIGlzIGV4cG9ydGVkLiBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgYXBwZWFycyB0byBiZSBzdGF0aWMgYXMgd2VsbC5cblxuU28gdGhlIG1haW4gc3ltYm9scyBJIHNob3VsZCBmb2N1cyBvbiBhcmUgYGNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25gLCBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAuXG5cbkhhbmcgb24sIGxldCBtZSBxdWlja2x5IHZlcmlmeSB3aGF0IEknbSBzZWVpbmcgZm9yIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCwgaXMgaXQgYHN0YXRpYyBpbmxpbmVgIG9yIGp1c3Qgc3RhdGljPyBPaywgaXQncyBgc3RhdGljIGJvb2wgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbiguLi4pYCwgdGhhdCdzIGdvb2QuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgZm9yIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQgbWUgc2VlLi4uSSBzZWUgYGNmZzgwMjExX2luZm9ybV9zaW5nbGVfYnNzX2RhdGFgIGFuZCBgY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhYC4gVGhlc2UgbWlnaHQgYWxzbyBiZSByZWxldmFudCwgYnV0IEknbSBnb2luZyB0byBzZXQgdGhlc2UgYXNpZGUgZm9yIG5vdy5cblxuR2l2ZW4gdGhhdCBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgYW5kIGBjZmc4MDIxMV9wYXJzZV9tYnNzaWRfZGF0YWAgSSB0aGluayBJIHNob3VsZCBiZSBnb29kLlxuXG5SaWdodCwgdGltZSB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIGEgcGFyc2luZyBpc3N1ZSByZWxhdGVkIHRvIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIHdpdGhpbiB3aXJlbGVzcyBzY2FuIHJlc3VsdHMuIEl0IHNlZW1zIHRoZSBmaXggYWx0ZXJzIHRoZSBwcm9maWxlIGNvbnRpbnVhdGlvbiBpdGVyYXRpb24gdmlhIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCBhbmQgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgLiBUaGlzIGlzIHJlYWNoYWJsZSB3aXJlbGVzcyBsb2dpYyBhbmQsIGNyaXRpY2FsbHksIGlzIHRyaWdnZXJlZCBieSBjcmFmdGVkIG1hbmFnZW1lbnQgZnJhbWVzIOKAkyBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMg4oCTIHRoYXQgY29udGFpbiBtYWxpY2lvdXMgTUJTU0lEIGRhdGEuIFRoYXQgbWVhbnMgd2UgY291bGQgaGF2ZSBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGhlcmUuIEl0J3MgZnVuY3Rpb25hbCwgbWVhbmluZyBpdCBzaG91bGQgYmUgZWFzeSB0byBmdXp6IGFuZCBJIHdpbGwgc2V0IHVwIHNldC1yZXN1bHRzIGZvciB0aGlzIG5vdy5cblxuQ29uZmlnczpcbmBDRkc4MDIxMWBcbmBNQUM4MDIxMWBcbmBNQUM4MDIxMV9IV1NJTWBcblxuRm9jdXMgc3ltYm9sczpcbmBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYFxuYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgXG5gY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjAwLCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzoxNjoxMC45MDE4OTQ3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMjY2ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvblwiLFxuICAgIFwiY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZVwiLFxuICAgIFwiY2ZnODAyMTFfcGFyc2VfbWJzc2lkX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgTXVsdGlwbGUgQlNTSUQgKE1CU1NJRCkgZWxlbWVudHMgaW4gd2lyZWxlc3Mgc2NhbiByZXN1bHRzLiBJdCBpbnRyb2R1Y2VzIGBjZmc4MDIxMV9pdGVyX3Byb2ZpbGVfY29udGludWF0aW9uYCB0byBjb3JyZWN0bHkgaXRlcmF0ZSBvdmVyIHByb2ZpbGUgY29udGludWF0aW9ucyBhbmQgdXBkYXRlcyBgY2ZnODAyMTFfbWVyZ2VfcHJvZmlsZWAgdG8gdXNlIGl0LiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBwcm9jZXNzaW5nIG1hbGljaW91cyBtYW5hZ2VtZW50IGZyYW1lcyAoZS5nLiwgYmVhY29ucyBvciBwcm9iZSByZXNwb25zZXMpIGNvbnRhaW5pbmcgY3JhZnRlZCBNQlNTSUQgaW5mb3JtYXRpb24gZWxlbWVudHMuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX2l0ZXJfcHJvZmlsZV9jb250aW51YXRpb25cIixcbiAgICBcImNmZzgwMjExX21lcmdlX3Byb2ZpbGVcIixcbiAgICBcImNmZzgwMjExX3BhcnNlX21ic3NpZF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIE11bHRpcGxlIEJTU0lEIChNQlNTSUQpIGVsZW1lbnRzIGluIHdpcmVsZXNzIHNjYW4gcmVzdWx0cy4gSXQgaW50cm9kdWNlcyBgY2ZnODAyMTFfaXRlcl9wcm9maWxlX2NvbnRpbnVhdGlvbmAgdG8gY29ycmVjdGx5IGl0ZXJhdGUgb3ZlciBwcm9maWxlIGNvbnRpbnVhdGlvbnMgYW5kIHVwZGF0ZXMgYGNmZzgwMjExX21lcmdlX3Byb2ZpbGVgIHRvIHVzZSBpdC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgcHJvY2Vzc2luZyBtYWxpY2lvdXMgbWFuYWdlbWVudCBmcmFtZXMgKGUuZy4sIGJlYWNvbnMgb3IgcHJvYmUgcmVzcG9uc2VzKSBjb250YWluaW5nIGNyYWZ0ZWQgTUJTU0lEIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[1] Phase: Succeeded StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-15 23:16:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-15 23:16:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2] Phase: Succeeded StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-15 23:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 23:16:22 +0000 UTC FinishedAt: 2026-07-15 23:16:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowpjgxm/series-workflowpjgxm-convert-artifact-603642188/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 23:16:32 +0000 UTC FinishedAt: 2026-07-16 00:10:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 23:16:32 +0000 UTC FinishedAt: 2026-07-16 00:10:36 +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:*e0595195-8411-4a33-8a3c-bf8a8a2cda19,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-workflowpjgxm/series-workflowpjgxm-convert-artifact-603642188/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": "1f722ee2-b3e5-402b-8bd6-256b66a90993", "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-workflowpjgxm/series-workflowpjgxm-build-action-432592762/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 23:16:32 +0000 UTC FinishedAt: 2026-07-16 00:10:16 +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:*e0595195-8411-4a33-8a3c-bf8a8a2cda19,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-workflowpjgxm/series-workflowpjgxm-convert-artifact-603642188/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": "1f722ee2-b3e5-402b-8bd6-256b66a90993", "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-workflowpjgxm/series-workflowpjgxm-build-action-432592762/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 00:10:36 +0000 UTC FinishedAt: 2026-07-16 00:10:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 00:10:36 +0000 UTC FinishedAt: 2026-07-16 00:10:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 00:10:36 +0000 UTC FinishedAt: 2026-07-16 00:11:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 00:10:36 +0000 UTC FinishedAt: 2026-07-16 00:10:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowpjgxm/series-workflowpjgxm-convert-artifact-862059147/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 00:11:07 +0000 UTC FinishedAt: 2026-07-16 00:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 00:11:07 +0000 UTC FinishedAt: 2026-07-16 00:12:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1f722ee2-b3e5-402b-8bd6-256b66a90993,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-workflowpjgxm/series-workflowpjgxm-build-action-432592762/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-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 00:13:01 +0000 UTC FinishedAt: 2026-07-16 00:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 00:13:01 +0000 UTC FinishedAt: 2026-07-16 00:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 00:13:01 +0000 UTC FinishedAt: 2026-07-16 01:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 00:13:01 +0000 UTC FinishedAt: 2026-07-16 01:12:05 +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:*e0595195-8411-4a33-8a3c-bf8a8a2cda19,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-workflowpjgxm/series-workflowpjgxm-convert-artifact-862059147/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": "3812731c-5608-4473-bde2-b007b2440d60", "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-workflowpjgxm/series-workflowpjgxm-build-action-3531381039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 00:13:01 +0000 UTC FinishedAt: 2026-07-16 01:11:55 +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:*e0595195-8411-4a33-8a3c-bf8a8a2cda19,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-workflowpjgxm/series-workflowpjgxm-convert-artifact-862059147/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": "3812731c-5608-4473-bde2-b007b2440d60", "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-workflowpjgxm/series-workflowpjgxm-build-action-3531381039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 01:12:05 +0000 UTC FinishedAt: 2026-07-16 01:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 01:12:05 +0000 UTC FinishedAt: 2026-07-16 01:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 01:12:05 +0000 UTC FinishedAt: 2026-07-16 01:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 01:12:05 +0000 UTC FinishedAt: 2026-07-16 01:13:59 +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:*3812731c-5608-4473-bde2-b007b2440d60,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-workflowpjgxm/series-workflowpjgxm-build-action-3531381039/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-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +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":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"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:*1f722ee2-b3e5-402b-8bd6-256b66a90993,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3812731c-5608-4473-bde2-b007b2440d60,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-workflowpjgxm/series-workflowpjgxm-build-action-432592762/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-workflowpjgxm/series-workflowpjgxm-build-action-3531381039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 01:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 01:14:14 +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":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"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-workflowpjgxm/series-workflowpjgxm-convert-artifact-2647552036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 01:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 01:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 01:14:09 +0000 UTC FinishedAt: 2026-07-16 01:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 01:14:19 +0000 UTC FinishedAt: 2026-07-16 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpjgxm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_iter_profile_continuation","cfg80211_merge_profile","cfg80211_parse_mbssid_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"edf69d8d-534e-40b3-9f53-1736c249aafc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 01:14:19 +0000 UTC FinishedAt: 2026-07-16 04:17:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1f722ee2-b3e5-402b-8bd6-256b66a90993,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3812731c-5608-4473-bde2-b007b2440d60,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-workflowpjgxm/series-workflowpjgxm-build-action-432592762/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-workflowpjgxm/series-workflowpjgxm-build-action-3531381039/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-workflowpjgxm/series-workflowpjgxm-convert-artifact-2647552036/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,}