Name: series-workflow2m8c7 Phase: Succeeded StartedAt: 2026-09-07 07:24:23 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[0] Phase: Succeeded StartedAt: 2026-09-07 07:24:23 +0000 UTC FinishedAt: 2026-09-07 08:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 07:24:23 +0000 UTC FinishedAt: 2026-09-07 08:34:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "USB" ], "series_id": "f5236305-8bc4-4e18-b526-286ec92a124e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_ret_wmm_get_status", "mwifiex_process_sta_cmdresp" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzJiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gYXJyYXkgYm91bmRzIGNoZWNrIG9uIGB0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbLi4uXWAgaW4gYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgLiBUaGlzIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAvIGJ1ZmZlciBvdmVyZmxvdyBpc3N1ZSwgd2hpY2ggaXMgcHJvcGVybHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsdGVyLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGNvcGllcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKCkgdG8gdmFsaWRhdGUgcXVldWVfaW5kZXggYmVmb3JlIGluZGV4aW5nIGludG8gcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzLiBUaGUgbXdpZmlleCBkcml2ZXIgc3VwcG9ydHMgVVNCLWJhc2VkIGRldmljZXMgKENPTkZJR19NV0lGSUVYX1VTQiksIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNiNDA0MDc5OWQxOWRjNjI3OTdjMWJiOTA2NmFmOGQyNzM1OTgyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDg6MzI6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiAmIzQzOzk0Myw4IEBAIGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X3JlcXVpcmVkLFxuIFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VkaXNhYmxlZCk7XG4gXG4mIzQzO1x0XHRcdGlmICh0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXggXHUwMDNlPSBJRUVFODAyMTFfTlVNX0FDUylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3M2I0MDQwNzk5ZDE5ZGM2Mjc5N2MxYmI5MDY2YWY4ZDI3MzU5ODI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwODozMjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYwppbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jCkBAIC05NDMsNiAmIzQzOzk0Myw4IEBAIGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LAogCQkJCSAgICB0bHZfd21tX3FzdGF0dXMtJmd0O2Zsb3dfcmVxdWlyZWQsCiAJCQkJICAgIHRsdl93bW1fcXN0YXR1cy0mZ3Q7ZGlzYWJsZWQpOwogCiYjNDM7CQkJaWYgKHRsdl93bW1fcXN0YXR1cy0mZ3Q7cXVldWVfaW5kZXggJmd0Oz0gSUVFRTgwMjExX05VTV9BQ1MpCiYjNDM7CQkJCWJyZWFrOwogCQkJYWNfc3RhdHVzID0gJmFtcDtwcml2LSZndDt3bW0uYWNfc3RhdHVzW3Rsdl93bW1fcXN0YXR1cy0mZ3Q7CiAJCQkJCQkJIHF1ZXVlX2luZGV4XTsKIAkJCWFjX3N0YXR1cy0mZ3Q7ZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtJmd0O2Rpc2FibGVkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTM4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuICp3b3J0aCogZnV6emluZywgYW5kIGlmIHNvLCBob3cuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0JiMzOTtzIHJlYWQgdGhlIHBhdGNoLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgYm91bmRzIGNoZWNrIGFkZGVkIGluIHRoZSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGZ1bmN0aW9uLiBUaGUgZGlmZiBpdHNlbGYgaXMgc2ltcGxlLCBhIGNoZWNrIG9uIGBxdWV1ZV9pbmRleGAgd2l0aGluIGEgV01NIHN0YXR1cyB1cGRhdGUuIFNwZWNpZmljYWxseSB0aGUgYWRkZWQgY2hlY2s6IGBpZiAodGx2X3dtbV9xc3RhdHVzLSZndDtxdWV1ZV9pbmRleCAmZ3Q7PSBJRUVFODAyMTFfTlVNX0FDUykgYnJlYWs7YC4gVGhpcyBpcyBsb29raW5nIGZvciBpbnZhbGlkIHF1ZXVlIGluZGV4ZXMuCgpOb3csIHRoZSByZWFsIHdvcmsgYmVnaW5zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZHJpdmVyLCBgbXdpZmlleGAsIGZpdHMgaW50byB0aGUgc3lzdGVtLiBJcyBpdCBhIFVTQiwgU0RJTywgb3IgUENJZSBkcml2ZXI/IFRoYXQgZGlyZWN0bHkgaW1wYWN0cyBmdXp6aW5nIHN0cmF0ZWd5LiBDYW4gSSB0YXJnZXQgaXQgd2l0aCBVU0IgZnV6emluZyB0b29scz8gVGhpbmsgc3l6a2FsbGVyJiMzOTtzIFVTQiByYXcgZ2FkZ2V0LCBVU0IgZW11bGF0aW9uIHNldHVwcywgb3IgbWF5YmUgZXZlbiBsZXZlcmFnZSBtYWM4MDIxMV9od3NpbSBpZiBJJiMzOTttIGx1Y2t5LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3RydWN0dXJlIGFuZCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGgsIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgLCBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXIsIGJ1dCB0aGUgZXhhY3QgaW50ZXJmYWNlIHByb3RvY29sIGlzIHN0aWxsIHVuY2xlYXIuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIGRldGVybWluZSBob3cgdGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgaW5zdGFudGlhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yPWNvbmZpZyBNV0lGSUVYXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctOS1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlx0ICBtd2lmaWV4LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjItXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyMzpcdCAgbXdpZmlleF9zZGlvLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNTpcdCAgbXdpZmlleF9wY2llLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy00NS1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2Olx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTVdJRklFWF9VU0IgU3VwcG9ydCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQsIHdoaWNoIGlzIGZhbnRhc3RpYyEgVGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGRvb3JzLiBLbm93aW5nIHRoYXQgYG13aWZpZXhgIGhhcyBhIFVTQiBpbnRlcmZhY2UgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jYCkgaXMga2V5LiBUaGlzIG1lYW5zIHdlJiMzOTt2ZSBnb3QgYSB0YW5naWJsZSBhdmVudWUgZm9yIGZ1enppbmcgdmlhIFVTQiBlbXVsYXRpb24sIHN5emthbGxlciYjMzk7cyBVU0IgcmF3IGdhZGdldCwgb3IgZXZlbiB2aGNpLiBUaGlzIGlzIHNpZ25pZmljYW50OyBVU0IgaXMgZ2VuZXJhbGx5IHdlbGwtdW5kZXJzdG9vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoZSBpbnRlcmZhY2UgcHJvdmlkZXMgYSBkZWZpbmVkIGVudHJ5IHBvaW50LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBpbnZlc3RpZ2F0ZSBgTVdJRklFWF9VU0JgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdOKAmXMgY29uZmlndXJlZCBhbmQgdXNlZC4gQmV5b25kIHRoYXQsIEkgd2FudCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBzZWUgaG93IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgaXMgcmVhY2hlZC4gTWFwcGluZyB0aGF0IG91dCBpcyBlc3NlbnRpYWwgZm9yIGNyYWZ0aW5nIHRhcmdldGVkIGZ1enppbmcgaGFybmVzc2VzLiBLbm93aW5nIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBmbG93IGxlYWRpbmcgdG8gdGhhdCBmdW5jdGlvbiBnaXZlcyBtZSBhIHJvYWRtYXAgZm9yIGVmZmljaWVudCBhbmQgZWZmZWN0aXZlIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGJlIGZvY3VzaW5nIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuICAyMTpcdFxuICAyMjpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMzpcdFx0ICBtd2lmaWV4X3NkaW8uXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE1XSUZJRVhfUENJRVxuICAyNjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjg6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMjk6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFdNTSBTdGF0dXMgUmV0cmlldmFsKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgZnVuY3Rpb24uIEl0JiMzOTtzIHRpbWUgdG8gbWFwIGl0cyBjYWxsIGdyYXBoLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgY29udGV4dHMgdGhhdCB0cmlnZ2VyIHRoaXMgcmV0cmlldmFsIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUgV01NIHN0YXR1cy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhcmVhcyB3aGVyZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgbWlnaHQgc3VyZmFjZSDigJMgdGhlc2UgV01NLXJlbGF0ZWQgZnVuY3Rpb25zIHRlbmQgdG8gYmUgc2Vuc2l0aXZlLiBUaGUgZ29hbCBoZXJlIGlzbiYjMzk7dCBqdXN0IHRvIHNlZSAqdGhhdCogaXQmIzM5O3MgY2FsbGVkLCBidXQgdG8gYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgKndoeSosIGFuZCAqd2hlbiogaXQgaXMgY2FsbGVkLCBmcm9tIHdoYXQgc3RhdGUgaXMgaXQgYmVpbmcgY2FsbGVkIGZyb20/IGFuZCB3aGF0IGV2ZW50cyB0cmlnZ2VyZWQgdGhlIGNhbGxzPyBUaGlzIHdpbGwgaGVscCBwaW5wb2ludCBhbnkgaXNzdWVzIGluIFFvUyBtYW5hZ2VtZW50LCBwb3dlciBzYXZpbmcgZmVhdHVyZXMsIG9yIGludGVyLW9wZXJhdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIG9wZW4gdGhhdCBzb3VyY2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEzNTktXHRjYXNlIEhvc3RDbWRfQ01EX1dNTV9HRVRfU1RBVFVTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTM2MDpcdFx0cmV0ID0gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzYxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmM9ODA4PW13aWZpZXhfd21tX2FkZF9idWZfdHhxdWV1ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYy05MDktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmM6OTEwOmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jLTkxMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oPTg1PXZvaWQgbXdpZmlleF93bW1fc2V0dXBfYWNfZG93bmdyYWRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oOjg2OmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oLTg3LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpLUZpIFdNTSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFdNTSBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvZGUgYXJvdW5kIGxpbmUgOTEwIHRvIDk2MC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoYXQgc3BlY2lmaWMgcGFydCBvZiB0aGUgV01NIGZ1bmN0aW9uYWxpdHkuIFByb2JhYmx5IHNvbWV0aGluZyBhYm91dCBxdWV1ZSBtYW5hZ2VtZW50IG9yIGNvbnRlbnRpb24gbWVjaGFuaXNtcywgYnV0IEkgbmVlZCB0byBzZWUgaXQgaW4gYWN0aW9uIHRvIGtub3cgZm9yIHN1cmUuIExldOKAmXMgZ2V0IHRvIGl0LiBJIHdhbnQgdG8gc2VlIGhvdyBNYXJ2ZWxsJiMzOTtzIGhhbmRsaW5nIHRoZSBXTU0gc3RhbmRhcmQsIGFuZCB3aGF0IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGlzc3VlcyBtaWdodCBiZSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwNTpcdCAqICAgICAgLSBBZG1pc3Npb24gQ29udHJvbCBhY3Rpb24gZnJhbWUgVExWc1xuIDkwNjpcdCAqXG4gOTA3Olx0ICogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFRMVnMgYW5kIHRoZW4gY2FsbHMgZnVydGhlciBzcGVjaWZpYyBmdW5jdGlvbnNcbiA5MDg6XHQgKiB0byBwcm9jZXNzIGFueSBjaGFuZ2VzIGluIHRoZSBxdWV1ZSBwcmlvcml0aXplIG9yIHN0YXRlLlxuIDkwOTpcdCAqL1xuIDkxMDpcdGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuIDkxMTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbiA5MTI6XHR7XG4gOTEzOlx0XHR1OCAqY3VyciA9ICh1OCAqKSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5nZXRfd21tX3N0YXR1cztcbiA5MTQ6XHRcdHVpbnQxNl90IHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSwgdGx2X2xlbjtcbiA5MTU6XHRcdGludCBtYXNrID0gSUVFRTgwMjExX1dNTV9JRV9BUF9RT1NJTkZPX1BBUkFNX1NFVF9DTlRfTUFTSztcbiA5MTY6XHRcdGJvb2wgdmFsaWQgPSB0cnVlO1xuIDkxNzpcdFxuIDkxODpcdFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2X2hkcjtcbiA5MTk6XHRcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKnRsdl93bW1fcXN0YXR1cztcbiA5MjA6XHRcdHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKndtbV9wYXJhbV9pZSA9IE5VTEw7XG4gOTIxOlx0XHRzdHJ1Y3QgbXdpZmlleF93bW1fYWNfc3RhdHVzICphY19zdGF0dXM7XG4gOTIyOlx0XG4gOTIzOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG4gOTI0Olx0XHRcdCAgICBcJiMzNDtpbmZvOiBXTU06IFdNTV9HRVRfU1RBVFVTIGNtZHJlc3AgcmVjZWl2ZWQ6ICVkXFxuXCYjMzQ7LFxuIDkyNTpcdFx0XHQgICAgcmVzcF9sZW4pO1xuIDkyNjpcdFxuIDkyNzpcdFx0d2hpbGUgKChyZXNwX2xlbiBcdTAwM2U9IHNpemVvZih0bHZfaGRyLVx1MDAzZWhlYWRlcikpIFx1MDAyNlx1MDAyNiB2YWxpZCkge1xuIDkyODpcdFx0XHR0bHZfaGRyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKikgY3VycjtcbiA5Mjk6XHRcdFx0dGx2X2xlbiA9IGxlMTZfdG9fY3B1KHRsdl9oZHItXHUwMDNlaGVhZGVyLmxlbik7XG4gOTMwOlx0XG4gOTMxOlx0XHRcdGlmIChyZXNwX2xlbiBcdTAwM2MgdGx2X2xlbiAmIzQzOyBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKVxuIDkzMjpcdFx0XHRcdGJyZWFrO1xuIDkzMzpcdFxuIDkzNDpcdFx0XHRzd2l0Y2ggKGxlMTZfdG9fY3B1KHRsdl9oZHItXHUwMDNlaGVhZGVyLnR5cGUpKSB7XG4gOTM1Olx0XHRcdGNhc2UgVExWX1RZUEVfV01NUVNUQVRVUzpcbiA5MzY6XHRcdFx0XHR0bHZfd21tX3FzdGF0dXMgPVxuIDkzNzpcdFx0XHRcdFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKilcbiA5Mzg6XHRcdFx0XHRcdHRsdl9oZHI7XG4gOTM5Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG4gOTQwOlx0XHRcdFx0XHQgICAgXCYjMzQ7aW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcdFwmIzM0O1xuIDk0MTpcdFx0XHRcdFx0ICAgIFwmIzM0O1FTVEFUVVMgVExWOiAlZCwgJWQsICVkXFxuXCYjMzQ7LFxuIDk0MjpcdFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCxcbiA5NDM6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZmxvd19yZXF1aXJlZCxcbiA5NDQ6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQpO1xuIDk0NTpcdFxuIDk0NjpcdFx0XHRcdGlmICh0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXggXHUwMDNlPSBJRUVFODAyMTFfTlVNX0FDUylcbiA5NDc6XHRcdFx0XHRcdGJyZWFrO1xuIDk0ODpcdFx0XHRcdGFjX3N0YXR1cyA9IFx1MDAyNnByaXYtXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXHUwMDNlXG4gOTQ5Olx0XHRcdFx0XHRcdFx0XHQgcXVldWVfaW5kZXhdO1xuIDk1MDpcdFx0XHRcdGFjX3N0YXR1cy1cdTAwM2VkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy1cdTAwM2VkaXNhYmxlZDtcbiA5NTE6XHRcdFx0XHRhY19zdGF0dXMtXHUwMDNlZmxvd19yZXF1aXJlZCA9XG4gOTUyOlx0XHRcdFx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQ7XG4gOTUzOlx0XHRcdFx0YWNfc3RhdHVzLVx1MDAzZWZsb3dfY3JlYXRlZCA9IHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X2NyZWF0ZWQ7XG4gOTU0Olx0XHRcdFx0YnJlYWs7XG4gOTU1Olx0XG4gOTU2Olx0XHRcdGNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOlxuIDk1NzpcdFx0XHRcdC8qXG4gOTU4Olx0XHRcdFx0ICogUG9pbnQgdGhlIHJlZ3VsYXIgSUVFRSBJRSAyIGJ5dGVzIGludG8gdGhlIE1hcnZlbGwgSUVcbiA5NTk6XHRcdFx0XHQgKiAgIGFuZCBzZXR1cCB0aGUgSUVFRSBJRSB0eXBlIGFuZCBsZW5ndGggYnl0ZSBmaWVsZHNcbiA5NjA6XHRcdFx0XHQgKi9cbiA5NjE6XHRcbiA5NjI6XHRcdFx0XHR3bW1fcGFyYW1faWUgPVxuIDk2MzpcdFx0XHRcdFx0KHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKikgKGN1cnIgJiM0MztcbiA5NjQ6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIDIpO1xuIDk2NTpcdFx0XHRcdHdtbV9wYXJhbV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gPSAodTgpIHRsdl9sZW47XG4gOTY2Olx0XHRcdFx0d21tX3BhcmFtX2llLVx1MDAzZXZlbmRfaGRyLmVsZW1lbnRfaWQgPVxuIDk2NzpcdFx0XHRcdFx0XHRcdFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQztcbiA5Njg6XHRcbiA5Njk6XHRcdFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIENNRCxcbiA5NzA6XHRcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBDTURfUkVTUDogV01NX0dFVF9TVEFUVVM6XFx0XCYjMzQ7XG4gOTcxOlx0XHRcdFx0XHQgICAgXCYjMzQ7V01NIFBhcmFtZXRlciBTZXQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuIDk3MjpcdFx0XHRcdFx0ICAgIHdtbV9wYXJhbV9pZS1cdTAwM2Vxb3NfaW5mb19iaXRtYXAgXHUwMDI2IG1hc2spO1xuIDk3MzpcdFxuIDk3NDpcdFx0XHRcdGlmICh3bW1fcGFyYW1faWUtXHUwMDNldmVuZF9oZHIubGVuICYjNDM7IDIgXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIEJvdW5kcyBDaGVjayoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjazogYGlmICh0bHZfd21tX3FzdGF0dXMtJmd0O3F1ZXVlX2luZGV4ICZndDs9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGUgcHVycG9zZSBvZiB0aGlzIHNlZW1zIHByZXR0eSBjbGVhciDigJMgdG8gc3RvcCBvdXQtb2YtYm91bmRzIGFjY2VzcyB0byBgcHJpdi0mZ3Q7d21tLmFjX3N0YXR1c2AuIEJ1dCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBhbmQgdGhlcmVmb3JlIGZ1enphYmxlPyBUaGUgdHJpYWdlIGd1aWRlbGluZXMgbWFrZSB0aGF0IHRoZSBhYnNvbHV0ZSBwcmlvcml0eS4gSWYgaXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAodGhpbmsgR0NFIG9yIFFFTVUgd2l0aCBlbXVsYXRlZCBkZXZpY2VzKSwgd2UmIzM5O3JlIHdhc3Rpbmcgb3VyIHRpbWUuIE5vIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXdpZmlleGAgaGFzIHNvbWUgcG90ZW50aWFsLiBJdCYjMzk7cyBhIFVTQiBkcml2ZXIsIGBNV0lGSUVYX1VTQmAsIGFuZCB0aGF04oCZcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGVtdWxhdGFibGUgdXNpbmcgVVNCIHJhdyBnYWRnZXQgb3IgdkhDSSDigJMgU3l6a2FsbGVyIHNwZWNpZmljYWxseSBoYXMgVVNCIHJhdyBnYWRnZXQgc3VwcG9ydCBmb3Igd2lmaSBkcml2ZXJzLCBhbmQgKm13aWZpZXgqIGlzIGEgVVNCIHdpZmkgZHJpdmVyLiBUaGlzIG1lYW5zIHdlIGNhbiBpbmplY3QgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMgdGhyb3VnaCBVU0IgYnVsayBvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcGx1cy4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1XSUZJRVhfVVNCYCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdGhhdCBhbGwgdGhlIHJpZ2h0IHN5bWJvbHMgYXJlIGF2YWlsYWJsZS4gVGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGxvb2sgbGlrZSB0aGlzOiBgTVdJRklFWGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgYE1XSUZJRVhfVVNCYCBkZXBlbmRzIG9uIGBNV0lGSUVYICZhbXA7JmFtcDsgVVNCYCBhbmQgc2VsZWN0cyBgRldfTE9BREVSYC4gVGhhdCBsb29rcyByaWdodCwgYnV0IGxldCYjMzk7cyBkbyBhIHF1aWNrIGdyZXAgc2VhcmNoIHRvIGNvbmZpcm0uIEkgc2hvdWxkIHNjYW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmb3IgYE1XSUZJRVhgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYml0ZSB1cyBsYXRlci4gSnVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NDYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xNj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZT00PW9iai0kKENPTkZJR19MSUJFUlRBU19USElORklSTSlcdCYjNDM7PSBsaWJlcnRhc190Zi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVdJRklFWClcdCYjNDM7PSBtd2lmaWV4L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZS02LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM9NDI9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0Mzptd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDQtXHRcdFx0XHQgIHU4IGJhbmRzLCB1MTYgbWNzX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ4LVx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0OTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM9ODU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODY6bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04Ny1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODk6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo5OTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDAtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTAyOlx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAzLVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwNi1cdC8qIEZpbGwgVkhUIGNhcCBpbmZvICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEwNzpcdG13aWZpZXhfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEyOTpcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMzAtXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnJ4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTE6XHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUyLVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU3OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU4Olx0XHRcdCAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1OS1cdFx0XHQgICAgIHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjE6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MjpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjMtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjQ6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjU6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjYtXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTc2LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE3NzpcdFx0dmh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzgtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4MS1cdFx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTgyOlx0XHRtZW1jcHkoKHU4ICopdmh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTgzLVx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE4NjpcdFx0bXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFx1MDAyNnZodF9jYXAtXHUwMDNldmh0X2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg3LVx0XHRcdFx0XHQgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk0LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE5NTpcdFx0XHR2aHRfb3AgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTYtXHRcdFx0bWVtc2V0KHZodF9vcCwgMCwgc2l6ZW9mKCp2aHRfb3ApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5OS1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDA6XHRcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTIwMS1cdFx0XHRtZW1jcHkoKHU4ICopdmh0X29wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMjpcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDMtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfb3Blcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjUzOmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTQtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTU6XHRcdFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjcyLS8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIEJsb2NrQUNLIHNldHVwIGluZm9ybWF0aW9uIGZvciBnaXZlblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNzM6ICogbXdpZmlleF9wcml2YXRlIHN0cnVjdHVyZSBmb3IgMTFhYyBlbmFibGVkIG5ldHdvcmtzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3NTp2b2lkIG13aWZpZXhfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI5NDpib29sIG13aWZpZXhfaXNfYnNzX2luXzExYWNfbW9kZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTY6XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjk3LVx0c3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uICp2aHRfb3Blcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MzExOnU4IG13aWZpZXhfZ2V0X2NlbnRlcl9mcmVxX2luZGV4KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IGJhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMi1cdFx0XHRcdCB1MzIgcHJpX2NoYW4sIHU4IGNoYW5fYncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI1OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjY6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI4OmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yOS1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMxOnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTMyLVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMjp2b2lkIG13aWZpZXhfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODppbmxpbmUgaW50IG13aWZpZXhfaXNfMTFoX2FjdGl2ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM9MjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjptd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc6XHRcdFx0ICAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyOTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMwOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzozMTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2xvY2FsX3B3cl9jb25zdHJhaW50ICpjb25zdHJhaW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTMyLVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjM5Olx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQwLVx0c2JhbmQgPSBwcml2LVx1MDAzZXdkZXYud2lwaHktXHUwMDNlYmFuZHNbcmFkaW9fdHlwZV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDI6XHRjYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQzLVx0Y2FwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo0OTpcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTUwLVx0Y29uc3RyYWludC1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DT05TVFJBSU5UKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NTY6XHRpZV9oZWFkZXIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01Ny1cdGllX2hlYWRlci1cdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy02OS0vKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgMTFoIGV4dGVuc2lvbnMgaW4gdGhlIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NzA6aW50IG13aWZpZXhfMTFoX2FjdGl2YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGJvb2wgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjc4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFIX0ksIFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTg3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg4OnZvaWQgbXdpZmlleF8xMWhfcHJvY2Vzc19qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg5Olx0XHRcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTQtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk1Olx0XHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ni1cdFx0cHJpdi1cdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTctXHRcdGJzc19kZXNjLVx1MDAzZWNhcF9pbmZvX2JpdG1hcCB8PSBXTEFOX0NBUEFCSUxJVFlfU1BFQ1RSVU1fTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5ODpcdFx0bXdpZmlleF8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHByaXYsIGJ1ZmZlciwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk5LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMDAtXHRcdC8qIERlYWN0aXZhdGUgMTFoIGZ1bmN0aW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMDE6XHRcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMDItXHRcdHByaXYtXHUwMDNlc3RhdGVfMTFoLmlzXzExaF9hY3RpdmUgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjExMTp2b2lkIG13aWZpZXhfZGZzX2NhY193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTQtXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE1Olx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE2Olx0XHRcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE3LVx0XHRcdFx0ICAgICBkZnNfY2FjX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjAtXHRpZiAocHJpdi1cdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTIxOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjItXHRcdFx0ICAgIFwmIzM0O0NBQyB0aW1lciBmaW5pc2hlZDsgTm8gcmFkYXIgZGV0ZWN0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTMyOmludCBtd2lmaWV4X2NtZF9pc3N1ZV9jaGFuX3JlcG9ydF9yZXF1ZXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMzLVx0XHRcdFx0XHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzNi1cdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9yZXEgKmNyX3JlcSA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuY2hhbl9ycHRfcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEzNzpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyAqcmFkYXJfcGFyYW1zID0gKHZvaWQgKilkYXRhX2J1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE0OS1cdGlmIChyYWRhcl9wYXJhbXMtXHUwMDNlY2FjX3RpbWVfbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTUwOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTEtXHRcdFx0ICAgIFwmIzM0OzExaDogaXNzdWluZyBERlMgUmFkYXIgY2hlY2sgZm9yIGNoYW5uZWw9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTQ6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLCBcJiMzNDtjYW5jZWxsaW5nIENBQ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU5OmludCBtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYwLVx0XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2MjpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyByYWRhcl9wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2NDpcdG1lbXNldChcdTAwMjZyYWRhcl9wYXJhbXMsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjUtXHRyYWRhcl9wYXJhbXMuY2hhbmRlZiA9IGNoYW5kZWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjg6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2OS1cdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzU6dm9pZCBtd2lmaWV4X2Fib3J0X2NhYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc3LVx0aWYgKHByaXYtXHUwMDNld2Rldi5saW5rc1swXS5jYWNfc3RhcnRlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3ODpcdFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc5Olx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgwLVx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBzdG9wIENBQyBpbiBGV1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTgxOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODItXHRcdFx0ICAgIFwmIzM0O0Fib3J0aW5nIGRlbGF5ZWQgd29yayBmb3IgQ0FDLlxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxOTQ6aW50IG13aWZpZXhfMTFoX2hhbmRsZV9jaGFucnB0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk1LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTctXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY2hhbl9ycHRfZXZlbnQgKnJwdF9ldmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxOTg6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX3JwdF9kYXRhICpycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk5LVx0dTE2IGV2ZW50X2xlbiwgdGx2X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA1LVx0aWYgKGxlMzJfdG9fY3B1KHJwdF9ldmVudC1cdTAwM2VyZXN1bHQpICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjA2Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIwNy1cdFx0XHQgICAgXCYjMzQ7RXJyb3IgaW4gY2hhbm5lbCByZXBvcnQgZXZlbnRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjExOlx0d2hpbGUgKGV2ZW50X2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEyLVx0XHRycHQgPSAodm9pZCAqKVx1MDAyNnJwdF9ldmVudC1cdTAwM2V0bHZidWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxNy1cdFx0XHRpZiAocnB0LVx1MDAzZW1hcC5yYWRhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIxODpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxOS1cdFx0XHRcdFx0ICAgIFwmIzM0O1JBREFSIERldGVjdGVkIG9uIGNoYW5uZWwgJWQhXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMzgtLyogSGFuZGxlciBmb3IgcmFkYXIgZGV0ZWN0ZWQgZXZlbnQgZnJvbSBGVy4qL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIzOTppbnQgbXdpZmlleF8xMWhfaGFuZGxlX3JhZGFyX2RldGVjdGVkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQwLVx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0MjpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX2RldF9ldmVudCAqcmRyX2V2ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0NjpcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0Ny1cdFx0ICAgIFwmIzM0O3JhZGFyIGRldGVjdGVkOyBpbmRpY2F0aW5nIGtlcm5lbFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ4Olx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ5Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1MC1cdFx0XHQgICAgXCYjMzQ7RmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUyLVx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjUzOlx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O3JlZ2RvbWFpbjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU0LVx0XHQgICAgcmRyX2V2ZW50LVx1MDAzZXJlZ19kb21haW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI1NTpcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLCBcJiMzNDtyYWRhciBkZXRlY3Rpb24gdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU2LVx0XHQgICAgcmRyX2V2ZW50LVx1MDAzZWRldF90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Njp2b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjg6XHRzdHJ1Y3QgbXdpZmlleF91YXBfYnNzX3BhcmFtICpic3NfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2OS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzA6XHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzE6XHRcdFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzItXHRcdFx0XHQgICAgIGRmc19jaGFuX3N3X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzUtXHRpZiAoIWJzc19jZmctXHUwMDNlYmVhY29uX3BlcmlvZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3NjpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzctXHRcdFx0ICAgIFwmIzM0O2NoYW5uZWwgc3dpdGNoOiBBUCBhbHJlYWR5IHN0b3BwZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgxOlx0bXdpZmlleF91YXBfc2V0X2NoYW5uZWwocHJpdiwgYnNzX2NmZywgcHJpdi1cdTAwM2VkZnNfY2hhbmRlZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MzpcdGlmIChtd2lmaWV4X2NvbmZpZ19zdGFydF91YXAocHJpdiwgYnNzX2NmZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODQ6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjg1LVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gc3RhcnQgQVAgYWZ0ZXIgY2hhbm5lbCBzd2l0Y2hcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg5Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkwLVx0XHQgICAgXCYjMzQ7aW5kaWNhdGluZyBjaGFubmVsIHN3aXRjaCBjb21wbGV0aW9uIHRvIGtlcm5lbFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI1OmludCBtd2lmaWV4X2ZpbGxfY2FwX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggcmFkaW9fdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNi1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyLVx0aWYgKFdBUk5fT05fT05DRSghc2JhbmQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsIFwmIzM0O0ludmFsaWQgcmFkaW8gdHlwZSFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzA6c3RhdGljIHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcxOm13aWZpZXhfZ2V0X2JhX3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcyOlx0XHQgICAgICBlbnVtIG13aWZpZXhfYmFfc3RhdHVzIGJhX3N0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy03My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzQ6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo5NjppbnQgbXdpZmlleF9yZXRfMTFuX2RlbGJhKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTctXHRcdFx0ICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTktXHRpbnQgdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwMDpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDEtXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2RlbGJhICpkZWxfYmEgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5kZWxfYmE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNS1cdGlmIChkZWxfYmEtXHUwMDNlZGVsX3Jlc3VsdCA9PSBCQV9SRVNVTFRfU1VDQ0VTUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwNjpcdFx0bXdpZmlleF9kZWxfYmFfdGJsKHByaXYsIHRpZCwgZGVsX2JhLVx1MDAzZXBlZXJfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA3LVx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEwOlx0XHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTExLVx0XHRpZiAodHhfYmFfdGJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjExMjpcdFx0XHRtd2lmaWV4X3NlbmRfYWRkYmEocHJpdiwgdHhfYmFfdGJsLVx1MDAzZXRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTMtXHRcdFx0XHRcdCAgIHR4X2JhX3RibC1cdTAwM2VyYSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjE6XHRcdG13aWZpZXhfY3JlYXRlX2JhX3RibChwcml2LCBkZWxfYmEtXHUwMDNlcGVlcl9tYWNfYWRkciwgdGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMi1cdFx0XHRcdCAgICAgIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjQ6XHRcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI2LVx0XHRpZiAodHhfYmFfdGJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNzpcdFx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdHhfYmFfdGJsLVx1MDAzZXRpZCwgdHhfYmFfdGJsLVx1MDAzZXJhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyOC1cdFx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0MjppbnQgbXdpZmlleF9yZXRfMTFuX2FkZGJhX3JlcShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0My1cdFx0XHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQ2LVx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9hZGRiYV9yc3AgKmFkZF9iYV9yc3AgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5hZGRfYmFfcnNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0NzpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNDg6XHRzdHJ1Y3QgbXdpZmlleF9yYV9saXN0X3RibCAqcmFfbGlzdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDktXHR1MTYgYmxvY2tfYWNrX3BhcmFtX3NldCA9IGxlMTZfdG9fY3B1KGFkZF9iYV9yc3AtXHUwMDNlYmxvY2tfYWNrX3BhcmFtX3NldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTc6XHR0aWRfZG93biA9IG13aWZpZXhfd21tX2Rvd25ncmFkZV90aWQocHJpdiwgdGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTg6XHRyYV9saXN0ID0gbXdpZmlleF93bW1fZ2V0X3JhbGlzdF9ub2RlKHByaXYsIHRpZF9kb3duLCBhZGRfYmFfcnNwLVx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE1OS1cdFx0cGVlcl9tYWNfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2NC1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE2NTpcdFx0bXdpZmlleF9kZWxfYmFfdGJsKHByaXYsIHRpZCwgYWRkX2JhX3JzcC1cdTAwM2VwZWVyX21hY19hZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2Ni1cdFx0XHRcdCAgIFRZUEVfREVMQkFfU0VOVCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzM6XHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVx1MDAzZXBlZXJfbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3NC1cdGlmICh0eF9iYV90YmwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzU6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVZFTlQsIFwmIzM0O2luZm86IEJBIHN0cmVhbSBjb21wbGV0ZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc2LVx0XHR0eF9iYV90YmwtXHUwMDNlYmFfc3RhdHVzID0gQkFfU0VUVVBfQ09NUExFVEU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTg4Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtCQSBzdHJlYW0gbm90IGNyZWF0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIwMjppbnQgbXdpZmlleF9jbWRfcmVjZmdfdHhfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAzLVx0XHRcdCAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgaW50IGNtZF9hY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNC1cdGNhc2UgSG9zdENtZF9BQ1RfR0VOX1NFVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMTU6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNi1cdFx0XHQgICAgXCYjMzQ7Y21kOiBzZXQgdHhfYnVmPSVkXFxuXCYjMzQ7LCAqYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjM1OmludCBtd2lmaWV4X2NtZF9hbXNkdV9hZ2dyX2N0cmwoc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzYtXHRcdFx0XHRpbnQgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzc6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsICphYV9jdHJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2Ny0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNjg6aW50IG13aWZpZXhfY21kXzExbl9jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNjktXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjcwOlx0XHRcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl90eF9jZmcgKnR4Y2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jPTI5OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyOTk6bXdpZmlleF9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDA6XHRcdFx0ICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAxLVx0XHRcdCAgIHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzAzOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDQ6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8gKmh0X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA1Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqY2hhbl9saXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNjpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqYnNzX2NvXzIwNDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA3Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwICpleHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwOC1cdGludCByZXRfbGVuID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMxNjpcdHJhZGlvX3R5cGUgPSBtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTctXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE5LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjA6XHRcdGh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMTpcdFx0bWVtc2V0KGh0X2NhcCwgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzIyLVx0XHRodF9jYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9IVF9DQVBBQklMSVRZKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzI0LVx0XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI1Olx0XHRtZW1jcHkoKHU4ICopIGh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjYtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI5Olx0XHRtd2lmaWV4X2ZpbGxfY2FwX2luZm8ocHJpdiwgcmFkaW9fdHlwZSwgXHUwMDI2aHRfY2FwLVx1MDAzZWh0X2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMwLVx0XHQvKiBVcGRhdGUgSFQ0MCBjYXBhYmlsaXR5IGZyb20gY3VycmVudCBjaGFubmVsIGluZm9ybWF0aW9uICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMy1cdFx0XHR1OCByYWRpbyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM0Olx0XHRcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzUtXHRcdFx0aW50IGZyZXEgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzYzOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2NDpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2OC1cdFx0aWYgKHByaXYtXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjk6XHRcdFx0aHRfaW5mbyA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8gKikgKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzAtXHRcdFx0bWVtc2V0KGh0X2luZm8sIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzcxOlx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzcyLVx0XHRcdGh0X2luZm8tXHUwMDNlaGVhZGVyLnR5cGUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzgtXHRcdFx0bWVtY3B5KCh1OCAqKSBodF9pbmZvICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzc5Olx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODAtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl9odF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzg5Olx0XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5MDpcdFx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzkzLVx0XHRjaGFuX2xpc3QgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5NDpcdFx0XHQoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5NS1cdFx0bWVtc2V0KGNoYW5fbGlzdCwgMCwgc3RydWN0X3NpemUoY2hhbl9saXN0LCBjaGFuX3NjYW5fcGFyYW0sIDEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk3LVx0XHRjaGFuX2xpc3QtXHUwMDNlaGVhZGVyLmxlbiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk4Olx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgbXdpZmlleF9jaGFuX3NjYW5fcGFyYW1fc2V0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk5LVx0XHRjaGFuX2xpc3QtXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLmNoYW5fbnVtYmVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDAxLVx0XHRjaGFuX2xpc3QtXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLnJhZGlvX3R5cGUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQwMjpcdFx0XHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxNi1cdGlmIChic3NfZGVzYy1cdTAwM2ViY25fYnNzX2NvXzIwNDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTc6XHRcdGJzc19jb18yMDQwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxOC1cdFx0bWVtc2V0KGJzc19jb18yMDQwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxOTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjAtXHRcdGJzc19jb18yMDQwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfQlNTX0NPRVhfMjA0MCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNC1cdFx0bWVtY3B5KCh1OCAqKSBic3NfY29fMjA0MCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQyNTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNi1cdFx0ICAgICAgIGJzc19kZXNjLVx1MDAzZWJjbl9ic3NfY29fMjA0MCAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDMwOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzE6XHRcdHJldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM1LVx0XHRoZHIgPSAodm9pZCAqKWJzc19kZXNjLVx1MDAzZWJjbl9leHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNjpcdFx0ZXh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKikgKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0Mzc6XHRcdG1lbXNldChleHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM4LVx0XHRleHRfY2FwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfRVhUX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUxOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSAmIzQzOyBoZHItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ1MjpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgJiM0MzsgaGRyLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2MS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjI6c3RhdGljIGludCBtd2lmaWV4X2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjM6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF90YmxfcHRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDY1Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0ODE6dm9pZCBtd2lmaWV4XzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MjpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDgzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODQtXHRpZiAoIXR4X2JhX3Rzcl90YmwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg1Olx0ICAgIG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0eF9iYV90c3JfdGJsKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODYtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg4Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4OS1cdFx0ICAgIFwmIzM0O2luZm86IHR4X2JhX3Rzcl90YmwgJXBcXG5cJiMzNDssIHR4X2JhX3Rzcl90YmwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00OTgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDk5OnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX2FsbF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MDEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo1MDI6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICpkZWxfdGJsX3B0ciwgKnRtcF9ub2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA2LVx0XHRcdFx0IFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHIsIGxpc3QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTA3Olx0XHRtd2lmaWV4XzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShwcml2LCBkZWxfdGJsX3B0cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTIxOnN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjUyMjptd2lmaWV4X2dldF9iYV90Ymwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgaW50IHRpZCwgdTggKnJhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTI0Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTU0MS0gKi9cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzkxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gSSBrbm93IGl0JiMzOTtzIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGxgLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgd2hhdCBJJiMzOTttIGFmdGVyLiBNeSBwbGFuIGlzIHRvIGp1bXAgZGlyZWN0bHkgaW50byB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3RvcnkuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCBhbGwgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZXhhY3QgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWFydmVsbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01BUlZFTExcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvS2NvbmZpZ1wmIzM0O1xuICAxNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wmIzM0O1xuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNV0w4S1xuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsIFRPUERPRyA4MDIuMTEgd2lyZWxlc3MgY2FyZHMuXG4gIDI0Olx0XG4gIDI1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMjY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbXdsOGsuICBJZiB1bnN1cmUsIHNheSBOLlxuICAyNzpcdFxuICAyODpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU0NgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLiBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGFsbCBpdHMgY2FsbGVycyBhbmQgaWRlbnRpZnkgYW55IG90aGVyIHJlbGV2YW50IGVudHJ5IHBvaW50cyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBxdWlja2x5IHJldmVhbCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIG5lZWQgZm9yIHRoaXMgcGFydGljdWxhciBzdGF0dXMgcmV0cmlldmFsLgoKUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTM1MC0xMzcwLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgY29uY3JldGUgZXhhbXBsZXMgb2Ygd2hlcmUgYW5kIGhvdyB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCwgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggaW4gdGhvc2Ugc3BlY2lmaWMgc2NlbmFyaW9zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgdG8gY29udGFpbiB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gSSBuZWVkLiBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGFzIG11Y2ggYXMgdGhlIGRpcmVjdCBjYWxscy4gVGhpcyBsZXZlbCBvZiBkZXRhaWwgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiBpdHMgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM1MDpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBDTUQsIFwmIzM0O2NtZDogY3Vycl90eF9idWZfc2l6ZT0lZFxcblwmIzM0OyxcbjEzNTE6XHRcdFx0XHQgICAgYWRhcHRlci1cdTAwM2VjdXJyX3R4X2J1Zl9zaXplKTtcbjEzNTI6XHRcbjEzNTM6XHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLnVwZGF0ZV9tcF9lbmRfcG9ydClcbjEzNTQ6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWlmX29wcy51cGRhdGVfbXBfZW5kX3BvcnQoYWRhcHRlcixcbjEzNTU6XHRcdFx0XHRcdGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcGFyYW1zLnR4X2J1Zi5tcF9lbmRfcG9ydCkpO1xuMTM1NjpcdFx0XHRicmVhaztcbjEzNTc6XHRcdGNhc2UgSG9zdENtZF9DTURfQU1TRFVfQUdHUl9DVFJMOlxuMTM1ODpcdFx0XHRicmVhaztcbjEzNTk6XHRcdGNhc2UgSG9zdENtZF9DTURfV01NX0dFVF9TVEFUVVM6XG4xMzYwOlx0XHRcdHJldCA9IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHByaXYsIHJlc3ApO1xuMTM2MTpcdFx0XHRicmVhaztcbjEzNjI6XHRcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0lCU1NfQ09BTEVTQ0lOR19TVEFUVVM6XG4xMzYzOlx0XHRcdHJldCA9IG13aWZpZXhfcmV0X2lic3NfY29hbGVzY2luZ19zdGF0dXMocHJpdiwgcmVzcCk7XG4xMzY0Olx0XHRcdGJyZWFrO1xuMTM2NTpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9NRU1fQUNDRVNTOlxuMTM2NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3JldF9tZW1fYWNjZXNzKHByaXYsIHJlc3AsIGRhdGFfYnVmKTtcbjEzNjc6XHRcdFx0YnJlYWs7XG4xMzY4Olx0XHRjYXNlIEhvc3RDbWRfQ01EX01BQ19SRUdfQUNDRVNTOlxuMTM2OTpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9CQlBfUkVHX0FDQ0VTUzpcbjEzNzA6XHRcdGNhc2UgSG9zdENtZF9DTURfUkZfUkVHX0FDQ0VTUzpcbjEzNzE6XHRcdGNhc2UgSG9zdENtZF9DTURfUE1JQ19SRUdfQUNDRVNTOlxuMTM3MjpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9DQVVfUkVHX0FDQ0VTUzpcbjEzNzM6XHRcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0VFUFJPTV9BQ0NFU1M6XG4xMzc0Olx0XHRcdHJldCA9IG13aWZpZXhfcmV0X3JlZ19hY2Nlc3MoY21kcmVzcF9ubywgcmVzcCwgZGF0YV9idWYpO1xuMTM3NTpcdFx0XHRicmVhaztcbjEzNzY6XHRcdGNhc2UgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFOlxuMTM3NzpcdFx0XHRicmVhaztcbjEzNzg6XHRcdGNhc2UgSG9zdENtZF9DTURfMTFOX0NGRzpcbjEzNzk6XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDY3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkmIzM5O3ZlIGdvdCBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGFuZCBJIHNlZSB0aGF0IGl0JiMzOTtzIGNhbGxlZCBieSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYC4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgaGllcmFyY2h5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcyBhY3R1YWxseSBpbnZva2VkLiBTbywgSSBuZWVkIHRvIGdvIGh1bnQgdGhhdCBmdW5jdGlvbiBkb3duIHdpdGggYSBxdWljayBzZWFyY2guIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBidWlsZCB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTgwMz1pbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODkxLVx0XHQvKiBoYW5kbGUgcmVzcG9uc2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo4OTI6XHRcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChwcml2LCBjbWRyZXNwX25vLCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04OTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTM0PWludCBtd2lmaWV4X3VhcF9wcmVwYXJlX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1aW50MTZfdCBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM2LVx0XHRcdCAgICB2b2lkICpkYXRhX2J1Ziwgdm9pZCAqY21kX2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMzc6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosIHUxNiBjbWRyZXNwX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM4LVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTExOTA9c3RhdGljIGludCBtd2lmaWV4X3JldF9nZXRfY2hhbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIxMS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMTI6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTMtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMTIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBDb21tYW5kIFJlc3BvbnNlIEhhbmRsaW5nIGluIG13aWZpZXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG13aWZpZXhgIGRyaXZlciBwcm9jZXNzZXMgY29tbWFuZCByZXNwb25zZXMuIEkga25vdyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBpdCYjMzk7cyB0aGUgb25lIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgdGhvc2UgcmVzcG9uc2VzIHRoYXQgYXJlIGNvbWluZyBpbiBmcm9tIHRoZSBkZXZpY2UuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRob3NlIHJlc3BvbnNlcyAqcmVjZWl2ZWQqIGluIHRoZSBmaXJzdCBwbGFjZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGhhbmRsZWQgb3ZlciBVU0IsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgVVNCLXNwZWNpZmljIHBhcnRzIG9mIHRoZSBkcml2ZXIuCgpUaGVyZWZvcmUsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHJlY2VpdmUgZnVuY3Rpb25zLiBUaGUgY29tbWVudHMgcG9pbnQgdG93YXJkIGBtd2lmaWV4X3VzYl9yZWN2YCBhbmQgYG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlYCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXNlIGFyZSBpbnZva2VkIGZyb20uIFNvLCBJIG5lZWQgdG8gb3BlbiB0aGUgc291cmNlIGNvZGUgZm9yIGBtd2lmaWV4X3VzYi5jYCAob3IgcG90ZW50aWFsbHkgYHVzYi5jYCB3aXRoaW4gdGhlIGBtd2lmaWV4YCBkaXJlY3RvcnkpIGFuZCBzdGFydCB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuIFRoYXQgd2lsbCBiZSB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTc0MT1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTgwMi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo4MDM6aW50IG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9MTA4NT1td2lmaWV4X2NhbmNlbF9wZW5kaW5nX2lvY3RsKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTMtXHRcdC8qIHNldHRpbmcgY3Vycl9jbWQgdG8gTlVMTCBpcyBxdWl0ZSBkYW5nZXJvdXMsIGJlY2F1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzoxMDk0Olx0XHQgKiBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCBjaGVja3MgY3Vycl9jbWQgdG8gYmUgIT0gTlVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTUtXHRcdCAqIGF0IHRoZSBiZWdpbm5pbmcgdGhlbiByZWxpZXMgb24gaXQgYW5kIGRlcmVmZXJlbmNlc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjQ4PWludCBtd2lmaWV4X21haW5fcHJvY2VzcyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU2LVx0XHRcdGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzU3Olx0XHRcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDA9aW50IG13aWZpZXhfZXhlY19uZXh0X2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMTppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDItdm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0zMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzI6bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3Ioc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTMzLVx0XHRcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjIwLVx0aWYgKHJlc3AtXHUwMDNlcmVzdWx0ICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjIxOlx0XHRtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcF9lcnJvcihwcml2LCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjItXHRcdHJldHVybiAtMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AuIFRoaXMgZnVuY3Rpb24gZ2V0cyBleGVjdXRlZCB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgV01NX0dFVF9TVEFUVVMgcmVzcG9uc2UgZnJvbSB0aGUgZmlybXdhcmUuIEJlY2F1c2UgdGhpcyBkcml2ZXIsIGBtd2lmaWV4YCwgdXNlcyBhIFVTQiBidXMgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgaXQmIzM5O3MgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBJJiMzOTttIHVzaW5nLCB0aGFua3MgdG8gVVNCIGRldmljZSBlbXVsYXRpb24gdXNpbmcgdG9vbHMgbGlrZSByYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6ZXIuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz8KCkxldCYjMzk7cyBicmVhayBpdCBkb3duIGJhc2VkIG9uIHRoZSBlc3RhYmxpc2hlZCBjcml0ZXJpYS4gU2VjdGlvbiAzIHNheXM6CgoqICAgKipSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOioqIFNwZWNpZmljYWxseSwgZHJpdmVycyByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIHdoaWNoIHRoaXMgKmFic29sdXRlbHkqIGlzLCBnaXZlbiBpdHMgVVNCIGludGVyZmFjZS4gQ2hlY2suCiogICAqKlJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoqKiBXZSBuZWVkIHRvIGxvb2sgYXQgYW55IGJvdW5kcyBjaGVja3Mgb3IgZGVmZW5zaXZlIHZhbGlkYXRpb24sIGVzcGVjaWFsbHkgZm9yIGRldmljZS1zdXBwbGllZCBUTFZzLiBUaGlzIGZ1bmN0aW9uIGRlZmluaXRlbHkgaGFuZGxlcyBkYXRhIGZyb20gdGhlIGZpcm13YXJlLCBzbyB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSB2YWxpZGF0aW9uIGhhcHBlbmluZyBoZXJlLiBDaGVjay4KClRoZXJlZm9yZSwgV29ydGhGdXp6aW5nID0gVHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldHMgYW5kIHRoZWlyIGNvbnRleHQuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AsIGlzIHRoZSBwcmltYXJ5IGZvY3VzLiBBZGRpdGlvbmFsbHksIGl0cyBjYWxsZXIsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLCBpcyBhbHNvIHJlbGV2YW50LiBXZSBrbm93IHRoYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBpcyBhIG5vbi1zdGF0aWMgQyBmdW5jdGlvbiByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgc3ltYm9sIHRoYXQgY2FuIGJlIHJlYWNoZWQsIGFuZCB5ZXMsIGl0IGlzIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBhczogYGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClgLiBFeGNlbGxlbnQuIEFuZCBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcywgYXMgZXhwZWN0ZWQsIGluIGBzdGFfY21kcmVzcC5jYC4KCk5leHQsIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGtlcm5lbCBtb2R1bGVzIGVuYWJsZWQgdG8gbWFrZSB0aGlzIGZ1bmN0aW9uIHJlYWNoYWJsZToKCiogICBgTVdJRklFWGAKKiAgIGBNV0lGSUVYX1VTQmAKKiAgIGBDRkc4MDIxMWAKKiAgIGBVU0JgCiogICBgV0xBTl9WRU5ET1JfTUFSVkVMTGAKCkxldCYjMzk7cyB2ZXJpZnkgYFdMQU5fVkVORE9SX01BUlZFTExgJiMzOTtzIGRlcGVuZGVuY2llczogSSBjYW4gc2VlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgIHRoYXQgYFdMQU5fVkVORE9SX01BUlZFTExgIGluY2x1ZGVzIGBtd2lmaWV4L0tjb25maWdgLCBhbmQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2A6IGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIGFuZCBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVggJmFtcDsmYW1wOyBVU0JgLiBBbHJpZ2h0LCB0aGF0IGxvb2tzIHNvdW5kLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfSU5URVJTSUwpICYjNDM7PSBpbnRlcnNpbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xOT1jb25maWcgTVdMOEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6Mjg6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgV2lyZWxlc3MgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBNYXJ2ZWxsIFdMQU4gZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIHdpcmVsZXNzIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgaG91c2VkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNlY3Rpb24gcmVsYXRlZCB0byBgV0xBTl9WRU5ET1JfTUFSVkVMTGAuIFRoYXQgdmFyaWFibGUgaXMgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIHNwZWNpZmljIE1hcnZlbGwgZHJpdmVyLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgTWFydmVsbCBkcml2ZXIgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhvcGVmdWxseSwgc29tZSBoZWxwZnVsIGNvbW1lbnRzIHRvIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfSU5URVJTSUwpICYjNDM7PSBpbnRlcnNpbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xOT1jb25maWcgTVdMOEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6Mjg6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTY0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIFdMQU4gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIFdMQU4uIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgbmV0d29yayBkZXZpY2VzIGFyZSBkZWZpbmVkLCBzbyBpdCYjMzk7cyBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIFdMQU4gaXRzZWxmLCBhcyBhIGZvdW5kYXRpb25hbCBjb25jZXB0LCBoYXMgYW55IGhhcmQgZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIFRoaXMgc2hvdWxkIHRlbGwgbWUgd2hhdCBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLiptYXJ2ZWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjY9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6Mjc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yOC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE2OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBsaW5lcyAxIHRocm91Z2ggMzUsIHdoaWNoIHVzdWFsbHkgY29udGFpbnMgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBlbnRpcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIG9yIG1ham9yIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIHRoaW5ncyBsaWtlOgoKKiAgIFRoZSBtYWluICYjMzQ7V2lyZWxlc3MgTmV0d29ya2luZyYjMzQ7IGVudHJ5IGl0c2VsZiwgdGhlIGdhdGV3YXkgdG8gZXZlcnl0aGluZyBlbHNlIHdpcmVsZXNzLgoqICAgUG90ZW50aWFsbHksIHdoZXRoZXIgY2VydGFpbiBtYWpvciB3aXJlbGVzcyBwcm90b2NvbHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBjb25maWd1cmFibGUuCiogICBPcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCB3aXJlbGVzcyBzdGFja3MsIGlmIHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZXhpc3RzIGluIHRoaXMga2VybmVsIHZlcnNpb24uCiogICBEZWZpbmVzIGZvciBicm9hZCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5LCBsaWtlIHN1cHBvcnQgZm9yIGNlcnRhaW4gZnJlcXVlbmN5IGJhbmRzIG9yIGRldmljZSB0eXBlcy4KKiAgIEJhc2ljIGhlbHAgdGV4dCBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gYW5kIG1heWJlIGEgZmV3IGtleSBjb25maWd1cmF0aW9ucy4KCkdpdmVuIHRoZSBsaW5lIHJhbmdlLCBJIGV4cGVjdCB0aGlzIHNlY3Rpb24gdG8gbGF5IHRoZSBncm91bmR3b3JrIGFuZCBzZXQgdGhlIG92ZXJhbGwgZGlyZWN0aW9uIGZvciB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXNpZ25lcnMgcHJpb3JpdGl6ZWQgYXMgaW1wb3J0YW50IHRvIGV4cG9zZSB0byBlbmQgdXNlcnMgYW5kIGRldmVsb3BlcnMgYXQgdGhlIGluaXRpYWwgbGV2ZWwuIEkmIzM5O2xsIG5lZWQgdG8gYXNzZXNzIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGJyYW5jaGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgV0xBTlxuICAgNzpcdFx0Ym9vbCBcJiMzNDtXaXJlbGVzcyBMQU5cJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgIDk6XHRcdGRlcGVuZHMgb24gTkVUXG4gIDEwOlx0XHRzZWxlY3QgV0lSRUxFU1NcbiAgMTE6XHRcdGRlZmF1bHQgeVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcbiAgMTQ6XHRcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxuICAxNTpcdFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxuICAxNjpcdFxuICAxNzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzXG4gIDE4Olx0XG4gIDE5Olx0aWYgV0xBTlxuICAyMDpcdFxuICAyMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvS2NvbmZpZ1wmIzM0O1xuICAyMjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wmIzM0O1xuICAyMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXCYjMzQ7XG4gIDI0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL0tjb25maWdcJiMzNDtcbiAgMjU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1wmIzM0O1xuICAyNjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXCYjMzQ7XG4gIDI3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuICAyODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCYjMzQ7XG4gIDI5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG4gIDMwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wmIzM0O1xuICAzMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1wmIzM0O1xuICAzMjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXCYjMzQ7XG4gIDMzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9LY29uZmlnXCYjMzQ7XG4gIDM0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1wmIzM0O1xuICAzNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDgzMQoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmaW5kaW5nLiBFc3NlbnRpYWxseSwgdGhlcmUmIzM5O3MgYSBib3VuZHMgY2hlY2sgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgIGZ1bmN0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGV5JiMzOTt2ZSBpZGVudGlmaWVkIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy0mZ3Q7cXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCwgbWVhbmluZyBpdCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGluZGV4aW5nIGluIGBwcml2LSZndDt3bW0uYWNfc3RhdHVzYCwgd2hpY2ggSSBsaWtlIHRvIHNlZS4KCk5vdywgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgYE1XSUZJRVhfVVNCYCAoVVNCIGdhZGdldC92SENJIGVtdWxhdGlvbikgaXMga2V5LiBUaGF0IG1lYW5zIHdlIGNhbiBzZW5kIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2VzLCBtYWtpbmcgdGhpcyBmdXp6YWJsZS4gVGhhdCBhbHNvIG1ha2VzIHRoaXMgbXVjaCBtb3JlIGV4Y2l0aW5nLgoKVG8gYmUgY2xlYXIgb24gd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzLCBoZXJlIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIGZvY3VzIG9uLgoKVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuCgpGaW5hbGx5LCBiYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGFsbCB0aGVyZSwgc28gSSBhbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXHUwMDNld21tLmFjX3N0YXR1cy4gVGhlIG13aWZpZXggZHJpdmVyIHN1cHBvcnRzIFVTQi1iYXNlZCBkZXZpY2VzIChDT05GSUdfTVdJRklFWF9VU0IpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jCmluZGV4IDg0MTUwNWU4M2M3ZmQuLmZlYmVhNjg0ODdlODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMKQEAgLTk0Myw2ICYjNDM7OTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsCiAJCQkJICAgIHRsdl93bW1fcXN0YXR1cy0mZ3Q7Zmxvd19yZXF1aXJlZCwKIAkJCQkgICAgdGx2X3dtbV9xc3RhdHVzLSZndDtkaXNhYmxlZCk7CiAKJiM0MzsJCQlpZiAodGx2X3dtbV9xc3RhdHVzLSZndDtxdWV1ZV9pbmRleCAmZ3Q7PSBJRUVFODAyMTFfTlVNX0FDUykKJiM0MzsJCQkJYnJlYWs7CiAJCQlhY19zdGF0dXMgPSAmYW1wO3ByaXYtJmd0O3dtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLSZndDsKIAkJCQkJCQkgcXVldWVfaW5kZXhdOwogCQkJYWNfc3RhdHVzLSZndDtkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy0mZ3Q7ZGlzYWJsZWQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZTogV01NIENvbnRleHQqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgYW5hbHl6aW5nIHRoaXMgcGF0Y2gsIGJ1dCBmaXJzdCwgSSBuZWVkIGEgZ29vZCBwb2ludCBvZiByZWZlcmVuY2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIGFyb3VuZCBsaW5lIDk0My4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgV01NIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSwgc28gaXQmIzM5O3MgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlLCBhbmQgdXNpbmcgdGhhdCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgc291cmNlIGNvZGUgYnJvd3NlciBvciBkZWJ1Z2dlciB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgd2F5IEkgY2FuIHNlZSBleGFjdGx5IGhvdyB0aGUgc3Vycm91bmRpbmcgY29kZSBpbnRlcmFjdHMgd2l0aCB0aGUgY2hhbmdlZCBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTIwOlx0XHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xuIDkyMTpcdFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xuIDkyMjpcdFxuIDkyMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuIDkyNDpcdFx0XHQgICAgXCYjMzQ7aW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcblwmIzM0OyxcbiA5MjU6XHRcdFx0ICAgIHJlc3BfbGVuKTtcbiA5MjY6XHRcbiA5Mjc6XHRcdHdoaWxlICgocmVzcF9sZW4gXHUwMDNlPSBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKSBcdTAwMjZcdTAwMjYgdmFsaWQpIHtcbiA5Mjg6XHRcdFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XG4gOTI5Olx0XHRcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci5sZW4pO1xuIDkzMDpcdFxuIDkzMTpcdFx0XHRpZiAocmVzcF9sZW4gXHUwMDNjIHRsdl9sZW4gJiM0Mzsgc2l6ZW9mKHRsdl9oZHItXHUwMDNlaGVhZGVyKSlcbiA5MzI6XHRcdFx0XHRicmVhaztcbiA5MzM6XHRcbiA5MzQ6XHRcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci50eXBlKSkge1xuIDkzNTpcdFx0XHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XG4gOTM2Olx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzID1cbiA5Mzc6XHRcdFx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXG4gOTM4Olx0XHRcdFx0XHR0bHZfaGRyO1xuIDkzOTpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuIDk0MDpcdFx0XHRcdFx0ICAgIFwmIzM0O2luZm86IENNRF9SRVNQOiBXTU1fR0VUX1NUQVRVUzpcXHRcJiMzNDtcbiA5NDE6XHRcdFx0XHRcdCAgICBcJiMzNDtRU1RBVFVTIFRMVjogJWQsICVkLCAlZFxcblwmIzM0OyxcbiA5NDI6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXgsXG4gOTQzOlx0XHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gOTQ0Olx0XHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiA5NDU6XHRcbiA5NDY6XHRcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4gOTQ3Olx0XHRcdFx0XHRicmVhaztcbiA5NDg6XHRcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIDk0OTpcdFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiA5NTA6XHRcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4gOTUxOlx0XHRcdFx0YWNfc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQgPVxuIDk1MjpcdFx0XHRcdFx0XHRcdHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X3JlcXVpcmVkO1xuIDk1MzpcdFx0XHRcdGFjX3N0YXR1cy1cdTAwM2VmbG93X2NyZWF0ZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZmxvd19jcmVhdGVkO1xuIDk1NDpcdFx0XHRcdGJyZWFrO1xuIDk1NTpcdFxuIDk1NjpcdFx0XHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcbiA5NTc6XHRcdFx0XHQvKlxuIDk1ODpcdFx0XHRcdCAqIFBvaW50IHRoZSByZWd1bGFyIElFRUUgSUUgMiBieXRlcyBpbnRvIHRoZSBNYXJ2ZWxsIElFXG4gOTU5Olx0XHRcdFx0ICogICBhbmQgc2V0dXAgdGhlIElFRUUgSUUgdHlwZSBhbmQgbGVuZ3RoIGJ5dGUgZmllbGRzXG4gOTYwOlx0XHRcdFx0ICovXG4gOTYxOlx0XG4gOTYyOlx0XHRcdFx0d21tX3BhcmFtX2llID1cbiA5NjM6XHRcdFx0XHRcdChzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICopIChjdXJyICYjNDM7XG4gOTY0Olx0XHRcdFx0XHRcdFx0XHRcdCAgICAyKTtcbiA5NjU6XHRcdFx0XHR3bW1fcGFyYW1faWUtXHUwMDNldmVuZF9oZHIubGVuID0gKHU4KSB0bHZfbGVuO1xuIDk2NjpcdFx0XHRcdHdtbV9wYXJhbV9pZS1cdTAwM2V2ZW5kX2hkci5lbGVtZW50X2lkID1cbiA5Njc6XHRcdFx0XHRcdFx0XHRXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM7XG4gOTY4Olx0XG4gOTY5Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gYW5kIHRoZSBCdWcgRml4KioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgLCBpcyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBwcm9ibGVtIGl0JiMzOTtzIGFkZHJlc3NpbmcuIFRoZSBidWcgZml4IGRvY3VtZW50YXRpb24gc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgSSBhbHdheXMgcHJlZmVyIHRvIGdldCBhIGZlZWwgZm9yIHRoZSBjb2RlIGl0c2VsZiBmaXJzdC4gVW5kZXJzdGFuZGluZyB0aGUgKmNvbnRleHQqIG9mIHRoZSBmaXggaXMgdml0YWwuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGVsc2V3aGVyZSwgYW5kIHdoaWNoIHZhcmlhYmxlcyBhcmUgcGFzc2VkIHRvIGl0LiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIHNlZSB3aGF0IGl0IGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwMDpcdCAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBnZXQgV01NIHN0YXR1cyBjb21tYW5kIHJlc3BvbnNlIGZyb20gZmlybXdhcmUuXG4gOTAxOlx0ICpcbiA5MDI6XHQgKiBUaGUgcmVzcG9uc2UgbWF5IGNvbnRhaW4gbXVsdGlwbGUgVExWcyAtXG4gOTAzOlx0ICogICAgICAtIEFDIFF1ZXVlIHN0YXR1cyBUTFZzXG4gOTA0Olx0ICogICAgICAtIEN1cnJlbnQgV01NIFBhcmFtZXRlciBJRSBUTFZcbiA5MDU6XHQgKiAgICAgIC0gQWRtaXNzaW9uIENvbnRyb2wgYWN0aW9uIGZyYW1lIFRMVnNcbiA5MDY6XHQgKlxuIDkwNzpcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBUTFZzIGFuZCB0aGVuIGNhbGxzIGZ1cnRoZXIgc3BlY2lmaWMgZnVuY3Rpb25zXG4gOTA4Olx0ICogdG8gcHJvY2VzcyBhbnkgY2hhbmdlcyBpbiB0aGUgcXVldWUgcHJpb3JpdGl6ZSBvciBzdGF0ZS5cbiA5MDk6XHQgKi9cbiA5MTA6XHRpbnQgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbiA5MTE6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4gOTEyOlx0e1xuIDkxMzpcdFx0dTggKmN1cnIgPSAodTggKikgXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuZ2V0X3dtbV9zdGF0dXM7XG4gOTE0Olx0XHR1aW50MTZfdCByZXNwX2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlc2l6ZSksIHRsdl9sZW47XG4gOTE1Olx0XHRpbnQgbWFzayA9IElFRUU4MDIxMV9XTU1fSUVfQVBfUU9TSU5GT19QQVJBTV9TRVRfQ05UX01BU0s7XG4gOTE2Olx0XHRib29sIHZhbGlkID0gdHJ1ZTtcbiA5MTc6XHRcbiA5MTg6XHRcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKnRsdl9oZHI7XG4gOTE5Olx0XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICp0bHZfd21tX3FzdGF0dXM7XG4gOTIwOlx0XHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xuIDkyMTpcdFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xuIDkyMjpcdFxuIDkyMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuIDkyNDpcdFx0XHQgICAgXCYjMzQ7aW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcblwmIzM0OyxcbiA5MjU6XHRcdFx0ICAgIHJlc3BfbGVuKTtcbiA5MjY6XHRcbiA5Mjc6XHRcdHdoaWxlICgocmVzcF9sZW4gXHUwMDNlPSBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKSBcdTAwMjZcdTAwMjYgdmFsaWQpIHtcbiA5Mjg6XHRcdFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XG4gOTI5Olx0XHRcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci5sZW4pO1xuIDkzMDpcdFxuIDkzMTpcdFx0XHRpZiAocmVzcF9sZW4gXHUwMDNjIHRsdl9sZW4gJiM0Mzsgc2l6ZW9mKHRsdl9oZHItXHUwMDNlaGVhZGVyKSlcbiA5MzI6XHRcdFx0XHRicmVhaztcbiA5MzM6XHRcbiA5MzQ6XHRcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci50eXBlKSkge1xuIDkzNTpcdFx0XHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XG4gOTM2Olx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzID1cbiA5Mzc6XHRcdFx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXG4gOTM4Olx0XHRcdFx0XHR0bHZfaGRyO1xuIDkzOTpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzAzCgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSBpdCBhcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYm91bmRzIGNoZWNrLiBJdCYjMzk7cyBhZGRpbmcgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGlmIGB0bHZfd21tX3FzdGF0dXMtJmd0O3F1ZXVlX2luZGV4YCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlIGZvciB0aGUgYHByaXYtJmd0O3dtbS5hY19zdGF0dXNgIGFycmF5IGJlZm9yZSBhY2Nlc3NpbmcgaXQuIFRoZSBhcnJheSBpcyBzaXplZCBieSBgSUVFRTgwMjExX05VTV9BQ1NgLCB3aGljaCBpcyA0LiBXaXRob3V0IHRoaXMsIHdlJiMzOTtkIGhhdmUgYSBjbGFzc2ljIGFycmF5IGluZGV4aW5nIHZ1bG5lcmFiaWxpdHkg4oCTIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgd3JpdGUuIEtBU0FOIHdvdWxkIGRlZmluaXRlbHkgY2F0Y2ggdGhhdCwgd2hpY2ggaXMgZ29vZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYXNwZWN0IEkgbmVlZCB0byBsb29rIGludG8/IExldCYjMzk7cyBzZWUuLi4gdGhlIGB0bHZfd21tX3FzdGF0dXNgIGRhdGEgY29tZXMgZnJvbSBhIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2UsIHNvIGl0JiMzOTtzIGluaXRpYWxpemVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhlIGBxdWV1ZV9pbmRleGAgaXRzZWxmIGlzICp0aGVuKiBjaGVja2VkLCBzbyBpZiBpdCYjMzk7cyBvdXQgb2YgYm91bmRzLCB0aGUgY29kZSBqdXN0IGJyZWFrcywgYW5kIGRvZXNuJiMzOTt0IHdyaXRlIHRvIHRoZSBhcnJheS4gVGhlIGBhY19zdGF0dXNgIGFycmF5IGZpZWxkcyBhcmUgcG9wdWxhdGVkIGZyb20gYHRsdl93bW1fcXN0YXR1c2AuIFNlZW1zIGxpa2UgZXZlcnl0aGluZyYjMzk7cyBpbml0aWFsaXplZCBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWsgaW5mbywgb3IgaW50cm9kdWNlIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIFRoaXMgaXMgcHVyZWx5IGEgYm91bmRzIGNoZWNrIGZvciB0aGUgd3JpdGUuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgcnVsZTogJiMzNDtUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLCBMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLiYjMzQ7IFRoaXMgaXMgYWxsIEtBU0FOLCBhbGwgZGF5IGxvbmcuIEFuZCwgJiMzNDtOZWVkc0tNU0FOPWZhbHNlIElGLi4uVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2Vzcy4uLnRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodCBieSBLQVNBTi4uLiYjMzQ7LiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIGFuZCBhbGwgc3RydWN0dXJlcyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQuIEl0JiMzOTtzIGEgY2xlYW4sIGRlZmVuc2l2ZSBmaXguCgpTbywgeWVhaCwgZ2l2ZW4gdGhhdCwgYE5lZWRzS01TQU5gIHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBmYWxzZWAuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcgb25lIGxhc3QgdGltZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0aGVuIEkmIzM5O2xsIGdldCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbCByZWFkeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleGAgYWdhaW5zdCBgSUVFRTgwMjExX05VTV9BQ1NgIGJlZm9yZSBhY2Nlc3NpbmcgYHByaXYtXHUwMDNld21tLmFjX3N0YXR1c1suLi5dYCBpbiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKWAuIFRoaXMgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIC8gYnVmZmVyIG92ZXJmbG93IGlzc3VlLCB3aGljaCBpcyBwcm9wZXJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSwgYWx0ZXIsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgY29waWVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDguNTI0NzE1ODA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NDgwNTY4NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKCkgdG8gdmFsaWRhdGUgcXVldWVfaW5kZXggYmVmb3JlIGluZGV4aW5nIGludG8gcHJpdi1cXHUwMDNld21tLmFjX3N0YXR1cy4gVGhlIG13aWZpZXggZHJpdmVyIHN1cHBvcnRzIFVTQi1iYXNlZCBkZXZpY2VzIChDT05GSUdfTVdJRklFWF9VU0IpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDguNTI0NzIyNDc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU2MTQwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNiNDA0MDc5OWQxOWRjNjI3OTdjMWJiOTA2NmFmOGQyNzM1OTgyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uY1xcbmluZGV4IDg0MTUwNWU4M2M3ZmQuLmZlYmVhNjg0ODdlODQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXFxuQEAgLTk0Myw2ICs5NDMsOCBAQCBpbnQgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZCxcXG4gXFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZGlzYWJsZWQpO1xcbiBcXG4rXFx0XFx0XFx0aWYgKHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXggXFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHRhY19zdGF0dXMgPSBcXHUwMDI2cHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXFx1MDAzZVxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcXVldWVfaW5kZXhdO1xcbiBcXHRcXHRcXHRhY19zdGF0dXMtXFx1MDAzZWRpc2FibGVkID0gdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VkaXNhYmxlZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDkuODgxNzQxNjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg4NDI4NjAxMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzLiBUaGUgbXdpZmlleCBkcml2ZXIgc3VwcG9ydHMgVVNCLWJhc2VkIGRldmljZXMgKENPTkZJR19NV0lGSUVYX1VTQiksIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiArOTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiBcbitcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4rXHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjowOS44ODE3NDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkwMDI5OTg3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBhbmQgaWYgc28sIGhvdy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBsZXQncyByZWFkIHRoZSBwYXRjaC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGJvdW5kcyBjaGVjayBhZGRlZCBpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBmdW5jdGlvbi4gVGhlIGRpZmYgaXRzZWxmIGlzIHNpbXBsZSwgYSBjaGVjayBvbiBgcXVldWVfaW5kZXhgIHdpdGhpbiBhIFdNTSBzdGF0dXMgdXBkYXRlLiBTcGVjaWZpY2FsbHkgdGhlIGFkZGVkIGNoZWNrOiBgaWYgKHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGlzIGlzIGxvb2tpbmcgZm9yIGludmFsaWQgcXVldWUgaW5kZXhlcy5cblxuTm93LCB0aGUgcmVhbCB3b3JrIGJlZ2lucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGRyaXZlciwgYG13aWZpZXhgLCBmaXRzIGludG8gdGhlIHN5c3RlbS4gSXMgaXQgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyPyBUaGF0IGRpcmVjdGx5IGltcGFjdHMgZnV6emluZyBzdHJhdGVneS4gQ2FuIEkgdGFyZ2V0IGl0IHdpdGggVVNCIGZ1enppbmcgdG9vbHM/IFRoaW5rIHN5emthbGxlcidzIFVTQiByYXcgZ2FkZ2V0LCBVU0IgZW11bGF0aW9uIHNldHVwcywgb3IgbWF5YmUgZXZlbiBsZXZlcmFnZSBtYWM4MDIxMV9od3NpbSBpZiBJJ20gbHVja3kuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG13aWZpZXhgIGRyaXZlciBzdHJ1Y3R1cmUgYW5kIEtjb25maWcgb3B0aW9ucyB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbi4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uY2AsIGl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSBleGFjdCBpbnRlcmZhY2UgcHJvdG9jb2wgaXMgc3RpbGwgdW5jbGVhci4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byBkZXRlcm1pbmUgaG93IHRoZSBgbXdpZmlleGAgZHJpdmVyIGlzIGluc3RhbnRpYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjE4Ljg4NDc0NDU3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ5Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlxcdCAgbXdpZmlleC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yMi1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XFx0ICBtd2lmaWV4X3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM1OlxcdCAgbXdpZmlleF9wY2llLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjE4Ljk2MzI0NzU3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMTA5NTY0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTVdJRklFWF9VU0IgU3VwcG9ydCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gYE1XSUZJRVhfVVNCYCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCwgd2hpY2ggaXMgZmFudGFzdGljISBUaGF0IG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgZG9vcnMuIEtub3dpbmcgdGhhdCBgbXdpZmlleGAgaGFzIGEgVVNCIGludGVyZmFjZSBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgKSBpcyBrZXkuIFRoaXMgbWVhbnMgd2UndmUgZ290IGEgdGFuZ2libGUgYXZlbnVlIGZvciBmdXp6aW5nIHZpYSBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIncyBVU0IgcmF3IGdhZGdldCwgb3IgZXZlbiB2aGNpLiBUaGlzIGlzIHNpZ25pZmljYW50OyBVU0IgaXMgZ2VuZXJhbGx5IHdlbGwtdW5kZXJzdG9vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoZSBpbnRlcmZhY2UgcHJvdmlkZXMgYSBkZWZpbmVkIGVudHJ5IHBvaW50LlxuXG5Ob3csIGxldCdzIGRpdmUgZGVlcGVyLiBNeSBuZXh0IG1vdmUgaXMgdG8gaW52ZXN0aWdhdGUgYE1XSUZJRVhfVVNCYCBkaXJlY3RseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXTigJlzIGNvbmZpZ3VyZWQgYW5kIHVzZWQuIEJleW9uZCB0aGF0LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGhvdyBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGlzIHJlYWNoZWQuIE1hcHBpbmcgdGhhdCBvdXQgaXMgZXNzZW50aWFsIGZvciBjcmFmdGluZyB0YXJnZXRlZCBmdXp6aW5nIGhhcm5lc3Nlcy4gS25vd2luZyB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgZmxvdyBsZWFkaW5nIHRvIHRoYXQgZnVuY3Rpb24gZ2l2ZXMgbWUgYSByb2FkbWFwIGZvciBlZmZpY2llbnQgYW5kIGVmZmVjdGl2ZSB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGJlIGZvY3VzaW5nIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjoyMS4yNzQyMDk0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MjEuMjc0Mzg0NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjY5ODgyNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgV01NIFN0YXR1cyBSZXRyaWV2YWwqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgZnVuY3Rpb24uIEl0J3MgdGltZSB0byBtYXAgaXRzIGNhbGwgZ3JhcGguIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gdGhlIGNvbnRleHRzIHRoYXQgdHJpZ2dlciB0aGlzIHJldHJpZXZhbCBhbmQsIGJ5IGV4dGVuc2lvbiwgdGhlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIFdNTSBzdGF0dXMuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBhcmVhcyB3aGVyZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgbWlnaHQgc3VyZmFjZSDigJMgdGhlc2UgV01NLXJlbGF0ZWQgZnVuY3Rpb25zIHRlbmQgdG8gYmUgc2Vuc2l0aXZlLiBUaGUgZ29hbCBoZXJlIGlzbid0IGp1c3QgdG8gc2VlICp0aGF0KiBpdCdzIGNhbGxlZCwgYnV0IHRvIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mICp3aHkqLCBhbmQgKndoZW4qIGl0IGlzIGNhbGxlZCwgZnJvbSB3aGF0IHN0YXRlIGlzIGl0IGJlaW5nIGNhbGxlZCBmcm9tPyBhbmQgd2hhdCBldmVudHMgdHJpZ2dlcmVkIHRoZSBjYWxscz8gVGhpcyB3aWxsIGhlbHAgcGlucG9pbnQgYW55IGlzc3VlcyBpbiBRb1MgbWFuYWdlbWVudCwgcG93ZXIgc2F2aW5nIGZlYXR1cmVzLCBvciBpbnRlci1vcGVyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBOb3csIGxldCdzIG9wZW4gdGhhdCBzb3VyY2UuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MjMuNTQ0MjY5MTY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDE1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM1OS1cXHRjYXNlIEhvc3RDbWRfQ01EX1dNTV9HRVRfU1RBVFVTOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEzNjA6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM2MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYz04MDg9bXdpZmlleF93bW1fYWRkX2J1Zl90eHF1ZXVlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMtOTA5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYzo5MTA6aW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jLTkxMS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmg9ODU9dm9pZCBtd2lmaWV4X3dtbV9zZXR1cF9hY19kb3duZ3JhZGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oOjg2OmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uaC04Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjoyMy42MzQ2ODk0OTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTA1MjQ5NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBXTU0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFdNTSBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIOKAkyBzcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA5MTAgdG8gOTYwLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhleSdyZSBoYW5kbGluZyB0aGF0IHNwZWNpZmljIHBhcnQgb2YgdGhlIFdNTSBmdW5jdGlvbmFsaXR5LiBQcm9iYWJseSBzb21ldGhpbmcgYWJvdXQgcXVldWUgbWFuYWdlbWVudCBvciBjb250ZW50aW9uIG1lY2hhbmlzbXMsIGJ1dCBJIG5lZWQgdG8gc2VlIGl0IGluIGFjdGlvbiB0byBrbm93IGZvciBzdXJlLiBMZXTigJlzIGdldCB0byBpdC4gSSB3YW50IHRvIHNlZSBob3cgTWFydmVsbCdzIGhhbmRsaW5nIHRoZSBXTU0gc3RhbmRhcmQsIGFuZCB3aGF0IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGlzc3VlcyBtaWdodCBiZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjI1LjUzOTk0MTY3NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwNSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkwNTpcXHQgKiAgICAgIC0gQWRtaXNzaW9uIENvbnRyb2wgYWN0aW9uIGZyYW1lIFRMVnNcXG4gOTA2OlxcdCAqXFxuIDkwNzpcXHQgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgVExWcyBhbmQgdGhlbiBjYWxscyBmdXJ0aGVyIHNwZWNpZmljIGZ1bmN0aW9uc1xcbiA5MDg6XFx0ICogdG8gcHJvY2VzcyBhbnkgY2hhbmdlcyBpbiB0aGUgcXVldWUgcHJpb3JpdGl6ZSBvciBzdGF0ZS5cXG4gOTA5OlxcdCAqL1xcbiA5MTA6XFx0aW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuIDkxMTpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuIDkxMjpcXHR7XFxuIDkxMzpcXHRcXHR1OCAqY3VyciA9ICh1OCAqKSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmdldF93bW1fc3RhdHVzO1xcbiA5MTQ6XFx0XFx0dWludDE2X3QgcmVzcF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSwgdGx2X2xlbjtcXG4gOTE1OlxcdFxcdGludCBtYXNrID0gSUVFRTgwMjExX1dNTV9JRV9BUF9RT1NJTkZPX1BBUkFNX1NFVF9DTlRfTUFTSztcXG4gOTE2OlxcdFxcdGJvb2wgdmFsaWQgPSB0cnVlO1xcbiA5MTc6XFx0XFxuIDkxODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHZfaGRyO1xcbiA5MTk6XFx0XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfd21tX3F1ZXVlX3N0YXR1cyAqdGx2X3dtbV9xc3RhdHVzO1xcbiA5MjA6XFx0XFx0c3RydWN0IGllZWVfdHlwZXNfd21tX3BhcmFtZXRlciAqd21tX3BhcmFtX2llID0gTlVMTDtcXG4gOTIxOlxcdFxcdHN0cnVjdCBtd2lmaWV4X3dtbV9hY19zdGF0dXMgKmFjX3N0YXR1cztcXG4gOTIyOlxcdFxcbiA5MjM6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG4gOTI0OlxcdFxcdFxcdCAgICBcXFwiaW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcXFxuXFxcIixcXG4gOTI1OlxcdFxcdFxcdCAgICByZXNwX2xlbik7XFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdHdoaWxlICgocmVzcF9sZW4gXFx1MDAzZT0gc2l6ZW9mKHRsdl9oZHItXFx1MDAzZWhlYWRlcikpIFxcdTAwMjZcXHUwMDI2IHZhbGlkKSB7XFxuIDkyODpcXHRcXHRcXHR0bHZfaGRyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKikgY3VycjtcXG4gOTI5OlxcdFxcdFxcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVxcdTAwM2VoZWFkZXIubGVuKTtcXG4gOTMwOlxcdFxcbiA5MzE6XFx0XFx0XFx0aWYgKHJlc3BfbGVuIFxcdTAwM2MgdGx2X2xlbiArIHNpemVvZih0bHZfaGRyLVxcdTAwM2VoZWFkZXIpKVxcbiA5MzI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDkzMzpcXHRcXG4gOTM0OlxcdFxcdFxcdHN3aXRjaCAobGUxNl90b19jcHUodGx2X2hkci1cXHUwMDNlaGVhZGVyLnR5cGUpKSB7XFxuIDkzNTpcXHRcXHRcXHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XFxuIDkzNjpcXHRcXHRcXHRcXHR0bHZfd21tX3FzdGF0dXMgPVxcbiA5Mzc6XFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKilcXG4gOTM4OlxcdFxcdFxcdFxcdFxcdHRsdl9oZHI7XFxuIDkzOTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBDTUQsXFxuIDk0MDpcXHRcXHRcXHRcXHRcXHQgICAgXFxcImluZm86IENNRF9SRVNQOiBXTU1fR0VUX1NUQVRVUzpcXFxcdFxcXCJcXG4gOTQxOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiUVNUQVRVUyBUTFY6ICVkLCAlZCwgJWRcXFxcblxcXCIsXFxuIDk0MjpcXHRcXHRcXHRcXHRcXHQgICAgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4gOTQzOlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWZsb3dfcmVxdWlyZWQsXFxuIDk0NDpcXHRcXHRcXHRcXHRcXHQgICAgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VkaXNhYmxlZCk7XFxuIDk0NTpcXHRcXG4gOTQ2OlxcdFxcdFxcdFxcdGlmICh0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4IFxcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKVxcbiA5NDc6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk0ODpcXHRcXHRcXHRcXHRhY19zdGF0dXMgPSBcXHUwMDI2cHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXFx1MDAzZVxcbiA5NDk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHF1ZXVlX2luZGV4XTtcXG4gOTUwOlxcdFxcdFxcdFxcdGFjX3N0YXR1cy1cXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWRpc2FibGVkO1xcbiA5NTE6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VmbG93X3JlcXVpcmVkID1cXG4gOTUyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZDtcXG4gOTUzOlxcdFxcdFxcdFxcdGFjX3N0YXR1cy1cXHUwMDNlZmxvd19jcmVhdGVkID0gdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VmbG93X2NyZWF0ZWQ7XFxuIDk1NDpcXHRcXHRcXHRcXHRicmVhaztcXG4gOTU1OlxcdFxcbiA5NTY6XFx0XFx0XFx0Y2FzZSBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM6XFxuIDk1NzpcXHRcXHRcXHRcXHQvKlxcbiA5NTg6XFx0XFx0XFx0XFx0ICogUG9pbnQgdGhlIHJlZ3VsYXIgSUVFRSBJRSAyIGJ5dGVzIGludG8gdGhlIE1hcnZlbGwgSUVcXG4gOTU5OlxcdFxcdFxcdFxcdCAqICAgYW5kIHNldHVwIHRoZSBJRUVFIElFIHR5cGUgYW5kIGxlbmd0aCBieXRlIGZpZWxkc1xcbiA5NjA6XFx0XFx0XFx0XFx0ICovXFxuIDk2MTpcXHRcXG4gOTYyOlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZSA9XFxuIDk2MzpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWVfdHlwZXNfd21tX3BhcmFtZXRlciAqKSAoY3VyciArXFxuIDk2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgMik7XFxuIDk2NTpcXHRcXHRcXHRcXHR3bW1fcGFyYW1faWUtXFx1MDAzZXZlbmRfaGRyLmxlbiA9ICh1OCkgdGx2X2xlbjtcXG4gOTY2OlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIuZWxlbWVudF9pZCA9XFxuIDk2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM7XFxuIDk2ODpcXHRcXG4gOTY5OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIENNRCxcXG4gOTcwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcXFx0XFxcIlxcbiA5NzE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJXTU0gUGFyYW1ldGVyIFNldCBDb3VudDogJWRcXFxcblxcXCIsXFxuIDk3MjpcXHRcXHRcXHRcXHRcXHQgICAgd21tX3BhcmFtX2llLVxcdTAwM2Vxb3NfaW5mb19iaXRtYXAgXFx1MDAyNiBtYXNrKTtcXG4gOTczOlxcdFxcbiA5NzQ6XFx0XFx0XFx0XFx0aWYgKHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIubGVuICsgMiBcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjI1LjU0MDA1NjEwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTcyMDEzMjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgQm91bmRzIENoZWNrKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBuZXcgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrOiBgaWYgKHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGUgcHVycG9zZSBvZiB0aGlzIHNlZW1zIHByZXR0eSBjbGVhciDigJMgdG8gc3RvcCBvdXQtb2YtYm91bmRzIGFjY2VzcyB0byBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzYC4gQnV0IHRoZSBxdWVzdGlvbiBpczogaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGFuZCB0aGVyZWZvcmUgZnV6emFibGU/IFRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBtYWtlIHRoYXQgdGhlIGFic29sdXRlIHByaW9yaXR5LiBJZiBpdCdzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKHRoaW5rIEdDRSBvciBRRU1VIHdpdGggZW11bGF0ZWQgZGV2aWNlcyksIHdlJ3JlIHdhc3Rpbmcgb3VyIHRpbWUuIE5vIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtd2lmaWV4YCBoYXMgc29tZSBwb3RlbnRpYWwuIEl0J3MgYSBVU0IgZHJpdmVyLCBgTVdJRklFWF9VU0JgLCBhbmQgdGhhdOKAmXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGVtdWxhdGFibGUgdXNpbmcgVVNCIHJhdyBnYWRnZXQgb3IgdkhDSSDigJMgU3l6a2FsbGVyIHNwZWNpZmljYWxseSBoYXMgVVNCIHJhdyBnYWRnZXQgc3VwcG9ydCBmb3Igd2lmaSBkcml2ZXJzLCBhbmQgKm13aWZpZXgqIGlzIGEgVVNCIHdpZmkgZHJpdmVyLiBUaGlzIG1lYW5zIHdlIGNhbiBpbmplY3QgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMgdGhyb3VnaCBVU0IgYnVsayBvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLiBUaGF0J3MgYSBkZWZpbml0ZSBwbHVzLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1XSUZJRVhfVVNCYCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdGhhdCBhbGwgdGhlIHJpZ2h0IHN5bWJvbHMgYXJlIGF2YWlsYWJsZS4gVGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGxvb2sgbGlrZSB0aGlzOiBgTVdJRklFWGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgYE1XSUZJRVhfVVNCYCBkZXBlbmRzIG9uIGBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JgIGFuZCBzZWxlY3RzIGBGV19MT0FERVJgLiBUaGF0IGxvb2tzIHJpZ2h0LCBidXQgbGV0J3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCB0byBjb25maXJtLiBJIHNob3VsZCBzY2FuIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZm9yIGBNV0lGSUVYYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJpdGUgdXMgbGF0ZXIuIEp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0MS4yNjAxOTE3ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTQ4ODY1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4NTQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTY9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZT00PW9iai0kKENPTkZJR19MSUJFUlRBU19USElORklSTSlcXHQrPSBsaWJlcnRhc190Zi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01XSUZJRVgpXFx0Kz0gbXdpZmlleC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlLTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jPTQyPXN0YXRpYyB1MTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQzOm13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDQtXFx0XFx0XFx0XFx0ICB1OCBiYW5kcywgdTE2IG1jc19tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ4LVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQ5OlxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jPTg1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4Njptd2lmaWV4X2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04Ny1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4OTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjk5OnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDI6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDMtXFx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA2LVxcdC8qIEZpbGwgVkhUIGNhcCBpbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDc6XFx0bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEyOTpcXHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEzMC1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTUxOlxcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUyLVxcdHZodF9jYXAtXFx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTc6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU4OlxcdFxcdFxcdCAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTktXFx0XFx0XFx0ICAgICB1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjE6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYyOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTYzLVxcdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjQ6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2Ni1cXHR1OCBzdXBwX2Nod2Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzYtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTc3OlxcdFxcdHZodF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE3OC1cXHRcXHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4MS1cXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODI6XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9jYXAgKyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4My1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODY6XFx0XFx0bXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFxcdTAwMjZ2aHRfY2FwLVxcdTAwM2V2aHRfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg3LVxcdFxcdFxcdFxcdFxcdCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTQtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE5NTpcXHRcXHRcXHR2aHRfb3AgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk2LVxcdFxcdFxcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5OS1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMDpcXHRcXHRcXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDEtXFx0XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9vcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDI6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDMtXFx0XFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X29wZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI1MzppbnQgbXdpZmlleF9jbWRfMTFhY19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1NC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTU6XFx0XFx0XFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjcyLS8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIEJsb2NrQUNLIHNldHVwIGluZm9ybWF0aW9uIGZvciBnaXZlblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjczOiAqIG13aWZpZXhfcHJpdmF0ZSBzdHJ1Y3R1cmUgZm9yIDExYWMgZW5hYmxlZCBuZXR3b3Jrcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3NTp2b2lkIG13aWZpZXhfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTQ6Ym9vbCBtd2lmaWV4X2lzX2Jzc19pbl8xMWFjX21vZGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTY6XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTctXFx0c3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uICp2aHRfb3BlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MzExOnU4IG13aWZpZXhfZ2V0X2NlbnRlcl9mcmVxX2luZGV4KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0zMTItXFx0XFx0XFx0XFx0IHUzMiBwcmlfY2hhbiwgdTggY2hhbl9idylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNTppbnQgbXdpZmlleF9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI3LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI4OmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzA6XFx0XFx0XFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMxOnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTI6dm9pZCBtd2lmaWV4X2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE4OmlubGluZSBpbnQgbXdpZmlleF9pc18xMWhfYWN0aXZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjptd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyOTpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIgKmllX2hlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzA6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzE6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKmNvbnN0cmFpbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTMyLVxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzozOTpcXHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MC1cXHRzYmFuZCA9IHByaXYtXFx1MDAzZXdkZXYud2lwaHktXFx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDI6XFx0Y2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3B3cl9jYXBhYmlsaXR5ICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDMtXFx0Y2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDk6XFx0Y29uc3RyYWludCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTUwLVxcdGNvbnN0cmFpbnQtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo1NjpcXHRpZV9oZWFkZXIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTctXFx0aWVfaGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTY5LS8qIEVuYWJsZSBvciBkaXNhYmxlIHRoZSAxMWggZXh0ZW5zaW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NzA6aW50IG13aWZpZXhfMTFoX2FjdGl2YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGJvb2wgZmxhZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExSF9JLCBcXHUwMDI2ZW5hYmxlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy04Ny0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODg6dm9pZCBtd2lmaWV4XzExaF9wcm9jZXNzX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk1OlxcdFxcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ni1cXHRcXHRwcml2LVxcdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk3LVxcdFxcdGJzc19kZXNjLVxcdTAwM2VjYXBfaW5mb19iaXRtYXAgfD0gV0xBTl9DQVBBQklMSVRZX1NQRUNUUlVNX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk4OlxcdFxcdG13aWZpZXhfMTFoX3Byb2Nlc3NfaW5mcmFfam9pbihwcml2LCBidWZmZXIsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTAwLVxcdFxcdC8qIERlYWN0aXZhdGUgMTFoIGZ1bmN0aW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTAxOlxcdFxcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTAyLVxcdFxcdHByaXYtXFx1MDAzZXN0YXRlXzExaC5pc18xMWhfYWN0aXZlID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTE6dm9pZCBtd2lmaWV4X2Rmc19jYWNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE0LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE1OlxcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTY6XFx0XFx0XFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE3LVxcdFxcdFxcdFxcdCAgICAgZGZzX2NhY193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjAtXFx0aWYgKHByaXYtXFx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTIxOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTIyLVxcdFxcdFxcdCAgICBcXFwiQ0FDIHRpbWVyIGZpbmlzaGVkOyBObyByYWRhciBkZXRlY3RlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMzI6aW50IG13aWZpZXhfY21kX2lzc3VlX2NoYW5fcmVwb3J0X3JlcXVlc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzYtXFx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X3JlcSAqY3JfcmVxID0gXFx1MDAyNmNtZC1cXHUwMDNlcGFyYW1zLmNoYW5fcnB0X3JlcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTM3OlxcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyAqcmFkYXJfcGFyYW1zID0gKHZvaWQgKilkYXRhX2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE0OS1cXHRpZiAocmFkYXJfcGFyYW1zLVxcdTAwM2VjYWNfdGltZV9tcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTUwOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUxLVxcdFxcdFxcdCAgICBcXFwiMTFoOiBpc3N1aW5nIERGUyBSYWRhciBjaGVjayBmb3IgY2hhbm5lbD0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTQ6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwiY2FuY2VsbGluZyBDQUNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTk6aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2MjpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMgcmFkYXJfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2NDpcXHRtZW1zZXQoXFx1MDAyNnJhZGFyX3BhcmFtcywgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjUtXFx0cmFkYXJfcGFyYW1zLmNoYW5kZWYgPSBjaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY4OlxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVQT1JUX1JFUVVFU1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2OS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3NTp2b2lkIG13aWZpZXhfYWJvcnRfY2FjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ny1cXHRpZiAocHJpdi1cXHUwMDNld2Rldi5saW5rc1swXS5jYWNfc3RhcnRlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzg6XFx0XFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc5OlxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODAtXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODE6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODItXFx0XFx0XFx0ICAgIFxcXCJBYm9ydGluZyBkZWxheWVkIHdvcmsgZm9yIENBQy5cXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTk0OmludCBtd2lmaWV4XzExaF9oYW5kbGVfY2hhbnJwdF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5Ny1cXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY2hhbl9ycHRfZXZlbnQgKnJwdF9ldmVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTk4OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fcnB0X2RhdGEgKnJwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk5LVxcdHUxNiBldmVudF9sZW4sIHRsdl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA1LVxcdGlmIChsZTMyX3RvX2NwdShycHRfZXZlbnQtXFx1MDAzZXJlc3VsdCkgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjA2OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMDctXFx0XFx0XFx0ICAgIFxcXCJFcnJvciBpbiBjaGFubmVsIHJlcG9ydCBldmVudFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTE6XFx0d2hpbGUgKGV2ZW50X2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTItXFx0XFx0cnB0ID0gKHZvaWQgKilcXHUwMDI2cnB0X2V2ZW50LVxcdTAwM2V0bHZidWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE3LVxcdFxcdFxcdGlmIChycHQtXFx1MDAzZW1hcC5yYWRhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTg6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTktXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJSQURBUiBEZXRlY3RlZCBvbiBjaGFubmVsICVkIVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMzgtLyogSGFuZGxlciBmb3IgcmFkYXIgZGV0ZWN0ZWQgZXZlbnQgZnJvbSBGVy4qL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMzk6aW50IG13aWZpZXhfMTFoX2hhbmRsZV9yYWRhcl9kZXRlY3RlZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQyOlxcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX2RldF9ldmVudCAqcmRyX2V2ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDY6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDctXFx0XFx0ICAgIFxcXCJyYWRhciBkZXRlY3RlZDsgaW5kaWNhdGluZyBrZXJuZWxcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDg6XFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ5OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTAtXFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1Mi1cXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTM6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwicmVnZG9tYWluOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU0LVxcdFxcdCAgICByZHJfZXZlbnQtXFx1MDAzZXJlZ19kb21haW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTU6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwicmFkYXIgZGV0ZWN0aW9uIHR5cGU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTYtXFx0XFx0ICAgIHJkcl9ldmVudC1cXHUwMDNlZGV0X3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY2OnZvaWQgbXdpZmlleF9kZnNfY2hhbl9zd193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY4OlxcdHN0cnVjdCBtd2lmaWV4X3VhcF9ic3NfcGFyYW0gKmJzc19jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2OS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MDpcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjcxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Mi1cXHRcXHRcXHRcXHQgICAgIGRmc19jaGFuX3N3X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3NS1cXHRpZiAoIWJzc19jZmctXFx1MDAzZWJlYWNvbl9wZXJpb2QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc2OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzctXFx0XFx0XFx0ICAgIFxcXCJjaGFubmVsIHN3aXRjaDogQVAgYWxyZWFkeSBzdG9wcGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MTpcXHRtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChwcml2LCBic3NfY2ZnLCBwcml2LVxcdTAwM2VkZnNfY2hhbmRlZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgzOlxcdGlmIChtd2lmaWV4X2NvbmZpZ19zdGFydF91YXAocHJpdiwgYnNzX2NmZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg0OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODUtXFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gc3RhcnQgQVAgYWZ0ZXIgY2hhbm5lbCBzd2l0Y2hcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg5OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkwLVxcdFxcdCAgICBcXFwiaW5kaWNhdGluZyBjaGFubmVsIHN3aXRjaCBjb21wbGV0aW9uIHRvIGtlcm5lbFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI1OmludCBtd2lmaWV4X2ZpbGxfY2FwX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggcmFkaW9fdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjYtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyLVxcdGlmIChXQVJOX09OX09OQ0UoIXNiYW5kKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUiwgXFxcIkludmFsaWQgcmFkaW8gdHlwZSFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzA6c3RhdGljIHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3MTptd2lmaWV4X2dldF9iYV9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzI6XFx0XFx0ICAgICAgZW51bSBtd2lmaWV4X2JhX3N0YXR1cyBiYV9zdGF0dXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzQ6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjk2OmludCBtd2lmaWV4X3JldF8xMW5fZGVsYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTctXFx0XFx0XFx0ICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05OS1cXHRpbnQgdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMDA6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDEtXFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9kZWxiYSAqZGVsX2JhID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5kZWxfYmE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA1LVxcdGlmIChkZWxfYmEtXFx1MDAzZWRlbF9yZXN1bHQgPT0gQkFfUkVTVUxUX1NVQ0NFU1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTA2OlxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0aWQsIGRlbF9iYS1cXHUwMDNlcGVlcl9tYWNfYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA3LVxcdFxcdFxcdFxcdCAgIFRZUEVfREVMQkFfU0VOVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjExMDpcXHRcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTExMS1cXHRcXHRpZiAodHhfYmFfdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTI6XFx0XFx0XFx0bXdpZmlleF9zZW5kX2FkZGJhKHByaXYsIHR4X2JhX3RibC1cXHUwMDNldGlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTMtXFx0XFx0XFx0XFx0XFx0ICAgdHhfYmFfdGJsLVxcdTAwM2VyYSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjE6XFx0XFx0bXdpZmlleF9jcmVhdGVfYmFfdGJsKHByaXYsIGRlbF9iYS1cXHUwMDNlcGVlcl9tYWNfYWRkciwgdGlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjItXFx0XFx0XFx0XFx0ICAgICAgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI0OlxcdFxcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjYtXFx0XFx0aWYgKHR4X2JhX3RibClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI3OlxcdFxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0eF9iYV90YmwtXFx1MDAzZXRpZCwgdHhfYmFfdGJsLVxcdTAwM2VyYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgIFRZUEVfREVMQkFfU0VOVCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNDI6aW50IG13aWZpZXhfcmV0XzExbl9hZGRiYV9yZXEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2FkZGJhX3JzcCAqYWRkX2JhX3JzcCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYWRkX2JhX3JzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ3OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ4OlxcdHN0cnVjdCBtd2lmaWV4X3JhX2xpc3RfdGJsICpyYV9saXN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDktXFx0dTE2IGJsb2NrX2Fja19wYXJhbV9zZXQgPSBsZTE2X3RvX2NwdShhZGRfYmFfcnNwLVxcdTAwM2VibG9ja19hY2tfcGFyYW1fc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1NzpcXHR0aWRfZG93biA9IG13aWZpZXhfd21tX2Rvd25ncmFkZV90aWQocHJpdiwgdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTU4OlxcdHJhX2xpc3QgPSBtd2lmaWV4X3dtbV9nZXRfcmFsaXN0X25vZGUocHJpdiwgdGlkX2Rvd24sIGFkZF9iYV9yc3AtXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNTktXFx0XFx0cGVlcl9tYWNfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY0LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTY1OlxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXFx1MDAzZXBlZXJfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2Ni1cXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTczOlxcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXFx1MDAzZXBlZXJfbWFjX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzQtXFx0aWYgKHR4X2JhX3RibCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzU6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVZFTlQsIFxcXCJpbmZvOiBCQSBzdHJlYW0gY29tcGxldGVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzYtXFx0XFx0dHhfYmFfdGJsLVxcdTAwM2ViYV9zdGF0dXMgPSBCQV9TRVRVUF9DT01QTEVURTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xODctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTg4OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcXFwiQkEgc3RyZWFtIG5vdCBjcmVhdGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIwMjppbnQgbXdpZmlleF9jbWRfcmVjZmdfdHhfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIwMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIGludCBjbWRfYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNC1cXHRjYXNlIEhvc3RDbWRfQUNUX0dFTl9TRVQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIxNTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBDTUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNi1cXHRcXHRcXHQgICAgXFxcImNtZDogc2V0IHR4X2J1Zj0lZFxcXFxuXFxcIiwgKmJ1Zl9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNTppbnQgbXdpZmlleF9jbWRfYW1zZHVfYWdncl9jdHJsKHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNi1cXHRcXHRcXHRcXHRpbnQgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjM3OlxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl9hbXNkdV9hZ2dyX2N0cmwgKmFhX2N0cmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNjg6aW50IG13aWZpZXhfY21kXzExbl9jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY5LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNzA6XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyAqdHhjZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9Mjk4PWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyOTk6bXdpZmlleF9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzAwOlxcdFxcdFxcdCAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDEtXFx0XFx0XFx0ICAgdTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMzpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqaHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDQ6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvICpodF9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDU6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqY2hhbl9saXN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDY6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICpic3NfY29fMjA0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA3OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqZXh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzA4LVxcdGludCByZXRfbGVuID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMxNjpcXHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTctXFx0c2JhbmQgPSBwcml2LVxcdTAwM2V3ZGV2LndpcGh5LVxcdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMDpcXHRcXHRodF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKikgKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzIxOlxcdFxcdG1lbXNldChodF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjItXFx0XFx0aHRfY2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0hUX0NBUEFCSUxJVFkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNC1cXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI1OlxcdFxcdG1lbWNweSgodTggKikgaHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNi1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjk6XFx0XFx0bXdpZmlleF9maWxsX2NhcF9pbmZvKHByaXYsIHJhZGlvX3R5cGUsIFxcdTAwMjZodF9jYXAtXFx1MDAzZWh0X2NhcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMC1cXHRcXHQvKiBVcGRhdGUgSFQ0MCBjYXBhYmlsaXR5IGZyb20gY3VycmVudCBjaGFubmVsIGluZm9ybWF0aW9uICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMzLVxcdFxcdFxcdHU4IHJhZGlvID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM0OlxcdFxcdFxcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzNS1cXHRcXHRcXHRpbnQgZnJlcSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjM6XFx0XFx0KmJ1ZmZlciArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjQ6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2OC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY5OlxcdFxcdFxcdGh0X2luZm8gPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3MC1cXHRcXHRcXHRtZW1zZXQoaHRfaW5mbywgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzcxOlxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3Mi1cXHRcXHRcXHRodF9pbmZvLVxcdTAwM2VoZWFkZXIudHlwZSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzc4LVxcdFxcdFxcdG1lbWNweSgodTggKikgaHRfaW5mbyArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM3OTpcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4MC1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzg5OlxcdFxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5MDpcXHRcXHRcXHRyZXRfbGVuICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5My1cXHRcXHRjaGFuX2xpc3QgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTQ6XFx0XFx0XFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fbGlzdF9wYXJhbV9zZXQgKikgKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk1LVxcdFxcdG1lbXNldChjaGFuX2xpc3QsIDAsIHN0cnVjdF9zaXplKGNoYW5fbGlzdCwgY2hhbl9zY2FuX3BhcmFtLCAxKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk3LVxcdFxcdGNoYW5fbGlzdC1cXHUwMDNlaGVhZGVyLmxlbiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5ODpcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IG13aWZpZXhfY2hhbl9zY2FuX3BhcmFtX3NldCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTktXFx0XFx0Y2hhbl9saXN0LVxcdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0uY2hhbl9udW1iZXIgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMS1cXHRcXHRjaGFuX2xpc3QtXFx1MDAzZWNoYW5fc2Nhbl9wYXJhbVswXS5yYWRpb190eXBlID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDAyOlxcdFxcdFxcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxNi1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJjbl9ic3NfY29fMjA0MCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTc6XFx0XFx0YnNzX2NvXzIwNDAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxOC1cXHRcXHRtZW1zZXQoYnNzX2NvXzIwNDAsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxOTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjAtXFx0XFx0YnNzX2NvXzIwNDAtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfQlNTX0NPRVhfMjA0MCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI0LVxcdFxcdG1lbWNweSgodTggKikgYnNzX2NvXzIwNDAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MjU6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjYtXFx0XFx0ICAgICAgIGJzc19kZXNjLVxcdTAwM2ViY25fYnNzX2NvXzIwNDAgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDMwOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3Njbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMTpcXHRcXHRyZXRfbGVuICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQzNS1cXHRcXHRoZHIgPSAodm9pZCAqKWJzc19kZXNjLVxcdTAwM2ViY25fZXh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDM2OlxcdFxcdGV4dF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNzpcXHRcXHRtZW1zZXQoZXh0X2NhcCwgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzgtXFx0XFx0ZXh0X2NhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9FWFRfQ0FQQUJJTElUWSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTE6XFx0XFx0KmJ1ZmZlciArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSArIGhkci1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTI6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSArIGhkci1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDYyOnN0YXRpYyBpbnQgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF90YmxfcHRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjU6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgxOnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgyOlxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90YmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4NC1cXHRpZiAoIXR4X2JhX3Rzcl90YmwgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg1OlxcdCAgICBtd2lmaWV4X2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdHhfYmFfdHNyX3RibCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ni1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg4OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4OS1cXHRcXHQgICAgXFxcImluZm86IHR4X2JhX3Rzcl90YmwgJXBcXFxcblxcXCIsIHR4X2JhX3Rzcl90YmwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ5OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDk5OnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX2FsbF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTAyOlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKmRlbF90YmxfcHRyLCAqdG1wX25vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MDYtXFx0XFx0XFx0XFx0IFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0ciwgbGlzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTA3OlxcdFxcdG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHByaXYsIGRlbF90YmxfcHRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA4LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTIxOnN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo1MjI6bXdpZmlleF9nZXRfYmFfdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGludCB0aWQsIHU4ICpyYSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTI0OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01NDEtICovXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjQxLjQyOTY4NTUzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUzNzQ0MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gSSBrbm93IGl0J3MgbG9jYXRlZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbGAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGF0IEknbSBhZnRlci4gTXkgcGxhbiBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIGFsbCB0aGUgY29uZGl0aW9uYWwgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIEl0J2xsIGdpdmUgbWUgdGhlIGV4YWN0IGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0My4zODM0MzMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAgMzpcXHRcXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxcbiAgMTQ6XFx0XFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXFxcIlxcbiAgMTc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1xcXCJcXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1XTDhLXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsIFRPUERPRyA4MDIuMTEgd2lyZWxlc3MgY2FyZHMuXFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgMjY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtd2w4ay4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNzpcXHRcXG4gIDI4OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0My4zODM1NTU3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjE1MTAzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4gVGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSBhbGwgaXRzIGNhbGxlcnMgYW5kIGlkZW50aWZ5IGFueSBvdGhlciByZWxldmFudCBlbnRyeSBwb2ludHMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBNeSBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIHdpbGwgcXVpY2tseSByZXZlYWwgd2hhdCdzIGRyaXZpbmcgdGhlIG5lZWQgZm9yIHRoaXMgcGFydGljdWxhciBzdGF0dXMgcmV0cmlldmFsLlxuXG5SaWdodCwgbGV0J3MgemVybyBpbiBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmVzIDEzNTAtMTM3MC4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIGNvbmNyZXRlIGV4YW1wbGVzIG9mIHdoZXJlIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQsIGFuZCB3aGF0IGRhdGEgaXQncyBkZWFsaW5nIHdpdGggaW4gdGhvc2Ugc3BlY2lmaWMgc2NlbmFyaW9zLiBJJ20gZXhwZWN0aW5nIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSB0byBjb250YWluIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBJIG5lZWQuIEknbSBpbnRlcmVzdGVkIGluIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhcyBtdWNoIGFzIHRoZSBkaXJlY3QgY2FsbHMuIFRoaXMgbGV2ZWwgb2YgZGV0YWlsIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTQ2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0NS45OTg2NjM0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM1MDpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBDTUQsIFxcXCJjbWQ6IGN1cnJfdHhfYnVmX3NpemU9JWRcXFxcblxcXCIsXFxuMTM1MTpcXHRcXHRcXHRcXHQgICAgYWRhcHRlci1cXHUwMDNlY3Vycl90eF9idWZfc2l6ZSk7XFxuMTM1MjpcXHRcXG4xMzUzOlxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VpZl9vcHMudXBkYXRlX21wX2VuZF9wb3J0KVxcbjEzNTQ6XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlaWZfb3BzLnVwZGF0ZV9tcF9lbmRfcG9ydChhZGFwdGVyLFxcbjEzNTU6XFx0XFx0XFx0XFx0XFx0bGUxNl90b19jcHUocmVzcC1cXHUwMDNlcGFyYW1zLnR4X2J1Zi5tcF9lbmRfcG9ydCkpO1xcbjEzNTY6XFx0XFx0XFx0YnJlYWs7XFxuMTM1NzpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0FNU0RVX0FHR1JfQ1RSTDpcXG4xMzU4OlxcdFxcdFxcdGJyZWFrO1xcbjEzNTk6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9XTU1fR0VUX1NUQVRVUzpcXG4xMzYwOlxcdFxcdFxcdHJldCA9IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHByaXYsIHJlc3ApO1xcbjEzNjE6XFx0XFx0XFx0YnJlYWs7XFxuMTM2MjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9JQlNTX0NPQUxFU0NJTkdfU1RBVFVTOlxcbjEzNjM6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfaWJzc19jb2FsZXNjaW5nX3N0YXR1cyhwcml2LCByZXNwKTtcXG4xMzY0OlxcdFxcdFxcdGJyZWFrO1xcbjEzNjU6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9NRU1fQUNDRVNTOlxcbjEzNjY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfbWVtX2FjY2Vzcyhwcml2LCByZXNwLCBkYXRhX2J1Zik7XFxuMTM2NzpcXHRcXHRcXHRicmVhaztcXG4xMzY4OlxcdFxcdGNhc2UgSG9zdENtZF9DTURfTUFDX1JFR19BQ0NFU1M6XFxuMTM2OTpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0JCUF9SRUdfQUNDRVNTOlxcbjEzNzA6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9SRl9SRUdfQUNDRVNTOlxcbjEzNzE6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9QTUlDX1JFR19BQ0NFU1M6XFxuMTM3MjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0NBVV9SRUdfQUNDRVNTOlxcbjEzNzM6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfRUVQUk9NX0FDQ0VTUzpcXG4xMzc0OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfcmV0X3JlZ19hY2Nlc3MoY21kcmVzcF9ubywgcmVzcCwgZGF0YV9idWYpO1xcbjEzNzU6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERTpcXG4xMzc3OlxcdFxcdFxcdGJyZWFrO1xcbjEzNzg6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF8xMU5fQ0ZHOlxcbjEzNzk6XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjQ1Ljk5ODgxMjg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NTE1MTgyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkndmUgZ290IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgYWN0dWFsbHkgaW52b2tlZC4gU28sIEkgbmVlZCB0byBnbyBodW50IHRoYXQgZnVuY3Rpb24gZG93biB3aXRoIGEgcXVpY2sgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgYnVpbGQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ2NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6NTEuOTUwMzMyOTk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ2NDI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9ODAzPWludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTg5MS1cXHRcXHQvKiBoYW5kbGUgcmVzcG9uc2UgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6ODkyOlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChwcml2LCBjbWRyZXNwX25vLCByZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODkzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEzND1pbnQgbXdpZmlleF91YXBfcHJlcGFyZV9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdWludDE2X3QgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM2LVxcdFxcdFxcdCAgICB2b2lkICpkYXRhX2J1Ziwgdm9pZCAqY21kX2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTM3OmludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1MTYgY21kcmVzcF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTE5MD1zdGF0aWMgaW50IG13aWZpZXhfcmV0X2dldF9jaGFuX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTIxMjppbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTMtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjUyLjA0NTgwMTg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTUwMzcyODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBDb21tYW5kIFJlc3BvbnNlIEhhbmRsaW5nIGluIG13aWZpZXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBtd2lmaWV4YCBkcml2ZXIgcHJvY2Vzc2VzIGNvbW1hbmQgcmVzcG9uc2VzLiBJIGtub3cgdGhhdCBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgaXQncyB0aGUgb25lIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgdGhvc2UgcmVzcG9uc2VzIHRoYXQgYXJlIGNvbWluZyBpbiBmcm9tIHRoZSBkZXZpY2UuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRob3NlIHJlc3BvbnNlcyAqcmVjZWl2ZWQqIGluIHRoZSBmaXJzdCBwbGFjZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgaGFuZGxlZCBvdmVyIFVTQiwgd2hpY2ggbWVhbnMgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIFVTQi1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgZHJpdmVyLlxuXG5UaGVyZWZvcmUsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgcmVjZWl2ZSBmdW5jdGlvbnMuIFRoZSBjb21tZW50cyBwb2ludCB0b3dhcmQgYG13aWZpZXhfdXNiX3JlY3ZgIGFuZCBgbXdpZmlleF91c2JfcnhfY29tcGxldGVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gd2hlcmUgdGhlc2UgYXJlIGludm9rZWQgZnJvbS4gU28sIEkgbmVlZCB0byBvcGVuIHRoZSBzb3VyY2UgY29kZSBmb3IgYG13aWZpZXhfdXNiLmNgIChvciBwb3RlbnRpYWxseSBgdXNiLmNgIHdpdGhpbiB0aGUgYG13aWZpZXhgIGRpcmVjdG9yeSkgYW5kIHN0YXJ0IHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gVGhhdCB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjEyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MDAuOTk2MTc3NjUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc4MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz03NDE9aW50IG13aWZpZXhfZXhlY19uZXh0X2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTgwMi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6ODAzOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTEwODU9bXdpZmlleF9jYW5jZWxfcGVuZGluZ19pb2N0bChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTMtXFx0XFx0Lyogc2V0dGluZyBjdXJyX2NtZCB0byBOVUxMIGlzIHF1aXRlIGRhbmdlcm91cywgYmVjYXVzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzoxMDk0OlxcdFxcdCAqIG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwIGNoZWNrcyBjdXJyX2NtZCB0byBiZSAhPSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTUtXFx0XFx0ICogYXQgdGhlIGJlZ2lubmluZyB0aGVuIHJlbGllcyBvbiBpdCBhbmQgZGVyZWZlcmVuY2VzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTI0OD1pbnQgbXdpZmlleF9tYWluX3Byb2Nlc3Moc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU2LVxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTc6XFx0XFx0XFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3AoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTAwPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTAxOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDItdm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTMxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzI6bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3Ioc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMy1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjAtXFx0aWYgKHJlc3AtXFx1MDAzZXJlc3VsdCAhPSBIb3N0Q21kX1JFU1VMVF9PSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMjE6XFx0XFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3IocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIyMi1cXHRcXHRyZXR1cm4gLTE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjAxLjA1Nzk2NTE1MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTYzMzAyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYC4gVGhpcyBmdW5jdGlvbiBnZXRzIGV4ZWN1dGVkIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYSBXTU1fR0VUX1NUQVRVUyByZXNwb25zZSBmcm9tIHRoZSBmaXJtd2FyZS4gQmVjYXVzZSB0aGlzIGRyaXZlciwgYG13aWZpZXhgLCB1c2VzIGEgVVNCIGJ1cyBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCBpdCdzIGFjY2Vzc2libGUgd2l0aGluIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgSSdtIHVzaW5nLCB0aGFua3MgdG8gVVNCIGRldmljZSBlbXVsYXRpb24gdXNpbmcgdG9vbHMgbGlrZSByYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6ZXIuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz9cblxuTGV0J3MgYnJlYWsgaXQgZG93biBiYXNlZCBvbiB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWEuIFNlY3Rpb24gMyBzYXlzOlxuXG4qICAgKipSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOioqIFNwZWNpZmljYWxseSwgZHJpdmVycyByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIHdoaWNoIHRoaXMgKmFic29sdXRlbHkqIGlzLCBnaXZlbiBpdHMgVVNCIGludGVyZmFjZS4gQ2hlY2suXG4qICAgKipSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6KiogV2UgbmVlZCB0byBsb29rIGF0IGFueSBib3VuZHMgY2hlY2tzIG9yIGRlZmVuc2l2ZSB2YWxpZGF0aW9uLCBlc3BlY2lhbGx5IGZvciBkZXZpY2Utc3VwcGxpZWQgVExWcy4gVGhpcyBmdW5jdGlvbiBkZWZpbml0ZWx5IGhhbmRsZXMgZGF0YSBmcm9tIHRoZSBmaXJtd2FyZSwgc28gdGhlcmUncyBsaWtlbHkgc29tZSB2YWxpZGF0aW9uIGhhcHBlbmluZyBoZXJlLiBDaGVjay5cblxuVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgPSBUcnVlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldHMgYW5kIHRoZWlyIGNvbnRleHQuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AsIGlzIHRoZSBwcmltYXJ5IGZvY3VzLiBBZGRpdGlvbmFsbHksIGl0cyBjYWxsZXIsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLCBpcyBhbHNvIHJlbGV2YW50LiBXZSBrbm93IHRoYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBpcyBhIG5vbi1zdGF0aWMgQyBmdW5jdGlvbiByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgc3ltYm9sIHRoYXQgY2FuIGJlIHJlYWNoZWQsIGFuZCB5ZXMsIGl0IGlzIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBhczogYGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClgLiBFeGNlbGxlbnQuIEFuZCBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcywgYXMgZXhwZWN0ZWQsIGluIGBzdGFfY21kcmVzcC5jYC5cblxuTmV4dCwgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQga2VybmVsIG1vZHVsZXMgZW5hYmxlZCB0byBtYWtlIHRoaXMgZnVuY3Rpb24gcmVhY2hhYmxlOlxuXG4qICAgYE1XSUZJRVhgXG4qICAgYE1XSUZJRVhfVVNCYFxuKiAgIGBDRkc4MDIxMWBcbiogICBgVVNCYFxuKiAgIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYFxuXG5MZXQncyB2ZXJpZnkgYFdMQU5fVkVORE9SX01BUlZFTExgJ3MgZGVwZW5kZW5jaWVzOiBJIGNhbiBzZWUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AgdGhhdCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW5jbHVkZXMgYG13aWZpZXgvS2NvbmZpZ2AsIGFuZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYDogYE1XSUZJRVhgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgYW5kIGBNV0lGSUVYX1VTQmAgZGVwZW5kcyBvbiBgTVdJRklFWCBcdTAwMjZcdTAwMjYgVVNCYC4gQWxyaWdodCwgdGhhdCBsb29rcyBzb3VuZC4gSXQncyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MDYuNjIxMjcwNTI5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE0NDU4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX0lOVEVSU0lMKSArPSBpbnRlcnNpbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTk9Y29uZmlnIE1XTDhLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI4OmVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzowNi43NTI3MjQwNjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTMwOTg4MjczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBNYXJ2ZWxsIFdMQU4gZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIHdpcmVsZXNzIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgaG91c2VkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc2VjdGlvbiByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYC4gVGhhdCB2YXJpYWJsZSBpcyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgTWFydmVsbCBkcml2ZXIuIFRoaXMgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZSBNYXJ2ZWxsIGRyaXZlciBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaG9wZWZ1bGx5LCBzb21lIGhlbHBmdWwgY29tbWVudHMgdG8gZ3VpZGUgbXkgdW5kZXJzdGFuZGluZy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MTkuODUxNTUzODM0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM3OTg0NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX0lOVEVSU0lMKSArPSBpbnRlcnNpbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTk9Y29uZmlnIE1XTDhLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI4OmVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzoyMC4zMjUzNTk3MjhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzQ3ODAyNzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIFdMQU4gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVtZW50cyBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gV0xBTi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgbmV0d29yayBkZXZpY2VzIGFyZSBkZWZpbmVkLCBzbyBpdCdzIGEgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgV0xBTiBpdHNlbGYsIGFzIGEgZm91bmRhdGlvbmFsIGNvbmNlcHQsIGhhcyBhbnkgaGFyZCBkZXBlbmRlbmNpZXMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhpcyBzaG91bGQgdGVsbCBtZSB3aGF0IEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU2NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjI3LjgwMzM5MDU1N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjIwMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbWFydmVsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yNj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzoyNzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTI4LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTY6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzoyNy45NTAwMTUxMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcwMjYzMTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmVzIDEgdGhyb3VnaCAzNSwgd2hpY2ggdXN1YWxseSBjb250YWlucyB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGVudGlyZSB3aXJlbGVzcyBzdWJzeXN0ZW0gb3IgbWFqb3IgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMuIEkgYW50aWNpcGF0ZSBzZWVpbmcgdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBcIldpcmVsZXNzIE5ldHdvcmtpbmdcIiBlbnRyeSBpdHNlbGYsIHRoZSBnYXRld2F5IHRvIGV2ZXJ5dGhpbmcgZWxzZSB3aXJlbGVzcy5cbiogICBQb3RlbnRpYWxseSwgd2hldGhlciBjZXJ0YWluIG1ham9yIHdpcmVsZXNzIHByb3RvY29scyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGNvbmZpZ3VyYWJsZS5cbiogICBPcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCB3aXJlbGVzcyBzdGFja3MsIGlmIHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZXhpc3RzIGluIHRoaXMga2VybmVsIHZlcnNpb24uXG4qICAgRGVmaW5lcyBmb3IgYnJvYWQgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eSwgbGlrZSBzdXBwb3J0IGZvciBjZXJ0YWluIGZyZXF1ZW5jeSBiYW5kcyBvciBkZXZpY2UgdHlwZXMuXG4qICAgQmFzaWMgaGVscCB0ZXh0IGV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgbWF5YmUgYSBmZXcga2V5IGNvbmZpZ3VyYXRpb25zLlxuXG5HaXZlbiB0aGUgbGluZSByYW5nZSwgSSBleHBlY3QgdGhpcyBzZWN0aW9uIHRvIGxheSB0aGUgZ3JvdW5kd29yayBhbmQgc2V0IHRoZSBvdmVyYWxsIGRpcmVjdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBkZXNpZ25lcnMgcHJpb3JpdGl6ZWQgYXMgaW1wb3J0YW50IHRvIGV4cG9zZSB0byBlbmQgdXNlcnMgYW5kIGRldmVsb3BlcnMgYXQgdGhlIGluaXRpYWwgbGV2ZWwuIEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgYnJhbmNoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjMwLjY1MjY0OTAwOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjMwLjY1MjcxMzA4OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTEzNzMwNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFRoaXMgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkndmUgZ290IGEgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZmluZGluZy4gRXNzZW50aWFsbHksIHRoZXJlJ3MgYSBib3VuZHMgY2hlY2sgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgIGZ1bmN0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGV5J3ZlIGlkZW50aWZpZWQgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AsIG1lYW5pbmcgaXQgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBpbmRleGluZyBpbiBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzYCwgd2hpY2ggSSBsaWtlIHRvIHNlZS5cblxuTm93LCB0aGUgcmVhbGx5IGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIHBvdGVudGlhbCBmb3IgZnV6emluZy4gVGhlIGZhY3QgdGhhdCB0aGUgYG13aWZpZXhgIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBgTVdJRklFWF9VU0JgIChVU0IgZ2FkZ2V0L3ZIQ0kgZW11bGF0aW9uKSBpcyBrZXkuIFRoYXQgbWVhbnMgd2UgY2FuIHNlbmQgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMsIG1ha2luZyB0aGlzIGZ1enphYmxlLiBUaGF0IGFsc28gbWFrZXMgdGhpcyBtdWNoIG1vcmUgZXhjaXRpbmcuXG5cblRvIGJlIGNsZWFyIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcywgaGVyZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50LCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIFRob3NlIGFyZSB0aGUgb25lcyB0byBmb2N1cyBvbi5cblxuVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuXG5cbkZpbmFsbHksIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGFuZCwgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGFsbCB0aGVyZSwgc28gSSBhbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODMxLCJPdXRwdXRUb2tlbnMiOjE3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjE2NjQ0NjMyM1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mzg5MTg1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c1wiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c1wiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjMxMDM0OTYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY5NDkyMjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjMxMTIxNjI2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3Njk0MDUwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VxdWV1ZV9pbmRleGAgYWdhaW5zdCBgSUVFRTgwMjExX05VTV9BQ1NgIGJlZm9yZSBhY2Nlc3NpbmcgYHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXNbLi4uXWAgaW4gYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgLiBUaGlzIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAvIGJ1ZmZlciBvdmVyZmxvdyBpc3N1ZSwgd2hpY2ggaXMgcHJvcGVybHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsdGVyLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGNvcGllcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiArOTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiBcbitcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4rXHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzozOC4zMTEyMTkyNDlaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM3MDA2ODkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQ29kZTogV01NIENvbnRleHQqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGFuYWx5emluZyB0aGlzIHBhdGNoLCBidXQgZmlyc3QsIEkgbmVlZCBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIGFyb3VuZCBsaW5lIDk0My4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgV01NIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSwgc28gaXQncyBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoZSBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcGxhY2UsIGFuZCB1c2luZyB0aGF0IGluIGNvbmp1bmN0aW9uIHdpdGggYSBzb3VyY2UgY29kZSBicm93c2VyIG9yIGRlYnVnZ2VyIHdpbGwgcXVpY2tseSBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gVGhpcyB3YXkgSSBjYW4gc2VlIGV4YWN0bHkgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGludGVyYWN0cyB3aXRoIHRoZSBjaGFuZ2VkIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjQyLjY4MTI5MTAzOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkyMDpcXHRcXHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xcbiA5MjE6XFx0XFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xcbiA5MjI6XFx0XFxuIDkyMzpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBJTkZPLFxcbiA5MjQ6XFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBXTU06IFdNTV9HRVRfU1RBVFVTIGNtZHJlc3AgcmVjZWl2ZWQ6ICVkXFxcXG5cXFwiLFxcbiA5MjU6XFx0XFx0XFx0ICAgIHJlc3BfbGVuKTtcXG4gOTI2OlxcdFxcbiA5Mjc6XFx0XFx0d2hpbGUgKChyZXNwX2xlbiBcXHUwMDNlPSBzaXplb2YodGx2X2hkci1cXHUwMDNlaGVhZGVyKSkgXFx1MDAyNlxcdTAwMjYgdmFsaWQpIHtcXG4gOTI4OlxcdFxcdFxcdHRsdl9oZHIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqKSBjdXJyO1xcbiA5Mjk6XFx0XFx0XFx0dGx2X2xlbiA9IGxlMTZfdG9fY3B1KHRsdl9oZHItXFx1MDAzZWhlYWRlci5sZW4pO1xcbiA5MzA6XFx0XFxuIDkzMTpcXHRcXHRcXHRpZiAocmVzcF9sZW4gXFx1MDAzYyB0bHZfbGVuICsgc2l6ZW9mKHRsdl9oZHItXFx1MDAzZWhlYWRlcikpXFxuIDkzMjpcXHRcXHRcXHRcXHRicmVhaztcXG4gOTMzOlxcdFxcbiA5MzQ6XFx0XFx0XFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVxcdTAwM2VoZWFkZXIudHlwZSkpIHtcXG4gOTM1OlxcdFxcdFxcdGNhc2UgVExWX1RZUEVfV01NUVNUQVRVUzpcXG4gOTM2OlxcdFxcdFxcdFxcdHRsdl93bW1fcXN0YXR1cyA9XFxuIDkzNzpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfd21tX3F1ZXVlX3N0YXR1cyAqKVxcbiA5Mzg6XFx0XFx0XFx0XFx0XFx0dGx2X2hkcjtcXG4gOTM5OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIENNRCxcXG4gOTQwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcXFx0XFxcIlxcbiA5NDE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJRU1RBVFVTIFRMVjogJWQsICVkLCAlZFxcXFxuXFxcIixcXG4gOTQyOlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbiA5NDM6XFx0XFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZCxcXG4gOTQ0OlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWRpc2FibGVkKTtcXG4gOTQ1OlxcdFxcbiA5NDY6XFx0XFx0XFx0XFx0aWYgKHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXggXFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXFxuIDk0NzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gOTQ4OlxcdFxcdFxcdFxcdGFjX3N0YXR1cyA9IFxcdTAwMjZwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzW3Rsdl93bW1fcXN0YXR1cy1cXHUwMDNlXFxuIDk0OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcXVldWVfaW5kZXhdO1xcbiA5NTA6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZGlzYWJsZWQ7XFxuIDk1MTpcXHRcXHRcXHRcXHRhY19zdGF0dXMtXFx1MDAzZWZsb3dfcmVxdWlyZWQgPVxcbiA5NTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VmbG93X3JlcXVpcmVkO1xcbiA5NTM6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VmbG93X2NyZWF0ZWQgPSB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWZsb3dfY3JlYXRlZDtcXG4gOTU0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA5NTU6XFx0XFxuIDk1NjpcXHRcXHRcXHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcXG4gOTU3OlxcdFxcdFxcdFxcdC8qXFxuIDk1ODpcXHRcXHRcXHRcXHQgKiBQb2ludCB0aGUgcmVndWxhciBJRUVFIElFIDIgYnl0ZXMgaW50byB0aGUgTWFydmVsbCBJRVxcbiA5NTk6XFx0XFx0XFx0XFx0ICogICBhbmQgc2V0dXAgdGhlIElFRUUgSUUgdHlwZSBhbmQgbGVuZ3RoIGJ5dGUgZmllbGRzXFxuIDk2MDpcXHRcXHRcXHRcXHQgKi9cXG4gOTYxOlxcdFxcbiA5NjI6XFx0XFx0XFx0XFx0d21tX3BhcmFtX2llID1cXG4gOTYzOlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICopIChjdXJyICtcXG4gOTY0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAyKTtcXG4gOTY1OlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIubGVuID0gKHU4KSB0bHZfbGVuO1xcbiA5NjY6XFx0XFx0XFx0XFx0d21tX3BhcmFtX2llLVxcdTAwM2V2ZW5kX2hkci5lbGVtZW50X2lkID1cXG4gOTY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQztcXG4gOTY4OlxcdFxcbiA5Njk6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo0Mi42ODE0NzYyOThaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg5MDIwNTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIGFuZCB0aGUgQnVnIEZpeCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgLCBpcyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBwcm9ibGVtIGl0J3MgYWRkcmVzc2luZy4gVGhlIGJ1ZyBmaXggZG9jdW1lbnRhdGlvbiBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIGFsd2F5cyBwcmVmZXIgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIGNvZGUgaXRzZWxmIGZpcnN0LiBVbmRlcnN0YW5kaW5nIHRoZSAqY29udGV4dCogb2YgdGhlIGZpeCBpcyB2aXRhbC4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGFuZCB3aGljaCB2YXJpYWJsZXMgYXJlIHBhc3NlZCB0byBpdC4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIHNlZSB3aGF0IGl0IGhhcyB0byBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6NDYuNTcxNjg2NTYzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTAwOlxcdCAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBnZXQgV01NIHN0YXR1cyBjb21tYW5kIHJlc3BvbnNlIGZyb20gZmlybXdhcmUuXFxuIDkwMTpcXHQgKlxcbiA5MDI6XFx0ICogVGhlIHJlc3BvbnNlIG1heSBjb250YWluIG11bHRpcGxlIFRMVnMgLVxcbiA5MDM6XFx0ICogICAgICAtIEFDIFF1ZXVlIHN0YXR1cyBUTFZzXFxuIDkwNDpcXHQgKiAgICAgIC0gQ3VycmVudCBXTU0gUGFyYW1ldGVyIElFIFRMVlxcbiA5MDU6XFx0ICogICAgICAtIEFkbWlzc2lvbiBDb250cm9sIGFjdGlvbiBmcmFtZSBUTFZzXFxuIDkwNjpcXHQgKlxcbiA5MDc6XFx0ICogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFRMVnMgYW5kIHRoZW4gY2FsbHMgZnVydGhlciBzcGVjaWZpYyBmdW5jdGlvbnNcXG4gOTA4OlxcdCAqIHRvIHByb2Nlc3MgYW55IGNoYW5nZXMgaW4gdGhlIHF1ZXVlIHByaW9yaXRpemUgb3Igc3RhdGUuXFxuIDkwOTpcXHQgKi9cXG4gOTEwOlxcdGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbiA5MTE6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbiA5MTI6XFx0e1xcbiA5MTM6XFx0XFx0dTggKmN1cnIgPSAodTggKikgXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5nZXRfd21tX3N0YXR1cztcXG4gOTE0OlxcdFxcdHVpbnQxNl90IHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlc2l6ZSksIHRsdl9sZW47XFxuIDkxNTpcXHRcXHRpbnQgbWFzayA9IElFRUU4MDIxMV9XTU1fSUVfQVBfUU9TSU5GT19QQVJBTV9TRVRfQ05UX01BU0s7XFxuIDkxNjpcXHRcXHRib29sIHZhbGlkID0gdHJ1ZTtcXG4gOTE3OlxcdFxcbiA5MTg6XFx0XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2X2hkcjtcXG4gOTE5OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKnRsdl93bW1fcXN0YXR1cztcXG4gOTIwOlxcdFxcdHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKndtbV9wYXJhbV9pZSA9IE5VTEw7XFxuIDkyMTpcXHRcXHRzdHJ1Y3QgbXdpZmlleF93bW1fYWNfc3RhdHVzICphY19zdGF0dXM7XFxuIDkyMjpcXHRcXG4gOTIzOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuIDkyNDpcXHRcXHRcXHQgICAgXFxcImluZm86IFdNTTogV01NX0dFVF9TVEFUVVMgY21kcmVzcCByZWNlaXZlZDogJWRcXFxcblxcXCIsXFxuIDkyNTpcXHRcXHRcXHQgICAgcmVzcF9sZW4pO1xcbiA5MjY6XFx0XFxuIDkyNzpcXHRcXHR3aGlsZSAoKHJlc3BfbGVuIFxcdTAwM2U9IHNpemVvZih0bHZfaGRyLVxcdTAwM2VoZWFkZXIpKSBcXHUwMDI2XFx1MDAyNiB2YWxpZCkge1xcbiA5Mjg6XFx0XFx0XFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XFxuIDkyOTpcXHRcXHRcXHR0bHZfbGVuID0gbGUxNl90b19jcHUodGx2X2hkci1cXHUwMDNlaGVhZGVyLmxlbik7XFxuIDkzMDpcXHRcXG4gOTMxOlxcdFxcdFxcdGlmIChyZXNwX2xlbiBcXHUwMDNjIHRsdl9sZW4gKyBzaXplb2YodGx2X2hkci1cXHUwMDNlaGVhZGVyKSlcXG4gOTMyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA5MzM6XFx0XFxuIDkzNDpcXHRcXHRcXHRzd2l0Y2ggKGxlMTZfdG9fY3B1KHRsdl9oZHItXFx1MDAzZWhlYWRlci50eXBlKSkge1xcbiA5MzU6XFx0XFx0XFx0Y2FzZSBUTFZfVFlQRV9XTU1RU1RBVFVTOlxcbiA5MzY6XFx0XFx0XFx0XFx0dGx2X3dtbV9xc3RhdHVzID1cXG4gOTM3OlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXFxuIDkzODpcXHRcXHRcXHRcXHRcXHR0bHZfaGRyO1xcbiA5Mzk6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo0Ni41NzE4NTk4MzNaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTQzMzM4MjQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgaXQgYXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGJvdW5kcyBjaGVjay4gSXQncyBhZGRpbmcgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgYHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleGAgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBmb3IgdGhlIGBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNgIGFycmF5IGJlZm9yZSBhY2Nlc3NpbmcgaXQuIFRoZSBhcnJheSBpcyBzaXplZCBieSBgSUVFRTgwMjExX05VTV9BQ1NgLCB3aGljaCBpcyA0LiBXaXRob3V0IHRoaXMsIHdlJ2QgaGF2ZSBhIGNsYXNzaWMgYXJyYXkgaW5kZXhpbmcgdnVsbmVyYWJpbGl0eSDigJMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyB3cml0ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCB0aGF0LCB3aGljaCBpcyBnb29kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFzcGVjdCBJIG5lZWQgdG8gbG9vayBpbnRvPyBMZXQncyBzZWUuLi4gdGhlIGB0bHZfd21tX3FzdGF0dXNgIGRhdGEgY29tZXMgZnJvbSBhIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2UsIHNvIGl0J3MgaW5pdGlhbGl6ZWQgYnkgdGhlIGZpcm13YXJlLiBUaGUgYHF1ZXVlX2luZGV4YCBpdHNlbGYgaXMgKnRoZW4qIGNoZWNrZWQsIHNvIGlmIGl0J3Mgb3V0IG9mIGJvdW5kcywgdGhlIGNvZGUganVzdCBicmVha3MsIGFuZCBkb2Vzbid0IHdyaXRlIHRvIHRoZSBhcnJheS4gVGhlIGBhY19zdGF0dXNgIGFycmF5IGZpZWxkcyBhcmUgcG9wdWxhdGVkIGZyb20gYHRsdl93bW1fcXN0YXR1c2AuIFNlZW1zIGxpa2UgZXZlcnl0aGluZydzIGluaXRpYWxpemVkIGFuZCB0aGVyZSdzIG5vIHdheSB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBsZWFrIGluZm8sIG9yIGludHJvZHVjZSBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiBUaGlzIGlzIHB1cmVseSBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHdyaXRlLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBydWxlOiBcIlRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sIExPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXCIgVGhpcyBpcyBhbGwgS0FTQU4sIGFsbCBkYXkgbG9uZy4gQW5kLCBcIk5lZWRzS01TQU49ZmFsc2UgSUYuLi5UaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLi4udGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0IGJ5IEtBU0FOLi4uXCIuIFRoZSBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBhbmQgYWxsIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBJdCdzIGEgY2xlYW4sIGRlZmVuc2l2ZSBmaXguXG5cblNvLCB5ZWFoLCBnaXZlbiB0aGF0LCBgTmVlZHNLTVNBTmAgc2hvdWxkIGFic29sdXRlbHkgYmUgYGZhbHNlYC4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIG9uZSBsYXN0IHRpbWUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBhbmQgdGhlbiBJJ2xsIGdldCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbCByZWFkeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMwMywiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo1Ni4wMDUyNDUwNDhaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gYXJyYXkgYm91bmRzIGNoZWNrIG9uIGB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1suLi5dYCBpbiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKWAuIFRoaXMgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIC8gYnVmZmVyIG92ZXJmbG93IGlzc3VlLCB3aGljaCBpcyBwcm9wZXJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSwgYWx0ZXIsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgY29waWVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2m8c7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 07:24:23 +0000 UTC FinishedAt: 2026-09-07 08:33:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "USB" ], "series_id": "f5236305-8bc4-4e18-b526-286ec92a124e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_ret_wmm_get_status", "mwifiex_process_sta_cmdresp" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzJiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gYXJyYXkgYm91bmRzIGNoZWNrIG9uIGB0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbLi4uXWAgaW4gYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgLiBUaGlzIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAvIGJ1ZmZlciBvdmVyZmxvdyBpc3N1ZSwgd2hpY2ggaXMgcHJvcGVybHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsdGVyLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGNvcGllcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKCkgdG8gdmFsaWRhdGUgcXVldWVfaW5kZXggYmVmb3JlIGluZGV4aW5nIGludG8gcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzLiBUaGUgbXdpZmlleCBkcml2ZXIgc3VwcG9ydHMgVVNCLWJhc2VkIGRldmljZXMgKENPTkZJR19NV0lGSUVYX1VTQiksIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNiNDA0MDc5OWQxOWRjNjI3OTdjMWJiOTA2NmFmOGQyNzM1OTgyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDg6MzI6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiAmIzQzOzk0Myw4IEBAIGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X3JlcXVpcmVkLFxuIFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VkaXNhYmxlZCk7XG4gXG4mIzQzO1x0XHRcdGlmICh0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXggXHUwMDNlPSBJRUVFODAyMTFfTlVNX0FDUylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3M2I0MDQwNzk5ZDE5ZGM2Mjc5N2MxYmI5MDY2YWY4ZDI3MzU5ODI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwODozMjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYwppbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jCkBAIC05NDMsNiAmIzQzOzk0Myw4IEBAIGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LAogCQkJCSAgICB0bHZfd21tX3FzdGF0dXMtJmd0O2Zsb3dfcmVxdWlyZWQsCiAJCQkJICAgIHRsdl93bW1fcXN0YXR1cy0mZ3Q7ZGlzYWJsZWQpOwogCiYjNDM7CQkJaWYgKHRsdl93bW1fcXN0YXR1cy0mZ3Q7cXVldWVfaW5kZXggJmd0Oz0gSUVFRTgwMjExX05VTV9BQ1MpCiYjNDM7CQkJCWJyZWFrOwogCQkJYWNfc3RhdHVzID0gJmFtcDtwcml2LSZndDt3bW0uYWNfc3RhdHVzW3Rsdl93bW1fcXN0YXR1cy0mZ3Q7CiAJCQkJCQkJIHF1ZXVlX2luZGV4XTsKIAkJCWFjX3N0YXR1cy0mZ3Q7ZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtJmd0O2Rpc2FibGVkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTM4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuICp3b3J0aCogZnV6emluZywgYW5kIGlmIHNvLCBob3cuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0JiMzOTtzIHJlYWQgdGhlIHBhdGNoLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgYm91bmRzIGNoZWNrIGFkZGVkIGluIHRoZSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGZ1bmN0aW9uLiBUaGUgZGlmZiBpdHNlbGYgaXMgc2ltcGxlLCBhIGNoZWNrIG9uIGBxdWV1ZV9pbmRleGAgd2l0aGluIGEgV01NIHN0YXR1cyB1cGRhdGUuIFNwZWNpZmljYWxseSB0aGUgYWRkZWQgY2hlY2s6IGBpZiAodGx2X3dtbV9xc3RhdHVzLSZndDtxdWV1ZV9pbmRleCAmZ3Q7PSBJRUVFODAyMTFfTlVNX0FDUykgYnJlYWs7YC4gVGhpcyBpcyBsb29raW5nIGZvciBpbnZhbGlkIHF1ZXVlIGluZGV4ZXMuCgpOb3csIHRoZSByZWFsIHdvcmsgYmVnaW5zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZHJpdmVyLCBgbXdpZmlleGAsIGZpdHMgaW50byB0aGUgc3lzdGVtLiBJcyBpdCBhIFVTQiwgU0RJTywgb3IgUENJZSBkcml2ZXI/IFRoYXQgZGlyZWN0bHkgaW1wYWN0cyBmdXp6aW5nIHN0cmF0ZWd5LiBDYW4gSSB0YXJnZXQgaXQgd2l0aCBVU0IgZnV6emluZyB0b29scz8gVGhpbmsgc3l6a2FsbGVyJiMzOTtzIFVTQiByYXcgZ2FkZ2V0LCBVU0IgZW11bGF0aW9uIHNldHVwcywgb3IgbWF5YmUgZXZlbiBsZXZlcmFnZSBtYWM4MDIxMV9od3NpbSBpZiBJJiMzOTttIGx1Y2t5LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3RydWN0dXJlIGFuZCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24uIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGgsIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgLCBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXIsIGJ1dCB0aGUgZXhhY3QgaW50ZXJmYWNlIHByb3RvY29sIGlzIHN0aWxsIHVuY2xlYXIuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIGRldGVybWluZSBob3cgdGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgaW5zdGFudGlhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yPWNvbmZpZyBNV0lGSUVYXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctOS1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlx0ICBtd2lmaWV4LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjItXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyMzpcdCAgbXdpZmlleF9zZGlvLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNTpcdCAgbXdpZmlleF9wY2llLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy00NS1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2Olx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTVdJRklFWF9VU0IgU3VwcG9ydCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIGBNV0lGSUVYX1VTQmAgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQsIHdoaWNoIGlzIGZhbnRhc3RpYyEgVGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGRvb3JzLiBLbm93aW5nIHRoYXQgYG13aWZpZXhgIGhhcyBhIFVTQiBpbnRlcmZhY2UgZHJpdmVyIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jYCkgaXMga2V5LiBUaGlzIG1lYW5zIHdlJiMzOTt2ZSBnb3QgYSB0YW5naWJsZSBhdmVudWUgZm9yIGZ1enppbmcgdmlhIFVTQiBlbXVsYXRpb24sIHN5emthbGxlciYjMzk7cyBVU0IgcmF3IGdhZGdldCwgb3IgZXZlbiB2aGNpLiBUaGlzIGlzIHNpZ25pZmljYW50OyBVU0IgaXMgZ2VuZXJhbGx5IHdlbGwtdW5kZXJzdG9vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoZSBpbnRlcmZhY2UgcHJvdmlkZXMgYSBkZWZpbmVkIGVudHJ5IHBvaW50LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIuIE15IG5leHQgbW92ZSBpcyB0byBpbnZlc3RpZ2F0ZSBgTVdJRklFWF9VU0JgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdOKAmXMgY29uZmlndXJlZCBhbmQgdXNlZC4gQmV5b25kIHRoYXQsIEkgd2FudCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBzZWUgaG93IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgaXMgcmVhY2hlZC4gTWFwcGluZyB0aGF0IG91dCBpcyBlc3NlbnRpYWwgZm9yIGNyYWZ0aW5nIHRhcmdldGVkIGZ1enppbmcgaGFybmVzc2VzLiBLbm93aW5nIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBmbG93IGxlYWRpbmcgdG8gdGhhdCBmdW5jdGlvbiBnaXZlcyBtZSBhIHJvYWRtYXAgZm9yIGVmZmljaWVudCBhbmQgZWZmZWN0aXZlIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGJlIGZvY3VzaW5nIG15IGVmZm9ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuICAyMTpcdFxuICAyMjpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMzpcdFx0ICBtd2lmaWV4X3NkaW8uXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE1XSUZJRVhfUENJRVxuICAyNjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjg6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMjk6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFdNTSBTdGF0dXMgUmV0cmlldmFsKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgZnVuY3Rpb24uIEl0JiMzOTtzIHRpbWUgdG8gbWFwIGl0cyBjYWxsIGdyYXBoLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgY29udGV4dHMgdGhhdCB0cmlnZ2VyIHRoaXMgcmV0cmlldmFsIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUgV01NIHN0YXR1cy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhcmVhcyB3aGVyZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgbWlnaHQgc3VyZmFjZSDigJMgdGhlc2UgV01NLXJlbGF0ZWQgZnVuY3Rpb25zIHRlbmQgdG8gYmUgc2Vuc2l0aXZlLiBUaGUgZ29hbCBoZXJlIGlzbiYjMzk7dCBqdXN0IHRvIHNlZSAqdGhhdCogaXQmIzM5O3MgY2FsbGVkLCBidXQgdG8gYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgKndoeSosIGFuZCAqd2hlbiogaXQgaXMgY2FsbGVkLCBmcm9tIHdoYXQgc3RhdGUgaXMgaXQgYmVpbmcgY2FsbGVkIGZyb20/IGFuZCB3aGF0IGV2ZW50cyB0cmlnZ2VyZWQgdGhlIGNhbGxzPyBUaGlzIHdpbGwgaGVscCBwaW5wb2ludCBhbnkgaXNzdWVzIGluIFFvUyBtYW5hZ2VtZW50LCBwb3dlciBzYXZpbmcgZmVhdHVyZXMsIG9yIGludGVyLW9wZXJhdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIG9wZW4gdGhhdCBzb3VyY2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEzNTktXHRjYXNlIEhvc3RDbWRfQ01EX1dNTV9HRVRfU1RBVFVTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTM2MDpcdFx0cmV0ID0gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMocHJpdiwgcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMzYxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmM9ODA4PW13aWZpZXhfd21tX2FkZF9idWZfdHhxdWV1ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYy05MDktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmM6OTEwOmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jLTkxMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oPTg1PXZvaWQgbXdpZmlleF93bW1fc2V0dXBfYWNfZG93bmdyYWRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oOjg2OmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oLTg3LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpLUZpIFdNTSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFdNTSBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvZGUgYXJvdW5kIGxpbmUgOTEwIHRvIDk2MC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoYXQgc3BlY2lmaWMgcGFydCBvZiB0aGUgV01NIGZ1bmN0aW9uYWxpdHkuIFByb2JhYmx5IHNvbWV0aGluZyBhYm91dCBxdWV1ZSBtYW5hZ2VtZW50IG9yIGNvbnRlbnRpb24gbWVjaGFuaXNtcywgYnV0IEkgbmVlZCB0byBzZWUgaXQgaW4gYWN0aW9uIHRvIGtub3cgZm9yIHN1cmUuIExldOKAmXMgZ2V0IHRvIGl0LiBJIHdhbnQgdG8gc2VlIGhvdyBNYXJ2ZWxsJiMzOTtzIGhhbmRsaW5nIHRoZSBXTU0gc3RhbmRhcmQsIGFuZCB3aGF0IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGlzc3VlcyBtaWdodCBiZSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwNTpcdCAqICAgICAgLSBBZG1pc3Npb24gQ29udHJvbCBhY3Rpb24gZnJhbWUgVExWc1xuIDkwNjpcdCAqXG4gOTA3Olx0ICogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFRMVnMgYW5kIHRoZW4gY2FsbHMgZnVydGhlciBzcGVjaWZpYyBmdW5jdGlvbnNcbiA5MDg6XHQgKiB0byBwcm9jZXNzIGFueSBjaGFuZ2VzIGluIHRoZSBxdWV1ZSBwcmlvcml0aXplIG9yIHN0YXRlLlxuIDkwOTpcdCAqL1xuIDkxMDpcdGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuIDkxMTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbiA5MTI6XHR7XG4gOTEzOlx0XHR1OCAqY3VyciA9ICh1OCAqKSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5nZXRfd21tX3N0YXR1cztcbiA5MTQ6XHRcdHVpbnQxNl90IHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSwgdGx2X2xlbjtcbiA5MTU6XHRcdGludCBtYXNrID0gSUVFRTgwMjExX1dNTV9JRV9BUF9RT1NJTkZPX1BBUkFNX1NFVF9DTlRfTUFTSztcbiA5MTY6XHRcdGJvb2wgdmFsaWQgPSB0cnVlO1xuIDkxNzpcdFxuIDkxODpcdFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2X2hkcjtcbiA5MTk6XHRcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKnRsdl93bW1fcXN0YXR1cztcbiA5MjA6XHRcdHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKndtbV9wYXJhbV9pZSA9IE5VTEw7XG4gOTIxOlx0XHRzdHJ1Y3QgbXdpZmlleF93bW1fYWNfc3RhdHVzICphY19zdGF0dXM7XG4gOTIyOlx0XG4gOTIzOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG4gOTI0Olx0XHRcdCAgICBcJiMzNDtpbmZvOiBXTU06IFdNTV9HRVRfU1RBVFVTIGNtZHJlc3AgcmVjZWl2ZWQ6ICVkXFxuXCYjMzQ7LFxuIDkyNTpcdFx0XHQgICAgcmVzcF9sZW4pO1xuIDkyNjpcdFxuIDkyNzpcdFx0d2hpbGUgKChyZXNwX2xlbiBcdTAwM2U9IHNpemVvZih0bHZfaGRyLVx1MDAzZWhlYWRlcikpIFx1MDAyNlx1MDAyNiB2YWxpZCkge1xuIDkyODpcdFx0XHR0bHZfaGRyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKikgY3VycjtcbiA5Mjk6XHRcdFx0dGx2X2xlbiA9IGxlMTZfdG9fY3B1KHRsdl9oZHItXHUwMDNlaGVhZGVyLmxlbik7XG4gOTMwOlx0XG4gOTMxOlx0XHRcdGlmIChyZXNwX2xlbiBcdTAwM2MgdGx2X2xlbiAmIzQzOyBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKVxuIDkzMjpcdFx0XHRcdGJyZWFrO1xuIDkzMzpcdFxuIDkzNDpcdFx0XHRzd2l0Y2ggKGxlMTZfdG9fY3B1KHRsdl9oZHItXHUwMDNlaGVhZGVyLnR5cGUpKSB7XG4gOTM1Olx0XHRcdGNhc2UgVExWX1RZUEVfV01NUVNUQVRVUzpcbiA5MzY6XHRcdFx0XHR0bHZfd21tX3FzdGF0dXMgPVxuIDkzNzpcdFx0XHRcdFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKilcbiA5Mzg6XHRcdFx0XHRcdHRsdl9oZHI7XG4gOTM5Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG4gOTQwOlx0XHRcdFx0XHQgICAgXCYjMzQ7aW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcdFwmIzM0O1xuIDk0MTpcdFx0XHRcdFx0ICAgIFwmIzM0O1FTVEFUVVMgVExWOiAlZCwgJWQsICVkXFxuXCYjMzQ7LFxuIDk0MjpcdFx0XHRcdFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCxcbiA5NDM6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZmxvd19yZXF1aXJlZCxcbiA5NDQ6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQpO1xuIDk0NTpcdFxuIDk0NjpcdFx0XHRcdGlmICh0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXggXHUwMDNlPSBJRUVFODAyMTFfTlVNX0FDUylcbiA5NDc6XHRcdFx0XHRcdGJyZWFrO1xuIDk0ODpcdFx0XHRcdGFjX3N0YXR1cyA9IFx1MDAyNnByaXYtXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXHUwMDNlXG4gOTQ5Olx0XHRcdFx0XHRcdFx0XHQgcXVldWVfaW5kZXhdO1xuIDk1MDpcdFx0XHRcdGFjX3N0YXR1cy1cdTAwM2VkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy1cdTAwM2VkaXNhYmxlZDtcbiA5NTE6XHRcdFx0XHRhY19zdGF0dXMtXHUwMDNlZmxvd19yZXF1aXJlZCA9XG4gOTUyOlx0XHRcdFx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQ7XG4gOTUzOlx0XHRcdFx0YWNfc3RhdHVzLVx1MDAzZWZsb3dfY3JlYXRlZCA9IHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X2NyZWF0ZWQ7XG4gOTU0Olx0XHRcdFx0YnJlYWs7XG4gOTU1Olx0XG4gOTU2Olx0XHRcdGNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOlxuIDk1NzpcdFx0XHRcdC8qXG4gOTU4Olx0XHRcdFx0ICogUG9pbnQgdGhlIHJlZ3VsYXIgSUVFRSBJRSAyIGJ5dGVzIGludG8gdGhlIE1hcnZlbGwgSUVcbiA5NTk6XHRcdFx0XHQgKiAgIGFuZCBzZXR1cCB0aGUgSUVFRSBJRSB0eXBlIGFuZCBsZW5ndGggYnl0ZSBmaWVsZHNcbiA5NjA6XHRcdFx0XHQgKi9cbiA5NjE6XHRcbiA5NjI6XHRcdFx0XHR3bW1fcGFyYW1faWUgPVxuIDk2MzpcdFx0XHRcdFx0KHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKikgKGN1cnIgJiM0MztcbiA5NjQ6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIDIpO1xuIDk2NTpcdFx0XHRcdHdtbV9wYXJhbV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gPSAodTgpIHRsdl9sZW47XG4gOTY2Olx0XHRcdFx0d21tX3BhcmFtX2llLVx1MDAzZXZlbmRfaGRyLmVsZW1lbnRfaWQgPVxuIDk2NzpcdFx0XHRcdFx0XHRcdFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQztcbiA5Njg6XHRcbiA5Njk6XHRcdFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIENNRCxcbiA5NzA6XHRcdFx0XHRcdCAgICBcJiMzNDtpbmZvOiBDTURfUkVTUDogV01NX0dFVF9TVEFUVVM6XFx0XCYjMzQ7XG4gOTcxOlx0XHRcdFx0XHQgICAgXCYjMzQ7V01NIFBhcmFtZXRlciBTZXQgQ291bnQ6ICVkXFxuXCYjMzQ7LFxuIDk3MjpcdFx0XHRcdFx0ICAgIHdtbV9wYXJhbV9pZS1cdTAwM2Vxb3NfaW5mb19iaXRtYXAgXHUwMDI2IG1hc2spO1xuIDk3MzpcdFxuIDk3NDpcdFx0XHRcdGlmICh3bW1fcGFyYW1faWUtXHUwMDNldmVuZF9oZHIubGVuICYjNDM7IDIgXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIEJvdW5kcyBDaGVjayoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjazogYGlmICh0bHZfd21tX3FzdGF0dXMtJmd0O3F1ZXVlX2luZGV4ICZndDs9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGUgcHVycG9zZSBvZiB0aGlzIHNlZW1zIHByZXR0eSBjbGVhciDigJMgdG8gc3RvcCBvdXQtb2YtYm91bmRzIGFjY2VzcyB0byBgcHJpdi0mZ3Q7d21tLmFjX3N0YXR1c2AuIEJ1dCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBhbmQgdGhlcmVmb3JlIGZ1enphYmxlPyBUaGUgdHJpYWdlIGd1aWRlbGluZXMgbWFrZSB0aGF0IHRoZSBhYnNvbHV0ZSBwcmlvcml0eS4gSWYgaXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCAodGhpbmsgR0NFIG9yIFFFTVUgd2l0aCBlbXVsYXRlZCBkZXZpY2VzKSwgd2UmIzM5O3JlIHdhc3Rpbmcgb3VyIHRpbWUuIE5vIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXdpZmlleGAgaGFzIHNvbWUgcG90ZW50aWFsLiBJdCYjMzk7cyBhIFVTQiBkcml2ZXIsIGBNV0lGSUVYX1VTQmAsIGFuZCB0aGF04oCZcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGVtdWxhdGFibGUgdXNpbmcgVVNCIHJhdyBnYWRnZXQgb3IgdkhDSSDigJMgU3l6a2FsbGVyIHNwZWNpZmljYWxseSBoYXMgVVNCIHJhdyBnYWRnZXQgc3VwcG9ydCBmb3Igd2lmaSBkcml2ZXJzLCBhbmQgKm13aWZpZXgqIGlzIGEgVVNCIHdpZmkgZHJpdmVyLiBUaGlzIG1lYW5zIHdlIGNhbiBpbmplY3QgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMgdGhyb3VnaCBVU0IgYnVsayBvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcGx1cy4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1XSUZJRVhfVVNCYCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdGhhdCBhbGwgdGhlIHJpZ2h0IHN5bWJvbHMgYXJlIGF2YWlsYWJsZS4gVGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGxvb2sgbGlrZSB0aGlzOiBgTVdJRklFWGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgYE1XSUZJRVhfVVNCYCBkZXBlbmRzIG9uIGBNV0lGSUVYICZhbXA7JmFtcDsgVVNCYCBhbmQgc2VsZWN0cyBgRldfTE9BREVSYC4gVGhhdCBsb29rcyByaWdodCwgYnV0IGxldCYjMzk7cyBkbyBhIHF1aWNrIGdyZXAgc2VhcmNoIHRvIGNvbmZpcm0uIEkgc2hvdWxkIHNjYW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmb3IgYE1XSUZJRVhgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYml0ZSB1cyBsYXRlci4gSnVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg1NDYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xNj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZT00PW9iai0kKENPTkZJR19MSUJFUlRBU19USElORklSTSlcdCYjNDM7PSBsaWJlcnRhc190Zi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVdJRklFWClcdCYjNDM7PSBtd2lmaWV4L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZS02LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM9NDI9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0Mzptd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDQtXHRcdFx0XHQgIHU4IGJhbmRzLCB1MTYgbWNzX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ4LVx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo0OTpcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM9ODU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODY6bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04Ny1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6ODk6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo5OTp2b2lkIG13aWZpZXhfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDAtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTAyOlx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTAzLVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwNi1cdC8qIEZpbGwgVkhUIGNhcCBpbmZvICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEwNzpcdG13aWZpZXhfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEyOTpcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMzAtXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnJ4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTE6XHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUyLVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU3OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU4Olx0XHRcdCAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE1OS1cdFx0XHQgICAgIHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjE6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2MjpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjMtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjQ6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjU6XHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNjYtXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTc2LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE3NzpcdFx0dmh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzgtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4MS1cdFx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTgyOlx0XHRtZW1jcHkoKHU4ICopdmh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTgzLVx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE4NjpcdFx0bXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFx1MDAyNnZodF9jYXAtXHUwMDNldmh0X2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg3LVx0XHRcdFx0XHQgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk0LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE5NTpcdFx0XHR2aHRfb3AgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTYtXHRcdFx0bWVtc2V0KHZodF9vcCwgMCwgc2l6ZW9mKCp2aHRfb3ApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5OS1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDA6XHRcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTIwMS1cdFx0XHRtZW1jcHkoKHU4ICopdmh0X29wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMjpcdFx0XHRcdHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDMtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfb3Blcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjUzOmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTQtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTU6XHRcdFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjcyLS8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIEJsb2NrQUNLIHNldHVwIGluZm9ybWF0aW9uIGZvciBnaXZlblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNzM6ICogbXdpZmlleF9wcml2YXRlIHN0cnVjdHVyZSBmb3IgMTFhYyBlbmFibGVkIG5ldHdvcmtzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3NTp2b2lkIG13aWZpZXhfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI5NDpib29sIG13aWZpZXhfaXNfYnNzX2luXzExYWNfbW9kZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTY6XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjk3LVx0c3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uICp2aHRfb3Blcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MzExOnU4IG13aWZpZXhfZ2V0X2NlbnRlcl9mcmVxX2luZGV4KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IGJhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTMxMi1cdFx0XHRcdCB1MzIgcHJpX2NoYW4sIHU4IGNoYW5fYncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI1OmludCBtd2lmaWV4X2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MjY6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI4OmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0yOS1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3QgbXdpZmlleF8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMxOnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTMyLVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMjp2b2lkIG13aWZpZXhfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODppbmxpbmUgaW50IG13aWZpZXhfaXNfMTFoX2FjdGl2ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM9MjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjptd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc6XHRcdFx0ICAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyOTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjMwOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzozMTpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2xvY2FsX3B3cl9jb25zdHJhaW50ICpjb25zdHJhaW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTMyLVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjM5Olx0cmFkaW9fdHlwZSA9IG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQwLVx0c2JhbmQgPSBwcml2LVx1MDAzZXdkZXYud2lwaHktXHUwMDNlYmFuZHNbcmFkaW9fdHlwZV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDI6XHRjYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTQzLVx0Y2FwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo0OTpcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTUwLVx0Y29uc3RyYWludC1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DT05TVFJBSU5UKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NTY6XHRpZV9oZWFkZXIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy01Ny1cdGllX2hlYWRlci1cdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy02OS0vKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgMTFoIGV4dGVuc2lvbnMgaW4gdGhlIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NzA6aW50IG13aWZpZXhfMTFoX2FjdGl2YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGJvb2wgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy03MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjc4Olx0cmV0dXJuIG13aWZpZXhfc2VuZF9jbWQocHJpdiwgSG9zdENtZF9DTURfODAyXzExX1NOTVBfTUlCLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVx0XHRcdFx0SG9zdENtZF9BQ1RfR0VOX1NFVCwgRE9UMTFIX0ksIFx1MDAyNmVuYWJsZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTg3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg4OnZvaWQgbXdpZmlleF8xMWhfcHJvY2Vzc19qb2luKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg5Olx0XHRcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTQtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk1Olx0XHRtd2lmaWV4XzExaF9hY3RpdmF0ZShwcml2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ni1cdFx0cHJpdi1cdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTctXHRcdGJzc19kZXNjLVx1MDAzZWNhcF9pbmZvX2JpdG1hcCB8PSBXTEFOX0NBUEFCSUxJVFlfU1BFQ1RSVU1fTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo5ODpcdFx0bXdpZmlleF8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHByaXYsIGJ1ZmZlciwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk5LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMDAtXHRcdC8qIERlYWN0aXZhdGUgMTFoIGZ1bmN0aW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMDE6XHRcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMDItXHRcdHByaXYtXHUwMDNlc3RhdGVfMTFoLmlzXzExaF9hY3RpdmUgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjExMTp2b2lkIG13aWZpZXhfZGZzX2NhY193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMTQtXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE1Olx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE2Olx0XHRcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE3LVx0XHRcdFx0ICAgICBkZnNfY2FjX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjAtXHRpZiAocHJpdi1cdTAwM2V3ZGV2LmxpbmtzWzBdLmNhY19zdGFydGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTIxOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjItXHRcdFx0ICAgIFwmIzM0O0NBQyB0aW1lciBmaW5pc2hlZDsgTm8gcmFkYXIgZGV0ZWN0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTMyOmludCBtd2lmaWV4X2NtZF9pc3N1ZV9jaGFuX3JlcG9ydF9yZXF1ZXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMzLVx0XHRcdFx0XHQgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTEzNi1cdHN0cnVjdCBob3N0X2NtZF9kc19jaGFuX3JwdF9yZXEgKmNyX3JlcSA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuY2hhbl9ycHRfcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjEzNzpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyAqcmFkYXJfcGFyYW1zID0gKHZvaWQgKilkYXRhX2J1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE0OS1cdGlmIChyYWRhcl9wYXJhbXMtXHUwMDNlY2FjX3RpbWVfbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTUwOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTEtXHRcdFx0ICAgIFwmIzM0OzExaDogaXNzdWluZyBERlMgUmFkYXIgY2hlY2sgZm9yIGNoYW5uZWw9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE1My1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTQ6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLCBcJiMzNDtjYW5jZWxsaW5nIENBQ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTU5OmludCBtd2lmaWV4X3N0b3BfcmFkYXJfZGV0ZWN0aW9uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYwLVx0XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2MjpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyByYWRhcl9wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2NDpcdG1lbXNldChcdTAwMjZyYWRhcl9wYXJhbXMsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjUtXHRyYWRhcl9wYXJhbXMuY2hhbmRlZiA9IGNoYW5kZWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNjg6XHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF9DSEFOX1JFUE9SVF9SRVFVRVNULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2OS1cdFx0XHRcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIDAsIFx1MDAyNnJhZGFyX3BhcmFtcywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzU6dm9pZCBtd2lmaWV4X2Fib3J0X2NhYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTc3LVx0aWYgKHByaXYtXHUwMDNld2Rldi5saW5rc1swXS5jYWNfc3RhcnRlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3ODpcdFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc5Olx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTgwLVx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBzdG9wIENBQyBpbiBGV1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTgxOlx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODItXHRcdFx0ICAgIFwmIzM0O0Fib3J0aW5nIGRlbGF5ZWQgd29yayBmb3IgQ0FDLlxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxOTQ6aW50IG13aWZpZXhfMTFoX2hhbmRsZV9jaGFucnB0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk1LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTctXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY2hhbl9ycHRfZXZlbnQgKnJwdF9ldmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxOTg6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19jaGFuX3JwdF9kYXRhICpycHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk5LVx0dTE2IGV2ZW50X2xlbiwgdGx2X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA1LVx0aWYgKGxlMzJfdG9fY3B1KHJwdF9ldmVudC1cdTAwM2VyZXN1bHQpICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjA2Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIwNy1cdFx0XHQgICAgXCYjMzQ7RXJyb3IgaW4gY2hhbm5lbCByZXBvcnQgZXZlbnRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjExOlx0d2hpbGUgKGV2ZW50X2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEyLVx0XHRycHQgPSAodm9pZCAqKVx1MDAyNnJwdF9ldmVudC1cdTAwM2V0bHZidWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxNy1cdFx0XHRpZiAocnB0LVx1MDAzZW1hcC5yYWRhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIxODpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTIxOS1cdFx0XHRcdFx0ICAgIFwmIzM0O1JBREFSIERldGVjdGVkIG9uIGNoYW5uZWwgJWQhXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMzgtLyogSGFuZGxlciBmb3IgcmFkYXIgZGV0ZWN0ZWQgZXZlbnQgZnJvbSBGVy4qL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjIzOTppbnQgbXdpZmlleF8xMWhfaGFuZGxlX3JhZGFyX2RldGVjdGVkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQwLVx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0MjpcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX2RldF9ldmVudCAqcmRyX2V2ZW50O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI0NjpcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI0Ny1cdFx0ICAgIFwmIzM0O3JhZGFyIGRldGVjdGVkOyBpbmRpY2F0aW5nIGtlcm5lbFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ4Olx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ5Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1MC1cdFx0XHQgICAgXCYjMzQ7RmFpbGVkIHRvIHN0b3AgQ0FDIGluIEZXXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjUyLVx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjUzOlx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csIFwmIzM0O3JlZ2RvbWFpbjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU0LVx0XHQgICAgcmRyX2V2ZW50LVx1MDAzZXJlZ19kb21haW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI1NTpcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLCBcJiMzNDtyYWRhciBkZXRlY3Rpb24gdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU2LVx0XHQgICAgcmRyX2V2ZW50LVx1MDAzZWRldF90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI2Njp2b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjg6XHRzdHJ1Y3QgbXdpZmlleF91YXBfYnNzX3BhcmFtICpic3NfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2OS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzA6XHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNzE6XHRcdFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzItXHRcdFx0XHQgICAgIGRmc19jaGFuX3N3X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzUtXHRpZiAoIWJzc19jZmctXHUwMDNlYmVhY29uX3BlcmlvZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3NjpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzctXHRcdFx0ICAgIFwmIzM0O2NoYW5uZWwgc3dpdGNoOiBBUCBhbHJlYWR5IHN0b3BwZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgxOlx0bXdpZmlleF91YXBfc2V0X2NoYW5uZWwocHJpdiwgYnNzX2NmZywgcHJpdi1cdTAwM2VkZnNfY2hhbmRlZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MzpcdGlmIChtd2lmaWV4X2NvbmZpZ19zdGFydF91YXAocHJpdiwgYnNzX2NmZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyODQ6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjg1LVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gc3RhcnQgQVAgYWZ0ZXIgY2hhbm5lbCBzd2l0Y2hcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg5Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkwLVx0XHQgICAgXCYjMzQ7aW5kaWNhdGluZyBjaGFubmVsIHN3aXRjaCBjb21wbGV0aW9uIHRvIGtlcm5lbFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI1OmludCBtd2lmaWV4X2ZpbGxfY2FwX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggcmFkaW9fdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNi1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyLVx0aWYgKFdBUk5fT05fT05DRSghc2JhbmQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVJST1IsIFwmIzM0O0ludmFsaWQgcmFkaW8gdHlwZSFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNjktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzA6c3RhdGljIHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcxOm13aWZpZXhfZ2V0X2JhX3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjcyOlx0XHQgICAgICBlbnVtIG13aWZpZXhfYmFfc3RhdHVzIGJhX3N0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy03My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzQ6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF9iYV90c3JfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo5NjppbnQgbXdpZmlleF9yZXRfMTFuX2RlbGJhKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTctXHRcdFx0ICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTktXHRpbnQgdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwMDpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDEtXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2RlbGJhICpkZWxfYmEgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5kZWxfYmE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEwNS1cdGlmIChkZWxfYmEtXHUwMDNlZGVsX3Jlc3VsdCA9PSBCQV9SRVNVTFRfU1VDQ0VTUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEwNjpcdFx0bXdpZmlleF9kZWxfYmFfdGJsKHByaXYsIHRpZCwgZGVsX2JhLVx1MDAzZXBlZXJfbWFjX2FkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA3LVx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTEwOlx0XHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTExLVx0XHRpZiAodHhfYmFfdGJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjExMjpcdFx0XHRtd2lmaWV4X3NlbmRfYWRkYmEocHJpdiwgdHhfYmFfdGJsLVx1MDAzZXRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTMtXHRcdFx0XHRcdCAgIHR4X2JhX3RibC1cdTAwM2VyYSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjE6XHRcdG13aWZpZXhfY3JlYXRlX2JhX3RibChwcml2LCBkZWxfYmEtXHUwMDNlcGVlcl9tYWNfYWRkciwgdGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMi1cdFx0XHRcdCAgICAgIEJBX1NFVFVQX0lOUFJPR1JFU1MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjQ6XHRcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI2LVx0XHRpZiAodHhfYmFfdGJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjEyNzpcdFx0XHRtd2lmaWV4X2RlbF9iYV90YmwocHJpdiwgdHhfYmFfdGJsLVx1MDAzZXRpZCwgdHhfYmFfdGJsLVx1MDAzZXJhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyOC1cdFx0XHRcdFx0ICAgVFlQRV9ERUxCQV9TRU5ULCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0MjppbnQgbXdpZmlleF9yZXRfMTFuX2FkZGJhX3JlcShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0My1cdFx0XHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQ2LVx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9hZGRiYV9yc3AgKmFkZF9iYV9yc3AgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5hZGRfYmFfcnNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE0NzpcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNDg6XHRzdHJ1Y3QgbXdpZmlleF9yYV9saXN0X3RibCAqcmFfbGlzdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDktXHR1MTYgYmxvY2tfYWNrX3BhcmFtX3NldCA9IGxlMTZfdG9fY3B1KGFkZF9iYV9yc3AtXHUwMDNlYmxvY2tfYWNrX3BhcmFtX3NldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTc6XHR0aWRfZG93biA9IG13aWZpZXhfd21tX2Rvd25ncmFkZV90aWQocHJpdiwgdGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNTg6XHRyYV9saXN0ID0gbXdpZmlleF93bW1fZ2V0X3JhbGlzdF9ub2RlKHByaXYsIHRpZF9kb3duLCBhZGRfYmFfcnNwLVx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE1OS1cdFx0cGVlcl9tYWNfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2NC1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE2NTpcdFx0bXdpZmlleF9kZWxfYmFfdGJsKHByaXYsIHRpZCwgYWRkX2JhX3JzcC1cdTAwM2VwZWVyX21hY19hZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2Ni1cdFx0XHRcdCAgIFRZUEVfREVMQkFfU0VOVCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzM6XHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV90YmwocHJpdiwgdGlkLCBhZGRfYmFfcnNwLVx1MDAzZXBlZXJfbWFjX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3NC1cdGlmICh0eF9iYV90YmwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzU6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgRVZFTlQsIFwmIzM0O2luZm86IEJBIHN0cmVhbSBjb21wbGV0ZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTc2LVx0XHR0eF9iYV90YmwtXHUwMDNlYmFfc3RhdHVzID0gQkFfU0VUVVBfQ09NUExFVEU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTg4Olx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtCQSBzdHJlYW0gbm90IGNyZWF0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE4OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIwMjppbnQgbXdpZmlleF9jbWRfcmVjZmdfdHhfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjAzLVx0XHRcdCAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgaW50IGNtZF9hY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNC1cdGNhc2UgSG9zdENtZF9BQ1RfR0VOX1NFVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMTU6XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNi1cdFx0XHQgICAgXCYjMzQ7Y21kOiBzZXQgdHhfYnVmPSVkXFxuXCYjMzQ7LCAqYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjM1OmludCBtd2lmaWV4X2NtZF9hbXNkdV9hZ2dyX2N0cmwoc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzYtXHRcdFx0XHRpbnQgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyMzc6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF9kc18xMW5fYW1zZHVfYWdncl9jdHJsICphYV9jdHJsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI2Ny0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNjg6aW50IG13aWZpZXhfY21kXzExbl9jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yNjktXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjcwOlx0XHRcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl90eF9jZmcgKnR4Y2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jPTI5OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyOTk6bXdpZmlleF9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDA6XHRcdFx0ICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzAxLVx0XHRcdCAgIHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzAzOlx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDQ6XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8gKmh0X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA1Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqY2hhbl9saXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwNjpcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqYnNzX2NvXzIwNDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA3Olx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwICpleHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwOC1cdGludCByZXRfbGVuID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMxNjpcdHJhZGlvX3R5cGUgPSBtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTctXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzE5LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjA6XHRcdGh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMTpcdFx0bWVtc2V0KGh0X2NhcCwgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzIyLVx0XHRodF9jYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9IVF9DQVBBQklMSVRZKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzI0LVx0XHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI1Olx0XHRtZW1jcHkoKHU4ICopIGh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjYtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI5Olx0XHRtd2lmaWV4X2ZpbGxfY2FwX2luZm8ocHJpdiwgcmFkaW9fdHlwZSwgXHUwMDI2aHRfY2FwLVx1MDAzZWh0X2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMwLVx0XHQvKiBVcGRhdGUgSFQ0MCBjYXBhYmlsaXR5IGZyb20gY3VycmVudCBjaGFubmVsIGluZm9ybWF0aW9uICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMy1cdFx0XHR1OCByYWRpbyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM0Olx0XHRcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMzUtXHRcdFx0aW50IGZyZXEgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzYzOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM2NDpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0Y2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2OC1cdFx0aWYgKHByaXYtXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjk6XHRcdFx0aHRfaW5mbyA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8gKikgKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzAtXHRcdFx0bWVtc2V0KGh0X2luZm8sIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzcxOlx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzcyLVx0XHRcdGh0X2luZm8tXHUwMDNlaGVhZGVyLnR5cGUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNzgtXHRcdFx0bWVtY3B5KCh1OCAqKSBodF9pbmZvICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzc5Olx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODAtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl9odF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzg5Olx0XHRcdCpidWZmZXIgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5MDpcdFx0XHRyZXRfbGVuICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzkzLVx0XHRjaGFuX2xpc3QgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5NDpcdFx0XHQoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5NS1cdFx0bWVtc2V0KGNoYW5fbGlzdCwgMCwgc3RydWN0X3NpemUoY2hhbl9saXN0LCBjaGFuX3NjYW5fcGFyYW0sIDEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk3LVx0XHRjaGFuX2xpc3QtXHUwMDNlaGVhZGVyLmxlbiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzk4Olx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgbXdpZmlleF9jaGFuX3NjYW5fcGFyYW1fc2V0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk5LVx0XHRjaGFuX2xpc3QtXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLmNoYW5fbnVtYmVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDAxLVx0XHRjaGFuX2xpc3QtXHUwMDNlY2hhbl9zY2FuX3BhcmFtWzBdLnJhZGlvX3R5cGUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQwMjpcdFx0XHRtd2lmaWV4X2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxNi1cdGlmIChic3NfZGVzYy1cdTAwM2ViY25fYnNzX2NvXzIwNDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTc6XHRcdGJzc19jb18yMDQwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbyAqKSAqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxOC1cdFx0bWVtc2V0KGJzc19jb18yMDQwLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxOTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjAtXHRcdGJzc19jb18yMDQwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfQlNTX0NPRVhfMjA0MCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNC1cdFx0bWVtY3B5KCh1OCAqKSBic3NfY29fMjA0MCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQyNTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyNi1cdFx0ICAgICAgIGJzc19kZXNjLVx1MDAzZWJjbl9ic3NfY29fMjA0MCAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDMwOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MzE6XHRcdHJldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM1LVx0XHRoZHIgPSAodm9pZCAqKWJzc19kZXNjLVx1MDAzZWJjbl9leHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNjpcdFx0ZXh0X2NhcCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19leHRjYXAgKikgKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0Mzc6XHRcdG1lbXNldChleHRfY2FwLCAwLCBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDM4LVx0XHRleHRfY2FwLVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfRVhUX0NBUEFCSUxJVFkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDUxOlx0XHQqYnVmZmVyICYjNDM7PSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSAmIzQzOyBoZHItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ1MjpcdFx0cmV0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkgJiM0MzsgaGRyLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2MS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjI6c3RhdGljIGludCBtd2lmaWV4X2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjM6XHRcdFx0XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF90YmxfcHRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDY1Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0ODE6dm9pZCBtd2lmaWV4XzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ4MjpcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90YmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDgzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODQtXHRpZiAoIXR4X2JhX3Rzcl90YmwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg1Olx0ICAgIG13aWZpZXhfaXNfdHhfYmFfc3RyZWFtX3B0cl92YWxpZChwcml2LCB0eF9iYV90c3JfdGJsKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODYtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg4Olx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4OS1cdFx0ICAgIFwmIzM0O2luZm86IHR4X2JhX3Rzcl90YmwgJXBcXG5cJiMzNDssIHR4X2JhX3Rzcl90YmwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00OTgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDk5OnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX2FsbF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MDEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo1MDI6XHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICpkZWxfdGJsX3B0ciwgKnRtcF9ub2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA2LVx0XHRcdFx0IFx1MDAyNnByaXYtXHUwMDNldHhfYmFfc3RyZWFtX3RibF9wdHIsIGxpc3QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTA3Olx0XHRtd2lmaWV4XzExbl9kZWxldGVfdHhfYmFfc3RyZWFtX3RibF9lbnRyeShwcml2LCBkZWxfdGJsX3B0cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MjAtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTIxOnN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjUyMjptd2lmaWV4X2dldF9iYV90Ymwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgaW50IHRpZCwgdTggKnJhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTI0Olx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTU0MS0gKi9cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzkxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gSSBrbm93IGl0JiMzOTtzIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGxgLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgd2hhdCBJJiMzOTttIGFmdGVyLiBNeSBwbGFuIGlzIHRvIGp1bXAgZGlyZWN0bHkgaW50byB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3RvcnkuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCBhbGwgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZXhhY3QgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGdldCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWFydmVsbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01BUlZFTExcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvS2NvbmZpZ1wmIzM0O1xuICAxNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wmIzM0O1xuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNV0w4S1xuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsIFRPUERPRyA4MDIuMTEgd2lyZWxlc3MgY2FyZHMuXG4gIDI0Olx0XG4gIDI1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMjY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbXdsOGsuICBJZiB1bnN1cmUsIHNheSBOLlxuICAyNzpcdFxuICAyODpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU0NgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLiBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGFsbCBpdHMgY2FsbGVycyBhbmQgaWRlbnRpZnkgYW55IG90aGVyIHJlbGV2YW50IGVudHJ5IHBvaW50cyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBxdWlja2x5IHJldmVhbCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIG5lZWQgZm9yIHRoaXMgcGFydGljdWxhciBzdGF0dXMgcmV0cmlldmFsLgoKUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTM1MC0xMzcwLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgY29uY3JldGUgZXhhbXBsZXMgb2Ygd2hlcmUgYW5kIGhvdyB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCwgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggaW4gdGhvc2Ugc3BlY2lmaWMgc2NlbmFyaW9zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgdG8gY29udGFpbiB0aGUgY3JpdGljYWwgaW5mb3JtYXRpb24gSSBuZWVkLiBJJiMzOTttIGludGVyZXN0ZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGFzIG11Y2ggYXMgdGhlIGRpcmVjdCBjYWxscy4gVGhpcyBsZXZlbCBvZiBkZXRhaWwgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiBpdHMgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM1MDpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBDTUQsIFwmIzM0O2NtZDogY3Vycl90eF9idWZfc2l6ZT0lZFxcblwmIzM0OyxcbjEzNTE6XHRcdFx0XHQgICAgYWRhcHRlci1cdTAwM2VjdXJyX3R4X2J1Zl9zaXplKTtcbjEzNTI6XHRcbjEzNTM6XHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaWZfb3BzLnVwZGF0ZV9tcF9lbmRfcG9ydClcbjEzNTQ6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWlmX29wcy51cGRhdGVfbXBfZW5kX3BvcnQoYWRhcHRlcixcbjEzNTU6XHRcdFx0XHRcdGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcGFyYW1zLnR4X2J1Zi5tcF9lbmRfcG9ydCkpO1xuMTM1NjpcdFx0XHRicmVhaztcbjEzNTc6XHRcdGNhc2UgSG9zdENtZF9DTURfQU1TRFVfQUdHUl9DVFJMOlxuMTM1ODpcdFx0XHRicmVhaztcbjEzNTk6XHRcdGNhc2UgSG9zdENtZF9DTURfV01NX0dFVF9TVEFUVVM6XG4xMzYwOlx0XHRcdHJldCA9IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHByaXYsIHJlc3ApO1xuMTM2MTpcdFx0XHRicmVhaztcbjEzNjI6XHRcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0lCU1NfQ09BTEVTQ0lOR19TVEFUVVM6XG4xMzYzOlx0XHRcdHJldCA9IG13aWZpZXhfcmV0X2lic3NfY29hbGVzY2luZ19zdGF0dXMocHJpdiwgcmVzcCk7XG4xMzY0Olx0XHRcdGJyZWFrO1xuMTM2NTpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9NRU1fQUNDRVNTOlxuMTM2NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3JldF9tZW1fYWNjZXNzKHByaXYsIHJlc3AsIGRhdGFfYnVmKTtcbjEzNjc6XHRcdFx0YnJlYWs7XG4xMzY4Olx0XHRjYXNlIEhvc3RDbWRfQ01EX01BQ19SRUdfQUNDRVNTOlxuMTM2OTpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9CQlBfUkVHX0FDQ0VTUzpcbjEzNzA6XHRcdGNhc2UgSG9zdENtZF9DTURfUkZfUkVHX0FDQ0VTUzpcbjEzNzE6XHRcdGNhc2UgSG9zdENtZF9DTURfUE1JQ19SRUdfQUNDRVNTOlxuMTM3MjpcdFx0Y2FzZSBIb3N0Q21kX0NNRF9DQVVfUkVHX0FDQ0VTUzpcbjEzNzM6XHRcdGNhc2UgSG9zdENtZF9DTURfODAyXzExX0VFUFJPTV9BQ0NFU1M6XG4xMzc0Olx0XHRcdHJldCA9IG13aWZpZXhfcmV0X3JlZ19hY2Nlc3MoY21kcmVzcF9ubywgcmVzcCwgZGF0YV9idWYpO1xuMTM3NTpcdFx0XHRicmVhaztcbjEzNzY6XHRcdGNhc2UgSG9zdENtZF9DTURfU0VUX0JTU19NT0RFOlxuMTM3NzpcdFx0XHRicmVhaztcbjEzNzg6XHRcdGNhc2UgSG9zdENtZF9DTURfMTFOX0NGRzpcbjEzNzk6XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDY3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkmIzM5O3ZlIGdvdCBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGFuZCBJIHNlZSB0aGF0IGl0JiMzOTtzIGNhbGxlZCBieSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYC4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgaGllcmFyY2h5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcyBhY3R1YWxseSBpbnZva2VkLiBTbywgSSBuZWVkIHRvIGdvIGh1bnQgdGhhdCBmdW5jdGlvbiBkb3duIHdpdGggYSBxdWljayBzZWFyY2guIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBidWlsZCB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTgwMz1pbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODkxLVx0XHQvKiBoYW5kbGUgcmVzcG9uc2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo4OTI6XHRcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChwcml2LCBjbWRyZXNwX25vLCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04OTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTM0PWludCBtd2lmaWV4X3VhcF9wcmVwYXJlX2NtZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1aW50MTZfdCBjbWRfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM2LVx0XHRcdCAgICB2b2lkICpkYXRhX2J1Ziwgdm9pZCAqY21kX2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMzc6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosIHUxNiBjbWRyZXNwX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM4LVx0XHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTExOTA9c3RhdGljIGludCBtd2lmaWV4X3JldF9nZXRfY2hhbl9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIxMS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMTI6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTMtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMTIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBDb21tYW5kIFJlc3BvbnNlIEhhbmRsaW5nIGluIG13aWZpZXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG13aWZpZXhgIGRyaXZlciBwcm9jZXNzZXMgY29tbWFuZCByZXNwb25zZXMuIEkga25vdyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBpdCYjMzk7cyB0aGUgb25lIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgdGhvc2UgcmVzcG9uc2VzIHRoYXQgYXJlIGNvbWluZyBpbiBmcm9tIHRoZSBkZXZpY2UuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRob3NlIHJlc3BvbnNlcyAqcmVjZWl2ZWQqIGluIHRoZSBmaXJzdCBwbGFjZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGhhbmRsZWQgb3ZlciBVU0IsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gZXhwbG9yZSB0aGUgVVNCLXNwZWNpZmljIHBhcnRzIG9mIHRoZSBkcml2ZXIuCgpUaGVyZWZvcmUsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHJlY2VpdmUgZnVuY3Rpb25zLiBUaGUgY29tbWVudHMgcG9pbnQgdG93YXJkIGBtd2lmaWV4X3VzYl9yZWN2YCBhbmQgYG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlYCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHdoZXJlIHRoZXNlIGFyZSBpbnZva2VkIGZyb20uIFNvLCBJIG5lZWQgdG8gb3BlbiB0aGUgc291cmNlIGNvZGUgZm9yIGBtd2lmaWV4X3VzYi5jYCAob3IgcG90ZW50aWFsbHkgYHVzYi5jYCB3aXRoaW4gdGhlIGBtd2lmaWV4YCBkaXJlY3RvcnkpIGFuZCBzdGFydCB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuIFRoYXQgd2lsbCBiZSB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTc0MT1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTgwMi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo4MDM6aW50IG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9MTA4NT1td2lmaWV4X2NhbmNlbF9wZW5kaW5nX2lvY3RsKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTMtXHRcdC8qIHNldHRpbmcgY3Vycl9jbWQgdG8gTlVMTCBpcyBxdWl0ZSBkYW5nZXJvdXMsIGJlY2F1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzoxMDk0Olx0XHQgKiBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCBjaGVja3MgY3Vycl9jbWQgdG8gYmUgIT0gTlVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTUtXHRcdCAqIGF0IHRoZSBiZWdpbm5pbmcgdGhlbiByZWxpZXMgb24gaXQgYW5kIGRlcmVmZXJlbmNlc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjQ4PWludCBtd2lmaWV4X21haW5fcHJvY2VzcyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU2LVx0XHRcdGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzU3Olx0XHRcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDA9aW50IG13aWZpZXhfZXhlY19uZXh0X2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMTppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDItdm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0zMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzI6bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3Ioc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTMzLVx0XHRcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjIwLVx0aWYgKHJlc3AtXHUwMDNlcmVzdWx0ICE9IEhvc3RDbWRfUkVTVUxUX09LKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjIxOlx0XHRtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcF9lcnJvcihwcml2LCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjItXHRcdHJldHVybiAtMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AuIFRoaXMgZnVuY3Rpb24gZ2V0cyBleGVjdXRlZCB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgV01NX0dFVF9TVEFUVVMgcmVzcG9uc2UgZnJvbSB0aGUgZmlybXdhcmUuIEJlY2F1c2UgdGhpcyBkcml2ZXIsIGBtd2lmaWV4YCwgdXNlcyBhIFVTQiBidXMgaW50ZXJmYWNlIChgTVdJRklFWF9VU0JgKSwgaXQmIzM5O3MgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBJJiMzOTttIHVzaW5nLCB0aGFua3MgdG8gVVNCIGRldmljZSBlbXVsYXRpb24gdXNpbmcgdG9vbHMgbGlrZSByYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6ZXIuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz8KCkxldCYjMzk7cyBicmVhayBpdCBkb3duIGJhc2VkIG9uIHRoZSBlc3RhYmxpc2hlZCBjcml0ZXJpYS4gU2VjdGlvbiAzIHNheXM6CgoqICAgKipSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOioqIFNwZWNpZmljYWxseSwgZHJpdmVycyByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIHdoaWNoIHRoaXMgKmFic29sdXRlbHkqIGlzLCBnaXZlbiBpdHMgVVNCIGludGVyZmFjZS4gQ2hlY2suCiogICAqKlJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoqKiBXZSBuZWVkIHRvIGxvb2sgYXQgYW55IGJvdW5kcyBjaGVja3Mgb3IgZGVmZW5zaXZlIHZhbGlkYXRpb24sIGVzcGVjaWFsbHkgZm9yIGRldmljZS1zdXBwbGllZCBUTFZzLiBUaGlzIGZ1bmN0aW9uIGRlZmluaXRlbHkgaGFuZGxlcyBkYXRhIGZyb20gdGhlIGZpcm13YXJlLCBzbyB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSB2YWxpZGF0aW9uIGhhcHBlbmluZyBoZXJlLiBDaGVjay4KClRoZXJlZm9yZSwgV29ydGhGdXp6aW5nID0gVHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldHMgYW5kIHRoZWlyIGNvbnRleHQuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AsIGlzIHRoZSBwcmltYXJ5IGZvY3VzLiBBZGRpdGlvbmFsbHksIGl0cyBjYWxsZXIsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLCBpcyBhbHNvIHJlbGV2YW50LiBXZSBrbm93IHRoYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBpcyBhIG5vbi1zdGF0aWMgQyBmdW5jdGlvbiByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgc3ltYm9sIHRoYXQgY2FuIGJlIHJlYWNoZWQsIGFuZCB5ZXMsIGl0IGlzIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBhczogYGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClgLiBFeGNlbGxlbnQuIEFuZCBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcywgYXMgZXhwZWN0ZWQsIGluIGBzdGFfY21kcmVzcC5jYC4KCk5leHQsIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGtlcm5lbCBtb2R1bGVzIGVuYWJsZWQgdG8gbWFrZSB0aGlzIGZ1bmN0aW9uIHJlYWNoYWJsZToKCiogICBgTVdJRklFWGAKKiAgIGBNV0lGSUVYX1VTQmAKKiAgIGBDRkc4MDIxMWAKKiAgIGBVU0JgCiogICBgV0xBTl9WRU5ET1JfTUFSVkVMTGAKCkxldCYjMzk7cyB2ZXJpZnkgYFdMQU5fVkVORE9SX01BUlZFTExgJiMzOTtzIGRlcGVuZGVuY2llczogSSBjYW4gc2VlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgIHRoYXQgYFdMQU5fVkVORE9SX01BUlZFTExgIGluY2x1ZGVzIGBtd2lmaWV4L0tjb25maWdgLCBhbmQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2A6IGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIGFuZCBgTVdJRklFWF9VU0JgIGRlcGVuZHMgb24gYE1XSUZJRVggJmFtcDsmYW1wOyBVU0JgLiBBbHJpZ2h0LCB0aGF0IGxvb2tzIHNvdW5kLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfSU5URVJTSUwpICYjNDM7PSBpbnRlcnNpbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xOT1jb25maWcgTVdMOEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6Mjg6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgV2lyZWxlc3MgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBNYXJ2ZWxsIFdMQU4gZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIHdpcmVsZXNzIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgaG91c2VkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNlY3Rpb24gcmVsYXRlZCB0byBgV0xBTl9WRU5ET1JfTUFSVkVMTGAuIFRoYXQgdmFyaWFibGUgaXMgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIHNwZWNpZmljIE1hcnZlbGwgZHJpdmVyLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgTWFydmVsbCBkcml2ZXIgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhvcGVmdWxseSwgc29tZSBoZWxwZnVsIGNvbW1lbnRzIHRvIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfSU5URVJTSUwpICYjNDM7PSBpbnRlcnNpbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xOT1jb25maWcgTVdMOEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6Mjg6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTY0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIFdMQU4gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIFdMQU4uIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgbmV0d29yayBkZXZpY2VzIGFyZSBkZWZpbmVkLCBzbyBpdCYjMzk7cyBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIFdMQU4gaXRzZWxmLCBhcyBhIGZvdW5kYXRpb25hbCBjb25jZXB0LCBoYXMgYW55IGhhcmQgZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIFRoaXMgc2hvdWxkIHRlbGwgbWUgd2hhdCBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLiptYXJ2ZWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjY9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6Mjc6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yOC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE2OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgV2lyZWxlc3MgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBsaW5lcyAxIHRocm91Z2ggMzUsIHdoaWNoIHVzdWFsbHkgY29udGFpbnMgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBlbnRpcmUgd2lyZWxlc3Mgc3Vic3lzdGVtIG9yIG1ham9yIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIHRoaW5ncyBsaWtlOgoKKiAgIFRoZSBtYWluICYjMzQ7V2lyZWxlc3MgTmV0d29ya2luZyYjMzQ7IGVudHJ5IGl0c2VsZiwgdGhlIGdhdGV3YXkgdG8gZXZlcnl0aGluZyBlbHNlIHdpcmVsZXNzLgoqICAgUG90ZW50aWFsbHksIHdoZXRoZXIgY2VydGFpbiBtYWpvciB3aXJlbGVzcyBwcm90b2NvbHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBjb25maWd1cmFibGUuCiogICBPcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCB3aXJlbGVzcyBzdGFja3MsIGlmIHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZXhpc3RzIGluIHRoaXMga2VybmVsIHZlcnNpb24uCiogICBEZWZpbmVzIGZvciBicm9hZCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5LCBsaWtlIHN1cHBvcnQgZm9yIGNlcnRhaW4gZnJlcXVlbmN5IGJhbmRzIG9yIGRldmljZSB0eXBlcy4KKiAgIEJhc2ljIGhlbHAgdGV4dCBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gYW5kIG1heWJlIGEgZmV3IGtleSBjb25maWd1cmF0aW9ucy4KCkdpdmVuIHRoZSBsaW5lIHJhbmdlLCBJIGV4cGVjdCB0aGlzIHNlY3Rpb24gdG8gbGF5IHRoZSBncm91bmR3b3JrIGFuZCBzZXQgdGhlIG92ZXJhbGwgZGlyZWN0aW9uIGZvciB0aGUgcmVzdCBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXNpZ25lcnMgcHJpb3JpdGl6ZWQgYXMgaW1wb3J0YW50IHRvIGV4cG9zZSB0byBlbmQgdXNlcnMgYW5kIGRldmVsb3BlcnMgYXQgdGhlIGluaXRpYWwgbGV2ZWwuIEkmIzM5O2xsIG5lZWQgdG8gYXNzZXNzIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGJyYW5jaGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgV0xBTlxuICAgNzpcdFx0Ym9vbCBcJiMzNDtXaXJlbGVzcyBMQU5cJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgIDk6XHRcdGRlcGVuZHMgb24gTkVUXG4gIDEwOlx0XHRzZWxlY3QgV0lSRUxFU1NcbiAgMTE6XHRcdGRlZmF1bHQgeVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcbiAgMTQ6XHRcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxuICAxNTpcdFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxuICAxNjpcdFxuICAxNzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzXG4gIDE4Olx0XG4gIDE5Olx0aWYgV0xBTlxuICAyMDpcdFxuICAyMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvS2NvbmZpZ1wmIzM0O1xuICAyMjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wmIzM0O1xuICAyMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXCYjMzQ7XG4gIDI0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL0tjb25maWdcJiMzNDtcbiAgMjU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1wmIzM0O1xuICAyNjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXCYjMzQ7XG4gIDI3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuICAyODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCYjMzQ7XG4gIDI5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG4gIDMwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wmIzM0O1xuICAzMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1wmIzM0O1xuICAzMjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXCYjMzQ7XG4gIDMzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9LY29uZmlnXCYjMzQ7XG4gIDM0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1wmIzM0O1xuICAzNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDgzMQoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmaW5kaW5nLiBFc3NlbnRpYWxseSwgdGhlcmUmIzM5O3MgYSBib3VuZHMgY2hlY2sgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgIGZ1bmN0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGV5JiMzOTt2ZSBpZGVudGlmaWVkIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy0mZ3Q7cXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCwgbWVhbmluZyBpdCBwcmV2ZW50cyBvdXQtb2YtYm91bmRzIGFycmF5IGluZGV4aW5nIGluIGBwcml2LSZndDt3bW0uYWNfc3RhdHVzYCwgd2hpY2ggSSBsaWtlIHRvIHNlZS4KCk5vdywgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgYE1XSUZJRVhfVVNCYCAoVVNCIGdhZGdldC92SENJIGVtdWxhdGlvbikgaXMga2V5LiBUaGF0IG1lYW5zIHdlIGNhbiBzZW5kIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2VzLCBtYWtpbmcgdGhpcyBmdXp6YWJsZS4gVGhhdCBhbHNvIG1ha2VzIHRoaXMgbXVjaCBtb3JlIGV4Y2l0aW5nLgoKVG8gYmUgY2xlYXIgb24gd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzLCBoZXJlIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIGZvY3VzIG9uLgoKVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuCgpGaW5hbGx5LCBiYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGFsbCB0aGVyZSwgc28gSSBhbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXHUwMDNld21tLmFjX3N0YXR1cy4gVGhlIG13aWZpZXggZHJpdmVyIHN1cHBvcnRzIFVTQi1iYXNlZCBkZXZpY2VzIChDT05GSUdfTVdJRklFWF9VU0IpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jCmluZGV4IDg0MTUwNWU4M2M3ZmQuLmZlYmVhNjg0ODdlODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMKQEAgLTk0Myw2ICYjNDM7OTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsCiAJCQkJICAgIHRsdl93bW1fcXN0YXR1cy0mZ3Q7Zmxvd19yZXF1aXJlZCwKIAkJCQkgICAgdGx2X3dtbV9xc3RhdHVzLSZndDtkaXNhYmxlZCk7CiAKJiM0MzsJCQlpZiAodGx2X3dtbV9xc3RhdHVzLSZndDtxdWV1ZV9pbmRleCAmZ3Q7PSBJRUVFODAyMTFfTlVNX0FDUykKJiM0MzsJCQkJYnJlYWs7CiAJCQlhY19zdGF0dXMgPSAmYW1wO3ByaXYtJmd0O3dtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLSZndDsKIAkJCQkJCQkgcXVldWVfaW5kZXhdOwogCQkJYWNfc3RhdHVzLSZndDtkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy0mZ3Q7ZGlzYWJsZWQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTUwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZTogV01NIENvbnRleHQqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgYW5hbHl6aW5nIHRoaXMgcGF0Y2gsIGJ1dCBmaXJzdCwgSSBuZWVkIGEgZ29vZCBwb2ludCBvZiByZWZlcmVuY2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIGFyb3VuZCBsaW5lIDk0My4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgV01NIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSwgc28gaXQmIzM5O3MgYSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlLCBhbmQgdXNpbmcgdGhhdCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgc291cmNlIGNvZGUgYnJvd3NlciBvciBkZWJ1Z2dlciB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgd2F5IEkgY2FuIHNlZSBleGFjdGx5IGhvdyB0aGUgc3Vycm91bmRpbmcgY29kZSBpbnRlcmFjdHMgd2l0aCB0aGUgY2hhbmdlZCBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTIwOlx0XHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xuIDkyMTpcdFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xuIDkyMjpcdFxuIDkyMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuIDkyNDpcdFx0XHQgICAgXCYjMzQ7aW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcblwmIzM0OyxcbiA5MjU6XHRcdFx0ICAgIHJlc3BfbGVuKTtcbiA5MjY6XHRcbiA5Mjc6XHRcdHdoaWxlICgocmVzcF9sZW4gXHUwMDNlPSBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKSBcdTAwMjZcdTAwMjYgdmFsaWQpIHtcbiA5Mjg6XHRcdFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XG4gOTI5Olx0XHRcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci5sZW4pO1xuIDkzMDpcdFxuIDkzMTpcdFx0XHRpZiAocmVzcF9sZW4gXHUwMDNjIHRsdl9sZW4gJiM0Mzsgc2l6ZW9mKHRsdl9oZHItXHUwMDNlaGVhZGVyKSlcbiA5MzI6XHRcdFx0XHRicmVhaztcbiA5MzM6XHRcbiA5MzQ6XHRcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci50eXBlKSkge1xuIDkzNTpcdFx0XHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XG4gOTM2Olx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzID1cbiA5Mzc6XHRcdFx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXG4gOTM4Olx0XHRcdFx0XHR0bHZfaGRyO1xuIDkzOTpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuIDk0MDpcdFx0XHRcdFx0ICAgIFwmIzM0O2luZm86IENNRF9SRVNQOiBXTU1fR0VUX1NUQVRVUzpcXHRcJiMzNDtcbiA5NDE6XHRcdFx0XHRcdCAgICBcJiMzNDtRU1RBVFVTIFRMVjogJWQsICVkLCAlZFxcblwmIzM0OyxcbiA5NDI6XHRcdFx0XHRcdCAgICB0bHZfd21tX3FzdGF0dXMtXHUwMDNlcXVldWVfaW5kZXgsXG4gOTQzOlx0XHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gOTQ0Olx0XHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiA5NDU6XHRcbiA5NDY6XHRcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4gOTQ3Olx0XHRcdFx0XHRicmVhaztcbiA5NDg6XHRcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIDk0OTpcdFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiA5NTA6XHRcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4gOTUxOlx0XHRcdFx0YWNfc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQgPVxuIDk1MjpcdFx0XHRcdFx0XHRcdHRsdl93bW1fcXN0YXR1cy1cdTAwM2VmbG93X3JlcXVpcmVkO1xuIDk1MzpcdFx0XHRcdGFjX3N0YXR1cy1cdTAwM2VmbG93X2NyZWF0ZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZmxvd19jcmVhdGVkO1xuIDk1NDpcdFx0XHRcdGJyZWFrO1xuIDk1NTpcdFxuIDk1NjpcdFx0XHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcbiA5NTc6XHRcdFx0XHQvKlxuIDk1ODpcdFx0XHRcdCAqIFBvaW50IHRoZSByZWd1bGFyIElFRUUgSUUgMiBieXRlcyBpbnRvIHRoZSBNYXJ2ZWxsIElFXG4gOTU5Olx0XHRcdFx0ICogICBhbmQgc2V0dXAgdGhlIElFRUUgSUUgdHlwZSBhbmQgbGVuZ3RoIGJ5dGUgZmllbGRzXG4gOTYwOlx0XHRcdFx0ICovXG4gOTYxOlx0XG4gOTYyOlx0XHRcdFx0d21tX3BhcmFtX2llID1cbiA5NjM6XHRcdFx0XHRcdChzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICopIChjdXJyICYjNDM7XG4gOTY0Olx0XHRcdFx0XHRcdFx0XHRcdCAgICAyKTtcbiA5NjU6XHRcdFx0XHR3bW1fcGFyYW1faWUtXHUwMDNldmVuZF9oZHIubGVuID0gKHU4KSB0bHZfbGVuO1xuIDk2NjpcdFx0XHRcdHdtbV9wYXJhbV9pZS1cdTAwM2V2ZW5kX2hkci5lbGVtZW50X2lkID1cbiA5Njc6XHRcdFx0XHRcdFx0XHRXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM7XG4gOTY4Olx0XG4gOTY5Olx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBDTUQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gYW5kIHRoZSBCdWcgRml4KioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgLCBpcyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBwcm9ibGVtIGl0JiMzOTtzIGFkZHJlc3NpbmcuIFRoZSBidWcgZml4IGRvY3VtZW50YXRpb24gc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgSSBhbHdheXMgcHJlZmVyIHRvIGdldCBhIGZlZWwgZm9yIHRoZSBjb2RlIGl0c2VsZiBmaXJzdC4gVW5kZXJzdGFuZGluZyB0aGUgKmNvbnRleHQqIG9mIHRoZSBmaXggaXMgdml0YWwuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGVsc2V3aGVyZSwgYW5kIHdoaWNoIHZhcmlhYmxlcyBhcmUgcGFzc2VkIHRvIGl0LiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIHNlZSB3aGF0IGl0IGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkwMDpcdCAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBnZXQgV01NIHN0YXR1cyBjb21tYW5kIHJlc3BvbnNlIGZyb20gZmlybXdhcmUuXG4gOTAxOlx0ICpcbiA5MDI6XHQgKiBUaGUgcmVzcG9uc2UgbWF5IGNvbnRhaW4gbXVsdGlwbGUgVExWcyAtXG4gOTAzOlx0ICogICAgICAtIEFDIFF1ZXVlIHN0YXR1cyBUTFZzXG4gOTA0Olx0ICogICAgICAtIEN1cnJlbnQgV01NIFBhcmFtZXRlciBJRSBUTFZcbiA5MDU6XHQgKiAgICAgIC0gQWRtaXNzaW9uIENvbnRyb2wgYWN0aW9uIGZyYW1lIFRMVnNcbiA5MDY6XHQgKlxuIDkwNzpcdCAqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBUTFZzIGFuZCB0aGVuIGNhbGxzIGZ1cnRoZXIgc3BlY2lmaWMgZnVuY3Rpb25zXG4gOTA4Olx0ICogdG8gcHJvY2VzcyBhbnkgY2hhbmdlcyBpbiB0aGUgcXVldWUgcHJpb3JpdGl6ZSBvciBzdGF0ZS5cbiA5MDk6XHQgKi9cbiA5MTA6XHRpbnQgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbiA5MTE6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4gOTEyOlx0e1xuIDkxMzpcdFx0dTggKmN1cnIgPSAodTggKikgXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuZ2V0X3dtbV9zdGF0dXM7XG4gOTE0Olx0XHR1aW50MTZfdCByZXNwX2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlc2l6ZSksIHRsdl9sZW47XG4gOTE1Olx0XHRpbnQgbWFzayA9IElFRUU4MDIxMV9XTU1fSUVfQVBfUU9TSU5GT19QQVJBTV9TRVRfQ05UX01BU0s7XG4gOTE2Olx0XHRib29sIHZhbGlkID0gdHJ1ZTtcbiA5MTc6XHRcbiA5MTg6XHRcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKnRsdl9oZHI7XG4gOTE5Olx0XHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICp0bHZfd21tX3FzdGF0dXM7XG4gOTIwOlx0XHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xuIDkyMTpcdFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xuIDkyMjpcdFxuIDkyMzpcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuIDkyNDpcdFx0XHQgICAgXCYjMzQ7aW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcblwmIzM0OyxcbiA5MjU6XHRcdFx0ICAgIHJlc3BfbGVuKTtcbiA5MjY6XHRcbiA5Mjc6XHRcdHdoaWxlICgocmVzcF9sZW4gXHUwMDNlPSBzaXplb2YodGx2X2hkci1cdTAwM2VoZWFkZXIpKSBcdTAwMjZcdTAwMjYgdmFsaWQpIHtcbiA5Mjg6XHRcdFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XG4gOTI5Olx0XHRcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci5sZW4pO1xuIDkzMDpcdFxuIDkzMTpcdFx0XHRpZiAocmVzcF9sZW4gXHUwMDNjIHRsdl9sZW4gJiM0Mzsgc2l6ZW9mKHRsdl9oZHItXHUwMDNlaGVhZGVyKSlcbiA5MzI6XHRcdFx0XHRicmVhaztcbiA5MzM6XHRcbiA5MzQ6XHRcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVx1MDAzZWhlYWRlci50eXBlKSkge1xuIDkzNTpcdFx0XHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XG4gOTM2Olx0XHRcdFx0dGx2X3dtbV9xc3RhdHVzID1cbiA5Mzc6XHRcdFx0XHRcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXG4gOTM4Olx0XHRcdFx0XHR0bHZfaGRyO1xuIDkzOTpcdFx0XHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgQ01ELFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzAzCgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSBpdCBhcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYm91bmRzIGNoZWNrLiBJdCYjMzk7cyBhZGRpbmcgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGlmIGB0bHZfd21tX3FzdGF0dXMtJmd0O3F1ZXVlX2luZGV4YCBpcyB3aXRoaW4gdGhlIHZhbGlkIHJhbmdlIGZvciB0aGUgYHByaXYtJmd0O3dtbS5hY19zdGF0dXNgIGFycmF5IGJlZm9yZSBhY2Nlc3NpbmcgaXQuIFRoZSBhcnJheSBpcyBzaXplZCBieSBgSUVFRTgwMjExX05VTV9BQ1NgLCB3aGljaCBpcyA0LiBXaXRob3V0IHRoaXMsIHdlJiMzOTtkIGhhdmUgYSBjbGFzc2ljIGFycmF5IGluZGV4aW5nIHZ1bG5lcmFiaWxpdHkg4oCTIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgd3JpdGUuIEtBU0FOIHdvdWxkIGRlZmluaXRlbHkgY2F0Y2ggdGhhdCwgd2hpY2ggaXMgZ29vZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYXNwZWN0IEkgbmVlZCB0byBsb29rIGludG8/IExldCYjMzk7cyBzZWUuLi4gdGhlIGB0bHZfd21tX3FzdGF0dXNgIGRhdGEgY29tZXMgZnJvbSBhIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2UsIHNvIGl0JiMzOTtzIGluaXRpYWxpemVkIGJ5IHRoZSBmaXJtd2FyZS4gVGhlIGBxdWV1ZV9pbmRleGAgaXRzZWxmIGlzICp0aGVuKiBjaGVja2VkLCBzbyBpZiBpdCYjMzk7cyBvdXQgb2YgYm91bmRzLCB0aGUgY29kZSBqdXN0IGJyZWFrcywgYW5kIGRvZXNuJiMzOTt0IHdyaXRlIHRvIHRoZSBhcnJheS4gVGhlIGBhY19zdGF0dXNgIGFycmF5IGZpZWxkcyBhcmUgcG9wdWxhdGVkIGZyb20gYHRsdl93bW1fcXN0YXR1c2AuIFNlZW1zIGxpa2UgZXZlcnl0aGluZyYjMzk7cyBpbml0aWFsaXplZCBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWsgaW5mbywgb3IgaW50cm9kdWNlIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIFRoaXMgaXMgcHVyZWx5IGEgYm91bmRzIGNoZWNrIGZvciB0aGUgd3JpdGUuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgcnVsZTogJiMzNDtUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLCBMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLiYjMzQ7IFRoaXMgaXMgYWxsIEtBU0FOLCBhbGwgZGF5IGxvbmcuIEFuZCwgJiMzNDtOZWVkc0tNU0FOPWZhbHNlIElGLi4uVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2Vzcy4uLnRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodCBieSBLQVNBTi4uLiYjMzQ7LiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIGFuZCBhbGwgc3RydWN0dXJlcyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQuIEl0JiMzOTtzIGEgY2xlYW4sIGRlZmVuc2l2ZSBmaXguCgpTbywgeWVhaCwgZ2l2ZW4gdGhhdCwgYE5lZWRzS01TQU5gIHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBmYWxzZWAuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcgb25lIGxhc3QgdGltZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0aGVuIEkmIzM5O2xsIGdldCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbCByZWFkeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleGAgYWdhaW5zdCBgSUVFRTgwMjExX05VTV9BQ1NgIGJlZm9yZSBhY2Nlc3NpbmcgYHByaXYtXHUwMDNld21tLmFjX3N0YXR1c1suLi5dYCBpbiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKWAuIFRoaXMgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIC8gYnVmZmVyIG92ZXJmbG93IGlzc3VlLCB3aGljaCBpcyBwcm9wZXJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSwgYWx0ZXIsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgY29waWVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDguNTI0NzE1ODA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NDgwNTY4NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKCkgdG8gdmFsaWRhdGUgcXVldWVfaW5kZXggYmVmb3JlIGluZGV4aW5nIGludG8gcHJpdi1cXHUwMDNld21tLmFjX3N0YXR1cy4gVGhlIG13aWZpZXggZHJpdmVyIHN1cHBvcnRzIFVTQi1iYXNlZCBkZXZpY2VzIChDT05GSUdfTVdJRklFWF9VU0IpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDguNTI0NzIyNDc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU2MTQwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNiNDA0MDc5OWQxOWRjNjI3OTdjMWJiOTA2NmFmOGQyNzM1OTgyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uY1xcbmluZGV4IDg0MTUwNWU4M2M3ZmQuLmZlYmVhNjg0ODdlODQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXFxuQEAgLTk0Myw2ICs5NDMsOCBAQCBpbnQgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZCxcXG4gXFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZGlzYWJsZWQpO1xcbiBcXG4rXFx0XFx0XFx0aWYgKHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXggXFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHRhY19zdGF0dXMgPSBcXHUwMDI2cHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXFx1MDAzZVxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcXVldWVfaW5kZXhdO1xcbiBcXHRcXHRcXHRhY19zdGF0dXMtXFx1MDAzZWRpc2FibGVkID0gdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VkaXNhYmxlZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MDkuODgxNzQxNjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg4NDI4NjAxMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKSB0byB2YWxpZGF0ZSBxdWV1ZV9pbmRleCBiZWZvcmUgaW5kZXhpbmcgaW50byBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzLiBUaGUgbXdpZmlleCBkcml2ZXIgc3VwcG9ydHMgVVNCLWJhc2VkIGRldmljZXMgKENPTkZJR19NV0lGSUVYX1VTQiksIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiArOTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiBcbitcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4rXHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjowOS44ODE3NDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkwMDI5OTg3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCBmb3IgZnV6emluZyBvcHBvcnR1bml0aWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBhbmQgaWYgc28sIGhvdy4gRmlyc3QgdGhpbmdzIGZpcnN0OiBsZXQncyByZWFkIHRoZSBwYXRjaC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGJvdW5kcyBjaGVjayBhZGRlZCBpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBmdW5jdGlvbi4gVGhlIGRpZmYgaXRzZWxmIGlzIHNpbXBsZSwgYSBjaGVjayBvbiBgcXVldWVfaW5kZXhgIHdpdGhpbiBhIFdNTSBzdGF0dXMgdXBkYXRlLiBTcGVjaWZpY2FsbHkgdGhlIGFkZGVkIGNoZWNrOiBgaWYgKHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGlzIGlzIGxvb2tpbmcgZm9yIGludmFsaWQgcXVldWUgaW5kZXhlcy5cblxuTm93LCB0aGUgcmVhbCB3b3JrIGJlZ2lucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGRyaXZlciwgYG13aWZpZXhgLCBmaXRzIGludG8gdGhlIHN5c3RlbS4gSXMgaXQgYSBVU0IsIFNESU8sIG9yIFBDSWUgZHJpdmVyPyBUaGF0IGRpcmVjdGx5IGltcGFjdHMgZnV6emluZyBzdHJhdGVneS4gQ2FuIEkgdGFyZ2V0IGl0IHdpdGggVVNCIGZ1enppbmcgdG9vbHM/IFRoaW5rIHN5emthbGxlcidzIFVTQiByYXcgZ2FkZ2V0LCBVU0IgZW11bGF0aW9uIHNldHVwcywgb3IgbWF5YmUgZXZlbiBsZXZlcmFnZSBtYWM4MDIxMV9od3NpbSBpZiBJJ20gbHVja3kuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG13aWZpZXhgIGRyaXZlciBzdHJ1Y3R1cmUgYW5kIEtjb25maWcgb3B0aW9ucyB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbi4gQmFzZWQgb24gdGhlIGZpbGUgcGF0aCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uY2AsIGl0IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciwgYnV0IHRoZSBleGFjdCBpbnRlcmZhY2UgcHJvdG9jb2wgaXMgc3RpbGwgdW5jbGVhci4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byBkZXRlcm1pbmUgaG93IHRoZSBgbXdpZmlleGAgZHJpdmVyIGlzIGluc3RhbnRpYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjE4Ljg4NDc0NDU3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ5Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlxcdCAgbXdpZmlleC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yMi1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XFx0ICBtd2lmaWV4X3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM1OlxcdCAgbXdpZmlleF9wY2llLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjE4Ljk2MzI0NzU3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMTA5NTY0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTVdJRklFWF9VU0IgU3VwcG9ydCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gYE1XSUZJRVhfVVNCYCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCwgd2hpY2ggaXMgZmFudGFzdGljISBUaGF0IG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgZG9vcnMuIEtub3dpbmcgdGhhdCBgbXdpZmlleGAgaGFzIGEgVVNCIGludGVyZmFjZSBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgKSBpcyBrZXkuIFRoaXMgbWVhbnMgd2UndmUgZ290IGEgdGFuZ2libGUgYXZlbnVlIGZvciBmdXp6aW5nIHZpYSBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIncyBVU0IgcmF3IGdhZGdldCwgb3IgZXZlbiB2aGNpLiBUaGlzIGlzIHNpZ25pZmljYW50OyBVU0IgaXMgZ2VuZXJhbGx5IHdlbGwtdW5kZXJzdG9vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoZSBpbnRlcmZhY2UgcHJvdmlkZXMgYSBkZWZpbmVkIGVudHJ5IHBvaW50LlxuXG5Ob3csIGxldCdzIGRpdmUgZGVlcGVyLiBNeSBuZXh0IG1vdmUgaXMgdG8gaW52ZXN0aWdhdGUgYE1XSUZJRVhfVVNCYCBkaXJlY3RseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXTigJlzIGNvbmZpZ3VyZWQgYW5kIHVzZWQuIEJleW9uZCB0aGF0LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGhvdyBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgIGlzIHJlYWNoZWQuIE1hcHBpbmcgdGhhdCBvdXQgaXMgZXNzZW50aWFsIGZvciBjcmFmdGluZyB0YXJnZXRlZCBmdXp6aW5nIGhhcm5lc3Nlcy4gS25vd2luZyB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgZmxvdyBsZWFkaW5nIHRvIHRoYXQgZnVuY3Rpb24gZ2l2ZXMgbWUgYSByb2FkbWFwIGZvciBlZmZpY2llbnQgYW5kIGVmZmVjdGl2ZSB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGhpcyBpcyB3aGVyZSBJJ2xsIGJlIGZvY3VzaW5nIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjoyMS4yNzQyMDk0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MjEuMjc0Mzg0NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjY5ODgyNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgV01NIFN0YXR1cyBSZXRyaWV2YWwqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgZnVuY3Rpb24uIEl0J3MgdGltZSB0byBtYXAgaXRzIGNhbGwgZ3JhcGguIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gdGhlIGNvbnRleHRzIHRoYXQgdHJpZ2dlciB0aGlzIHJldHJpZXZhbCBhbmQsIGJ5IGV4dGVuc2lvbiwgdGhlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIFdNTSBzdGF0dXMuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBhcmVhcyB3aGVyZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgbWlnaHQgc3VyZmFjZSDigJMgdGhlc2UgV01NLXJlbGF0ZWQgZnVuY3Rpb25zIHRlbmQgdG8gYmUgc2Vuc2l0aXZlLiBUaGUgZ29hbCBoZXJlIGlzbid0IGp1c3QgdG8gc2VlICp0aGF0KiBpdCdzIGNhbGxlZCwgYnV0IHRvIGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mICp3aHkqLCBhbmQgKndoZW4qIGl0IGlzIGNhbGxlZCwgZnJvbSB3aGF0IHN0YXRlIGlzIGl0IGJlaW5nIGNhbGxlZCBmcm9tPyBhbmQgd2hhdCBldmVudHMgdHJpZ2dlcmVkIHRoZSBjYWxscz8gVGhpcyB3aWxsIGhlbHAgcGlucG9pbnQgYW55IGlzc3VlcyBpbiBRb1MgbWFuYWdlbWVudCwgcG93ZXIgc2F2aW5nIGZlYXR1cmVzLCBvciBpbnRlci1vcGVyYXRpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLiBOb3csIGxldCdzIG9wZW4gdGhhdCBzb3VyY2UuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6MjMuNTQ0MjY5MTY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDE1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM1OS1cXHRjYXNlIEhvc3RDbWRfQ01EX1dNTV9HRVRfU1RBVFVTOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEzNjA6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTM2MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYz04MDg9bXdpZmlleF93bW1fYWRkX2J1Zl90eHF1ZXVlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmMtOTA5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uYzo5MTA6aW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jLTkxMS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmg9ODU9dm9pZCBtd2lmaWV4X3dtbV9zZXR1cF9hY19kb3duZ3JhZGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5oOjg2OmludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC93bW0uaC04Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjoyMy42MzQ2ODk0OTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTA1MjQ5NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBXTU0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFdNTSBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIOKAkyBzcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA5MTAgdG8gOTYwLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhleSdyZSBoYW5kbGluZyB0aGF0IHNwZWNpZmljIHBhcnQgb2YgdGhlIFdNTSBmdW5jdGlvbmFsaXR5LiBQcm9iYWJseSBzb21ldGhpbmcgYWJvdXQgcXVldWUgbWFuYWdlbWVudCBvciBjb250ZW50aW9uIG1lY2hhbmlzbXMsIGJ1dCBJIG5lZWQgdG8gc2VlIGl0IGluIGFjdGlvbiB0byBrbm93IGZvciBzdXJlLiBMZXTigJlzIGdldCB0byBpdC4gSSB3YW50IHRvIHNlZSBob3cgTWFydmVsbCdzIGhhbmRsaW5nIHRoZSBXTU0gc3RhbmRhcmQsIGFuZCB3aGF0IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGlzc3VlcyBtaWdodCBiZSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjI1LjUzOTk0MTY3NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwNSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkwNTpcXHQgKiAgICAgIC0gQWRtaXNzaW9uIENvbnRyb2wgYWN0aW9uIGZyYW1lIFRMVnNcXG4gOTA2OlxcdCAqXFxuIDkwNzpcXHQgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgVExWcyBhbmQgdGhlbiBjYWxscyBmdXJ0aGVyIHNwZWNpZmljIGZ1bmN0aW9uc1xcbiA5MDg6XFx0ICogdG8gcHJvY2VzcyBhbnkgY2hhbmdlcyBpbiB0aGUgcXVldWUgcHJpb3JpdGl6ZSBvciBzdGF0ZS5cXG4gOTA5OlxcdCAqL1xcbiA5MTA6XFx0aW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuIDkxMTpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuIDkxMjpcXHR7XFxuIDkxMzpcXHRcXHR1OCAqY3VyciA9ICh1OCAqKSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmdldF93bW1fc3RhdHVzO1xcbiA5MTQ6XFx0XFx0dWludDE2X3QgcmVzcF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSwgdGx2X2xlbjtcXG4gOTE1OlxcdFxcdGludCBtYXNrID0gSUVFRTgwMjExX1dNTV9JRV9BUF9RT1NJTkZPX1BBUkFNX1NFVF9DTlRfTUFTSztcXG4gOTE2OlxcdFxcdGJvb2wgdmFsaWQgPSB0cnVlO1xcbiA5MTc6XFx0XFxuIDkxODpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICp0bHZfaGRyO1xcbiA5MTk6XFx0XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfd21tX3F1ZXVlX3N0YXR1cyAqdGx2X3dtbV9xc3RhdHVzO1xcbiA5MjA6XFx0XFx0c3RydWN0IGllZWVfdHlwZXNfd21tX3BhcmFtZXRlciAqd21tX3BhcmFtX2llID0gTlVMTDtcXG4gOTIxOlxcdFxcdHN0cnVjdCBtd2lmaWV4X3dtbV9hY19zdGF0dXMgKmFjX3N0YXR1cztcXG4gOTIyOlxcdFxcbiA5MjM6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG4gOTI0OlxcdFxcdFxcdCAgICBcXFwiaW5mbzogV01NOiBXTU1fR0VUX1NUQVRVUyBjbWRyZXNwIHJlY2VpdmVkOiAlZFxcXFxuXFxcIixcXG4gOTI1OlxcdFxcdFxcdCAgICByZXNwX2xlbik7XFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdHdoaWxlICgocmVzcF9sZW4gXFx1MDAzZT0gc2l6ZW9mKHRsdl9oZHItXFx1MDAzZWhlYWRlcikpIFxcdTAwMjZcXHUwMDI2IHZhbGlkKSB7XFxuIDkyODpcXHRcXHRcXHR0bHZfaGRyID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKikgY3VycjtcXG4gOTI5OlxcdFxcdFxcdHRsdl9sZW4gPSBsZTE2X3RvX2NwdSh0bHZfaGRyLVxcdTAwM2VoZWFkZXIubGVuKTtcXG4gOTMwOlxcdFxcbiA5MzE6XFx0XFx0XFx0aWYgKHJlc3BfbGVuIFxcdTAwM2MgdGx2X2xlbiArIHNpemVvZih0bHZfaGRyLVxcdTAwM2VoZWFkZXIpKVxcbiA5MzI6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDkzMzpcXHRcXG4gOTM0OlxcdFxcdFxcdHN3aXRjaCAobGUxNl90b19jcHUodGx2X2hkci1cXHUwMDNlaGVhZGVyLnR5cGUpKSB7XFxuIDkzNTpcXHRcXHRcXHRjYXNlIFRMVl9UWVBFX1dNTVFTVEFUVVM6XFxuIDkzNjpcXHRcXHRcXHRcXHR0bHZfd21tX3FzdGF0dXMgPVxcbiA5Mzc6XFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKilcXG4gOTM4OlxcdFxcdFxcdFxcdFxcdHRsdl9oZHI7XFxuIDkzOTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBDTUQsXFxuIDk0MDpcXHRcXHRcXHRcXHRcXHQgICAgXFxcImluZm86IENNRF9SRVNQOiBXTU1fR0VUX1NUQVRVUzpcXFxcdFxcXCJcXG4gOTQxOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiUVNUQVRVUyBUTFY6ICVkLCAlZCwgJWRcXFxcblxcXCIsXFxuIDk0MjpcXHRcXHRcXHRcXHRcXHQgICAgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4gOTQzOlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWZsb3dfcmVxdWlyZWQsXFxuIDk0NDpcXHRcXHRcXHRcXHRcXHQgICAgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VkaXNhYmxlZCk7XFxuIDk0NTpcXHRcXG4gOTQ2OlxcdFxcdFxcdFxcdGlmICh0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4IFxcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKVxcbiA5NDc6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk0ODpcXHRcXHRcXHRcXHRhY19zdGF0dXMgPSBcXHUwMDI2cHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1t0bHZfd21tX3FzdGF0dXMtXFx1MDAzZVxcbiA5NDk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHF1ZXVlX2luZGV4XTtcXG4gOTUwOlxcdFxcdFxcdFxcdGFjX3N0YXR1cy1cXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWRpc2FibGVkO1xcbiA5NTE6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VmbG93X3JlcXVpcmVkID1cXG4gOTUyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZDtcXG4gOTUzOlxcdFxcdFxcdFxcdGFjX3N0YXR1cy1cXHUwMDNlZmxvd19jcmVhdGVkID0gdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VmbG93X2NyZWF0ZWQ7XFxuIDk1NDpcXHRcXHRcXHRcXHRicmVhaztcXG4gOTU1OlxcdFxcbiA5NTY6XFx0XFx0XFx0Y2FzZSBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM6XFxuIDk1NzpcXHRcXHRcXHRcXHQvKlxcbiA5NTg6XFx0XFx0XFx0XFx0ICogUG9pbnQgdGhlIHJlZ3VsYXIgSUVFRSBJRSAyIGJ5dGVzIGludG8gdGhlIE1hcnZlbGwgSUVcXG4gOTU5OlxcdFxcdFxcdFxcdCAqICAgYW5kIHNldHVwIHRoZSBJRUVFIElFIHR5cGUgYW5kIGxlbmd0aCBieXRlIGZpZWxkc1xcbiA5NjA6XFx0XFx0XFx0XFx0ICovXFxuIDk2MTpcXHRcXG4gOTYyOlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZSA9XFxuIDk2MzpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWVfdHlwZXNfd21tX3BhcmFtZXRlciAqKSAoY3VyciArXFxuIDk2NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgMik7XFxuIDk2NTpcXHRcXHRcXHRcXHR3bW1fcGFyYW1faWUtXFx1MDAzZXZlbmRfaGRyLmxlbiA9ICh1OCkgdGx2X2xlbjtcXG4gOTY2OlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIuZWxlbWVudF9pZCA9XFxuIDk2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM7XFxuIDk2ODpcXHRcXG4gOTY5OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIENNRCxcXG4gOTcwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcXFx0XFxcIlxcbiA5NzE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJXTU0gUGFyYW1ldGVyIFNldCBDb3VudDogJWRcXFxcblxcXCIsXFxuIDk3MjpcXHRcXHRcXHRcXHRcXHQgICAgd21tX3BhcmFtX2llLVxcdTAwM2Vxb3NfaW5mb19iaXRtYXAgXFx1MDAyNiBtYXNrKTtcXG4gOTczOlxcdFxcbiA5NzQ6XFx0XFx0XFx0XFx0aWYgKHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIubGVuICsgMiBcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjI1LjU0MDA1NjEwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTcyMDEzMjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgQm91bmRzIENoZWNrKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBuZXcgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrOiBgaWYgKHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fQUNTKSBicmVhaztgLiBUaGUgcHVycG9zZSBvZiB0aGlzIHNlZW1zIHByZXR0eSBjbGVhciDigJMgdG8gc3RvcCBvdXQtb2YtYm91bmRzIGFjY2VzcyB0byBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzYC4gQnV0IHRoZSBxdWVzdGlvbiBpczogaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGFuZCB0aGVyZWZvcmUgZnV6emFibGU/IFRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBtYWtlIHRoYXQgdGhlIGFic29sdXRlIHByaW9yaXR5LiBJZiBpdCdzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKHRoaW5rIEdDRSBvciBRRU1VIHdpdGggZW11bGF0ZWQgZGV2aWNlcyksIHdlJ3JlIHdhc3Rpbmcgb3VyIHRpbWUuIE5vIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtd2lmaWV4YCBoYXMgc29tZSBwb3RlbnRpYWwuIEl0J3MgYSBVU0IgZHJpdmVyLCBgTVdJRklFWF9VU0JgLCBhbmQgdGhhdOKAmXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGVtdWxhdGFibGUgdXNpbmcgVVNCIHJhdyBnYWRnZXQgb3IgdkhDSSDigJMgU3l6a2FsbGVyIHNwZWNpZmljYWxseSBoYXMgVVNCIHJhdyBnYWRnZXQgc3VwcG9ydCBmb3Igd2lmaSBkcml2ZXJzLCBhbmQgKm13aWZpZXgqIGlzIGEgVVNCIHdpZmkgZHJpdmVyLiBUaGlzIG1lYW5zIHdlIGNhbiBpbmplY3QgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMgdGhyb3VnaCBVU0IgYnVsayBvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLiBUaGF0J3MgYSBkZWZpbml0ZSBwbHVzLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1XSUZJRVhfVVNCYCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdGhhdCBhbGwgdGhlIHJpZ2h0IHN5bWJvbHMgYXJlIGF2YWlsYWJsZS4gVGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGxvb2sgbGlrZSB0aGlzOiBgTVdJRklFWGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgYE1XSUZJRVhfVVNCYCBkZXBlbmRzIG9uIGBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JgIGFuZCBzZWxlY3RzIGBGV19MT0FERVJgLiBUaGF0IGxvb2tzIHJpZ2h0LCBidXQgbGV0J3MgZG8gYSBxdWljayBncmVwIHNlYXJjaCB0byBjb25maXJtLiBJIHNob3VsZCBzY2FuIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZm9yIGBNV0lGSUVYYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJpdGUgdXMgbGF0ZXIuIEp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0MS4yNjAxOTE3ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTQ4ODY1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4NTQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTY9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9NYWtlZmlsZT00PW9iai0kKENPTkZJR19MSUJFUlRBU19USElORklSTSlcXHQrPSBsaWJlcnRhc190Zi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01XSUZJRVgpXFx0Kz0gbXdpZmlleC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL01ha2VmaWxlLTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jPTQyPXN0YXRpYyB1MTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQzOm13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNDQtXFx0XFx0XFx0XFx0ICB1OCBiYW5kcywgdTE2IG1jc19tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTQ4LVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjQ5OlxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jPTg1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4Njptd2lmaWV4X2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04Ny1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTggYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy04OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzo4OTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjk5OnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1OCBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEwMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDI6XFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDMtXFx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTA2LVxcdC8qIEZpbGwgVkhUIGNhcCBpbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxMDc6XFx0bXdpZmlleF9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xMDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjEyOTpcXHR0bXAgPSBtd2lmaWV4X2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTEzMC1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTUxOlxcdHRtcCA9IG13aWZpZXhfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTUyLVxcdHZodF9jYXAtXFx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNTc6aW50IG13aWZpZXhfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTU4OlxcdFxcdFxcdCAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNTktXFx0XFx0XFx0ICAgICB1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjE6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTYyOlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTYzLVxcdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxNjQ6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE2NTpcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE2Ni1cXHR1OCBzdXBwX2Nod2Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xNzYtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MTc3OlxcdFxcdHZodF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE3OC1cXHRcXHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4MS1cXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODI6XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9jYXAgKyBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE4My1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoxODY6XFx0XFx0bXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFxcdTAwMjZ2aHRfY2FwLVxcdTAwM2V2aHRfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTg3LVxcdFxcdFxcdFxcdFxcdCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0xOTQtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjE5NTpcXHRcXHRcXHR2aHRfb3AgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMTk2LVxcdFxcdFxcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTE5OS1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjIwMDpcXHRcXHRcXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDEtXFx0XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9vcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyMDI6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yMDMtXFx0XFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X29wZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI1MzppbnQgbXdpZmlleF9jbWRfMTFhY19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI1NC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyNTU6XFx0XFx0XFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMjcyLS8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIEJsb2NrQUNLIHNldHVwIGluZm9ybWF0aW9uIGZvciBnaXZlblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MjczOiAqIG13aWZpZXhfcHJpdmF0ZSBzdHJ1Y3R1cmUgZm9yIDExYWMgZW5hYmxlZCBuZXR3b3Jrcy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI3NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jOjI3NTp2b2lkIG13aWZpZXhfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTQ6Ym9vbCBtd2lmaWV4X2lzX2Jzc19pbl8xMWFjX21vZGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5jLTI5NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYzoyOTY6XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0yOTctXFx0c3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uICp2aHRfb3BlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmMtMzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmM6MzExOnU4IG13aWZpZXhfZ2V0X2NlbnRlcl9mcmVxX2luZGV4KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4IGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuYy0zMTItXFx0XFx0XFx0XFx0IHUzMiBwcmlfY2hhbiwgdTggY2hhbl9idylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNTppbnQgbXdpZmlleF9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oLTI3LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjI4OmludCBtd2lmaWV4X2NtZF8xMWFjX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWFjLmg6MzA6XFx0XFx0XFx0IHN0cnVjdCBtd2lmaWV4XzExYWNfdmh0X2NmZyAqY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFhYy5oOjMxOnZvaWQgbXdpZmlleF9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHU4IGJhbmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTI6dm9pZCBtd2lmaWV4X2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE4OmlubGluZSBpbnQgbXdpZmlleF9pc18xMWhfYWN0aXZlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNjptd2lmaWV4XzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyOTpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIgKmllX2hlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzA6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MzE6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKmNvbnN0cmFpbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTMyLVxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzozOTpcXHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MC1cXHRzYmFuZCA9IHByaXYtXFx1MDAzZXdkZXYud2lwaHktXFx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDI6XFx0Y2FwID0gKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3B3cl9jYXBhYmlsaXR5ICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNDMtXFx0Y2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NDk6XFx0Y29uc3RyYWludCA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTUwLVxcdGNvbnN0cmFpbnQtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo1NjpcXHRpZV9oZWFkZXIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNTctXFx0aWVfaGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTY5LS8qIEVuYWJsZSBvciBkaXNhYmxlIHRoZSAxMWggZXh0ZW5zaW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6NzA6aW50IG13aWZpZXhfMTFoX2FjdGl2YXRlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGJvb2wgZmxhZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzo3ODpcXHRyZXR1cm4gbXdpZmlleF9zZW5kX2NtZChwcml2LCBIb3N0Q21kX0NNRF84MDJfMTFfU05NUF9NSUIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTc5LVxcdFxcdFxcdFxcdEhvc3RDbWRfQUNUX0dFTl9TRVQsIERPVDExSF9JLCBcXHUwMDI2ZW5hYmxlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy04Ny0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6ODg6dm9pZCBtd2lmaWV4XzExaF9wcm9jZXNzX2pvaW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjg5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk1OlxcdFxcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy05Ni1cXHRcXHRwcml2LVxcdTAwM2VzdGF0ZV8xMWguaXNfMTFoX2FjdGl2ZSA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTk3LVxcdFxcdGJzc19kZXNjLVxcdTAwM2VjYXBfaW5mb19iaXRtYXAgfD0gV0xBTl9DQVBBQklMSVRZX1NQRUNUUlVNX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjk4OlxcdFxcdG13aWZpZXhfMTFoX3Byb2Nlc3NfaW5mcmFfam9pbihwcml2LCBidWZmZXIsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtOTktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTAwLVxcdFxcdC8qIERlYWN0aXZhdGUgMTFoIGZ1bmN0aW9ucyBpbiB0aGUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTAxOlxcdFxcdG13aWZpZXhfMTFoX2FjdGl2YXRlKHByaXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTAyLVxcdFxcdHByaXYtXFx1MDAzZXN0YXRlXzExaC5pc18xMWhfYWN0aXZlID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTEwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTE6dm9pZCBtd2lmaWV4X2Rmc19jYWNfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTExMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE0LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbGF5ZWRfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTE1OlxcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMTY6XFx0XFx0XFx0Y29udGFpbmVyX29mKGRlbGF5ZWRfd29yaywgc3RydWN0IG13aWZpZXhfcHJpdmF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTE3LVxcdFxcdFxcdFxcdCAgICAgZGZzX2NhY193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMjAtXFx0aWYgKHByaXYtXFx1MDAzZXdkZXYubGlua3NbMF0uY2FjX3N0YXJ0ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTIxOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTIyLVxcdFxcdFxcdCAgICBcXFwiQ0FDIHRpbWVyIGZpbmlzaGVkOyBObyByYWRhciBkZXRlY3RlZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxMzI6aW50IG13aWZpZXhfY21kX2lzc3VlX2NoYW5fcmVwb3J0X3JlcXVlc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTMzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xMzYtXFx0c3RydWN0IGhvc3RfY21kX2RzX2NoYW5fcnB0X3JlcSAqY3JfcmVxID0gXFx1MDAyNmNtZC1cXHUwMDNlcGFyYW1zLmNoYW5fcnB0X3JlcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTM3OlxcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcyAqcmFkYXJfcGFyYW1zID0gKHZvaWQgKilkYXRhX2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE0OS1cXHRpZiAocmFkYXJfcGFyYW1zLVxcdTAwM2VjYWNfdGltZV9tcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTUwOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTUxLVxcdFxcdFxcdCAgICBcXFwiMTFoOiBpc3N1aW5nIERGUyBSYWRhciBjaGVjayBmb3IgY2hhbm5lbD0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTQ6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwiY2FuY2VsbGluZyBDQUNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNTk6aW50IG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTYwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2MjpcXHRzdHJ1Y3QgbXdpZmlleF9yYWRhcl9wYXJhbXMgcmFkYXJfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE2NDpcXHRtZW1zZXQoXFx1MDAyNnJhZGFyX3BhcmFtcywgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X3JhZGFyX3BhcmFtcykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNjUtXFx0cmFkYXJfcGFyYW1zLmNoYW5kZWYgPSBjaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTY4OlxcdHJldHVybiBtd2lmaWV4X3NlbmRfY21kKHByaXYsIEhvc3RDbWRfQ01EX0NIQU5fUkVQT1JUX1JFUVVFU1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE2OS1cXHRcXHRcXHRcXHRIb3N0Q21kX0FDVF9HRU5fU0VULCAwLCBcXHUwMDI2cmFkYXJfcGFyYW1zLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xNzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjE3NTp2b2lkIG13aWZpZXhfYWJvcnRfY2FjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE3Ny1cXHRpZiAocHJpdi1cXHUwMDNld2Rldi5saW5rc1swXS5jYWNfc3RhcnRlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxNzg6XFx0XFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTc5OlxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODAtXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoxODE6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xODItXFx0XFx0XFx0ICAgIFxcXCJBYm9ydGluZyBkZWxheWVkIHdvcmsgZm9yIENBQy5cXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTk0OmludCBtd2lmaWV4XzExaF9oYW5kbGVfY2hhbnJwdF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0xOTUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTE5Ny1cXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY2hhbl9ycHRfZXZlbnQgKnJwdF9ldmVudDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MTk4OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fcnB0X2RhdGEgKnJwdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMTk5LVxcdHUxNiBldmVudF9sZW4sIHRsdl9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjA1LVxcdGlmIChsZTMyX3RvX2NwdShycHRfZXZlbnQtXFx1MDAzZXJlc3VsdCkgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjA2OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMDctXFx0XFx0XFx0ICAgIFxcXCJFcnJvciBpbiBjaGFubmVsIHJlcG9ydCBldmVudFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTE6XFx0d2hpbGUgKGV2ZW50X2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaGVhZGVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTItXFx0XFx0cnB0ID0gKHZvaWQgKilcXHUwMDI2cnB0X2V2ZW50LVxcdTAwM2V0bHZidWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjE3LVxcdFxcdFxcdGlmIChycHQtXFx1MDAzZW1hcC5yYWRhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMTg6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMTktXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJSQURBUiBEZXRlY3RlZCBvbiBjaGFubmVsICVkIVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yMzgtLyogSGFuZGxlciBmb3IgcmFkYXIgZGV0ZWN0ZWQgZXZlbnQgZnJvbSBGVy4qL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyMzk6aW50IG13aWZpZXhfMTFoX2hhbmRsZV9yYWRhcl9kZXRlY3RlZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQyOlxcdHN0cnVjdCBtd2lmaWV4X3JhZGFyX2RldF9ldmVudCAqcmRyX2V2ZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDY6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNDctXFx0XFx0ICAgIFxcXCJyYWRhciBkZXRlY3RlZDsgaW5kaWNhdGluZyBrZXJuZWxcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNDg6XFx0aWYgKG13aWZpZXhfc3RvcF9yYWRhcl9kZXRlY3Rpb24ocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjQ5OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTAtXFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gc3RvcCBDQUMgaW4gRldcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI1Mi1cXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTM6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwicmVnZG9tYWluOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjU0LVxcdFxcdCAgICByZHJfZXZlbnQtXFx1MDAzZXJlZ19kb21haW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYzoyNTU6XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLCBcXFwicmFkYXIgZGV0ZWN0aW9uIHR5cGU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNTYtXFx0XFx0ICAgIHJkcl9ldmVudC1cXHUwMDNlZGV0X3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY2OnZvaWQgbXdpZmlleF9kZnNfY2hhbl9zd193b3JrX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjY3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjY4OlxcdHN0cnVjdCBtd2lmaWV4X3VhcF9ic3NfcGFyYW0gKmJzc19jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI2OS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxheWVkX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI3MDpcXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjcxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihkZWxheWVkX3dvcmssIHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3Mi1cXHRcXHRcXHRcXHQgICAgIGRmc19jaGFuX3N3X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI3NS1cXHRpZiAoIWJzc19jZmctXFx1MDAzZWJlYWNvbl9wZXJpb2QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjc2OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yNzctXFx0XFx0XFx0ICAgIFxcXCJjaGFubmVsIHN3aXRjaDogQVAgYWxyZWFkeSBzdG9wcGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI4MTpcXHRtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChwcml2LCBic3NfY2ZnLCBwcml2LVxcdTAwM2VkZnNfY2hhbmRlZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjgzOlxcdGlmIChtd2lmaWV4X2NvbmZpZ19zdGFydF91YXAocHJpdiwgYnNzX2NmZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg0OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yODUtXFx0XFx0XFx0ICAgIFxcXCJGYWlsZWQgdG8gc3RhcnQgQVAgYWZ0ZXIgY2hhbm5lbCBzd2l0Y2hcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6Mjg5OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkwLVxcdFxcdCAgICBcXFwiaW5kaWNhdGluZyBjaGFubmVsIHN3aXRjaCBjb21wbGV0aW9uIHRvIGtlcm5lbFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjI1OmludCBtd2lmaWV4X2ZpbGxfY2FwX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggcmFkaW9fdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjYtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyLVxcdGlmIChXQVJOX09OX09OQ0UoIXNiYW5kKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMzpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBFUlJPUiwgXFxcIkludmFsaWQgcmFkaW8gdHlwZSFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy02OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzA6c3RhdGljIHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo3MTptd2lmaWV4X2dldF9iYV9zdGF0dXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzI6XFx0XFx0ICAgICAgZW51bSBtd2lmaWV4X2JhX3N0YXR1cyBiYV9zdGF0dXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NzQ6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjk2OmludCBtd2lmaWV4X3JldF8xMW5fZGVsYmEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtOTctXFx0XFx0XFx0ICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy05OS1cXHRpbnQgdGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMDA6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDEtXFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9kZWxiYSAqZGVsX2JhID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5kZWxfYmE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA1LVxcdGlmIChkZWxfYmEtXFx1MDAzZWRlbF9yZXN1bHQgPT0gQkFfUkVTVUxUX1NVQ0NFU1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTA2OlxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0aWQsIGRlbF9iYS1cXHUwMDNlcGVlcl9tYWNfYWRkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTA3LVxcdFxcdFxcdFxcdCAgIFRZUEVfREVMQkFfU0VOVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjExMDpcXHRcXHR0eF9iYV90YmwgPSBtd2lmaWV4X2dldF9iYV9zdGF0dXMocHJpdiwgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTExMS1cXHRcXHRpZiAodHhfYmFfdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMTI6XFx0XFx0XFx0bXdpZmlleF9zZW5kX2FkZGJhKHByaXYsIHR4X2JhX3RibC1cXHUwMDNldGlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMTMtXFx0XFx0XFx0XFx0XFx0ICAgdHhfYmFfdGJsLVxcdTAwM2VyYSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxMjE6XFx0XFx0bXdpZmlleF9jcmVhdGVfYmFfdGJsKHByaXYsIGRlbF9iYS1cXHUwMDNlcGVlcl9tYWNfYWRkciwgdGlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjItXFx0XFx0XFx0XFx0ICAgICAgQkFfU0VUVVBfSU5QUk9HUkVTUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI0OlxcdFxcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3N0YXR1cyhwcml2LCBCQV9TRVRVUF9JTlBST0dSRVNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xMjYtXFx0XFx0aWYgKHR4X2JhX3RibClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTI3OlxcdFxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0eF9iYV90YmwtXFx1MDAzZXRpZCwgdHhfYmFfdGJsLVxcdTAwM2VyYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgIFRZUEVfREVMQkFfU0VOVCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNDI6aW50IG13aWZpZXhfcmV0XzExbl9hZGRiYV9yZXEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTQzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2FkZGJhX3JzcCAqYWRkX2JhX3JzcCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYWRkX2JhX3JzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ3OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTQ4OlxcdHN0cnVjdCBtd2lmaWV4X3JhX2xpc3RfdGJsICpyYV9saXN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNDktXFx0dTE2IGJsb2NrX2Fja19wYXJhbV9zZXQgPSBsZTE2X3RvX2NwdShhZGRfYmFfcnNwLVxcdTAwM2VibG9ja19hY2tfcGFyYW1fc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjE1NzpcXHR0aWRfZG93biA9IG13aWZpZXhfd21tX2Rvd25ncmFkZV90aWQocHJpdiwgdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTU4OlxcdHJhX2xpc3QgPSBtd2lmaWV4X3dtbV9nZXRfcmFsaXN0X25vZGUocHJpdiwgdGlkX2Rvd24sIGFkZF9iYV9yc3AtXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNTktXFx0XFx0cGVlcl9tYWNfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTY0LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTY1OlxcdFxcdG13aWZpZXhfZGVsX2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXFx1MDAzZXBlZXJfbWFjX2FkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE2Ni1cXHRcXHRcXHRcXHQgICBUWVBFX0RFTEJBX1NFTlQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTE3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTczOlxcdHR4X2JhX3RibCA9IG13aWZpZXhfZ2V0X2JhX3RibChwcml2LCB0aWQsIGFkZF9iYV9yc3AtXFx1MDAzZXBlZXJfbWFjX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzQtXFx0aWYgKHR4X2JhX3RibCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoxNzU6XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVZFTlQsIFxcXCJpbmZvOiBCQSBzdHJlYW0gY29tcGxldGVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xNzYtXFx0XFx0dHhfYmFfdGJsLVxcdTAwM2ViYV9zdGF0dXMgPSBCQV9TRVRVUF9DT01QTEVURTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0xODctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MTg4OlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcXFwiQkEgc3RyZWFtIG5vdCBjcmVhdGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMTg5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMDEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIwMjppbnQgbXdpZmlleF9jbWRfcmVjZmdfdHhfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIwMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIGludCBjbWRfYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNC1cXHRjYXNlIEhvc3RDbWRfQUNUX0dFTl9TRVQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIxNTpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBDTUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIxNi1cXHRcXHRcXHQgICAgXFxcImNtZDogc2V0IHR4X2J1Zj0lZFxcXFxuXFxcIiwgKmJ1Zl9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0yMzQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjIzNTppbnQgbXdpZmlleF9jbWRfYW1zZHVfYWdncl9jdHJsKHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzNi1cXHRcXHRcXHRcXHRpbnQgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MjM3OlxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2RzXzExbl9hbXNkdV9hZ2dyX2N0cmwgKmFhX2N0cmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTIzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNjg6aW50IG13aWZpZXhfY21kXzExbl9jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMjY5LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyNzA6XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfZHNfMTFuX3R4X2NmZyAqdHhjZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM9Mjk4PWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzoyOTk6bXdpZmlleF9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzAwOlxcdFxcdFxcdCAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMDEtXFx0XFx0XFx0ICAgdTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMwMzpcXHRzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCAqaHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDQ6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvICpodF9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDU6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfY2hhbl9saXN0X3BhcmFtX3NldCAqY2hhbl9saXN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMDY6XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICpic3NfY29fMjA0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzA3OlxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCAqZXh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzA4LVxcdGludCByZXRfbGVuID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMxNjpcXHRyYWRpb190eXBlID0gbXdpZmlleF9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KSBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTctXFx0c2JhbmQgPSBwcml2LVxcdTAwM2V3ZGV2LndpcGh5LVxcdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMTktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjMyMDpcXHRcXHRodF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXAgKikgKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzIxOlxcdFxcdG1lbXNldChodF9jYXAsIDAsIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGNhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zMjItXFx0XFx0aHRfY2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX0hUX0NBUEFCSUxJVFkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNC1cXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzI1OlxcdFxcdG1lbWNweSgodTggKikgaHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMyNi1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozMjk6XFx0XFx0bXdpZmlleF9maWxsX2NhcF9pbmZvKHByaXYsIHJhZGlvX3R5cGUsIFxcdTAwMjZodF9jYXAtXFx1MDAzZWh0X2NhcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzMC1cXHRcXHQvKiBVcGRhdGUgSFQ0MCBjYXBhYmlsaXR5IGZyb20gY3VycmVudCBjaGFubmVsIGluZm9ybWF0aW9uICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzMzLVxcdFxcdFxcdHU4IHJhZGlvID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzM0OlxcdFxcdFxcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTMzNS1cXHRcXHRcXHRpbnQgZnJlcSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjM6XFx0XFx0KmJ1ZmZlciArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozNjQ6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRjYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zNjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM2OC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzY5OlxcdFxcdFxcdGh0X2luZm8gPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3MC1cXHRcXHRcXHRtZW1zZXQoaHRfaW5mbywgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6MzcxOlxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfaHRpbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM3Mi1cXHRcXHRcXHRodF9pbmZvLVxcdTAwM2VoZWFkZXIudHlwZSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzc4LVxcdFxcdFxcdG1lbWNweSgodTggKikgaHRfaW5mbyArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM3OTpcXHRcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4MC1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6Mzg5OlxcdFxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2h0aW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5MDpcXHRcXHRcXHRyZXRfbGVuICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19odGluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTM5My1cXHRcXHRjaGFuX2xpc3QgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzozOTQ6XFx0XFx0XFx0KHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2NoYW5fbGlzdF9wYXJhbV9zZXQgKikgKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk1LVxcdFxcdG1lbXNldChjaGFuX2xpc3QsIDAsIHN0cnVjdF9zaXplKGNoYW5fbGlzdCwgY2hhbl9zY2FuX3BhcmFtLCAxKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtMzk3LVxcdFxcdGNoYW5fbGlzdC1cXHUwMDNlaGVhZGVyLmxlbiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjM5ODpcXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IG13aWZpZXhfY2hhbl9zY2FuX3BhcmFtX3NldCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy0zOTktXFx0XFx0Y2hhbl9saXN0LVxcdTAwM2VjaGFuX3NjYW5fcGFyYW1bMF0uY2hhbl9udW1iZXIgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQwMS1cXHRcXHRjaGFuX2xpc3QtXFx1MDAzZWNoYW5fc2Nhbl9wYXJhbVswXS5yYWRpb190eXBlID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDAyOlxcdFxcdFxcdG13aWZpZXhfYmFuZF90b19yYWRpb190eXBlKCh1OCkgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxNi1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJjbl9ic3NfY29fMjA0MCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MTc6XFx0XFx0YnNzX2NvXzIwNDAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfMjA0MGJzc2NvICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQxOC1cXHRcXHRtZW1zZXQoYnNzX2NvXzIwNDAsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQxOTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3NjbykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjAtXFx0XFx0YnNzX2NvXzIwNDAtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfQlNTX0NPRVhfMjA0MCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDI0LVxcdFxcdG1lbWNweSgodTggKikgYnNzX2NvXzIwNDAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0MjU6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MjYtXFx0XFx0ICAgICAgIGJzc19kZXNjLVxcdTAwM2ViY25fYnNzX2NvXzIwNDAgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDMwOlxcdFxcdCpidWZmZXIgKz0gc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzXzIwNDBic3Njbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzMTpcXHRcXHRyZXRfbGVuICs9IHNpemVvZihzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc18yMDQwYnNzY28pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQzNS1cXHRcXHRoZHIgPSAodm9pZCAqKWJzc19kZXNjLVxcdTAwM2ViY25fZXh0X2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDM2OlxcdFxcdGV4dF9jYXAgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwICopICpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQzNzpcXHRcXHRtZW1zZXQoZXh0X2NhcCwgMCwgc2l6ZW9mKHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2V4dGNhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00MzgtXFx0XFx0ZXh0X2NhcC1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9FWFRfQ0FQQUJJTElUWSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTE6XFx0XFx0KmJ1ZmZlciArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSArIGhkci1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NTI6XFx0XFx0cmV0X2xlbiArPSBzaXplb2Yoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZXh0Y2FwKSArIGhkci1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ2MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDYyOnN0YXRpYyBpbnQgbXdpZmlleF9pc190eF9iYV9zdHJlYW1fcHRyX3ZhbGlkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jOjQ2MzpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF90eF9iYV9zdHJlYW1fdGJsICp0eF90YmxfcHRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy00NjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo0NjU6XFx0c3RydWN0IG13aWZpZXhfdHhfYmFfc3RyZWFtX3RibCAqdHhfYmFfdHNyX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNDY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgxOnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX3R4X2JhX3N0cmVhbV90YmxfZW50cnkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDgyOlxcdFxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90YmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4NC1cXHRpZiAoIXR4X2JhX3Rzcl90YmwgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg1OlxcdCAgICBtd2lmaWV4X2lzX3R4X2JhX3N0cmVhbV9wdHJfdmFsaWQocHJpdiwgdHhfYmFfdHNyX3RibCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ni1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDg4OlxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ4OS1cXHRcXHQgICAgXFxcImluZm86IHR4X2JhX3Rzcl90YmwgJXBcXFxcblxcXCIsIHR4X2JhX3Rzcl90YmwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTQ5OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NDk5OnZvaWQgbXdpZmlleF8xMW5fZGVsZXRlX2FsbF90eF9iYV9zdHJlYW1fdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTAyOlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKmRlbF90YmxfcHRyLCAqdG1wX25vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01MDYtXFx0XFx0XFx0XFx0IFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX3B0ciwgbGlzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTA3OlxcdFxcdG13aWZpZXhfMTFuX2RlbGV0ZV90eF9iYV9zdHJlYW1fdGJsX2VudHJ5KHByaXYsIGRlbF90YmxfcHRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTA4LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9iYV9zdHJlYW1fdGJsX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTIxOnN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYzo1MjI6bXdpZmlleF9nZXRfYmFfdGJsKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGludCB0aWQsIHU4ICpyYSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmMtNTIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuLmM6NTI0OlxcdHN0cnVjdCBtd2lmaWV4X3R4X2JhX3N0cmVhbV90YmwgKnR4X2JhX3Rzcl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbi5jLTUyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW4uYy01NDEtICovXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjQxLjQyOTY4NTUzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUzNzQ0MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gSSBrbm93IGl0J3MgbG9jYXRlZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbGAsIGJ1dCB0aGUgc3BlY2lmaWNzIGFyZSB3aGF0IEknbSBhZnRlci4gTXkgcGxhbiBpcyB0byBqdW1wIGRpcmVjdGx5IGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIGFsbCB0aGUgY29uZGl0aW9uYWwgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVzY3JpcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIEl0J2xsIGdpdmUgbWUgdGhlIGV4YWN0IGluZm9ybWF0aW9uIEkgbmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0My4zODM0MzMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAgMzpcXHRcXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUFSVkVMTFxcbiAgMTQ6XFx0XFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9LY29uZmlnXFxcIlxcbiAgMTc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1xcXCJcXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1XTDhLXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsIFRPUERPRyA4MDIuMTEgd2lyZWxlc3MgY2FyZHMuXFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgMjY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtd2w4ay4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNzpcXHRcXG4gIDI4OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0My4zODM1NTU3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjE1MTAzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4gVGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSBhbGwgaXRzIGNhbGxlcnMgYW5kIGlkZW50aWZ5IGFueSBvdGhlciByZWxldmFudCBlbnRyeSBwb2ludHMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBNeSBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIHdpbGwgcXVpY2tseSByZXZlYWwgd2hhdCdzIGRyaXZpbmcgdGhlIG5lZWQgZm9yIHRoaXMgcGFydGljdWxhciBzdGF0dXMgcmV0cmlldmFsLlxuXG5SaWdodCwgbGV0J3MgemVybyBpbiBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmVzIDEzNTAtMTM3MC4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIGNvbmNyZXRlIGV4YW1wbGVzIG9mIHdoZXJlIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQsIGFuZCB3aGF0IGRhdGEgaXQncyBkZWFsaW5nIHdpdGggaW4gdGhvc2Ugc3BlY2lmaWMgc2NlbmFyaW9zLiBJJ20gZXhwZWN0aW5nIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSB0byBjb250YWluIHRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBJIG5lZWQuIEknbSBpbnRlcmVzdGVkIGluIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhcyBtdWNoIGFzIHRoZSBkaXJlY3QgY2FsbHMuIFRoaXMgbGV2ZWwgb2YgZGV0YWlsIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTQ2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMjo0NS45OTg2NjM0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM1MDpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBDTUQsIFxcXCJjbWQ6IGN1cnJfdHhfYnVmX3NpemU9JWRcXFxcblxcXCIsXFxuMTM1MTpcXHRcXHRcXHRcXHQgICAgYWRhcHRlci1cXHUwMDNlY3Vycl90eF9idWZfc2l6ZSk7XFxuMTM1MjpcXHRcXG4xMzUzOlxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VpZl9vcHMudXBkYXRlX21wX2VuZF9wb3J0KVxcbjEzNTQ6XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlaWZfb3BzLnVwZGF0ZV9tcF9lbmRfcG9ydChhZGFwdGVyLFxcbjEzNTU6XFx0XFx0XFx0XFx0XFx0bGUxNl90b19jcHUocmVzcC1cXHUwMDNlcGFyYW1zLnR4X2J1Zi5tcF9lbmRfcG9ydCkpO1xcbjEzNTY6XFx0XFx0XFx0YnJlYWs7XFxuMTM1NzpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0FNU0RVX0FHR1JfQ1RSTDpcXG4xMzU4OlxcdFxcdFxcdGJyZWFrO1xcbjEzNTk6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9XTU1fR0VUX1NUQVRVUzpcXG4xMzYwOlxcdFxcdFxcdHJldCA9IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHByaXYsIHJlc3ApO1xcbjEzNjE6XFx0XFx0XFx0YnJlYWs7XFxuMTM2MjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9JQlNTX0NPQUxFU0NJTkdfU1RBVFVTOlxcbjEzNjM6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfaWJzc19jb2FsZXNjaW5nX3N0YXR1cyhwcml2LCByZXNwKTtcXG4xMzY0OlxcdFxcdFxcdGJyZWFrO1xcbjEzNjU6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9NRU1fQUNDRVNTOlxcbjEzNjY6XFx0XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfbWVtX2FjY2Vzcyhwcml2LCByZXNwLCBkYXRhX2J1Zik7XFxuMTM2NzpcXHRcXHRcXHRicmVhaztcXG4xMzY4OlxcdFxcdGNhc2UgSG9zdENtZF9DTURfTUFDX1JFR19BQ0NFU1M6XFxuMTM2OTpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0JCUF9SRUdfQUNDRVNTOlxcbjEzNzA6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9SRl9SRUdfQUNDRVNTOlxcbjEzNzE6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF9QTUlDX1JFR19BQ0NFU1M6XFxuMTM3MjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX0NBVV9SRUdfQUNDRVNTOlxcbjEzNzM6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfRUVQUk9NX0FDQ0VTUzpcXG4xMzc0OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfcmV0X3JlZ19hY2Nlc3MoY21kcmVzcF9ubywgcmVzcCwgZGF0YV9idWYpO1xcbjEzNzU6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NjpcXHRcXHRjYXNlIEhvc3RDbWRfQ01EX1NFVF9CU1NfTU9ERTpcXG4xMzc3OlxcdFxcdFxcdGJyZWFrO1xcbjEzNzg6XFx0XFx0Y2FzZSBIb3N0Q21kX0NNRF8xMU5fQ0ZHOlxcbjEzNzk6XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjQ1Ljk5ODgxMjg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NTE1MTgyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkndmUgZ290IGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgYnkgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgYWN0dWFsbHkgaW52b2tlZC4gU28sIEkgbmVlZCB0byBnbyBodW50IHRoYXQgZnVuY3Rpb24gZG93biB3aXRoIGEgcXVpY2sgc2VhcmNoLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgYnVpbGQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ2NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzI6NTEuOTUwMzMyOTk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ2NDI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9ODAzPWludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTg5MS1cXHRcXHQvKiBoYW5kbGUgcmVzcG9uc2UgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6ODkyOlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChwcml2LCBjbWRyZXNwX25vLCByZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODkzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEzND1pbnQgbXdpZmlleF91YXBfcHJlcGFyZV9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdWludDE2X3QgY21kX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTM2LVxcdFxcdFxcdCAgICB2b2lkICpkYXRhX2J1Ziwgdm9pZCAqY21kX2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTM3OmludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1MTYgY21kcmVzcF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTE5MD1zdGF0aWMgaW50IG13aWZpZXhfcmV0X2dldF9jaGFuX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTEtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTIxMjppbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMTMtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMyOjUyLjA0NTgwMTg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTUwMzcyODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBDb21tYW5kIFJlc3BvbnNlIEhhbmRsaW5nIGluIG13aWZpZXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBtd2lmaWV4YCBkcml2ZXIgcHJvY2Vzc2VzIGNvbW1hbmQgcmVzcG9uc2VzLiBJIGtub3cgdGhhdCBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgaXQncyB0aGUgb25lIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgdGhvc2UgcmVzcG9uc2VzIHRoYXQgYXJlIGNvbWluZyBpbiBmcm9tIHRoZSBkZXZpY2UuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgYXJlIHRob3NlIHJlc3BvbnNlcyAqcmVjZWl2ZWQqIGluIHRoZSBmaXJzdCBwbGFjZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgaGFuZGxlZCBvdmVyIFVTQiwgd2hpY2ggbWVhbnMgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIFVTQi1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgZHJpdmVyLlxuXG5UaGVyZWZvcmUsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgcmVjZWl2ZSBmdW5jdGlvbnMuIFRoZSBjb21tZW50cyBwb2ludCB0b3dhcmQgYG13aWZpZXhfdXNiX3JlY3ZgIGFuZCBgbXdpZmlleF91c2JfcnhfY29tcGxldGVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gd2hlcmUgdGhlc2UgYXJlIGludm9rZWQgZnJvbS4gU28sIEkgbmVlZCB0byBvcGVuIHRoZSBzb3VyY2UgY29kZSBmb3IgYG13aWZpZXhfdXNiLmNgIChvciBwb3RlbnRpYWxseSBgdXNiLmNgIHdpdGhpbiB0aGUgYG13aWZpZXhgIGRpcmVjdG9yeSkgYW5kIHN0YXJ0IHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gVGhhdCB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjEyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MDAuOTk2MTc3NjUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc4MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz03NDE9aW50IG13aWZpZXhfZXhlY19uZXh0X2NtZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTgwMi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6ODAzOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTEwODU9bXdpZmlleF9jYW5jZWxfcGVuZGluZ19pb2N0bChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTMtXFx0XFx0Lyogc2V0dGluZyBjdXJyX2NtZCB0byBOVUxMIGlzIHF1aXRlIGRhbmdlcm91cywgYmVjYXVzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzoxMDk0OlxcdFxcdCAqIG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwIGNoZWNrcyBjdXJyX2NtZCB0byBiZSAhPSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTEwOTUtXFx0XFx0ICogYXQgdGhlIGJlZ2lubmluZyB0aGVuIHJlbGllcyBvbiBpdCBhbmQgZGVyZWZlcmVuY2VzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTI0OD1pbnQgbXdpZmlleF9tYWluX3Byb2Nlc3Moc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU2LVxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTc6XFx0XFx0XFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3AoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTAwPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTAxOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDItdm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTMxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MzI6bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3Ioc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0zMy1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjAtXFx0aWYgKHJlc3AtXFx1MDAzZXJlc3VsdCAhPSBIb3N0Q21kX1JFU1VMVF9PSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMjE6XFx0XFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3BfZXJyb3IocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIyMi1cXHRcXHRyZXR1cm4gLTE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjAxLjA1Nzk2NTE1MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTYzMzAyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYC4gVGhpcyBmdW5jdGlvbiBnZXRzIGV4ZWN1dGVkIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYSBXTU1fR0VUX1NUQVRVUyByZXNwb25zZSBmcm9tIHRoZSBmaXJtd2FyZS4gQmVjYXVzZSB0aGlzIGRyaXZlciwgYG13aWZpZXhgLCB1c2VzIGEgVVNCIGJ1cyBpbnRlcmZhY2UgKGBNV0lGSUVYX1VTQmApLCBpdCdzIGFjY2Vzc2libGUgd2l0aGluIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgSSdtIHVzaW5nLCB0aGFua3MgdG8gVVNCIGRldmljZSBlbXVsYXRpb24gdXNpbmcgdG9vbHMgbGlrZSByYXctZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHVzYi1mdXp6ZXIuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZz9cblxuTGV0J3MgYnJlYWsgaXQgZG93biBiYXNlZCBvbiB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWEuIFNlY3Rpb24gMyBzYXlzOlxuXG4qICAgKipSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOioqIFNwZWNpZmljYWxseSwgZHJpdmVycyByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIHdoaWNoIHRoaXMgKmFic29sdXRlbHkqIGlzLCBnaXZlbiBpdHMgVVNCIGludGVyZmFjZS4gQ2hlY2suXG4qICAgKipSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6KiogV2UgbmVlZCB0byBsb29rIGF0IGFueSBib3VuZHMgY2hlY2tzIG9yIGRlZmVuc2l2ZSB2YWxpZGF0aW9uLCBlc3BlY2lhbGx5IGZvciBkZXZpY2Utc3VwcGxpZWQgVExWcy4gVGhpcyBmdW5jdGlvbiBkZWZpbml0ZWx5IGhhbmRsZXMgZGF0YSBmcm9tIHRoZSBmaXJtd2FyZSwgc28gdGhlcmUncyBsaWtlbHkgc29tZSB2YWxpZGF0aW9uIGhhcHBlbmluZyBoZXJlLiBDaGVjay5cblxuVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgPSBUcnVlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldHMgYW5kIHRoZWlyIGNvbnRleHQuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AsIGlzIHRoZSBwcmltYXJ5IGZvY3VzLiBBZGRpdGlvbmFsbHksIGl0cyBjYWxsZXIsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgLCBpcyBhbHNvIHJlbGV2YW50LiBXZSBrbm93IHRoYXQgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBpcyBhIG5vbi1zdGF0aWMgQyBmdW5jdGlvbiByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgc3ltYm9sIHRoYXQgY2FuIGJlIHJlYWNoZWQsIGFuZCB5ZXMsIGl0IGlzIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBhczogYGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClgLiBFeGNlbGxlbnQuIEFuZCBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCBpcywgYXMgZXhwZWN0ZWQsIGluIGBzdGFfY21kcmVzcC5jYC5cblxuTmV4dCwgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQga2VybmVsIG1vZHVsZXMgZW5hYmxlZCB0byBtYWtlIHRoaXMgZnVuY3Rpb24gcmVhY2hhYmxlOlxuXG4qICAgYE1XSUZJRVhgXG4qICAgYE1XSUZJRVhfVVNCYFxuKiAgIGBDRkc4MDIxMWBcbiogICBgVVNCYFxuKiAgIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYFxuXG5MZXQncyB2ZXJpZnkgYFdMQU5fVkVORE9SX01BUlZFTExgJ3MgZGVwZW5kZW5jaWVzOiBJIGNhbiBzZWUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AgdGhhdCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW5jbHVkZXMgYG13aWZpZXgvS2NvbmZpZ2AsIGFuZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYDogYE1XSUZJRVhgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgYW5kIGBNV0lGSUVYX1VTQmAgZGVwZW5kcyBvbiBgTVdJRklFWCBcdTAwMjZcdTAwMjYgVVNCYC4gQWxyaWdodCwgdGhhdCBsb29rcyBzb3VuZC4gSXQncyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGVuc3VyZSBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MDYuNjIxMjcwNTI5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE0NDU4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX0lOVEVSU0lMKSArPSBpbnRlcnNpbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTk9Y29uZmlnIE1XTDhLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI4OmVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzowNi43NTI3MjQwNjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTMwOTg4MjczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBNYXJ2ZWxsIFdMQU4gZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXI6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIHdpcmVsZXNzIGRldmljZSBjb25maWd1cmF0aW9ucyBhcmUgaG91c2VkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc2VjdGlvbiByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYC4gVGhhdCB2YXJpYWJsZSBpcyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgTWFydmVsbCBkcml2ZXIuIFRoaXMgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoZSBNYXJ2ZWxsIGRyaXZlciBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaG9wZWZ1bGx5LCBzb21lIGhlbHBmdWwgY29tbWVudHMgdG8gZ3VpZGUgbXkgdW5kZXJzdGFuZGluZy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6MTkuODUxNTUzODM0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM3OTg0NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX0lOVEVSU0lMKSArPSBpbnRlcnNpbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc9MTk9Y29uZmlnIE1XTDhLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI4OmVuZGlmICMgV0xBTl9WRU5ET1JfTUFSVkVMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzoyMC4zMjUzNTk3MjhaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzQ3ODAyNzQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIFdMQU4gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlcXVpcmVtZW50cyBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gV0xBTi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgbmV0d29yayBkZXZpY2VzIGFyZSBkZWZpbmVkLCBzbyBpdCdzIGEgbG9naWNhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgV0xBTiBpdHNlbGYsIGFzIGEgZm91bmRhdGlvbmFsIGNvbmNlcHQsIGhhcyBhbnkgaGFyZCBkZXBlbmRlbmNpZXMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZi4gVGhpcyBzaG91bGQgdGVsbCBtZSB3aGF0IEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU2NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjI3LjgwMzM5MDU1N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjIwMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbWFydmVsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yNj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzoyNzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTI4LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZzoxNTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWc6MTY6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjE3OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzoyNy45NTAwMTUxMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcwMjYzMTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmVzIDEgdGhyb3VnaCAzNSwgd2hpY2ggdXN1YWxseSBjb250YWlucyB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGVudGlyZSB3aXJlbGVzcyBzdWJzeXN0ZW0gb3IgbWFqb3IgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMuIEkgYW50aWNpcGF0ZSBzZWVpbmcgdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBcIldpcmVsZXNzIE5ldHdvcmtpbmdcIiBlbnRyeSBpdHNlbGYsIHRoZSBnYXRld2F5IHRvIGV2ZXJ5dGhpbmcgZWxzZSB3aXJlbGVzcy5cbiogICBQb3RlbnRpYWxseSwgd2hldGhlciBjZXJ0YWluIG1ham9yIHdpcmVsZXNzIHByb3RvY29scyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGNvbmZpZ3VyYWJsZS5cbiogICBPcHRpb25zIHRvIGNob29zZSBiZXR3ZWVuIGRpZmZlcmVudCB3aXJlbGVzcyBzdGFja3MsIGlmIHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZXhpc3RzIGluIHRoaXMga2VybmVsIHZlcnNpb24uXG4qICAgRGVmaW5lcyBmb3IgYnJvYWQgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eSwgbGlrZSBzdXBwb3J0IGZvciBjZXJ0YWluIGZyZXF1ZW5jeSBiYW5kcyBvciBkZXZpY2UgdHlwZXMuXG4qICAgQmFzaWMgaGVscCB0ZXh0IGV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgbWF5YmUgYSBmZXcga2V5IGNvbmZpZ3VyYXRpb25zLlxuXG5HaXZlbiB0aGUgbGluZSByYW5nZSwgSSBleHBlY3QgdGhpcyBzZWN0aW9uIHRvIGxheSB0aGUgZ3JvdW5kd29yayBhbmQgc2V0IHRoZSBvdmVyYWxsIGRpcmVjdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBkZXNpZ25lcnMgcHJpb3JpdGl6ZWQgYXMgaW1wb3J0YW50IHRvIGV4cG9zZSB0byBlbmQgdXNlcnMgYW5kIGRldmVsb3BlcnMgYXQgdGhlIGluaXRpYWwgbGV2ZWwuIEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgYnJhbmNoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjMwLjY1MjY0OTAwOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjMwLjY1MjcxMzA4OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTEzNzMwNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFRoaXMgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkndmUgZ290IGEgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZmluZGluZy4gRXNzZW50aWFsbHksIHRoZXJlJ3MgYSBib3VuZHMgY2hlY2sgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgIGZ1bmN0aW9uLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGV5J3ZlIGlkZW50aWZpZWQgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AsIG1lYW5pbmcgaXQgcHJldmVudHMgb3V0LW9mLWJvdW5kcyBhcnJheSBpbmRleGluZyBpbiBgcHJpdi1cdTAwM2V3bW0uYWNfc3RhdHVzYCwgd2hpY2ggSSBsaWtlIHRvIHNlZS5cblxuTm93LCB0aGUgcmVhbGx5IGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIHBvdGVudGlhbCBmb3IgZnV6emluZy4gVGhlIGZhY3QgdGhhdCB0aGUgYG13aWZpZXhgIGRyaXZlciBpcyBhY2Nlc3NpYmxlIHZpYSBgTVdJRklFWF9VU0JgIChVU0IgZ2FkZ2V0L3ZIQ0kgZW11bGF0aW9uKSBpcyBrZXkuIFRoYXQgbWVhbnMgd2UgY2FuIHNlbmQgZmlybXdhcmUgY29tbWFuZCByZXNwb25zZXMsIG1ha2luZyB0aGlzIGZ1enphYmxlLiBUaGF0IGFsc28gbWFrZXMgdGhpcyBtdWNoIG1vcmUgZXhjaXRpbmcuXG5cblRvIGJlIGNsZWFyIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcywgaGVyZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50LCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIFRob3NlIGFyZSB0aGUgb25lcyB0byBmb2N1cyBvbi5cblxuVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzYCBhbmQgYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAuXG5cbkZpbmFsbHksIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGFuZCwgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGFsbCB0aGVyZSwgc28gSSBhbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODMxLCJPdXRwdXRUb2tlbnMiOjE3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjE2NjQ0NjMyM1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mzg5MTg1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c1wiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c1wiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpIHRvIHZhbGlkYXRlIHF1ZXVlX2luZGV4IGJlZm9yZSBpbmRleGluZyBpbnRvIHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXMuIFRoZSBtd2lmaWV4IGRyaXZlciBzdXBwb3J0cyBVU0ItYmFzZWQgZGV2aWNlcyAoQ09ORklHX01XSUZJRVhfVVNCKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjMxMDM0OTYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY5NDkyMjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjM4LjMxMTIxNjI2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE3Njk0MDUwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGFycmF5IGJvdW5kcyBjaGVjayBvbiBgdGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VxdWV1ZV9pbmRleGAgYWdhaW5zdCBgSUVFRTgwMjExX05VTV9BQ1NgIGJlZm9yZSBhY2Nlc3NpbmcgYHByaXYtXFx1MDAzZXdtbS5hY19zdGF0dXNbLi4uXWAgaW4gYG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKClgLiBUaGlzIGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAvIGJ1ZmZlciBvdmVyZmxvdyBpc3N1ZSwgd2hpY2ggaXMgcHJvcGVybHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGFsdGVyLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGNvcGllcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczYjQwNDA3OTlkMTlkYzYyNzk3YzFiYjkwNjZhZjhkMjczNTk4MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjMyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG5pbmRleCA4NDE1MDVlODNjN2ZkLi5mZWJlYTY4NDg3ZTg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcbkBAIC05NDMsNiArOTQzLDggQEAgaW50IG13aWZpZXhfcmV0X3dtbV9nZXRfc3RhdHVzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWZsb3dfcmVxdWlyZWQsXG4gXHRcdFx0XHQgICAgdGx2X3dtbV9xc3RhdHVzLVx1MDAzZWRpc2FibGVkKTtcbiBcbitcdFx0XHRpZiAodGx2X3dtbV9xc3RhdHVzLVx1MDAzZXF1ZXVlX2luZGV4IFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXG4rXHRcdFx0XHRicmVhaztcbiBcdFx0XHRhY19zdGF0dXMgPSBcdTAwMjZwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNbdGx2X3dtbV9xc3RhdHVzLVx1MDAzZVxuIFx0XHRcdFx0XHRcdFx0IHF1ZXVlX2luZGV4XTtcbiBcdFx0XHRhY19zdGF0dXMtXHUwMDNlZGlzYWJsZWQgPSB0bHZfd21tX3FzdGF0dXMtXHUwMDNlZGlzYWJsZWQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzozOC4zMTEyMTkyNDlaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM3MDA2ODkwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQ29kZTogV01NIENvbnRleHQqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGFuYWx5emluZyB0aGlzIHBhdGNoLCBidXQgZmlyc3QsIEkgbmVlZCBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNgIGFyb3VuZCBsaW5lIDk0My4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgV01NIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSwgc28gaXQncyBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoZSBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcGxhY2UsIGFuZCB1c2luZyB0aGF0IGluIGNvbmp1bmN0aW9uIHdpdGggYSBzb3VyY2UgY29kZSBicm93c2VyIG9yIGRlYnVnZ2VyIHdpbGwgcXVpY2tseSBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gVGhpcyB3YXkgSSBjYW4gc2VlIGV4YWN0bHkgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGludGVyYWN0cyB3aXRoIHRoZSBjaGFuZ2VkIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjMzOjQyLjY4MTI5MTAzOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3dtbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkyMDpcXHRcXHRzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICp3bW1fcGFyYW1faWUgPSBOVUxMO1xcbiA5MjE6XFx0XFx0c3RydWN0IG13aWZpZXhfd21tX2FjX3N0YXR1cyAqYWNfc3RhdHVzO1xcbiA5MjI6XFx0XFxuIDkyMzpcXHRcXHRtd2lmaWV4X2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBJTkZPLFxcbiA5MjQ6XFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBXTU06IFdNTV9HRVRfU1RBVFVTIGNtZHJlc3AgcmVjZWl2ZWQ6ICVkXFxcXG5cXFwiLFxcbiA5MjU6XFx0XFx0XFx0ICAgIHJlc3BfbGVuKTtcXG4gOTI2OlxcdFxcbiA5Mjc6XFx0XFx0d2hpbGUgKChyZXNwX2xlbiBcXHUwMDNlPSBzaXplb2YodGx2X2hkci1cXHUwMDNlaGVhZGVyKSkgXFx1MDAyNlxcdTAwMjYgdmFsaWQpIHtcXG4gOTI4OlxcdFxcdFxcdHRsdl9oZHIgPSAoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqKSBjdXJyO1xcbiA5Mjk6XFx0XFx0XFx0dGx2X2xlbiA9IGxlMTZfdG9fY3B1KHRsdl9oZHItXFx1MDAzZWhlYWRlci5sZW4pO1xcbiA5MzA6XFx0XFxuIDkzMTpcXHRcXHRcXHRpZiAocmVzcF9sZW4gXFx1MDAzYyB0bHZfbGVuICsgc2l6ZW9mKHRsdl9oZHItXFx1MDAzZWhlYWRlcikpXFxuIDkzMjpcXHRcXHRcXHRcXHRicmVhaztcXG4gOTMzOlxcdFxcbiA5MzQ6XFx0XFx0XFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHZfaGRyLVxcdTAwM2VoZWFkZXIudHlwZSkpIHtcXG4gOTM1OlxcdFxcdFxcdGNhc2UgVExWX1RZUEVfV01NUVNUQVRVUzpcXG4gOTM2OlxcdFxcdFxcdFxcdHRsdl93bW1fcXN0YXR1cyA9XFxuIDkzNzpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfd21tX3F1ZXVlX3N0YXR1cyAqKVxcbiA5Mzg6XFx0XFx0XFx0XFx0XFx0dGx2X2hkcjtcXG4gOTM5OlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIENNRCxcXG4gOTQwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW5mbzogQ01EX1JFU1A6IFdNTV9HRVRfU1RBVFVTOlxcXFx0XFxcIlxcbiA5NDE6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJRU1RBVFVTIFRMVjogJWQsICVkLCAlZFxcXFxuXFxcIixcXG4gOTQyOlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbiA5NDM6XFx0XFx0XFx0XFx0XFx0ICAgIHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZmxvd19yZXF1aXJlZCxcXG4gOTQ0OlxcdFxcdFxcdFxcdFxcdCAgICB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWRpc2FibGVkKTtcXG4gOTQ1OlxcdFxcbiA5NDY6XFx0XFx0XFx0XFx0aWYgKHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXggXFx1MDAzZT0gSUVFRTgwMjExX05VTV9BQ1MpXFxuIDk0NzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gOTQ4OlxcdFxcdFxcdFxcdGFjX3N0YXR1cyA9IFxcdTAwMjZwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzW3Rsdl93bW1fcXN0YXR1cy1cXHUwMDNlXFxuIDk0OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcXVldWVfaW5kZXhdO1xcbiA5NTA6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VkaXNhYmxlZCA9IHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlZGlzYWJsZWQ7XFxuIDk1MTpcXHRcXHRcXHRcXHRhY19zdGF0dXMtXFx1MDAzZWZsb3dfcmVxdWlyZWQgPVxcbiA5NTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dGx2X3dtbV9xc3RhdHVzLVxcdTAwM2VmbG93X3JlcXVpcmVkO1xcbiA5NTM6XFx0XFx0XFx0XFx0YWNfc3RhdHVzLVxcdTAwM2VmbG93X2NyZWF0ZWQgPSB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZWZsb3dfY3JlYXRlZDtcXG4gOTU0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA5NTU6XFx0XFxuIDk1NjpcXHRcXHRcXHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcXG4gOTU3OlxcdFxcdFxcdFxcdC8qXFxuIDk1ODpcXHRcXHRcXHRcXHQgKiBQb2ludCB0aGUgcmVndWxhciBJRUVFIElFIDIgYnl0ZXMgaW50byB0aGUgTWFydmVsbCBJRVxcbiA5NTk6XFx0XFx0XFx0XFx0ICogICBhbmQgc2V0dXAgdGhlIElFRUUgSUUgdHlwZSBhbmQgbGVuZ3RoIGJ5dGUgZmllbGRzXFxuIDk2MDpcXHRcXHRcXHRcXHQgKi9cXG4gOTYxOlxcdFxcbiA5NjI6XFx0XFx0XFx0XFx0d21tX3BhcmFtX2llID1cXG4gOTYzOlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZV90eXBlc193bW1fcGFyYW1ldGVyICopIChjdXJyICtcXG4gOTY0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAyKTtcXG4gOTY1OlxcdFxcdFxcdFxcdHdtbV9wYXJhbV9pZS1cXHUwMDNldmVuZF9oZHIubGVuID0gKHU4KSB0bHZfbGVuO1xcbiA5NjY6XFx0XFx0XFx0XFx0d21tX3BhcmFtX2llLVxcdTAwM2V2ZW5kX2hkci5lbGVtZW50X2lkID1cXG4gOTY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQztcXG4gOTY4OlxcdFxcbiA5Njk6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo0Mi42ODE0NzYyOThaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg5MDIwNTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIGFuZCB0aGUgQnVnIEZpeCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXNgLCBpcyBkb2luZyBhbmQsIGNydWNpYWxseSwgd2hhdCBwcm9ibGVtIGl0J3MgYWRkcmVzc2luZy4gVGhlIGJ1ZyBmaXggZG9jdW1lbnRhdGlvbiBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIGFsd2F5cyBwcmVmZXIgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIGNvZGUgaXRzZWxmIGZpcnN0LiBVbmRlcnN0YW5kaW5nIHRoZSAqY29udGV4dCogb2YgdGhlIGZpeCBpcyB2aXRhbC4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUsIGFuZCB3aGljaCB2YXJpYWJsZXMgYXJlIHBhc3NlZCB0byBpdC4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1c2AgYW5kIHNlZSB3aGF0IGl0IGhhcyB0byBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MzM6NDYuNTcxNjg2NTYzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvd21tLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTAwOlxcdCAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBnZXQgV01NIHN0YXR1cyBjb21tYW5kIHJlc3BvbnNlIGZyb20gZmlybXdhcmUuXFxuIDkwMTpcXHQgKlxcbiA5MDI6XFx0ICogVGhlIHJlc3BvbnNlIG1heSBjb250YWluIG11bHRpcGxlIFRMVnMgLVxcbiA5MDM6XFx0ICogICAgICAtIEFDIFF1ZXVlIHN0YXR1cyBUTFZzXFxuIDkwNDpcXHQgKiAgICAgIC0gQ3VycmVudCBXTU0gUGFyYW1ldGVyIElFIFRMVlxcbiA5MDU6XFx0ICogICAgICAtIEFkbWlzc2lvbiBDb250cm9sIGFjdGlvbiBmcmFtZSBUTFZzXFxuIDkwNjpcXHQgKlxcbiA5MDc6XFx0ICogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFRMVnMgYW5kIHRoZW4gY2FsbHMgZnVydGhlciBzcGVjaWZpYyBmdW5jdGlvbnNcXG4gOTA4OlxcdCAqIHRvIHByb2Nlc3MgYW55IGNoYW5nZXMgaW4gdGhlIHF1ZXVlIHByaW9yaXRpemUgb3Igc3RhdGUuXFxuIDkwOTpcXHQgKi9cXG4gOTEwOlxcdGludCBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbiA5MTE6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbiA5MTI6XFx0e1xcbiA5MTM6XFx0XFx0dTggKmN1cnIgPSAodTggKikgXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5nZXRfd21tX3N0YXR1cztcXG4gOTE0OlxcdFxcdHVpbnQxNl90IHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlc2l6ZSksIHRsdl9sZW47XFxuIDkxNTpcXHRcXHRpbnQgbWFzayA9IElFRUU4MDIxMV9XTU1fSUVfQVBfUU9TSU5GT19QQVJBTV9TRVRfQ05UX01BU0s7XFxuIDkxNjpcXHRcXHRib29sIHZhbGlkID0gdHJ1ZTtcXG4gOTE3OlxcdFxcbiA5MTg6XFx0XFx0c3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2X2hkcjtcXG4gOTE5OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX3dtbV9xdWV1ZV9zdGF0dXMgKnRsdl93bW1fcXN0YXR1cztcXG4gOTIwOlxcdFxcdHN0cnVjdCBpZWVlX3R5cGVzX3dtbV9wYXJhbWV0ZXIgKndtbV9wYXJhbV9pZSA9IE5VTEw7XFxuIDkyMTpcXHRcXHRzdHJ1Y3QgbXdpZmlleF93bW1fYWNfc3RhdHVzICphY19zdGF0dXM7XFxuIDkyMjpcXHRcXG4gOTIzOlxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuIDkyNDpcXHRcXHRcXHQgICAgXFxcImluZm86IFdNTTogV01NX0dFVF9TVEFUVVMgY21kcmVzcCByZWNlaXZlZDogJWRcXFxcblxcXCIsXFxuIDkyNTpcXHRcXHRcXHQgICAgcmVzcF9sZW4pO1xcbiA5MjY6XFx0XFxuIDkyNzpcXHRcXHR3aGlsZSAoKHJlc3BfbGVuIFxcdTAwM2U9IHNpemVvZih0bHZfaGRyLVxcdTAwM2VoZWFkZXIpKSBcXHUwMDI2XFx1MDAyNiB2YWxpZCkge1xcbiA5Mjg6XFx0XFx0XFx0dGx2X2hkciA9IChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc19kYXRhICopIGN1cnI7XFxuIDkyOTpcXHRcXHRcXHR0bHZfbGVuID0gbGUxNl90b19jcHUodGx2X2hkci1cXHUwMDNlaGVhZGVyLmxlbik7XFxuIDkzMDpcXHRcXG4gOTMxOlxcdFxcdFxcdGlmIChyZXNwX2xlbiBcXHUwMDNjIHRsdl9sZW4gKyBzaXplb2YodGx2X2hkci1cXHUwMDNlaGVhZGVyKSlcXG4gOTMyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA5MzM6XFx0XFxuIDkzNDpcXHRcXHRcXHRzd2l0Y2ggKGxlMTZfdG9fY3B1KHRsdl9oZHItXFx1MDAzZWhlYWRlci50eXBlKSkge1xcbiA5MzU6XFx0XFx0XFx0Y2FzZSBUTFZfVFlQRV9XTU1RU1RBVFVTOlxcbiA5MzY6XFx0XFx0XFx0XFx0dGx2X3dtbV9xc3RhdHVzID1cXG4gOTM3OlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgbXdpZmlleF9pZV90eXBlc193bW1fcXVldWVfc3RhdHVzICopXFxuIDkzODpcXHRcXHRcXHRcXHRcXHR0bHZfaGRyO1xcbiA5Mzk6XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgQ01ELFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo0Ni41NzE4NTk4MzNaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTQzMzM4MjQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgaXQgYXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGJvdW5kcyBjaGVjay4gSXQncyBhZGRpbmcgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgYHRsdl93bW1fcXN0YXR1cy1cdTAwM2VxdWV1ZV9pbmRleGAgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBmb3IgdGhlIGBwcml2LVx1MDAzZXdtbS5hY19zdGF0dXNgIGFycmF5IGJlZm9yZSBhY2Nlc3NpbmcgaXQuIFRoZSBhcnJheSBpcyBzaXplZCBieSBgSUVFRTgwMjExX05VTV9BQ1NgLCB3aGljaCBpcyA0LiBXaXRob3V0IHRoaXMsIHdlJ2QgaGF2ZSBhIGNsYXNzaWMgYXJyYXkgaW5kZXhpbmcgdnVsbmVyYWJpbGl0eSDigJMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyB3cml0ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCB0aGF0LCB3aGljaCBpcyBnb29kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFzcGVjdCBJIG5lZWQgdG8gbG9vayBpbnRvPyBMZXQncyBzZWUuLi4gdGhlIGB0bHZfd21tX3FzdGF0dXNgIGRhdGEgY29tZXMgZnJvbSBhIGZpcm13YXJlIGNvbW1hbmQgcmVzcG9uc2UsIHNvIGl0J3MgaW5pdGlhbGl6ZWQgYnkgdGhlIGZpcm13YXJlLiBUaGUgYHF1ZXVlX2luZGV4YCBpdHNlbGYgaXMgKnRoZW4qIGNoZWNrZWQsIHNvIGlmIGl0J3Mgb3V0IG9mIGJvdW5kcywgdGhlIGNvZGUganVzdCBicmVha3MsIGFuZCBkb2Vzbid0IHdyaXRlIHRvIHRoZSBhcnJheS4gVGhlIGBhY19zdGF0dXNgIGFycmF5IGZpZWxkcyBhcmUgcG9wdWxhdGVkIGZyb20gYHRsdl93bW1fcXN0YXR1c2AuIFNlZW1zIGxpa2UgZXZlcnl0aGluZydzIGluaXRpYWxpemVkIGFuZCB0aGVyZSdzIG5vIHdheSB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBsZWFrIGluZm8sIG9yIGludHJvZHVjZSBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiBUaGlzIGlzIHB1cmVseSBhIGJvdW5kcyBjaGVjayBmb3IgdGhlIHdyaXRlLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBydWxlOiBcIlRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sIExPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXCIgVGhpcyBpcyBhbGwgS0FTQU4sIGFsbCBkYXkgbG9uZy4gQW5kLCBcIk5lZWRzS01TQU49ZmFsc2UgSUYuLi5UaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLi4udGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0IGJ5IEtBU0FOLi4uXCIuIFRoZSBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBhbmQgYWxsIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBJdCdzIGEgY2xlYW4sIGRlZmVuc2l2ZSBmaXguXG5cblNvLCB5ZWFoLCBnaXZlbiB0aGF0LCBgTmVlZHNLTVNBTmAgc2hvdWxkIGFic29sdXRlbHkgYmUgYGZhbHNlYC4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIG9uZSBsYXN0IHRpbWUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBhbmQgdGhlbiBJJ2xsIGdldCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbCByZWFkeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMwMywiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODozMzo1Ni4wMDUyNDUwNDhaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gYXJyYXkgYm91bmRzIGNoZWNrIG9uIGB0bHZfd21tX3FzdGF0dXMtXFx1MDAzZXF1ZXVlX2luZGV4YCBhZ2FpbnN0IGBJRUVFODAyMTFfTlVNX0FDU2AgYmVmb3JlIGFjY2Vzc2luZyBgcHJpdi1cXHUwMDNld21tLmFjX3N0YXR1c1suLi5dYCBpbiBgbXdpZmlleF9yZXRfd21tX2dldF9zdGF0dXMoKWAuIFRoaXMgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIC8gYnVmZmVyIG92ZXJmbG93IGlzc3VlLCB3aGljaCBpcyBwcm9wZXJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSwgYWx0ZXIsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgY29waWVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBhcnJheSBib3VuZHMgY2hlY2sgb24gYHRsdl93bW1fcXN0YXR1cy1cXHUwMDNlcXVldWVfaW5kZXhgIGFnYWluc3QgYElFRUU4MDIxMV9OVU1fQUNTYCBiZWZvcmUgYWNjZXNzaW5nIGBwcml2LVxcdTAwM2V3bW0uYWNfc3RhdHVzWy4uLl1gIGluIGBtd2lmaWV4X3JldF93bW1fZ2V0X3N0YXR1cygpYC4gVGhpcyBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgLyBidWZmZXIgb3ZlcmZsb3cgaXNzdWUsIHdoaWNoIGlzIHByb3Blcmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlLCBhbHRlciwgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBjb3BpZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow2m8c7[1] Phase: Succeeded StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 08:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 08:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2] Phase: Succeeded StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 08:34:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 08:34:07 +0000 UTC FinishedAt: 2026-09-07 08:34:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2m8c7/series-workflow2m8c7-convert-artifact-412596492/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 08:34:18 +0000 UTC FinishedAt: 2026-09-07 08:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 08:34:18 +0000 UTC FinishedAt: 2026-09-07 08:51:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9c1a6f89-447d-4081-b86b-6955e76efffa,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-workflow2m8c7/series-workflow2m8c7-convert-artifact-412596492/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": "10969484-e7a7-4dcf-8f46-a9e6bca6154d", "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-workflow2m8c7/series-workflow2m8c7-build-action-792100666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 08:34:18 +0000 UTC FinishedAt: 2026-09-07 08:50:58 +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:*9c1a6f89-447d-4081-b86b-6955e76efffa,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-workflow2m8c7/series-workflow2m8c7-convert-artifact-412596492/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": "10969484-e7a7-4dcf-8f46-a9e6bca6154d", "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-workflow2m8c7/series-workflow2m8c7-build-action-792100666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 08:51:08 +0000 UTC FinishedAt: 2026-09-07 08:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 08:51:08 +0000 UTC FinishedAt: 2026-09-07 08:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 08:51:08 +0000 UTC FinishedAt: 2026-09-07 08:51:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 08:51:08 +0000 UTC FinishedAt: 2026-09-07 08:51:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2m8c7/series-workflow2m8c7-convert-artifact-1258293835/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 08:51:18 +0000 UTC FinishedAt: 2026-09-07 08:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 08:51:18 +0000 UTC FinishedAt: 2026-09-07 08:53:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10969484-e7a7-4dcf-8f46-a9e6bca6154d,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-workflow2m8c7/series-workflow2m8c7-build-action-792100666/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-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 08:53:14 +0000 UTC FinishedAt: 2026-09-07 08:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 08:53:14 +0000 UTC FinishedAt: 2026-09-07 08:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 08:53:14 +0000 UTC FinishedAt: 2026-09-07 09:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 08:53:14 +0000 UTC FinishedAt: 2026-09-07 09:09:59 +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:*9c1a6f89-447d-4081-b86b-6955e76efffa,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-workflow2m8c7/series-workflow2m8c7-convert-artifact-1258293835/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": "dbcedd17-6b61-432d-aa6e-f54d01beb976", "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-workflow2m8c7/series-workflow2m8c7-build-action-4135464687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 08:53:14 +0000 UTC FinishedAt: 2026-09-07 09:09:50 +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:*9c1a6f89-447d-4081-b86b-6955e76efffa,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-workflow2m8c7/series-workflow2m8c7-convert-artifact-1258293835/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": "dbcedd17-6b61-432d-aa6e-f54d01beb976", "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-workflow2m8c7/series-workflow2m8c7-build-action-4135464687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 09:09:59 +0000 UTC FinishedAt: 2026-09-07 09:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 09:09:59 +0000 UTC FinishedAt: 2026-09-07 09:09:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 09:09:59 +0000 UTC FinishedAt: 2026-09-07 09:11:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 09:09:59 +0000 UTC FinishedAt: 2026-09-07 09:11:43 +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:*dbcedd17-6b61-432d-aa6e-f54d01beb976,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-workflow2m8c7/series-workflow2m8c7-build-action-4135464687/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-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +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":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"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:*10969484-e7a7-4dcf-8f46-a9e6bca6154d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbcedd17-6b61-432d-aa6e-f54d01beb976,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-workflow2m8c7/series-workflow2m8c7-build-action-792100666/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-workflow2m8c7/series-workflow2m8c7-build-action-4135464687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 09:12:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 09:11:58 +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":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"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-workflow2m8c7/series-workflow2m8c7-convert-artifact-2744019172/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 09:11:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 09:11:52 +0000 UTC FinishedAt: 2026-09-07 09:11:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 09:11:53 +0000 UTC FinishedAt: 2026-09-07 09:11:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 09:12:03 +0000 UTC FinishedAt: 2026-09-07 10:04:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2m8c7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_ret_wmm_get_status","mwifiex_process_sta_cmdresp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","WLAN","WLAN_VENDOR_MARVELL","CFG80211","USB"],"series_id":"f5236305-8bc4-4e18-b526-286ec92a124e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 09:12:03 +0000 UTC FinishedAt: 2026-09-07 10:04:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10969484-e7a7-4dcf-8f46-a9e6bca6154d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbcedd17-6b61-432d-aa6e-f54d01beb976,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-workflow2m8c7/series-workflow2m8c7-build-action-792100666/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-workflow2m8c7/series-workflow2m8c7-build-action-4135464687/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-workflow2m8c7/series-workflow2m8c7-convert-artifact-2744019172/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,}