Name: series-workflowlv4tn Phase: Succeeded StartedAt: 2026-07-28 14:42:08 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[0] Phase: Succeeded StartedAt: 2026-07-28 14:42:08 +0000 UTC FinishedAt: 2026-07-28 15:16:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 14:42:08 +0000 UTC FinishedAt: 2026-07-28 15:16:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d0d6415963040c401e7a7e4e482a698ba52448cb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NF_CONNTRACK", "NF_NAT", "NF_CONNTRACK_H323" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d0d6415963040c401e7a7e4e482a698ba52448cb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NF_CONNTRACK", "NF_NAT", "NF_CONNTRACK_H323" ], "series_id": "ed9ba880-1241-4990-81e3-e06ca4068d70" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "h245_help", "nat_rtp_rtcp", "nat_t120", "set_addr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTU6MTM6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYi4uOThkNTBiM2E2YmUyYyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuQEAgLTM3LDcgJiM0MzszNyw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRidWYucG9ydCA9IHBvcnQ7XG4gXHRhZGRyb2ZmICYjNDM7PSBkYXRhb2ZmO1xuIFxuLVx0aWYgKGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVENQKSB7XG4mIzQzO1x0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcbiYjNDM7XHRjYXNlIElQUFJPVE9fVENQOlxuIFx0XHRpZiAoIW5mX25hdF9tYW5nbGVfdGNwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHRcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxuIFx0XHRcdFx0XHQgICAgICAoY2hhciAqKSBcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xuQEAgLTUxLDcgJiM0Mzs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdGlmICh0aCA9PSBOVUxMKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyB0aC1cdTAwM2Vkb2ZmICogNCAmIzQzOyBkYXRhb2ZmO1xuLVx0fSBlbHNlIHtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSVBQUk9UT19VRFA6XG4gXHRcdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbyxcbiBcdFx0XHRcdFx0ICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksXG4gXHRcdFx0XHRcdCAgICAgIChjaGFyICopIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XG5AQCAtNjIsNiAmIzQzOzY0LDkgQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICogb3IgcHVsbCBldmVyeXRoaW5nIGluIGEgbGluZWFyIGJ1ZmZlciwgc28gd2UgY2FuIHNhZmVseVxuIFx0XHQgKiB1c2UgdGhlIHNrYiBwb2ludGVycyBub3cgKi9cbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuaW5kZXggMjQ5MzFlMzc5OTg1Yi4uOWNhYzNlNWFiMzllZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuQEAgLTUzOSw2ICYjNDM7NTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0aWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCBcdTAwMjZcdTAwMjYgY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEX1JFUExZKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFxuJiM0MztcdC8qIEguMjQ1IGlzIFRQS1QvVENQOyBpZ25vcmUgbWFudWFsIGJpbmRpbmdzIHRvIG90aGVyIEw0IHByb3RvY29scy4gKi9cbiYjNDM7XHRpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVENQKVxuJiM0MztcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiYjNDM7XG4gXHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9oMjQ1OiBza2JsZW4gPSAldVxcblwmIzM0Oywgc2tiLVx1MDAzZWxlbik7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfaDMyM19sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoMjQ1X2hlbHAmIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25hdF90MTIwJiMzNDssCiAgICAmIzM0O3NldF9hZGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzIHdoZXJlIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRkMDdhNTIzZGRmMzU4NWI3MDNkM2Q5ZDQxMjEyOGI2NDk3ZjRmMWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAxNToxMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKaW5kZXggMTgzZThhM2ZmMmJhYi4uOThkNTBiM2E2YmUyYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKQEAgLTM3LDcgJiM0MzszNyw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJYnVmLnBvcnQgPSBwb3J0OwogCWFkZHJvZmYgJiM0Mzs9IGRhdGFvZmY7CiAKLQlpZiAoaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sID09IElQUFJPVE9fVENQKSB7CiYjNDM7CXN3aXRjaCAobmZfY3RfcHJvdG9udW0oY3QpKSB7CiYjNDM7CWNhc2UgSVBQUk9UT19UQ1A6CiAJCWlmICghbmZfbmF0X21hbmdsZV90Y3BfcGFja2V0KHNrYiwgY3QsIGN0aW5mbywKIAkJCQkJICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksCiAJCQkJCSAgICAgIChjaGFyICopICZhbXA7YnVmLCBzaXplb2YoYnVmKSkpIHsKQEAgLTUxLDcgJiM0Mzs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCWlmICh0aCA9PSBOVUxMKQogCQkJcmV0dXJuIC0xOwogCQkqZGF0YSA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyB0aC0mZ3Q7ZG9mZiAqIDQgJiM0MzsgZGF0YW9mZjsKLQl9IGVsc2UgewomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSVBQUk9UT19VRFA6CiAJCWlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbywKIAkJCQkJICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksCiAJCQkJCSAgICAgIChjaGFyICopICZhbXA7YnVmLCBzaXplb2YoYnVmKSkpIHsKQEAgLTYyLDYgJiM0Mzs2NCw5IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCSAqIG9yIHB1bGwgZXZlcnl0aGluZyBpbiBhIGxpbmVhciBidWZmZXIsIHNvIHdlIGNhbiBzYWZlbHkKIAkJICogdXNlIHRoZSBza2IgcG9pbnRlcnMgbm93ICovCiAJCSpkYXRhID0gc2tiLSZndDtkYXRhICYjNDM7IGlwX2hkcmxlbihza2IpICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC0xOwogCX0KIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwppbmRleCAyNDkzMWUzNzk5ODViLi45Y2FjM2U1YWIzOWVmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwpAQCAtNTM5LDYgJiM0Mzs1MzksMTAgQEAgc3RhdGljIGludCBoMjQ1X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJaWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCAmYW1wOyZhbXA7IGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRF9SRVBMWSkKIAkJcmV0dXJuIE5GX0FDQ0VQVDsKIAomIzQzOwkvKiBILjI0NSBpcyBUUEtUL1RDUDsgaWdub3JlIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMuICovCiYjNDM7CWlmIChuZl9jdF9wcm90b251bShjdCkgIT0gSVBQUk9UT19UQ1ApCiYjNDM7CQlyZXR1cm4gTkZfQUNDRVBUOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7bmZfY3RfaDI0NTogc2tibGVuID0gJXVcbiYjMzQ7LCBza2ItJmd0O2xlbik7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9oMzIzX2xvY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjgzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEguMzIzIE5BVCBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgSC4zMjMgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQgYW5kIHdoeS4gSXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhIGJ1ZyBmaXggaW4gYG5mX25hdF9oMzIzLmNgIHdoZXJlIHRoZXkgd2VyZSB1c2luZyB0aGUgd3JvbmcgcHJvdG9jb2wgaWRlbnRpZmllciDigJMgdXNpbmcgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCBpbiB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbWlzdGFrZSwgYW5kIGl0JiMzOTtzIGdvb2QgdGhleSBjYXVnaHQgaXQuCgpJIGFsc28gc2VlIGEgbmV3IGNoZWNrIGFkZGVkIGluIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AgdG8gdmVyaWZ5IHRoZSBwcm90b2NvbCBpcyBgSVBQUk9UT19UQ1BgLiBUaGlzIHByb2JhYmx5IGFkZHMgc29tZSBjcnVjaWFsIHZhbGlkYXRpb24gdG8gdGhlIEguMjQ1IGhlbHBlci4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIExldCBtZSBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgc2V0X2FkZHJgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBoMjQ1X2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uLgoKTm93LCBiZWZvcmUgSSBzdGFydCBhbmFseXppbmcgdGhlIGNvZGUsIEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZXNlIG1vZHVsZXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIGVudHJpZXMgZm9yIGJvdGggYG5mX25hdF9oMzIzYCBhbmQgYG5mX2Nvbm50cmFja19oMzIzYCB0byBnZXQgdGhlIGNvbnRleHQuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdXNlZnVsIGJhY2tncm91bmQgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2gzMjMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgJiM0Mzs9IG5mX3JlamVjdF9pcHY0Lm9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTUtIyBOQVQgaGVscGVycyAobmZfY29ubnRyYWNrKVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORl9OQVRfSDMyMykgJiM0Mzs9IG5mX25hdF9oMzIzLm9cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfTkZfTkFUX1BQVFApICYjNDM7PSBuZl9uYXRfcHB0cC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjM9c3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00NC1cdFx0XHRcdFx0ICAgICAgKGNoYXIgKikgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ1Olx0XHRcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXCYjMzQ7bmZfbmF0X2gzMjM6IG5mX25hdF9tYW5nbGVfdGNwX3BhY2tldCBlcnJvclxcblwmIzM0Oyk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00Ni1cdFx0XHRyZXR1cm4gLTE7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTktXHRcdFx0XHRcdCAgICAgIChjaGFyICopIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo2MDpcdFx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQgZXJyb3JcXG5cJiMzNDspO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNjEtXHRcdFx0cmV0dXJuIC0xO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTE4Mj1zdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjI0LVx0aWYgKGkgXHUwMDNlPSBIMzIzX1JUUF9DSEFOTkVMX01BWCkge1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MjI1Olx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBvdXQgb2YgZXhwZWN0YXRpb25zXFxuXCYjMzQ7KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyNi1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjU2LVx0aWYgKG5hdGVkX3BvcnQgPT0gMCkge1x0LyogTm8gcG9ydCBhdmFpbGFibGUgKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI1NzpcdFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcJiMzNDtuZl9uYXRfaDMyMzogb3V0IG9mIFJUUCBwb3J0c1xcblwmIzM0Oyk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yNTgtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI3NS1cdC8qIFN1Y2Nlc3MgKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI3NjpcdHByX2RlYnVnKFwmIzM0O25mX25hdF9oMzIzOiBleHBlY3QgUlRQICVwSTQ6JWh1LVx1MDAzZSVwSTQ6JWh1XFxuXCYjMzQ7LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjc3LVx0XHQgXHUwMDI2cnRwX2V4cC1cdTAwM2V0dXBsZS5zcmMudTMuaXAsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgwLVx0XHQgbnRvaHMocnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCkpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MjgxOlx0cHJfZGVidWcoXCYjMzQ7bmZfbmF0X2gzMjM6IGV4cGVjdCBSVENQICVwSTQ6JWh1LVx1MDAzZSVwSTQ6JWh1XFxuXCYjMzQ7LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgyLVx0XHQgXHUwMDI2cnRjcF9leHAtXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTI5MT1zdGF0aWMgaW50IG5hdF90MTIwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0zMDYtXHRpZiAobmF0ZWRfcG9ydCA9PSAwKSB7XHQvKiBObyBwb3J0IGF2YWlsYWJsZSAqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MzA3Olx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBvdXQgb2YgVENQIHBvcnRzXFxuXCYjMzQ7KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMwOC1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzE4LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MzE5Olx0cHJfZGVidWcoXCYjMzQ7bmZfbmF0X2gzMjM6IGV4cGVjdCBULjEyMCAlcEk0OiVodS1cdTAwM2UlcEk0OiVodVxcblwmIzM0Oyxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyMC1cdFx0IFx1MDAyNmV4cC1cdTAwM2V0dXBsZS5zcmMudTMuaXAsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBuYXRob29rcyA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NTktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjA6c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NjgtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1Njk6c3RhdGljIHZvaWQgX19leGl0IG5mX25hdF9oMzIzX2Zpbmkodm9pZClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU3MC17XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTc5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTgwOm1vZHVsZV9pbml0KG5mX25hdF9oMzIzX2luaXQpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTgxOm1vZHVsZV9leGl0KG5mX25hdF9oMzIzX2ZpbmkpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTgyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipIdW50aW5nIERvd24gVGhvc2UgSC4zMjMgS2NvbmZpZ3MqKgoKUmlnaHQsIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZ3MgZm9yIGBDT05GSUdfTkZfTkFUX0gzMjNgIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19IMzIzYC4gVGhpcyB0eXBpY2FsbHkgbWVhbnMgZGl2aW5nIGludG8gdGhlIGRlcHRocyBvZiB0aGUga2VybmVsJiMzOTtzIHNvdXJjZSB0cmVlLCBzcGVjaWZpY2FsbHkgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byBuZXRmaWx0ZXIgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcuIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gc3RhcnQgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnksIG9yIHBlcmhhcHMgd2l0aGluIHRoZSBtb3JlIHNwZWNpZmljIGFyZWFzIGxpa2UgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrYCBpZiB0aG9zZSBhcmUgc3RhbmRhbG9uZSBtb2R1bGVzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgb3Igc2ltaWxhciB0b29scyB0byBlZmZpY2llbnRseSBzZWFyY2ggZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhY3Jvc3MgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgb2YgZGVwZW5kZW5jaWVzOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZXNlIHRvIGV2ZW4gc2hvdyB1cCBpbiB0aGUgbWVudWNvbmZpZyBvciwgZXZlbiB3b3JzZSwgd2hhdCBtaWdodCBiZSBwdWxsaW5nIHRoZW0gaW4gKnRyYW5zaXRpdmVseSogYnkgYmVpbmcgaGFyZCBjb2RlZCBkZXBlbmRlbmNpZXMuIE9mdGVuLCB0aGVzZSBILjMyMyByZWxhdGVkIG9wdGlvbnMgYXJlIGJ1cmllZCBwcmV0dHkgZGVlcCB3aXRoaW4gdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBiZWNhdXNlIG9mIHRoZWlyIHJlbGF0aXZlIG5pY2hlLiBJdCYjMzk7cyBhIHF1aWNrIGpvYiwgYnV0IEkmIzM5O2xsIGhhdmUgdG8gYmUgbWV0aG9kaWNhbCBhbmQgYWNjb3VudCBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIG9mIGBORl9OQVRfSDMyM2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIHN1cHBvcnQgc3RydWN0dXJlIGZvciBgTkZfTkFUX0gzMjNgIGxvb2sgbGlrZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGFzc3VtaW5nLCBuYXR1cmFsbHksIHRoYXQgaXQgaG9va3MgaW50byB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBCdXQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc3BlY2lmaWMqIE5ldGZpbHRlciBtb2R1bGVzIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IHRpZWQgdG8gY29ubnRyYWNrPyBEb2VzIGl0IGxldmVyYWdlIHBhcnRpY3VsYXIgaGVscGVyIG1vZHVsZXMsIG9yIGRvZXMgaXQgaGF2ZSBhIHRpZ2h0LCBjdXN0b20gaW50ZWdyYXRpb24gd2l0aCBzb21lIG90aGVyIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2s/IFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgcGllY2VzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoaXMgTkFUIGZ1bmN0aW9uYWxpdHkuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIElQdjQgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEyMy4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIHN0YXJ0cyBmb3IgYSBnaXZlbiBzZWN0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIGNvcmUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgd2hpY2ggbW9kdWxlcyBhcmUgcmVsZXZhbnQgZm9yIGFueSBnaXZlbiB0YXNrLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IGJ1aWxkaW5nIGEgbWVudGFsIG1vZGVsIG9mIHRoZSBhdmFpbGFibGUgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiB0aGUgSVB2NCBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTA6XHRcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxuIDExMTpcdFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXG4gMTEyOlx0XHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIHRoZSBcJiMzNDtiYXNpY1wmIzM0OyBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcbiAxMTU6XHRcbiAxMTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTE3Olx0XG4gMTE4Olx0Y29uZmlnIE5GX05BVF9QUFRQXG4gMTE5Olx0XHR0cmlzdGF0ZVxuIDEyMDpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiAxMjE6XHRcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcbiAxMjI6XHRcbiAxMjM6XHRjb25maWcgTkZfTkFUX0gzMjNcbiAxMjQ6XHRcdHRyaXN0YXRlXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDEyNjpcdFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xuIDEyNzpcdFxuIDEyODpcdGVuZGlmICMgTkZfTkFUXG4gMTI5Olx0XG4gMTMwOlx0Y29uZmlnIElQX05GX0lQVEFCTEVTXG4gMTMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZy9tYXNxL05BVClcJiMzNDtcbiAxMzI6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDEzMzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXG4gMTM0Olx0XHRoZWxwXG4gMTM1Olx0XHQgIGlwdGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxuIDEzNjpcdFx0ICBUaGUgcGFja2V0IGZpbHRlcmluZyBhbmQgZnVsbCBOQVQgKG1hc3F1ZXJhZGluZywgcG9ydCBmb3J3YXJkaW5nLFxuIDEzNzpcdFx0ICBldGMpIHN1YnN5c3RlbXMgbm93IHVzZSB0aGlzOiBzYXkgYFkmIzM5OyBvciBgTSYjMzk7IGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlXG4gMTM4Olx0XHQgIGVpdGhlciBvZiB0aG9zZS5cbiAxMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JraW5nL25ldGZpbHRlcjoKCioqRGVwZW5kZW5jeSBDaGFpbiBhbmQgQ29uZmlndXJhdGlvbiBDb250ZXh0KioKClJpZ2h0LCBzbyBgTkZfTkFUX0gzMjNgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyDigJMgaXQgcmVsaWVzIG9uIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSBgTkZfQ09OTlRSQUNLYC4gQW5kLCBieSBkZWZhdWx0LCBpdCB1c3VhbGx5IGFzc3VtZXMgdGhlIEguMzIzLXNwZWNpZmljIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLCBgTkZfQ09OTlRSQUNLX0gzMjNgLCBpcyBhbHNvIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBILjMyMyBOQVQgd291bGRuJiMzOTt0IGJlIHZlcnkgdXNlZnVsIHdpdGhvdXQgdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbiB0cmFja2luZyBpbmZyYXN0cnVjdHVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0aG91Z2gsIHNvIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjM5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCBhbmQgd2hhdCB0aGUgZGVmYXVsdHMgYXJlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBvcHRpb24gZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNlbGVjdGlvbnMgYXJlIHVzdWFsbHkgc3BlY2lmaWVkLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRcdGhlbHBcbiAyMzE6XHRcdCAgVHJhY2tpbmcgRlRQIGNvbm5lY3Rpb25zIGlzIHByb2JsZW1hdGljOiBzcGVjaWFsIGhlbHBlcnMgYXJlXG4gMjMyOlx0XHQgIHJlcXVpcmVkIGZvciB0cmFja2luZyB0aGVtLCBhbmQgZG9pbmcgbWFzcXVlcmFkaW5nIGFuZCBvdGhlciBmb3Jtc1xuIDIzMzpcdFx0ICBvZiBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gb24gdGhlbS5cbiAyMzQ6XHRcbiAyMzU6XHRcdCAgVGhpcyBpcyBGVFAgc3VwcG9ydCBvbiBMYXllciAzIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gdHJhY2tpbmcuXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDIzODpcdFxuIDIzOTpcdGNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xuIDI0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7SC4zMjMgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuIDI0MTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAyNDI6XHRcdGhlbHBcbiAyNDM6XHRcdCAgSC4zMjMgaXMgYSBWb0lQIHNpZ25hbGxpbmcgcHJvdG9jb2wgZnJvbSBJVFUtVC4gQXMgb25lIG9mIHRoZSBtb3N0XG4gMjQ0Olx0XHQgIGltcG9ydGFudCBWb0lQIHByb3RvY29scywgaXQgaXMgd2lkZWx5IHVzZWQgYnkgdm9pY2UgaGFyZHdhcmUgYW5kXG4gMjQ1Olx0XHQgIHNvZnR3YXJlIGluY2x1ZGluZyB2b2ljZSBnYXRld2F5cywgSVAgcGhvbmVzLCBOZXRtZWV0aW5nLCBPcGVuUGhvbmUsXG4gMjQ2Olx0XHQgIEdub21lbWVldGluZywgZXRjLlxuIDI0NzpcdFxuIDI0ODpcdFx0ICBXaXRoIHRoaXMgbW9kdWxlIHlvdSBjYW4gc3VwcG9ydCBILjMyMyBvbiBhIGNvbm5lY3Rpb24gdHJhY2tpbmcvTkFUXG4gMjQ5Olx0XHQgIGZpcmV3YWxsLlxuIDI1MDpcdFxuIDI1MTpcdFx0ICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBSQVMsIEZhc3QgU3RhcnQsIEguMjQ1IFR1bm5lbGxpbmcsIENhbGxcbiAyNTI6XHRcdCAgRm9yd2FyZGluZywgUlRQL1JUQ1AgYW5kIFQuMTIwIGJhc2VkIGF1ZGlvLCB2aWRlbywgZmF4LCBjaGF0LFxuIDI1MzpcdFx0ICB3aGl0ZWJvYXJkLCBmaWxlIHRyYW5zZmVyLCBldGMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2VcbiAyNTQ6XHRcdCAgdmlzaXQgaHR0cDovL25hdGgzMjMuc291cmNlZm9yZ2UubmV0Ly5cbiAyNTU6XHRcbiAyNTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMjU3Olx0XG4gMjU4Olx0Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbiAyNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyODMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkIGFib3V0IHRoaXMgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb246CgoqKk5ldGZpbHRlciBNb2R1bGUgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IHdlIG5lZWQgdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AgbW9kdWxlcy4gT2YgY291cnNlLCBgTkZfTkFUX0gzMjNgIHNlZW1zIHRvIGRlZmF1bHQgdG8gYE5GX0NPTk5UUkFDS19IMzIzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQsIGJ1dCBJJiMzOTttIHJlYXNvbmFibHkgY2VydGFpbiBpdCYjMzk7cyBhIHNhZmUgYXNzdW1wdGlvbiBmb3Igbm93LgoKQmV5b25kIHRob3NlIHNwZWNpZmljIEguMzIzIG1vZHVsZXMsIEkgY2FuJiMzOTt0IGZvcmdldCB0aGUgY29yZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBib3RoIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfTkFUYCBlbmFibGVkIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LCBvYnZpb3VzbHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiwgdGhvdWdoLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmb3IgdGhlIGBORl9OQVRgIG1vZHVsZSB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgYmFzZSBjb25maWd1cmF0aW9uLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9OQVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9OTk9aWYgTkZfTkFUXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDA6Y29uZmlnIE5GX05BVF9TTk1QX0JBU0lDXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtCYXNpYyBTTk1QLUFMRyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE3LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTE4OmNvbmZpZyBORl9OQVRfUFBUUFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE5LVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBILjMyMyBDb25uZWN0aW9uIFRyYWNraW5nIGFuZCBOQVQqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB3ZSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQuIEkga25vdyBgTkZfTkFUX0gzMjNgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFJpZ2h0LCBhbmQgdGhhdCBsaWtlbHkgbWVhbnMgaXQgZGVwZW5kcyBvbiBgTkZfTkFUYCBpdHNlbGYuIFdlIGNhbiYjMzk7dCBqdXN0IGVuYWJsZSBpdCBvbiBpdHMgb3duLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSBhbmQgbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBhbnkgY29uZmlndXJhdGlvbiBjb25mbGljdHMuIFdlIGNhbiYjMzk7dCBoYXZlIGFueSBsb29zZSBlbmRzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XHRzZWxlY3QgTkZfTE9HX1NZU0xPR1xuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0VGhpcyBpcyBhIGJhY2t3YXJkcy1jb21wYXQgb3B0aW9uIGZvciB0aGUgdXNlciYjMzk7cyBjb252ZW5pZW5jZVxuICA5MzpcdFx0KGUuZy4gd2hlbiBydW5uaW5nIG9sZGNvbmZpZykuIEl0IHNlbGVjdHMgQ09ORklHX05GX0xPR19TWVNMT0cuXG4gIDk0Olx0XG4gIDk1Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG4gIDk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgOTc6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA5ODpcdFxuICA5OTpcdGlmIE5GX05BVFxuIDEwMDpcdGNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xuIDEwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QmFzaWMgU05NUC1BTEcgc3VwcG9ydFwmIzM0O1xuIDEwMjpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU05NUFxuIDEwMzpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAxMDQ6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfU05NUFxuIDEwNTpcdFx0c2VsZWN0IEFTTjFcbiAxMDY6XHRcdGhlbHBcbiAxMDc6XHRcbiAxMDg6XHRcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhbiBBcHBsaWNhdGlvbiBMYXllciBHYXRld2F5IChBTEcpIGZvclxuIDEwOTpcdFx0ICBTTk1QIHBheWxvYWRzLiAgSW4gY29uanVuY3Rpb24gd2l0aCBOQVQsIGl0IGFsbG93cyBhIG5ldHdvcmtcbiAxMTA6XHRcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxuIDExMTpcdFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXG4gMTEyOlx0XHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIHRoZSBcJiMzNDtiYXNpY1wmIzM0OyBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcbiAxMTU6XHRcbiAxMTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTE3Olx0XG4gMTE4Olx0Y29uZmlnIE5GX05BVF9QUFRQXG4gMTE5Olx0XHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDQ4CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEguMzIzIE5BVCBNb2R1bGUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgSC4zMjMgTkFUIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgTkZfTkFUX0gzMjNgIGlzIG5lc3RlZCB3aXRoaW4gYW4gYGlmIE5GX05BVGAgYmxvY2suIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBiZWZvcmUgZXZlbiBjb25zaWRlcmluZyB0aGUgSC4zMjMgc3BlY2lmaWMgZmVhdHVyZXMuIFNvLCB0byBiZSBjbGVhciwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYE5GX05BVGAsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGFuZCBvYnZpb3VzbHksIGBORl9OQVRfSDMyM2AgaXRzZWxmLiBXZSBjYW4mIzM5O3QgbmVnbGVjdCB0aGUgdW5kZXJseWluZyBidWlsZGluZyBibG9ja3MuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29yZSBmdW5jdGlvbnMuIFRoZSBgc2V0X2FkZHJgIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBzY29wZSBhbmQgcHJvYmFibHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBJIHdvbiYjMzk7dCBzcGVuZCB0b28gbXVjaCB0aW1lIG9uIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgKmNhbGxpbmcqIGBzZXRfYWRkcmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHBpY3R1cmUgb2YgaG93IHRoaXMgYWRkcmVzcyBzZXR0aW5nIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIEguMzIzIE5BVCBwcm9jZXNzLiBUcmFjaW5nIHRoZSBjYWxscyB0byBgc2V0X2FkZHJgIHdpbGwgYmUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRfYWRkciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE5MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtbWlwaS1kYmktc3BpLnlhbWw9MTI9ZGVzY3JpcHRpb246IHxcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01NS0gIHRoZSBUeXBlIEMgaW50ZXJmYWNlIGFuZCBtb3N0IGNvbW1vbiBhbW9uZyB0aGVzZSBhcmUgUkdCNTY1IGFuZCBSR0I2NjYuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbDo1NjogIFRoZSBNSVBJIERDUyBjb21tYW5kIHNldF9hZGRyZXNzX21vZGUgKDM2aCkgaGFzIG9uZSBiaXQgdGhhdCBjb250cm9scyBSR0IvQkdSXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01Ny0gIG9yZGVyLiBUaGlzIGdpdmVzIGVhY2ggc3VwcG9ydGVkIFJHQiBmb3JtYXQgYSBCR1IgdmFyaWFudC5cbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2dhZGdldC5yc3Q9MjQwPW5lZWRzIHRvIGhhbmRsZSBzb21lIGRpZmZlcmVuY2VzLiBVc2UgdGhlIEFQSSBsaWtlIHRoaXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1NC0zLiBUaGUgaGFyZHdhcmUgZHJpdmVyIGNhbiBub3cgc3RhcnQgZW51bWVyYXRpbmcuIFRoZSBzdGVwcyBpdCBoYW5kbGVzXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2dhZGdldC5yc3Q6MjU1OiAgIGFyZSB0byBhY2NlcHQgVVNCIGBgcG93ZXJgYCBhbmQgYGBzZXRfYWRkcmVzc2BgIHJlcXVlc3RzLiBPdGhlciBzdGVwcyBhcmVcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZ2FkZ2V0LnJzdC0yNTYtICAgaGFuZGxlZCBieSB0aGUgZ2FkZ2V0IGRyaXZlci4gSWYgdGhlIGdhZGdldCBkcml2ZXIgbW9kdWxlIGlzIHVubG9hZGVkXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz01Nz1zdGF0aWMgdTMyIHNvY2lkO1xuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy01OC1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NTk6c3RhdGljIHZvaWQgX19pb21lbSAqcmVzZXRfYWRkcjtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNjAtXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zNTU9c3RhdGljIGludCBfX2luaXQgbXhzX3Jlc3RhcnRfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzYxLVx0XHRucCA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsIFwmIzM0O2ZzbCxpbXgyOC1jbGtjdHJsXCYjMzQ7KTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYyOlx0cmVzZXRfYWRkciA9IG9mX2lvbWFwKG5wLCAwKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYzOlx0aWYgKCFyZXNldF9hZGRyKVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNjQtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY2LVx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcJiMzNDtmc2wsaW14MjMtY2xrY3RybFwmIzM0OykpXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2NzpcdFx0cmVzZXRfYWRkciAmIzQzOz0gTVgyM19DTEtDVFJMX1JFU0VUX09GRlNFVDtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY4LVx0ZWxzZVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozNjk6XHRcdHJlc2V0X2FkZHIgJiM0Mzs9IE1YMjhfQ0xLQ1RSTF9SRVNFVF9PRkZTRVQ7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM3MC1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTQ1Mz1zdGF0aWMgdm9pZCBteHNfcmVzdGFydChlbnVtIHJlYm9vdF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmNtZClcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU0LXtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NDU1Olx0aWYgKHJlc2V0X2FkZHIpIHtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU2LVx0XHQvKiByZXNldCB0aGUgY2hpcCAqL1xuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzo0NTc6XHRcdF9fbXhzX3NldGwoTVhTX0NMS0NUUkxfUkVTRVRfQ0hJUCwgcmVzZXRfYWRkcik7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTQ1OC1cbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM9Mjk9c3RhdGljIGJvb2wgaXNfZW5hYmxlZDtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy0zMC1cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzozMTpzdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KGNvbnN0IHUzMiByZXNldF9hZGRyZXNzKVxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTMyLXtcbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDEtXHQgKi9cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzo0MjpcdHdyaXRlbChyZXNldF9hZGRyZXNzLCBldnBfY3B1X3Jlc2V0KTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy00My1cdHdtYigpO1xuLS1cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYz01Nj1zdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfZW5hYmxlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTU4LVx0dm9pZCBfX2lvbWVtICppcmFtX2Jhc2UgPSBJT19BRERSRVNTKFRFR1JBX0lSQU1fUkVTRVRfQkFTRSk7XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NTk6XHRjb25zdCB1MzIgcmVzZXRfYWRkcmVzcyA9IFRFR1JBX0lSQU1fUkVTRVRfQkFTRSAmIzQzO1xuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTYwLVx0XHRcdFx0XHRcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX29mZnNldDtcbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNjgtXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6Njk6XHRlcnIgPSBjYWxsX2Zpcm13YXJlX29wKHNldF9jcHVfYm9vdF9hZGRyLCAwLCByZXNldF9hZGRyZXNzKTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03MC1cdHN3aXRjaCAoZXJyKSB7XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNzEtXHRjYXNlIC1FTk9TWVM6XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NzI6XHRcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX3NldChyZXNldF9hZGRyZXNzKTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03My1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaD0yNj1zdGF0aWMgaW5saW5lIGludCByc2lfc2V0X21lbW9yeV9yYW5nZShwaHlzX2FkZHJfdCBzdGFydCwgcGh5c19hZGRyX3QgZW5kLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmgtMzItXHR3aGlsZSAoc3RhcnQgIT0gZW5kKSB7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaS5oOjMzOlx0XHRyZXQgPSByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUoc3RhcnQsIGVuZCwgc3RhdGUsIGZsYWdzLCBcdTAwMjZ0b3ApO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaC0zNC1cdFx0aWYgKHJldCB8fCB0b3AgXHUwMDNjIHN0YXJ0IHx8IHRvcCBcdTAwM2UgZW5kKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpX2NtZHMuaD01MD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcnNpX2lwYV9zdGF0ZV9nZXQocGh5c19hZGRyX3Qgc3RhcnQsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oLTcwLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oOjcxOnN0YXRpYyBpbmxpbmUgbG9uZyByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUocGh5c19hZGRyX3Qgc3RhcnQsXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaV9jbWRzLmgtNzItXHRcdFx0XHRcdCAgICBwaHlzX2FkZHJfdCBlbmQsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM9NDI0PXN0YXRpYyBpbnQgcHRyYWNlX2hicF9zZXRfY3RybCh1bnNpZ25lZCBpbnQgbm90ZV90eXBlLFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ0OC1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jOjQ0OTpzdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X2FkZHIodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ1MC1cdFx0XHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM9NTA2PXN0YXRpYyBpbnQgaHdfYnJlYWtfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTUyOC1cdFx0XHRyZXR1cm4gcmV0O1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6NTI5Olx0XHRyZXQgPSBwdHJhY2VfaGJwX3NldF9hZGRyKG5vdGVfdHlwZSwgdGFyZ2V0LCBpZHgsIGFkZHIpO1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMtNTMwLVx0XHRpZiAocmV0KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jPTIxNjk9c3RhdGljIGludCBjb21wYXRfcHRyYWNlX2hicF9zZXQodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy0yMTgwLVx0XHRhZGRyID0gKmtkYXRhO1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6MjE4MTpcdFx0ZXJyID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRzaywgaWR4LCBhZGRyKTtcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTIxODItXHR9IGVsc2Uge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYz02MjY9c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9tYXNrKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jLTY0NC1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYzo2NDU6c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9hZGRyKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNjQ2LVx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmM9NzE3PXN0YXRpYyBpbnQgaHdfYnJlYWtfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYy03NDEtXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmM6NzQyOlx0XHRyZXQgPSBwdHJhY2VfaGJwX3NldF9hZGRyKG5vdGVfdHlwZSwgdGFyZ2V0LCBpZHgsIGFkZHIpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jLTc0My1cdFx0aWYgKHJldClcbi0tXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM9NDg0PXN0YXRpYyB2b2lkIGF0YXJpX3Jlc2V0KHZvaWQpXG4tLVxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ4Ni1cdGxvbmcgdGNfdmFsID0gMDtcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYzo0ODc6XHRsb25nIHJlc2V0X2FkZHI7XG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg4LVxuLS1cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy00OTItXHQgKi9cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYzo0OTM6XHRyZXNldF9hZGRyID0gTUFDSF9JU19NRURVU0EgfHwgTUFDSF9JU19BQjQwID8gMHhlMDAwMzAgOlxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5NC1cdFx0ICAgICAqKHVuc2lnbmVkIGxvbmcgKikgMHhmZjAwMDAwNDtcbi0tXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNTU1LVx0XHRcdDogLyogbm8gb3V0cHV0cyAqL1xuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jOjU1NjpcdFx0XHQ6IFwmIzM0O2FcJiMzNDsgKHJlc2V0X2FkZHIpXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNTU3LVx0XHRcdDogXCYjMzQ7ZDBcJiMzNDspO1xuLS1cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NjItXHRcdFx0OiAvKiBubyBvdXRwdXRzICovXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NTYzOlx0XHRcdDogXCYjMzQ7bVwmIzM0OyAodGNfdmFsKSwgXCYjMzQ7YVwmIzM0OyAocmVzZXRfYWRkcikpO1xuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU2NC19XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYz0xNzE9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfc2hhcmVkKHZvaWQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xNzktXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjE4MDpcdHNoYXJlZF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVERNQSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE4MS1cdHNoYXJlZF9yZXNbMF0uZW5kID0gc2hhcmVkX3Jlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5My1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTk0Olx0c2hhcmVkX3Jlc1sxXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BQyk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5NS1cdHNoYXJlZF9yZXNbMV0uZW5kID0gc2hhcmVkX3Jlc1sxXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5Ny1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTk4Olx0c2hhcmVkX3Jlc1syXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BUyk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5OS1cdHNoYXJlZF9yZXNbMl0uZW5kID0gc2hhcmVkX3Jlc1syXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTIxMD1pbnQgX19pbml0IGJjbTYzeHhfZW5ldF9yZWdpc3RlcihpbnQgdW5pdCxcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyNy1cdGlmICh1bml0ID09IDApIHtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MjI4Olx0XHRlbmV0MF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVDApO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMjktXHRcdGVuZXQwX3Jlc1swXS5lbmQgPSBlbmV0MF9yZXNbMF0uc3RhcnQ7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMzUtXHR9IGVsc2Uge1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoyMzY6XHRcdGVuZXQxX3Jlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVUMSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIzNy1cdFx0ZW5ldDFfcmVzWzBdLmVuZCA9IGVuZXQxX3Jlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTI5MT1iY202M3h4X2VuZXRzd19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYmNtNjN4eF9lbmV0c3dfcGxhdGZvcm1fZGF0YSAqcGQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0zMDEtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjMwMjpcdGVuZXRzd19yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVFNXKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMzAzLVx0ZW5ldHN3X3Jlc1swXS5lbmQgPSBlbmV0c3dfcmVzWzBdLnN0YXJ0O1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jPTM2PWludCBfX2luaXQgYmNtNjN4eF9oc3NwaV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jLTQwLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWhzc3BpLmM6NDE6XHRzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0hTU1BJKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jLTQyLVx0c3BpX3Jlc291cmNlc1swXS5lbmQgPSBzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0O1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYz0xMDQ9aW50IF9faW5pdCBiY202M3h4X3BjbWNpYV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYy0xMjQtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcGNtY2lhLmM6MTI1Olx0cGNtY2lhX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QQ01DSUEpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jLTEyNi1cdHBjbWNpYV9yZXNvdXJjZXNbMF0uZW5kID0gcGNtY2lhX3Jlc291cmNlc1swXS5zdGFydCAmIzQzO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYz0yOT1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3JuZ19yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYy0zMy1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYzozNDpcdHJuZ19yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUk5HKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYy0zNS1cdHJuZ19yZXNvdXJjZXNbMF0uZW5kID0gcm5nX3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtc3BpLmM9Mzk9aW50IF9faW5pdCBiY202M3h4X3NwaV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00My1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYzo0NDpcdHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfU1BJKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00NS1cdHNwaV9yZXNvdXJjZXNbMF0uZW5kID0gc3BpX3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jPTUzPWludCBfX2luaXQgYmNtNjN4eF91YXJ0X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpZClcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jLTYyLVx0aWYgKGlkID09IDApIHtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmM6NjM6XHRcdHVhcnQwX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMCk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jLTY0LVx0XHR1YXJ0MF9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDBfcmVzb3VyY2VzWzBdLnN0YXJ0ICYjNDM7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy02OS1cdGlmIChpZCA9PSAxKSB7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjcwOlx0XHR1YXJ0MV9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfVUFSVDEpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy03MS1cdFx0dWFydDFfcmVzb3VyY2VzWzBdLmVuZCA9IHVhcnQxX3Jlc291cmNlc1swXS5zdGFydCAmIzQzO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jPTM2PWludCBfX2luaXQgYmNtNjN4eF91c2JkX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmRfcGxhdGZvcm1fZGF0YSAqcGQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNDYtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo0NzpcdHVzYmRfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkQpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNDgtXHR1c2JkX3Jlc291cmNlc1swXS5lbmQgPSB1c2JkX3Jlc291cmNlc1swXS5zdGFydCAmIzQzOyBSU0VUX1VTQkRfU0laRSAtIDE7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNTAtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo1MTpcdHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkRNQSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy01Mi1cdHVzYmRfcmVzb3VyY2VzWzFdLmVuZCA9IHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ICYjNDM7IFJTRVRfVVNCRE1BX1NJWkUgLSAxO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYz0zNz1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3dkdF9yZWdpc3Rlcih2b2lkKVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXdkdC5jLTM4LXtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYzozOTpcdHdkdF9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfV0RUKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYy00MC1cdHdkdF9yZXNvdXJjZXNbMF0uZW5kID0gd2R0X3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYz00MDI9c3RhdGljIHZvaWQgYmNtNjN4eF9pbml0X2lycSh2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2lycS5jLTQwNS1cbmFyY2gvbWlwcy9iY202M3h4L2lycS5jOjQwNjpcdGlycV9zdGF0X2FkZHJbMF0gPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUEVSRik7XG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDc6XHRpcnFfbWFza19hZGRyWzBdID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1BFUkYpO1xuYXJjaC9taXBzL2JjbTYzeHgvaXJxLmM6NDA4Olx0aXJxX3N0YXRfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcbmFyY2gvbWlwcy9iY202M3h4L2lycS5jOjQwOTpcdGlycV9tYXNrX2FkZHJbMV0gPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUEVSRik7XG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYy00MTAtXG4tLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenpkbWEuaD0xOT1leHRlcm4gdm9pZCB2ZG1hX3NldF9tb2RlKGludCBjaGFubmVsLCBpbnQgbW9kZSk7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oOjIwOmV4dGVybiB2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcik7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oLTIxLWV4dGVybiB2b2lkIHZkbWFfc2V0X2NvdW50KGludCBjaGFubmVsLCBpbnQgY291bnQpO1xuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaD01NTA9ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJjbTYzeHhfcmVnc19iYXNlO1xuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaC01OTUtXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1Lmg6NTk2OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY202M3h4X3JlZ3NldF9hZGRyZXNzKGVudW0gYmNtNjN4eF9yZWdzX3NldCBzZXQpXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1LmgtNTk3LXtcbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02NS0gKi9cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY2OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGIocywgbylcdGJjbV9yZWFkYihiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY3OiNkZWZpbmUgYmNtX3JzZXRfcmVhZHcocywgbylcdGJjbV9yZWFkdyhiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY4OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGwocywgbylcdGJjbV9yZWFkbChiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTY5LSNkZWZpbmUgYmNtX3JzZXRfd3JpdGViKHMsIHYsIG8pXHRiY21fd3JpdGViKCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjcwOlx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTcxLSNkZWZpbmUgYmNtX3JzZXRfd3JpdGV3KHMsIHYsIG8pXHRiY21fd3JpdGV3KCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjcyOlx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTczLSNkZWZpbmUgYmNtX3JzZXRfd3JpdGVsKHMsIHYsIG8pXHRiY21fd3JpdGVsKCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjc0Olx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTc1LVxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg9NjU9c3RhdGljIGlubGluZSB2b2lkIGZkX3NldF9kbWFfYWRkcihjaGFyICphKVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtamF6ei9mbG9wcHkuaC02Ni17XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1qYXp6L2Zsb3BweS5oOjY3Olx0dmRtYV9zZXRfYWRkcihKQVpaX0ZMT1BQWV9ETUEsIHZkbWFfcGh5czJsb2coQ1BIWVNBRERSKCh1bnNpZ25lZCBsb25nKWEpKSk7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1qYXp6L2Zsb3BweS5oLTY4LX1cbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTUyLSNkZWZpbmUgcmJ0eDQ5Mjdfc29mdGludF9hZGRyXHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRJTlRfQUREUilcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTM6I2RlZmluZSByYnR4NDkyN19zb2Z0cmVzZXRfYWRkciAoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRSRVNFVF9BRERSKVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaC01NC0jZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldGxvY2tfYWRkclx0XFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3LmgtNTUtXHRcdFx0XHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRSRVNFVExPQ0tfQUREUilcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTY6I2RlZmluZSByYnR4NDkyN19wY2lyZXNldF9hZGRyXHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1BDSVJFU0VUX0FERFIpXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTU3LVxuLS1cbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYz00Mjk9RVhQT1JUX1NZTUJPTCh2ZG1hX3NldF9tb2RlKTtcbi0tXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDMzLSAqL1xuYXJjaC9taXBzL2phenovamF6emRtYS5jOjQzNDp2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcilcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYy00MzUte1xuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNi1cdGlmICh2ZG1hX2RlYnVnKVxuYXJjaC9taXBzL2phenovamF6emRtYS5jOjQzNzpcdFx0cHJpbnRrKFwmIzM0O3ZkbWFfc2V0X2FkZHI6IGNoYW5uZWwgJWQsIGFkZHIgJWx4XFxuXCYjMzQ7LCBjaGFubmVsLFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzOC1cdFx0ICAgICAgIGFkZHIpO1xuLS1cbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYy00NDItXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM6NDQzOkVYUE9SVF9TWU1CT0wodmRtYV9zZXRfYWRkcik7XG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQ0LVxuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM9NjI9c3RhdGljIHZvaWQgX19pbml0IHR4NDkyN19wY2lfc2V0dXAodm9pZClcbi0tXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTc0LVx0LyogUmVzZXQgUENJIEJ1cyAqL1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo3NTpcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtNzYtXHQvKiBSZXNldCBQQ0lDICovXG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy04My1cdHR4eDlfY2xlYXI2NChcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cdTAwM2VjbGtjdHIsIFRYNDkyN19DTEtDVFJfUENJUlNUKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6ODQ6XHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTg1LVx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy05Mi1cdFx0LyogUmVzZXQgUENJIEJ1cyAqL1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo5MzpcdFx0d3JpdGViKDEsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy05NC1cdFx0LyogUmVzZXQgUENJQyAqL1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtOTktXHRcdHR4eDlfY2xlYXI2NChcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cdTAwM2VjbGtjdHIsIFRYNDkyN19DTEtDVFJfUENJUlNUKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTAwOlx0XHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTEwMS1cdFx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz0xMDk9c3RhdGljIHZvaWQgX19pbml0IHR4NDkzN19wY2lfc2V0dXAodm9pZClcbi0tXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTEyMS1cdC8qIFJlc2V0IFBDSSBCdXMgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTIyOlx0d3JpdGViKDEsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMjMtXHQvKiBSZXNldCBQQ0lDICovXG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzAtXHR0eHg5X2NsZWFyNjQoXHUwMDI2dHg0OTM4X2NjZmdwdHItXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjEzMTpcdHdyaXRlYigwLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTMyLVx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzktXHRcdC8qIFJlc2V0IFBDSSBCdXMgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTQwOlx0XHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0MS1cdFx0LyogUmVzZXQgUENJQyAqL1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTQ2LVx0XHR0eHg5X2NsZWFyNjQoXHUwMDI2dHg0OTM4X2NjZmdwdHItXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjE0NzpcdFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xNDgtXHRcdGlvYigpO1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM9MTg3PXN0YXRpYyB2b2lkIHRvc2hpYmFfcmJ0eDQ5MjdfcmVzdGFydChjaGFyICpjb21tYW5kKVxuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk2LVx0LyogZG8gYSBzL3cgcmVzZXQgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTk3Olx0d3JpdGViKDEsIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk4LVxuLS1cbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oPTExPXN0cnVjdCBjcHVpbmZvIHtcbi0tXG5hcmNoL25pb3MyL2luY2x1ZGUvYXNtL2NwdWluZm8uaC0zNi1cdC8qIEFkZHJlc3NlcyAqL1xuYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9jcHVpbmZvLmg6Mzc6XHR1MzIgcmVzZXRfYWRkcjtcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM4LVx0dTMyIGV4Y2VwdGlvbl9hZGRyO1xuLS1cbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYz0zMT12b2lkIF9faW5pdCBzZXR1cF9jcHVpbmZvKHZvaWQpXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvY3B1aW5mby5jLTEwMy1cbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYzoxMDQ6XHRjcHVpbmZvLnJlc2V0X2FkZHIgPSBmY3B1KGNwdSwgXCYjMzQ7YWx0cixyZXNldC1hZGRyXCYjMzQ7KTtcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYy0xMDUtXHRjcHVpbmZvLmV4Y2VwdGlvbl9hZGRyID0gZmNwdShjcHUsIFwmIzM0O2FsdHIsZXhjZXB0aW9uLWFkZHJcJiMzNDspO1xuLS1cbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYz00Mz12b2lkIG1hY2hpbmVfcmVzdGFydChjaGFyICpfX3VudXNlZClcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy00NC17XG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmM6NDU6XHRwcl9ub3RpY2UoXCYjMzQ7TWFjaGluZSByZXN0YXJ0ICglMDh4KS4uLlxcblwmIzM0OywgY3B1aW5mby5yZXNldF9hZGRyKTtcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy00Ni1cdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jLTQ5LVx0OlxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jOjUwOlx0OiBcJiMzNDtyXCYjMzQ7IChjcHVpbmZvLnJlc2V0X2FkZHIpXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNTEtXHQ6IFwmIzM0O3I0XCYjMzQ7KTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMjU9c3RhdGljIHZvaWQgX19pbml0IGZ3bm1pX2luaXQodm9pZClcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTEyNi17XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMjc6XHR1bnNpZ25lZCBsb25nIHN5c3RlbV9yZXNldF9hZGRyLCBtYWNoaW5lX2NoZWNrX2FkZHI7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMjgtXHR1OCAqbWNlX2RhdGFfYnVmO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTE0Ni1cdCAqIGFkZHJlc3NlcyBhbnl3YXksIGFuZCB1c2UgYSB0cmFtcG9saW5lIHRvIGdldCB0byB0aGUgcmVhbCBjb2RlLiAqL1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTQ3Olx0c3lzdGVtX3Jlc2V0X2FkZHIgID0gX19wYShzeXN0ZW1fcmVzZXRfZndubWkpIC0gUEhZU0lDQUxfU1RBUlQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNDgtXHRtYWNoaW5lX2NoZWNrX2FkZHIgPSBfX3BhKG1hY2hpbmVfY2hlY2tfZndubWkpIC0gUEhZU0lDQUxfU1RBUlQ7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTUwLVx0aWYgKDAgPT0gcnRhc19jYWxsKGlibV9ubWlfcmVnaXN0ZXJfdG9rZW4sIDIsIDEsIE5VTEwsXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxNTE6XHRcdFx0ICAgc3lzdGVtX3Jlc2V0X2FkZHIsIG1hY2hpbmVfY2hlY2tfYWRkcikpXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNTItXHRcdGZ3bm1pX2FjdGl2ZSA9IDE7XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yMTk4PXN0YXRpYyBib29sIGJwZl9pc19uZXdfYWRkcl9zYW5lKHN0cnVjdCBicGZfaml0ICpqaXQsIGludCBpKVxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNC0gKi9cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MjIxNTpzdGF0aWMgaW50IGJwZl9zZXRfYWRkcihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBpbnQgaSlcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNi17XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yMjMzPXN0YXRpYyBpbnQgYnBmX2ppdF9wcm9nKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU1LVx0YnBmX2ppdF9wcm9sb2d1ZShqaXQsIGZwKTtcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MjI1NjpcdGlmIChicGZfc2V0X2FkZHIoaml0LCAwKSBcdTAwM2MgMClcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI1Ny1cdFx0cmV0dXJuIC0xO1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI2Mi1cdFx0LyogTmV4dCBpbnN0cnVjdGlvbiBhZGRyZXNzICovXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyNjM6XHRcdGlmIChicGZfc2V0X2FkZHIoaml0LCBpICYjNDM7IGluc25fY291bnQpIFx1MDAzYyAwKVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjY0LVx0XHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYz00OTU9c3RhdGljIGludCBhbWR4ZG5hX2dlbV9vYmpfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmosXG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtNTEyLVx0WEROQV9EQkcoeGRuYSwgXCYjMzQ7Qk8gbWFwX29mZnNldCAweCVsbHggdHlwZSAlZCB1c2VycHRyIDB4JWx4IHNpemUgMHglbHhcJiMzNDssXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYzo1MTM6XHRcdCBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXHUwMDI2Z29iai1cdTAwM2V2bWFfbm9kZSksIGFiby1cdTAwM2V0eXBlLFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtNTE0LVx0XHQgdm1hLVx1MDAzZXZtX3N0YXJ0LCBnb2JqLVx1MDAzZXNpemUpO1xuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jPTEyMDE9aW50IGFtZHhkbmFfZHJtX2dldF9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscClcbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYy0xMjIyLVx0aWYgKGFiby1cdTAwM2V0eXBlICE9IEFNRFhETkFfQk9fREVWKVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmM6MTIyMzpcdFx0YXJncy1cdTAwM2VtYXBfb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNmdvYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtMTIyNC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmM9OTc9c3RhdGljIGludCBldGhvc3VfaW9jdGxfYm9fbW1hcF9vZmZzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTEwOS1cbmRyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kcnYuYzoxMTA6XHRhcmdzLVx1MDAzZW9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcdTAwMjZvYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTExMS1cdGRybV9nZW1fb2JqZWN0X3B1dChvYmopO1xuLS1cbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jPTQ4NT1pbnQgaXZwdV9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYy00OTktXHRhcmdzLVx1MDAzZWZsYWdzID0gYm8tXHUwMDNlZmxhZ3M7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYzo1MDA6XHRhcmdzLVx1MDAzZW1tYXBfb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNm9iai1cdTAwM2V2bWFfbm9kZSk7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYy01MDEtXHRhcmdzLVx1MDAzZXZwdV9hZGRyID0gYm8tXHUwMDNldnB1X2FkZHI7XG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGF0YS5jPTc5Nz1pbnQgcWFpY19tbWFwX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjUtXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kYXRhLmM6ODI2Olx0YXJncy1cdTAwM2VvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXHUwMDI2b2JqLVx1MDAzZXZtYV9ub2RlKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjctXG4tLVxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jPTYwPWludCByb2NrZXRfaW9jdGxfY3JlYXRlX2JvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcbi0tXG5kcml2ZXJzL2FjY2VsL3JvY2tldC9yb2NrZXRfZ2VtLmMtMTA4LVx0cmt0X29iai1cdTAwM2VzaXplID0gcmV0O1xuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jOjEwOTpcdGFyZ3MtXHUwMDNlb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNmdlbV9vYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTExMC1cdGFyZ3MtXHUwMDNlZG1hX2FkZHJlc3MgPSBya3Rfb2JqLVx1MDAzZW1tLnN0YXJ0O1xuLS1cbmRyaXZlcnMvYWNwaS9hY3BpY2EvYWNyZXNyYy5oPTIyMD12b2lkXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaDoyMjE6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaC0yMjItXHRcdFx0ICAgc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlKTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTI3Mj1hY3BpX3JzX2dldF9hZGRyZXNzX2NvbW1vbihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXG4tLVxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMDktICpcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmM6MzEwOiAqIEZVTkNUSU9OOiAgICBhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vblxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMTEtICpcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTMyMj12b2lkXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jOjMyMzphY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vbih1bmlvbiBhbWxfcmVzb3VyY2UgKmFtbCxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmMtMzI0LVx0XHRcdCAgIHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSlcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jPTQ0Nj1hY3BpX3JzX2NvbnZlcnRfcmVzb3VyY2VfdG9fYW1sKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSxcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2Ni1cbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNtaXNjLmM6NjY3Olx0XHRcdGFjcGlfcnNfc2V0X2FkZHJlc3NfY29tbW9uKGFtbCwgcmVzb3VyY2UpO1xuZHJpdmVycy9hY3BpL2FjcGljYS9yc21pc2MuYy02NjgtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTc2PXN0YXRpYyBpbnQgYWNwaV9ncGVfaXJxX3NldHVwKHN0cnVjdCBzaV9zbV9pbyAqaW8pXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEwMi1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoxMDM6c3RhdGljIHZvaWQgaXBtaV9zZXRfYWRkcl9kYXRhX2FuZF9zcGFjZShzdHJ1Y3QgcmVzb3VyY2UgKnIsIHN0cnVjdCBzaV9zbV9pbyAqaW8pXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTA0LXtcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM9MTEzPWlwbWlfZ2V0X2luZm9fZnJvbV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTIyLVx0fVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jOjEyMzpcdGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2UocmVzLCBpbyk7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTI0LVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz0yMjc9c3RhdGljIGludCBvZl9pcG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3Mi1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNzM6XHRpcG1pX3NldF9hZGRyX2RhdGFfYW5kX3NwYWNlKFx1MDAyNnJlc291cmNlLCBcdTAwMjZpbyk7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjc0LVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9MTk5PXN0YXRpYyB2b2lkIGFzcGVlZF9rY3NfdXBkYXRlYihzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiByZWcsIHU4IG1hc2ssIHU4IHZhbClcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9rY3NfYm1jX2FzcGVlZC5jLTIyNy0gKi9cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM6MjI4OnN0YXRpYyBpbnQgYXNwZWVkX2tjc19zZXRfYWRkcmVzcyhzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiBhZGRyc1syXSwgaW50IG5yX2FkZHJzKVxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy0yMjkte1xuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9NTU1PXN0YXRpYyBpbnQgYXNwZWVkX2tjc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtNjA4LVxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYzo2MDk6XHRyYyA9IGFzcGVlZF9rY3Nfc2V0X2FkZHJlc3Moa2NzX2JtYywgYWRkcnMsIG5yX2FkZHJzKTtcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtNjEwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYz0yODg9c3RhdGljIGludCBtdGtfcGxsX3ByZXBhcmVfc2V0Y2xyKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0yOTEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmM6MjkyOlx0d3JpdGVsKEJJVChwbGwtXHUwMDNlZGF0YS1cdTAwM2VwbGxfZW5fYml0KSwgcGxsLVx1MDAzZWVuX3NldF9hZGRyKTtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0yOTMtXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTMyNj1zdHJ1Y3QgY2xrX2h3ICptdGtfY2xrX3JlZ2lzdGVyX3BsbF9vcHMoc3RydWN0IG10a19jbGtfcGxsICpwbGwsXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jLTM1MS1cdGlmIChkYXRhLVx1MDAzZWVuX3NldF9yZWcpXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmM6MzUyOlx0XHRwbGwtXHUwMDNlZW5fc2V0X2FkZHIgPSBiYXNlICYjNDM7IGRhdGEtXHUwMDNlZW5fc2V0X3JlZztcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0zNTMtXHRpZiAoZGF0YS1cdTAwM2Vlbl9jbHJfcmVnKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaD02ND1zdHJ1Y3QgbXRrX2Nsa19wbGwge1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03NC1cdHZvaWQgX19pb21lbVx0KmVuX2FkZHI7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg6NzU6XHR2b2lkIF9faW9tZW1cdCplbl9zZXRfYWRkcjtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03Ni1cdHZvaWQgX19pb21lbVx0KmVuX2Nscl9hZGRyO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYz0zNTM9c3RhdGljIHN0cnVjdCBhZWFkX2VkZXNjICphZWFkX2VkZXNjX2FsbG9jKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU2LVx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChpbl9mbGUsIGRwYWEyX2ZsX3NnKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1NTc6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIHFtX3NnX2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU4LVx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsIGluX2xlbik7XG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2Mi1cdFx0XHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTYzOlx0XHRcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHNnX2RtYV9hZGRyZXNzKHJlcS1cdTAwM2VzcmMpKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTY1LVx0XHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2cpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU2NjpcdFx0XHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBxbV9zZ19kbWEgJiM0MztcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjctXHRcdFx0XHRcdCAgKDEgJiM0MzsgISFpdnNpemUpICogc2l6ZW9mKCpzZ190YWJsZSkpO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NzgtXHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1Nzk6XHRcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHNnX2RtYV9hZGRyZXNzKHJlcS1cdTAwM2Vkc3QpKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODAtXHR9IGVsc2Uge1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU4MS1cdFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChvdXRfZmxlLCBkcGFhMl9mbF9zZyk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTgyOlx0XHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBxbV9zZ19kbWEgJiM0MzsgcW1fc2dfaW5kZXggKlxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU4My1cdFx0XHRcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYz0xMTE0PXN0YXRpYyBzdHJ1Y3Qgc2tjaXBoZXJfZWRlc2MgKnNrY2lwaGVyX2VkZXNjX2FsbG9jKHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNDgtXHRkcGFhMl9mbF9zZXRfZm9ybWF0KGluX2ZsZSwgZHBhYTJfZmxfc2cpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjEyNDk6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGVkZXNjLVx1MDAzZXFtX3NnX2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1MC1cbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1My1cdGlmIChyZXEtXHUwMDNlc3JjID09IHJlcS1cdTAwM2Vkc3QpXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NDpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgZWRlc2MtXHUwMDNlcW1fc2dfZG1hICYjNDM7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1NS1cdFx0XHRcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTYtXHRlbHNlXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NzpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgZWRlc2MtXHUwMDNlcW1fc2dfZG1hICYjNDM7IGRzdF9zZ19pZHggKlxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTgtXHRcdFx0XHQgIHNpemVvZigqc2dfdGFibGUpKTtcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzIxNj1zdGF0aWMgaW50IGhhc2hfZGlnZXN0X2tleShzdHJ1Y3QgY2FhbV9oYXNoX2N0eCAqY3R4LCB1MzIgKmtleWxlbiwgdTggKmtleSxcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI2Ni1cdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjMyNjc6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGtleV9kbWEpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTMyNjgtXHRkcGFhMl9mbF9zZXRfbGVuKGluX2ZsZSwgKmtleWxlbik7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI2OS1cdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozMjcwOlx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwga2V5X2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI3MS1cdGRwYWEyX2ZsX3NldF9sZW4ob3V0X2ZsZSwgZGlnZXN0c2l6ZSk7XG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jPTM1MzI9c3RhdGljIGludCBhaGFzaF91cGRhdGVfY3R4KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTYtXHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zZyk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYxNzpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIoaW5fZmxlLCBlZGVzYy1cdTAwM2VxbV9zZ19kbWEpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTgtXHRcdGRwYWEyX2ZsX3NldF9sZW4oaW5fZmxlLCBjdHgtXHUwMDNlY3R4X2xlbiAmIzQzOyB0b19oYXNoKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zNjE5LVx0XHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYyMDpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgc3RhdGUtXHUwMDNlY3R4X2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzYyMS1cdFx0ZHBhYTJfZmxfc2V0X2xlbihvdXRfZmxlLCBjdHgtXHUwMDNlY3R4X2xlbik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3NTYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG5ldGZpbHRlciBOQVQgSC4zMjMgTW9kdWxlJiMzOTtzIEFkZHJlc3MgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGZpbGUgYW5kIHNwZWNpZmljYWxseSB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjcnVjaWFsIGJlY2F1c2UgYm90aCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCBhcmUgY2FsbGluZyBpdC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IGZvciBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIEguMzIzIE5BVCBtb2R1bGUuIE5vdywgYG5hdF9ydHBfcnRjcGAgaXMgaXRzZWxmIGNhbGxlZCB0aHJvdWdoIGEgaG9vayBzZXR1cCBieSBgbmZfbmF0X2gzMjNfaW5pdGAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGBuZl9uYXRfaDMyM19pbml0YCBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIGFuZCBlbmFibGluZyB0aGUgZW50aXJlIEguMzIzIE5BVCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBgbmZfbmF0X2gzMjNfaW5pdGAgYW5kIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3MgaW50ZWdyYXRpbmcgYG5hdF9ydHBfcnRjcGAgYXMgYSBob29rIGFuZCwgYnkgZXh0ZW5zaW9uLCBob3cgYHNldF9hZGRyYCBpcyB1bHRpbWF0ZWx5IGJyb3VnaHQgaW50byBwbGF5LiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIGFkZHJlc3MgdHJhbnNsYXRpb24gcHJvY2VzcyBpcyBpbml0aWF0ZWQgYW5kIG1hbmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdH07XG4gNTQxOlx0XG4gNTQyOlx0c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gY2FsbGZvcndhcmRpbmdfbmF0ID0ge1xuIDU0MzpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtjYWxsZm9yd2FyZGluZ1wmIzM0OyxcbiA1NDQ6XHRcdC5leHBlY3Rmblx0PSBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0LFxuIDU0NTpcdH07XG4gNTQ2Olx0XG4gNTQ3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xuIDU0ODpcdFx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxuIDU0OTpcdFx0LnNldF9oMjI1X2FkZHIgPSBzZXRfaDIyNV9hZGRyLFxuIDU1MDpcdFx0LnNldF9zaWdfYWRkciA9IHNldF9zaWdfYWRkcixcbiA1NTE6XHRcdC5zZXRfcmFzX2FkZHIgPSBzZXRfcmFzX2FkZHIsXG4gNTUyOlx0XHQubmF0X3J0cF9ydGNwID0gbmF0X3J0cF9ydGNwLFxuIDU1MzpcdFx0Lm5hdF90MTIwID0gbmF0X3QxMjAsXG4gNTU0Olx0XHQubmF0X2gyNDUgPSBuYXRfaDI0NSxcbiA1NTU6XHRcdC5uYXRfY2FsbGZvcndhcmRpbmcgPSBuYXRfY2FsbGZvcndhcmRpbmcsXG4gNTU2Olx0XHQubmF0X3E5MzEgPSBuYXRfcTkzMSxcbiA1NTc6XHR9O1xuIDU1ODpcdFxuIDU1OTpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIDU2MDpcdHN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9oMzIzX2luaXQodm9pZClcbiA1NjE6XHR7XG4gNTYyOlx0XHRSQ1VfSU5JVF9QT0lOVEVSKG5mY3RfaDMyM19uYXRfaG9vaywgXHUwMDI2bmF0aG9va3MpO1xuIDU2MzpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKFx1MDAyNnE5MzFfbmF0KTtcbiA1NjQ6XHRcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZjYWxsZm9yd2FyZGluZ19uYXQpO1xuIDU2NTpcdFx0cmV0dXJuIDA7XG4gNTY2Olx0fVxuIDU2NzpcdFxuIDU2ODpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIDU2OTpcdHN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXG4gNTcwOlx0e1xuIDU3MTpcdFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xuIDU3MjpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2cTkzMV9uYXQpO1xuIDU3MzpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcbiA1NzQ6XHRcdHN5bmNocm9uaXplX3JjdSgpO1xuIDU3NTpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2cTkzMV9uYXQpO1xuIDU3NjpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcbiA1Nzc6XHR9XG4gNTc4Olx0XG4gNTc5Olx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gNTgwOlx0bW9kdWxlX2luaXQobmZfbmF0X2gzMjNfaW5pdCk7XG4gNTgxOlx0bW9kdWxlX2V4aXQobmZfbmF0X2gzMjNfZmluaSk7XG4gNTgyOlx0XG4gNTgzOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtKaW5nIE1pbiBaaGFvIFx1MDAzY3poYW9qaW5nbWluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldFx1MDAzZVwmIzM0Oyk7XG4gNTg0Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0guMzIzIE5BVCBoZWxwZXJcJiMzNDspO1xuIDU4NTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gNTg2Olx0TU9EVUxFX0FMSUFTX05GX05BVF9IRUxQRVIoXCYjMzQ7aDMyM1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDAxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGwgSGllcmFyY2h5OiBgc2V0X2FkZHJgIGFuZCBOQVQgSG9va3MqKgoKUmlnaHQsIHNvIGBzZXRfYWRkcmAg4oCTIHRoYXTigJlzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgTkFUIHByb2Nlc3MsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiBILjMyMy4gSSBzZWUgdGhhdCBgc2V0X2FkZHJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYC4gTWFrZXMgc2Vuc2UsIHRob3NlIGFyZSB0aGUgdHlwaWNhbCBwcm90b2NvbHMgdGhhdCB3b3VsZCBuZWVkIGFkZHJlc3MgdHJhbnNsYXRpb24uIE5vdywgSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVydGhlciB1cHN0cmVhbS4KCldoZXJlIGRvICp0aG9zZSogZnVuY3Rpb25zLCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgZ2V0IGNhbGxlZD8gSSBiZXQgdGhlIGhvb2sgZnVuY3Rpb25zIGluIHRoZSBgbmF0aG9va3NgIG1vZHVsZSBhcmUgaW52b2x2ZWQuIExldCBtZSBjaGVjayB0aGF0LiBZZXAsIGxvb2tzIGxpa2UgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgdGhlIG5leHQgc3RlcCB0byBpbnZlc3RpZ2F0ZS4gT2theSwgc28gdGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBmb2xsb3cgbm93LiBJIG5lZWQgdG8gc2VlIGhvdyBgbmZjdF9oMzIzX25hdF9ob29rYCB0cmlnZ2VycyB0aG9zZSBOQVQgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBILjMyMyBzaWduYWxpbmcuIFRoaXMgd2lsbCBpbGx1bWluYXRlIHRoZSBjcnVjaWFsIGxpbmsgYmV0d2VlbiBgc2V0X2FkZHJgIGFuZCB0aGUgb3ZlcmFsbCBOQVQgcHJvY2Vzcywgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyByaWdodCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY3RfaDMyM19uYXRfaG9vayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oPTM0PWludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTM3LVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozODpzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyB7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTM5LVx0aW50ICgqc2V0X2gyNDVfYWRkcikoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC05My19O1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDo5NDpleHRlcm4gY29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgX19yY3UgKm5mY3RfaDMyM19uYXRfaG9vaztcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTUtXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQyPXN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGNhbGxmb3J3YXJkaW5nX25hdCA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NDYtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ4LVx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTU2MD1zdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NjEte1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTYyOlx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFx1MDAyNm5hdGhvb2tzKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU2My1cdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZxOTMxX25hdCk7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTY5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NzAte1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTcxOlx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTcyLVx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2cTkzMV9uYXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTUxPU1PRFVMRV9QQVJNX0RFU0MoY2FsbGZvcndhcmRfZmlsdGVyLCBcJiMzNDtvbmx5IGNyZWF0ZSBjYWxsIGZvcndhcmRpbmcgZXhwZWN0YXRpb25zIFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTU6Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgX19yY3UgKm5mY3RfaDMyM19uYXRfaG9vayBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTY6RVhQT1JUX1NZTUJPTF9HUEwobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjE0LXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjIxNTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjE2LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNTEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyNTI6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNTMtXHRpZiAobWVtY21wKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51Myxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI4OS17XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyOTA6XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI5MS1cdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzExLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MzEyOlx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzEzLVx0aWYgKG1lbWNtcChcdTAwMjZjdC1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NjIyPXN0YXRpYyBpbnQgZXhwZWN0X2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyNi17XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo2Mjc6XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyOC1cdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjQ4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NjQ5Olx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjUwLVx0aWYgKG1lbWNtcChcdTAwMjZjdC1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NzM5PXN0YXRpYyBpbnQgZXhwZWN0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzQ1LXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc0NjpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzQ3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03NzUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo3NzY6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03NzctXHRpZiAobWVtY21wKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51Myxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz04MDA9c3RhdGljIGludCBwcm9jZXNzX3NldHVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy04MDUte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6ODA2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy04MDctXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgyMS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjgyMjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgyMy1cdGlmICgoc2V0dXAtXHUwMDNlb3B0aW9ucyBcdTAwMjYgZVNldHVwX1VVSUVfZGVzdENhbGxTaWduYWxBZGRyZXNzKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMTg3PXN0YXRpYyBpbnQgZXhwZWN0X3E5MzEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTExOTItXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMTkzOlx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMTk0LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTIyNjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMjQ3PXN0YXRpYyBpbnQgcHJvY2Vzc19ncnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTEte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1MjpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1My1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjU1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzExPXN0YXRpYyBpbnQgcHJvY2Vzc19ycnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMTYtXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzE3Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzE4LVx0aW50IHJldDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzMwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTMzMTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMzItXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzUwPXN0YXRpYyBpbnQgcHJvY2Vzc19yY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNTUtXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzU2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzU3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzY1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTM2NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNjctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDA0PXN0YXRpYyBpbnQgcHJvY2Vzc191cnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MDktXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDEwOlx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDExLVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDE4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQxOTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MjAtXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDQwPXN0YXRpYyBpbnQgcHJvY2Vzc19hcnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NDUtXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDQ2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDQ3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDU1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQ1NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NTctXHRpZiAoIW5hdGhvb2spXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ5MD1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTA3LVx0aWYgKCFtZW1jbXAoXHUwMDI2YWRkciwgXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0LnUzLCBzaXplb2YoYWRkcikpKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTA4Olx0XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MDktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTEwLVx0XHQvKiBBbnN3ZXJpbmcgQUNGICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTExOlx0XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTEyLVx0XHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTQwPXN0YXRpYyBpbnQgcHJvY2Vzc19scnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDQte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0NTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU0Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTQ4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0OTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NTAtXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTk2PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE2MDAte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTYwMTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwMi1cdGludCByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwNS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE2MDY6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjA3LVx0aWYgKG5hdGhvb2sgXHUwMDI2XHUwMDI2IG5mX2N0X2wzbnVtKGN0KSA9PSBORlBST1RPX0lQVjQgXHUwMDI2XHUwMDI2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzI5CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayBhbmQgQ29udGV4dCBvZiBgbmZjdF9oMzIzX25hdF9ob29rYCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHNlZWluZyB0aGF0IGBuZmN0X2gzMjNfbmF0X2hvb2tgIGlzIGNhbGxlZCBmcm9tIGEgcHJldHR5IGV4dGVuc2l2ZSBsaXN0IG9mIGZ1bmN0aW9ucyB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBvYnNlcnZpbmcgaXRzIHVzZSB3aXRoaW4gYGV4cGVjdF9ydHBfcnRjcGAsIGBleHBlY3RfdDEyMGAsIGBleHBlY3RfaDI0NWAsIGBleHBlY3RfY2FsbGZvcndhcmRpbmdgLCBgcHJvY2Vzc19zZXR1cGAsIGBleHBlY3RfcTkzMWAsIGFuZCB0aGUgZW50aXJlIHN1aXRlIG9mIGBwcm9jZXNzXypgIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggR1JRLCBSUlEsIFJDRiwgVVJRLCBBUlEsIEFDRiwgTFJRLCBhbmQgSVJSLiBUaGF0JiMzOTtzIGEgbG90IG9mIGRpZmZlcmVudCBjYWxsIHBhdGhzIHRvIGJlIGF3YXJlIG9mISBUaGlzIHN1Z2dlc3RzIGEgcmVhbGx5IGNlbnRyYWwgcm9sZSBpbiBob3cgSC4zMjMgTkFUIHRyYXZlcnNhbCBpcyBoYW5kbGVkLgoKSSBhbHNvIHNlZSBhIG1vZGlmaWNhdGlvbiB0byBgaDI0NV9oZWxwYCBpbiB0aGUgc2FtZSBmaWxlIGFzIHBhcnQgb2YgdGhpcyBwYXRjaC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgaXMgaW1wb3J0YW50LCBhcyBpdCBsaWtlbHkgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggSC4yNDUgc2lnbmFsaW5nLiBJdCBzZWVtcyB3aXNlIHRvIHF1aWNrbHkgZGl2ZSBpbnRvIHVuZGVyc3RhbmRpbmcgaG93IGBoMjQ1X2hlbHBgIGZ1bmN0aW9ucyBpbiBvcmRlciB0byBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2gyNDVfaGVscCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUzMC1cdFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE3MTU9c3RhdGljIGludCBfX2luaXQgaDMyM19oZWxwZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE3MjYtXHRcdFx0ICBcJiMzNDtILjI0NVwmIzM0OywgMCwgMCwgMCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE3Mjc6XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTg0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBhIENvbm50cmFjayBIZWxwZXIqKgoKT2theSwgc28gYGgyNDVfaGVscGAgaXMgZmxhZ2dlZCBhcyBhIGNvbm50cmFjayBoZWxwZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0JiMzOTtzIGdldCByaWdodCBpbnRvIHRoZSBjb2RlIGZvciBgaDMyM19oZWxwZXJfaW5pdGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBUaGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgaG93IHRoZSBoZWxwZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIGNvbm50cmFjaywgd2hhdCBjYWxsYmFja3MgYXJlIHVzZWQsIGFuZCBob3cgaXQgaGFuZGxlcyBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBILjI0NSwgZ2l2ZW4gSC4zMjMmIzM5O3MgcmVsYXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBoZWxwZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3MTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IHJhc19leHBfcG9saWN5ID0ge1xuMTcxMTpcdFx0Lm1heF9leHBlY3RlZFx0XHQ9IDMyLFxuMTcxMjpcdFx0LnRpbWVvdXRcdFx0PSAyNDAsXG4xNzEzOlx0fTtcbjE3MTQ6XHRcbjE3MTU6XHRzdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXG4xNzE2Olx0e1xuMTcxNzpcdFx0aW50IHJldDtcbjE3MTg6XHRcbjE3MTk6XHRcdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcmFzWzBdLCBBRl9JTkVULCBJUFBST1RPX1VEUCxcbjE3MjA6XHRcdFx0XHQgIFwmIzM0O1JBU1wmIzM0OywgUkFTX1BPUlQsIFJBU19QT1JULCBSQVNfUE9SVCxcbjE3MjE6XHRcdFx0XHQgIFx1MDAyNnJhc19leHBfcG9saWN5LCAwLCByYXNfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyMjpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9yYXNbMV0sIEFGX0lORVQ2LCBJUFBST1RPX1VEUCxcbjE3MjM6XHRcdFx0XHQgIFwmIzM0O1JBU1wmIzM0OywgUkFTX1BPUlQsIFJBU19QT1JULCBSQVNfUE9SVCxcbjE3MjQ6XHRcdFx0XHQgIFx1MDAyNnJhc19leHBfcG9saWN5LCAwLCByYXNfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyNTpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1LCBBRl9VTlNQRUMsIElQUFJPVE9fVURQLFxuMTcyNjpcdFx0XHRcdCAgXCYjMzQ7SC4yNDVcJiMzNDssIDAsIDAsIDAsXG4xNzI3Olx0XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyODpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcbjE3Mjk6XHRcdFx0XHQgIFwmIzM0O1EuOTMxXCYjMzQ7LCBROTMxX1BPUlQsIFE5MzFfUE9SVCwgUTkzMV9QT1JULFxuMTczMDpcdFx0XHRcdCAgXHUwMDI2cTkzMV9leHBfcG9saWN5LCAwLCBxOTMxX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcbjE3MzE6XHRcdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVENQLFxuMTczMjpcdFx0XHRcdCAgXCYjMzQ7US45MzFcJiMzNDssIFE5MzFfUE9SVCwgUTkzMV9QT1JULCBROTMxX1BPUlQsXG4xNzMzOlx0XHRcdFx0ICBcdTAwMjZxOTMxX2V4cF9wb2xpY3ksIDAsIHE5MzFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTczNDpcdFxuMTczNTpcdFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcl9yZWdpc3RlcihcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX2gyNDUsXG4xNzM2Olx0XHRcdFx0XHRcdCAgIFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xuMTczNzpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE3Mzg6XHRcdFx0cmV0dXJuIHJldDtcbjE3Mzk6XHRcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMSxcbjE3NDA6XHRcdFx0XHRcdFx0ICAgIEFSUkFZX1NJWkUobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxKSxcbjE3NDE6XHRcdFx0XHRcdFx0ICAgIG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpO1xuMTc0MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE3NDM6XHRcdFx0Z290byBlcnIxO1xuMTc0NDpcdFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9yYXMsXG4xNzQ1Olx0XHRcdFx0XHRcdCAgICBBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcmFzKSxcbjE3NDY6XHRcdFx0XHRcdFx0ICAgIG5mX2Nvbm50cmFja19oZWxwZXJfcmFzX3B0cik7XG4xNzQ3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTc0ODpcdFx0XHRnb3RvIGVycjI7XG4xNzQ5Olx0XG4xNzUwOlx0XHRyZXR1cm4gMDtcbjE3NTE6XHRlcnIyOlxuMTc1MjpcdFx0bmZfY29ubnRyYWNrX2hlbHBlcnNfdW5yZWdpc3RlcihuZl9jb25udHJhY2tfaGVscGVyX3E5MzFfcHRyLFxuMTc1MzpcdFx0XHRcdFx0XHRBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpKTtcbjE3NTQ6XHRlcnIxOlxuMTc1NTpcdFx0bmZfY29ubnRyYWNrX2hlbHBlcl91bnJlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xuMTc1NjpcdFx0cmV0dXJuIHJldDtcbjE3NTc6XHR9XG4xNzU4Olx0XG4xNzU5Olx0c3RhdGljIHZvaWQgX19leGl0IGgzMjNfaGVscGVyX2V4aXQodm9pZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1MzkKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiA4MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBILjI0NSBDb25udHJhY2sgSGVscGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSC4yNDUgY29ubnRyYWNrIGhlbHBlciwgc3BlY2lmaWNhbGx5IGBoMjQ1X2hlbHBgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBhZGRlZCB3aXRoaW4gYGgyNDVfaGVscGAgdGhhdCBlbmZvcmNlcyBUQ1AgKGBpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVENQKSByZXR1cm4gTkZfQUNDRVBUO2ApLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcHJvdG9jb2wtc3BlY2lmaWMgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBvdGhlciBwYXJ0IG9mIHRoZSBwYXRjaCBtb2RpZmllcyBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCB0byB1c2UgYG5mX2N0X3Byb3RvbnVtKGN0KWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAuCgpJbml0aWFsbHksIEkgdGhvdWdodCB0aGlzIG1pZ2h0IGJlIGFib3V0IElQdjYgY29tcGF0aWJpbGl0eSwgYnV0IGNvbnNpZGVyaW5nIGBuZl9uYXRfaDMyMy5jYCBpcyBleHBsaWNpdGx5IElQdjQsIHRoYXQmIzM5O3MgbGVzcyBsaWtlbHkuIEhvd2V2ZXIsIHRoZSB1c2Ugb2YgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAgaW4gYHNldF9hZGRyYCBpcyBwcm9ibGVtYXRpYyBpbiBpdHNlbGYuICBUaGUga2V5IHJlYWxpemF0aW9uIGhlcmUgaXMgdGhhdCBhIHVzZXIgY2FuICpiaW5kKiB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIE5vdywgd2l0aCBgaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sYCwgd2UgcnVuIGludG8gcHJvYmxlbXMgd2hlbiBub24tVENQIHBhY2tldHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRoZSBoZWxwZXIuIEZvciBleGFtcGxlLCBpZiBhbiBJQ01QIGVycm9yIG9yIHNpbWlsYXIgcGFja2V0IGNvbWVzIHRocm91Z2ggYWZ0ZXIgYSBVRFAgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgdGhlIG9yaWdpbmFsIGBpcF9oZHIoc2tiKS0mZ3Q7cHJvdG9jb2xgIHZhbHVlIGlzIHVzZWQsIGFuZCB0aGUgbWFuZ2xlIGZ1bmN0aW9uIGlzIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgVURQLiBUaGlzIHRoZW4gbGVhZHMgdG8gaXNzdWVzIGFjY2Vzc2luZyBVRFAgaGVhZGVycyBvbiBub24tVURQIHBhY2tldHMuIEJpbmdvISBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNyYXNoIG9yIE9PQiByZWFkLgoKVXNpbmcgYG5mX2N0X3Byb3RvbnVtKGN0KWAgc29sdmVzIHRoaXMuIEl0IHJlbGllcyBvbiB0aGUgKmNvbm5lY3Rpb24mIzM5O3MqIHByb3RvY29sLCBub3QgdGhlICpwYWNrZXQmIzM5O3MqIHByb3RvY29sLiBUaGUgYWRkZWQgc3dpdGNoIHN0YXRlbWVudCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhpcyBieSBwcmV2ZW50aW5nIGNhbGxzIHRvIG1hbmdsZSBmdW5jdGlvbnMgZm9yIHVuZXhwZWN0ZWQgcHJvdG9jb2xzLCB3aGljaCBpcyBhIHNvbGlkLCBkZWZlbnNpdmUgY29kaW5nIHByYWN0aWNlLgoKVGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgYHN3aXRjaGAgc3RhdGVtZW50OgpgYGBjCglzd2l0Y2ggKG5mX2N0X3Byb3RvbnVtKGN0KSkgewoJY2FzZSBJUFBST1RPX1RDUDoKLi4uCgljYXNlIElQUFJPVE9fVURQOgouLi4KCWRlZmF1bHQ6CgkJcmV0dXJuIC0xOwoJfQpgYGAKVGhpcyBhZGRpdGlvbmFsIGNoZWNrIGlzIGNyaXRpY2FsIGZvciBoYW5kbGluZyB1bmV4cGVjdGVkIHByb3RvY29scyB0aGF0IGNvdWxkIGNvbWUgaW4uCgpGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZSB0byBgaDI0NV9oZWxwYCBlZmZlY3RpdmVseSBpZ25vcmVzIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMsIHdoaWNoIGl0IGV4cGVjdHMgdG8gYmUgVENQLgoKVGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgZnVuY3Rpb25hbCBjaGFuZ2UuIE15IG5leHQgc3RlcCB3b3VsZCBiZSBmdXp6aW5nIHRoaXMgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3b3VsZCBiZSBgaDI0NV9oZWxwYCwgYWxvbmcgd2l0aCByZWxhdGVkIE5BVCBmdW5jdGlvbnM6IGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgLCBgbmF0X2gyNDVgLCBgbmF0X2NhbGxmb3J3YXJkaW5nYCwgYG5hdF9xOTMxYCwgYHNldF9oMjQ1X2FkZHJgLCBgc2V0X2gyMjVfYWRkcmAsIGBzZXRfc2lnX2FkZHJgLCBhbmQgYHNldF9yYXNfYWRkcmAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiBgbmZfbmF0X2gzMjMuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA4OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlF1aWNrIFNjYW4gZm9yIFN0YXRpYyBJbnRlZ2VyIERlY2xhcmF0aW9ucyBpbiB0aGUgTkFUIEguMzIzIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZS4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEguMzIzIE5BVCBhbmQgcG90ZW50aWFsbHkgaW50ZXJuYWwgaW50ZWdlciBzdGF0ZXMsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3Igc3RhdGljIGludGVnZXIgdmFyaWFibGUgZGVjbGFyYXRpb25zLiBUaGUgcXVpY2tlc3Qgd2F5IHRvIGRvIHRoYXQgaW4gdGhpcyBzY2VuYXJpbyBpcyBwcm9iYWJseSB0byBydW4gYGdyZXBgIG9uIHRoZSBgbmZfbmF0X2gzMjMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCBmb3IgbGluZXMgdGhhdCBzdGFydCB3aXRoIGBzdGF0aWMgaW50YC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBwYXNzIGF0IGFueSBzdGF0aWNhbGx5IGRlY2xhcmVkIGludGVnZXJzIHRoYXQgYXJlIHJlbGV2YW50IHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZSBpbiB0aGF0IHNwZWNpZmljIG5ldGZpbHRlciBmaWxlLiBJIHdhbnQgdG8gc2VlIHdoYXQmIzM5O3MgYmVpbmcgbWFuYWdlZCwgd2hhdCB2YXJpYWJsZXMgY291bGQgYmUgaG9sZGluZyBpbnRlcm5hbCBzdGF0ZXMgdGhhdCBtaWdodCBiZSBjYXVzaW5nIGlzc3Vlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCBkaWdzIHVwLiBJdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgSC4zMjMgTkFUIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjItLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyMzpzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjQtXHRcdCAgICB1bnNpZ25lZCBjaGFyICoqZGF0YSwgaW50IGRhdGFvZmYsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNzUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo3NjpzdGF0aWMgaW50IHNldF9oMjI1X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy03Ny1cdFx0XHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTg1LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6ODY6c3RhdGljIGludCBzZXRfaDI0NV9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHByb3RvZmYsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy04Ny1cdFx0XHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTk2LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6OTc6c3RhdGljIGludCBzZXRfc2lnX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtOTgtXHRcdFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMTUyLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MTUzOnN0YXRpYyBpbnQgc2V0X3Jhc19hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1NC1cdFx0XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0xODEtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxODI6c3RhdGljIGludCBuYXRfcnRwX3J0Y3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMTgzLVx0XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5MC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI5MTpzdGF0aWMgaW50IG5hdF90MTIwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5Mi1cdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyOC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMyOTpzdGF0aWMgaW50IG5hdF9oMjQ1KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMzMC1cdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTM4Mj1zdGF0aWMgdm9pZCBpcF9uYXRfcTkzMV9leHBlY3Qoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00MDktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo0MTA6c3RhdGljIGludCBuYXRfcTkzMShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00MTEtXHRcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz00NzQ9c3RhdGljIHZvaWQgaXBfbmF0X2NhbGxmb3J3YXJkaW5nX2V4cGVjdChzdHJ1Y3QgbmZfY29ubiAqbmV3LFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ5NS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ5NjpzdGF0aWMgaW50IG5hdF9jYWxsZm9yd2FyZGluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTctXHRcdFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBuYXRob29rcyA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NTktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjA6c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgSC4zMjMgTkFUIE1vZHVsZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZfbmF0X2gzMjMuY2AgZmlsZSBhbmQgaW1tZWRpYXRlbHkgdGhlICYjMzQ7c3RhdGljJiMzNDsgZGVjbGFyYXRpb24gb24gYWxsIHRob3NlIGZ1bmN0aW9ucyBwb3BzIG91dC4gVGhhdCBzdWdnZXN0cyB0aGVzZSBhcmUgYWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoaXMgbW9kdWxlLCBsaWtlbHkgZm9yIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIG5hbWluZyBjb25mbGljdHMuIEdvb2QgcHJhY3RpY2UsIGdlbmVyYWxseS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucyBhcmUgdXNlZC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgb3ZlciB0byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3IgbWFpbiBlbnRyeSBwb2ludHMgZm9yIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb2NhdGluZyB0aGUgYGgyNDVfaGVscGAgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3MgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIEguMjQ1IHNpZ25hbGluZy4gU2VlaW5nIHdoZXJlIHRoYXQmIzM5O3MgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgTkFUIGhlbHBlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBpbnNwZWN0aW9uIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoMjQ1X2hlbHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUzMC1cdFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE3MTU9c3RhdGljIGludCBfX2luaXQgaDMyM19oZWxwZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE3MjYtXHRcdFx0ICBcJiMzNDtILjI0NVwmIzM0OywgMCwgMCwgMCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE3Mjc6XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDY1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDb25udHJhY2sgSGVscGVyIFBvbmRlcmluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIEl0JiMzOTtzIHNlZW1pbmcgcHJldHR5IHN0YXRpYyBpbiBpdHMgc3RydWN0dXJlLCBpc24mIzM5O3QgaXQ/IEJ1dCwgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhICpjb25udHJhY2sgaGVscGVyKi4gVGhhdCBtZWFucyBpdHMgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyBnb2luZyB0byBiZSB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgaW5qZWN0ZWQgaW50byB0aGUgY29ubnRyYWNrIGZyYW1ld29yay4gSSYjMzk7bSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgY29udHJvbCBmbG93IGhlcmUsIHNlZWluZyBob3cgdGhpcyBoZWxwZXIgYWN0dWFsbHkgZ2V0cyBpbnZva2VkIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZy4KCk15IGNvbmNlcm4gaXMgd2hldGhlciB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LCBhcyBteSBleHBlcmllbmNlIHRlbGxzIG1lIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG1vcmUgdHJpY2t5LiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgd2l0aGluIGBuZl9jb25udHJhY2tfaDMyM19tYWluLmNgPyBTb21ldGhpbmcgdGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciB2aWV3IG9mIGhvdyB0aGlzIHRoaW5nIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWw/IEZpbmRpbmcgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gbWF5IHByb3ZpZGUgc29tZSBjbHVlcyBob3cgdGhlIGhlbHBlciBpcyBpbnZva2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU4OS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU5MDppbnQgZ2V0X2gyMjVfYWRkcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHVuc2lnbmVkIGNoYXIgKmRhdGEsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXHRcdCAgVHJhbnNwb3J0QWRkcmVzcyAqdGFkZHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTU5CgkJCQkJCQlvdXRwdXQ6IDYyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgRnVuY3Rpb24gTW9kaWZpZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBnZXRfaDIyNV9hZGRyYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbm90aWNpbmcgaXQmIzM5O3MgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoaXMgc3BhcmtzIGEgdHJhaW4gb2YgdGhvdWdodDogaWYgKnRoaXMqIGZ1bmN0aW9uIGlzbiYjMzk7dCBzdGF0aWMsIHdoYXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBtb2RpZmllcnMgb24gdGhlIG90aGVycywgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkZXNpZ24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgZ2xvYmFsbHkgYWNjZXNzaWJsZSwgb3IgaXMgaXQgc3VwcG9zZWQgdG8gYmUgZW5jYXBzdWxhdGVkPyBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBpcyBjcml0aWNhbCB0byBlbnN1cmluZyBwcm9wZXIgZW5jYXBzdWxhdGlvbiBhbmQgYXZvaWRpbmcgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIGVzcGVjaWFsbHkgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50IHdoZXJlIHVuZXhwZWN0ZWQgYWNjZXNzIGNvdWxkIGxlYWQgdG8gcmFjZSBjb25kaXRpb25zLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aMC05X10mIzQzOyBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU4OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmZfaDMyM19sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU5LXN0YXRpYyBjaGFyICpoMzIzX2J1ZmZlcjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz01ODg9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpuZl9jb25udHJhY2tfaGVscGVyX2gyNDVfcHRyIF9fcmVhZF9tb3N0bHk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo1OTA6aW50IGdldF9oMjI1X2FkZHIoc3RydWN0IG5mX2Nvbm4gKmN0LCB1bnNpZ25lZCBjaGFyICpkYXRhLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTkxLVx0XHQgIFRyYW5zcG9ydEFkZHJlc3MgKnRhZGRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUxNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25udHJhY2sgSGVscGVyIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEguMjI1L0guMjQ1IHNpdHVhdGlvbi4gSXQgc2VlbXMgYGdldF9oMjI1X2FkZHJgIGlzIHRoZSBsb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLi4uIFdhaXQsIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBgaDI0NV9oZWxwYCAqaXMqIGEgY29ubnRyYWNrIGhlbHBlciwgYW5kIGNvbm50cmFjayBmdXp6aW5nIG9mdGVuIGludm9sdmVzIHRhcmdldGluZyB0aGUgaGVscGVycyB0aGVtc2VsdmVzLiBJJiMzOTttIHRoaW5raW5nLCBldmVuIHRob3VnaCBgaDI0NV9oZWxwYCBpcyBzdGF0aWMsIHN5emthbGxlciAqbWlnaHQqIHN0aWxsIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSYjMzk7cyBkZWJ1ZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUuIEl0JiMzOTtzIHdvcnRoIGxpc3RpbmcgaXQgYXMgYSBmb2N1cyBzeW1ib2wuCgpBbHNvLCBJIHNlZSBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCBpcyBzdGF0aWMgdG9vLiBUaGUgc3RhdGljLW5lc3Mgb2YgZnVuY3Rpb25zIGxpa2UgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAgYWxzbyBjb25jZXJucyBtZSwgYnV0IHN0aWxsLCBJIGFtIGdvaW5nIHRvIGxpc3QgYGgyNDVfaGVscGAsIGBzZXRfYWRkcmAsIGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgIGFzIGZvY3VzIHN5bWJvbHMuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb25zIGxpbmVkIHVwLiBMZXQmIzM5O3MgZG91YmxlLWNoZWNrOiBgTkZfQ09OTlRSQUNLX0gzMjNgLCBgTkZfTkFUX0gzMjNgLCBgTkZfTkFUYCwgYW5kIGBORl9DT05OVFJBQ0tgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbXBvbmVudHMgZW5hYmxlZC4KCkxldCYjMzk7cyBkbyBhIG1vcmUgdGhvcm91Z2ggY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjExCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgaGluZ2VzIG9uIHRoZSBzdGF0ZSBvZiBgTkVURklMVEVSX0FEVkFOQ0VEYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzZWNvbmRhcnkgdW50aWwgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHByb3ZpZGVkIGJ5IHRoYXQgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCB0aGUgdmFyaWFibGUgdGhhdCBkaWN0YXRlcyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGFwcHJvYWNoLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZGV0ZXJtaW5lICpob3cqIHRoaXMgb3B0aW9uIGlzIHNldCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcyBvciByZW1vdmVzLCBhbmQgaG93IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgYmVoYXZlcyBpbiBkaWZmZXJlbnQgYnVpbGQgY29uZmlndXJhdGlvbnMuIElzIGl0IGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBpbnRlcm1lZGlhcnkgbGV2ZWw/IFRoYXQgaXMgdGhlIHF1ZXN0aW9uLiBUaGUgYW5zd2VyIGltcGFjdHMgKmV2ZXJ5dGhpbmcqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcbm5ldC9LY29uZmlnLTIxOS1cbm5ldC9LY29uZmlnOjIyMDpjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0FkdmFuY2VkIG5ldGZpbHRlciBjb25maWd1cmF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSYjMzk7bSB0aGlua2luZywgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEguMzIzIE5BVCBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gSSBzZWUgdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZSBoZXJlLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgb2YgY291cnNlLCB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgKGBORl9DT05OVFJBQ0tfSDMyM2ApIGlzIHJlcXVpcmVkLiBOb3csIG5hdHVyYWxseSwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBJIGFsc28gbmVlZCBgTkZfTkFUX0gzMjNgLgoKQmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5GX05BVF9IMzIzYCBkb2VzbiYjMzk7dCBoYXZlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwgaW4gdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSByZXF1aXJlbWVudHMgaXQgbWlnaHQgaW1wb3NlIG9uIHRoZSBzdXJyb3VuZGluZyBlbnZpcm9ubWVudC4gVGhpcyBpcyBqdXN0IHN0YW5kYXJkIHByYWN0aWNlLCBvZiBjb3Vyc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdGNvbmZpZyBORl9OQVRfUFBUUFxuIDExOTpcdFx0dHJpc3RhdGVcbiAxMjA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gMTIxOlx0XHRkZWZhdWx0IE5GX0NPTk5UUkFDS19QUFRQXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIE5GX05BVF9IMzIzXG4gMTI0Olx0XHR0cmlzdGF0ZVxuIDEyNTpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiAxMjY6XHRcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcbiAxMjc6XHRcbiAxMjg6XHRlbmRpZiAjIE5GX05BVFxuIDEyOTpcdFxuIDEzMDpcdGNvbmZpZyBJUF9ORl9JUFRBQkxFU1xuIDEzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXCYjMzQ7XG4gMTMyOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgSC4zMjMgTkFUIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYmFzZWQgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIChgTkZfQ09OTlRSQUNLX0gzMjNgKSBpcyB0aGUga2V5LCBhbmQgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYE5GX0NPTk5UUkFDS2AgYmVpbmcgYWN0aXZlLCB3aGljaCBpcyB0eXBpY2FsLiBOb3csIEkgc2VlIHRoYXQgZW5hYmxpbmcgSC4zMjMgTkFUIChgTkZfTkFUX0gzMjNgKSBpc24mIzM5O3QgZGlyZWN0bHkgZXhwb3NlZCBpbiB0aGUgbWVudSBjb25maWd1cmF0aW9uOyB0aGVyZSYjMzk7cyBubyBwcm9tcHQgc3RyaW5nIGZvciBpdC4gQWgsIEkgZ2V0IGl0IOKAkyBpdCYjMzk7cyBhbiBhdXRvbWF0aWNhbGx5LXNlbGVjdGVkIGRlcGVuZGVuY3kuIEl0IGJlY29tZXMgYWN0aXZlIG9ubHkgaWYgSSBlbmFibGUgdGhlIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tlciAoYE5GX0NPTk5UUkFDS19IMzIzYCkgKmFuZCogdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgKGBORl9OQVRgKS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIHNvbWV3aGF0LCBhbHRob3VnaCBpdCByZXF1aXJlcyBhIHNsaWdodGx5IGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgpUaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGNvdXJzZSBvZiBhY3Rpb24sIGZvciBILjMyMyBOQVQgZnVuY3Rpb25hbGl0eSwgaXMgdG8gZW5hYmxlICpib3RoKiBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfTkFUYC4gSXQmIzM5O3MgZXNzZW50aWFsIHRvIGVuYWJsZSBiYXNlIE5BVCBmdW5jdGlvbmFsaXR5LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IEkgaGF2ZSBgTkZfTkFUYCBlbmFibGVkIGp1c3QgdG8gYmUgc3VyZS4gVGhhdCB3b3VsZCBiZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlZmF1bHQgblxuIDQwMTpcdFx0ZGVwZW5kcyBvbiAoTkVURklMVEVSX05FVExJTktfUVVFVUUgfHwgTkVURklMVEVSX05FVExJTktfTE9HKSBcdTAwMjZcdTAwMjYgTkZfQ1RfTkVUTElOS1xuIDQwMjpcdFx0aGVscFxuIDQwMzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxuIDQwNDpcdFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xuIDQwNTpcdFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgTkZfTkFUXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiA0MTA6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDQxMTpcdFx0aGVscFxuIDQxMjpcdFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXG4gNDEzOlx0XHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXG4gNDE0Olx0XHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXG4gNDE1Olx0XG4gNDE2Olx0Y29uZmlnIE5GX05BVF9BTUFOREFcbiA0MTc6XHRcdHRyaXN0YXRlXG4gNDE4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDE5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0FNQU5EQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY4MQoJCQkJCQkJb3V0cHV0OiAyMTMKCQkJCQkJCXRob3VnaHRzOiA1MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgSC4zMjMgTkFUIGFuZCBDb25udHJhY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgdGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sYCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgb3BlbiBhIHZ1bG5lcmFiaWxpdHkgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBzb21lb25lIG1hbnVhbGx5IGNvbmZpZ3VyZXMgdGhlIEguMjQ1IGhlbHBlciBvbiBhIFVEUCBjb25uZWN0aW9uLiBJdCYjMzk7cyBhbHNvIGFkZGluZyBhIHNhZmV0eSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBzcGVjaWZpY2FsbHkgaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMsIHdoaWNoIG1ha2VzIHNlbnNlLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCByZWFjaGVzIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBtYWtpbmcgZnV6emluZyBhIGdvb2QgaWRlYS4KCkZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgZW5hYmxlZC4gVGhhdCYjMzk7cyBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9OQVRgLCBhbmQgYE5GX0NPTk5UUkFDS19IMzIzYC4gSSB3aWxsIGxpc3QgdGhvc2UgY29uZmlndXJhdGlvbnMuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSeKAmWxsIGZvY3VzIG9uIGBoMjQ1X2hlbHBgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuYXRfdDEyMGAuIGBzZXRfYWRkcmAgaXMgYWxzbyBpbXBvcnRhbnQsIHNpbmNlIGl0JiMzOTtzIHVzZWQgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHNldF9hZGRyYCBpc24mIzM5O3QgaW5saW5lZCwgYXMgaXRzIGFkZHJlc3MgaXMgdGFrZW4gKGl0JiMzOTtzIHB1dCBpbiBgbmF0aG9va3NgKS4gSWYgbm90IGlubGluZWQsIHRoZW4gdGhhdCYjMzk7cyB0aGUgb25lIHRoYXQgaXMgbW9kaWZpZWQuIElmIGl0JiMzOTtzIGlubGluZWQsIHRoZW4gdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgYXJlIGltcG9ydGFudC4KCkkgbmVlZCB0byBjb25maXJtIGlmIGBzZXRfYWRkcmAgaXMgaW5saW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIHR3aWNlIGluIGBuZl9uYXRfaDMyMy5jYCwgbWVhbmluZyBpdCBpcyBwb3NzaWJsZS4gU28gSSB3aWxsIGFkZCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgYXMgdGhleSBib3RoIGNhbGwgYHNldF9hZGRyYC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgbmZfbmF0X2gzMjNfaW5pdGAgYW5kIGBoMzIzX2hlbHBlcl9pbml0YCBhcmUgcHJvcGVybHkgaG9va2VkIHVwLgoKU28sIG15IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMgd2lsbCBiZToKCiogICBgaDI0NV9oZWxwYAoqICAgYG5hdF9ydHBfcnRjcGAKKiAgIGBuYXRfdDEyMGAKKiAgIGBzZXRfYWRkcmAgKGNvbmRpdGlvbmFsOyBpZiBub3QgaW5saW5lZCwgaXQmIzM5O3MgbW9kaWZpZWQpCgpJ4oCZbSBjb25maWRlbnQgdGhpcyBjb3ZlcnMgdGhlIGVzc2VudGlhbCBwaWVjZXMgb2YgdGhlIHBhdGNoIHRoYXQgbmVlZCBjbG9zZSBzY3J1dGlueSBmb3IgZnVuY3Rpb25hbCBjb3JyZWN0bmVzcyBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxMy41MjYwODU1NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4OTUxOTQyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoMjQ1X2hlbHBcIixcbiAgICBcIm5hdF9ydHBfcnRjcFwiLFxuICAgIFwibmF0X3QxMjBcIixcbiAgICBcInNldF9hZGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEguMzIzIE5BVCBhbmQgY29ubnRyYWNrIGhlbHBlcnMgd2hlcmUgYGlwX2hkcihza2IpLVxcdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6MTMuNTI2MDkyNTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ4MzM2ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDE1OjEzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5pbmRleCAxODNlOGEzZmYyYmFiLi45OGQ1MGIzYTZiZTJjIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5AQCAtMzcsNyArMzcsOCBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRidWYucG9ydCA9IHBvcnQ7XFxuIFxcdGFkZHJvZmYgKz0gZGF0YW9mZjtcXG4gXFxuLVxcdGlmIChpcF9oZHIoc2tiKS1cXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1ApIHtcXG4rXFx0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcXG4rXFx0Y2FzZSBJUFBST1RPX1RDUDpcXG4gXFx0XFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQoc2tiLCBjdCwgY3RpbmZvLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBwcm90b2ZmLCBhZGRyb2ZmLCBzaXplb2YoYnVmKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgKGNoYXIgKikgXFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XFxuQEAgLTUxLDcgKzUyLDggQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0aWYgKHRoID09IE5VTEwpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0KmRhdGEgPSBza2ItXFx1MDAzZWRhdGEgKyBpcF9oZHJsZW4oc2tiKSArIHRoLVxcdTAwM2Vkb2ZmICogNCArIGRhdGFvZmY7XFxuLVxcdH0gZWxzZSB7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElQUFJPVE9fVURQOlxcbiBcXHRcXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAoY2hhciAqKSBcXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcXG5AQCAtNjIsNiArNjQsOSBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRcXHQgKiBvciBwdWxsIGV2ZXJ5dGhpbmcgaW4gYSBsaW5lYXIgYnVmZmVyLCBzbyB3ZSBjYW4gc2FmZWx5XFxuIFxcdFxcdCAqIHVzZSB0aGUgc2tiIHBvaW50ZXJzIG5vdyAqL1xcbiBcXHRcXHQqZGF0YSA9IHNrYi1cXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xcbmluZGV4IDI0OTMxZTM3OTk4NWIuLjljYWMzZTVhYjM5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xcbkBAIC01MzksNiArNTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRpZiAoY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEIFxcdTAwMjZcXHUwMDI2IGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRF9SRVBMWSlcXG4gXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gXFxuK1xcdC8qIEguMjQ1IGlzIFRQS1QvVENQOyBpZ25vcmUgbWFudWFsIGJpbmRpbmdzIHRvIG90aGVyIEw0IHByb3RvY29scy4gKi9cXG4rXFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUClcXG4rXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4rXFxuIFxcdHByX2RlYnVnKFxcXCJuZl9jdF9oMjQ1OiBza2JsZW4gPSAldVxcXFxuXFxcIiwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZl9oMzIzX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxNC4xMDE5Mjc2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2ODMxOTMyODA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImgyNDVfaGVscFwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuYXRfdDEyMFwiLFxuICAgIFwic2V0X2FkZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXFx1MDAzZXByb3RvY29sYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGEgdXNlciBtYW51YWxseSBiaW5kcyB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIGBoMjQ1X2hlbHBgIHRvIGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTU6MTM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5pbmRleCAxODNlOGEzZmYyYmFiLi45OGQ1MGIzYTZiZTJjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMzcsNyArMzcsOCBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0YnVmLnBvcnQgPSBwb3J0O1xuIFx0YWRkcm9mZiArPSBkYXRhb2ZmO1xuIFxuLVx0aWYgKGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVENQKSB7XG4rXHRzd2l0Y2ggKG5mX2N0X3Byb3RvbnVtKGN0KSkge1xuK1x0Y2FzZSBJUFBST1RPX1RDUDpcbiBcdFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQoc2tiLCBjdCwgY3RpbmZvLFxuIFx0XHRcdFx0XHQgICAgICBwcm90b2ZmLCBhZGRyb2ZmLCBzaXplb2YoYnVmKSxcbiBcdFx0XHRcdFx0ICAgICAgKGNoYXIgKikgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcbkBAIC01MSw3ICs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdGlmICh0aCA9PSBOVUxMKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgdGgtXHUwMDNlZG9mZiAqIDQgKyBkYXRhb2ZmO1xuLVx0fSBlbHNlIHtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIElQUFJPVE9fVURQOlxuIFx0XHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHRcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxuIFx0XHRcdFx0XHQgICAgICAoY2hhciAqKSBcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xuQEAgLTYyLDYgKzY0LDkgQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICogb3IgcHVsbCBldmVyeXRoaW5nIGluIGEgbGluZWFyIGJ1ZmZlciwgc28gd2UgY2FuIHNhZmVseVxuIFx0XHQgKiB1c2UgdGhlIHNrYiBwb2ludGVycyBub3cgKi9cbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcbmluZGV4IDI0OTMxZTM3OTk4NWIuLjljYWMzZTVhYjM5ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcbkBAIC01MzksNiArNTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0aWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCBcdTAwMjZcdTAwMjYgY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEX1JFUExZKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFxuK1x0LyogSC4yNDUgaXMgVFBLVC9UQ1A7IGlnbm9yZSBtYW51YWwgYmluZGluZ3MgdG8gb3RoZXIgTDQgcHJvdG9jb2xzLiAqL1xuK1x0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUClcbitcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbitcbiBcdHByX2RlYnVnKFwibmZfY3RfaDI0NTogc2tibGVuID0gJXVcXG5cIiwgc2tiLVx1MDAzZWxlbik7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfaDMyM19sb2NrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjEzOjE0LjEwMTkyOTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM2MjA5MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEguMzIzIE5BVCBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEguMzIzIE5BVCBhbmQgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIGl0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCdzIGJlZW4gY2hhbmdlZCBhbmQgd2h5LiBJdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBidWcgZml4IGluIGBuZl9uYXRfaDMyMy5jYCB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHdyb25nIHByb3RvY29sIGlkZW50aWZpZXIg4oCTIHVzaW5nIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCBpbiB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gVGhhdCdzIGEgY2xhc3NpYyBtaXN0YWtlLCBhbmQgaXQncyBnb29kIHRoZXkgY2F1Z2h0IGl0LlxuXG5JIGFsc28gc2VlIGEgbmV3IGNoZWNrIGFkZGVkIGluIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AgdG8gdmVyaWZ5IHRoZSBwcm90b2NvbCBpcyBgSVBQUk9UT19UQ1BgLiBUaGlzIHByb2JhYmx5IGFkZHMgc29tZSBjcnVjaWFsIHZhbGlkYXRpb24gdG8gdGhlIEguMjQ1IGhlbHBlci5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLiBMZXQgbWUgY2hlY2sgdGhlIGV4YWN0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNldF9hZGRyYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGFuZCBgaDI0NV9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNgLiBUaGVzZSBhcmUgdGhlIGtleSBhcmVhcyB0byBmb2N1cyBvbi5cblxuTm93LCBiZWZvcmUgSSBzdGFydCBhbmFseXppbmcgdGhlIGNvZGUsIEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZXNlIG1vZHVsZXMuIExldCdzIHNlZSBpZiB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHZhbHVlcy4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBlbnRyaWVzIGZvciBib3RoIGBuZl9uYXRfaDMyM2AgYW5kIGBuZl9jb25udHJhY2tfaDMyM2AgdG8gZ2V0IHRoZSBjb250ZXh0LiBUaGF0J2xsIHByb3ZpZGUgdXNlZnVsIGJhY2tncm91bmQgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxOS4yMzgxNDIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzgyODk4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjM9c3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIChjaGFyICopIFxcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ1OlxcdFxcdFxcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXFxcIm5mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQgZXJyb3JcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ2LVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU5LVxcdFxcdFxcdFxcdFxcdCAgICAgIChjaGFyICopIFxcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjYwOlxcdFxcdFxcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXFxcIm5mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQgZXJyb3JcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTYxLVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTE4Mj1zdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yMjQtXFx0aWYgKGkgXFx1MDAzZT0gSDMyM19SVFBfQ0hBTk5FTF9NQVgpIHtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyMjU6XFx0XFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcXFwibmZfbmF0X2gzMjM6IG91dCBvZiBleHBlY3RhdGlvbnNcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI1Ni1cXHRpZiAobmF0ZWRfcG9ydCA9PSAwKSB7XFx0LyogTm8gcG9ydCBhdmFpbGFibGUgKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyNTc6XFx0XFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcXFwibmZfbmF0X2gzMjM6IG91dCBvZiBSVFAgcG9ydHNcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI1OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI3NS1cXHQvKiBTdWNjZXNzICovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6Mjc2OlxcdHByX2RlYnVnKFxcXCJuZl9uYXRfaDMyMzogZXhwZWN0IFJUUCAlcEk0OiVodS1cXHUwMDNlJXBJNDolaHVcXFxcblxcXCIsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjc3LVxcdFxcdCBcXHUwMDI2cnRwX2V4cC1cXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgwLVxcdFxcdCBudG9ocyhydHBfZXhwLVxcdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCkpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI4MTpcXHRwcl9kZWJ1ZyhcXFwibmZfbmF0X2gzMjM6IGV4cGVjdCBSVENQICVwSTQ6JWh1LVxcdTAwM2UlcEk0OiVodVxcXFxuXFxcIixcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yODItXFx0XFx0IFxcdTAwMjZydGNwX2V4cC1cXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjkxPXN0YXRpYyBpbnQgbmF0X3QxMjAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzA2LVxcdGlmIChuYXRlZF9wb3J0ID09IDApIHtcXHQvKiBObyBwb3J0IGF2YWlsYWJsZSAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMwNzpcXHRcXHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFxcXCJuZl9uYXRfaDMyMzogb3V0IG9mIFRDUCBwb3J0c1xcXFxuXFxcIik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzA4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzE4LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMxOTpcXHRwcl9kZWJ1ZyhcXFwibmZfbmF0X2gzMjM6IGV4cGVjdCBULjEyMCAlcEk0OiVodS1cXHUwMDNlJXBJNDolaHVcXFxcblxcXCIsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzIwLVxcdFxcdCBcXHUwMDI2ZXhwLVxcdTAwM2V0dXBsZS5zcmMudTMuaXAsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTU5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU2MDpzdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU2OC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1Njk6c3RhdGljIHZvaWQgX19leGl0IG5mX25hdF9oMzIzX2Zpbmkodm9pZClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NzAte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTc5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU4MDptb2R1bGVfaW5pdChuZl9uYXRfaDMyM19pbml0KTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1ODE6bW9kdWxlX2V4aXQobmZfbmF0X2gzMjNfZmluaSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTgyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoyNC42NzY0Mzg0NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ5NjcyNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gVGhvc2UgSC4zMjMgS2NvbmZpZ3MqKlxuXG5SaWdodCwgdGltZSB0byB0cmFjayBkb3duIHRoZSBLY29uZmlncyBmb3IgYENPTkZJR19ORl9OQVRfSDMyM2AgYW5kIGBDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjNgLiBUaGlzIHR5cGljYWxseSBtZWFucyBkaXZpbmcgaW50byB0aGUgZGVwdGhzIG9mIHRoZSBrZXJuZWwncyBzb3VyY2UgdHJlZSwgc3BlY2lmaWNhbGx5IHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gbmV0ZmlsdGVyIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIHN0YXJ0IGluIHRoZSBgbmV0L25ldGZpbHRlcmAgZGlyZWN0b3J5LCBvciBwZXJoYXBzIHdpdGhpbiB0aGUgbW9yZSBzcGVjaWZpYyBhcmVhcyBsaWtlIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja2AgaWYgdGhvc2UgYXJlIHN0YW5kYWxvbmUgbW9kdWxlcy4gSSdsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgb3Igc2ltaWxhciB0b29scyB0byBlZmZpY2llbnRseSBzZWFyY2ggZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhY3Jvc3MgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJJ2xsIGFsc28gYmUgbWluZGZ1bCBvZiBkZXBlbmRlbmNpZXM7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgS2NvbmZpZyBvcHRpb25zIG1pZ2h0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlc2UgdG8gZXZlbiBzaG93IHVwIGluIHRoZSBtZW51Y29uZmlnIG9yLCBldmVuIHdvcnNlLCB3aGF0IG1pZ2h0IGJlIHB1bGxpbmcgdGhlbSBpbiAqdHJhbnNpdGl2ZWx5KiBieSBiZWluZyBoYXJkIGNvZGVkIGRlcGVuZGVuY2llcy4gT2Z0ZW4sIHRoZXNlIEguMzIzIHJlbGF0ZWQgb3B0aW9ucyBhcmUgYnVyaWVkIHByZXR0eSBkZWVwIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGJlY2F1c2Ugb2YgdGhlaXIgcmVsYXRpdmUgbmljaGUuIEl0J3MgYSBxdWljayBqb2IsIGJ1dCBJJ2xsIGhhdmUgdG8gYmUgbWV0aG9kaWNhbCBhbmQgYWNjb3VudCBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoyOS43MjYxMzEyMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MzA0OTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTIyLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6MzQuODc5MTg3MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NTM2NjkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBvZiBgTkZfTkFUX0gzMjNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBzdXBwb3J0IHN0cnVjdHVyZSBmb3IgYE5GX05BVF9IMzIzYCBsb29rIGxpa2U/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSdtIGFzc3VtaW5nLCBuYXR1cmFsbHksIHRoYXQgaXQgaG9va3MgaW50byB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBCdXQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc3BlY2lmaWMqIE5ldGZpbHRlciBtb2R1bGVzIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IHRpZWQgdG8gY29ubnRyYWNrPyBEb2VzIGl0IGxldmVyYWdlIHBhcnRpY3VsYXIgaGVscGVyIG1vZHVsZXMsIG9yIGRvZXMgaXQgaGF2ZSBhIHRpZ2h0LCBjdXN0b20gaW50ZWdyYXRpb24gd2l0aCBzb21lIG90aGVyIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2s/IFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgcGllY2VzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoaXMgTkFUIGZ1bmN0aW9uYWxpdHkuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzozOC40NTQ1NTk0MjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5MzgzNTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTIyNz1jb25maWcgTkZfQ09OTlRSQUNLX0ZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjEzOjQzLjg0ODQwMTQ3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzI2MDk3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBJUHY0IG5ldGZpbHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEyMy4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3RhcnRzIGZvciBhIGdpdmVuIHNlY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCB0aGVyZS4gVW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHdoaWNoIG1vZHVsZXMgYXJlIHJlbGV2YW50IGZvciBhbnkgZ2l2ZW4gdGFzay4gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgYXZhaWxhYmxlIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gdGhlIElQdjQgbmV0ZmlsdGVyIGZyYW1ld29yay4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NDcuNDIxMDE0Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBtYW5hZ2VtZW50IHN5c3RlbSB0byBhY2Nlc3MgbXVsdGlwbGUgcHJpdmF0ZSBuZXR3b3JrcyB3aXRoXFxuIDExMTpcXHRcXHQgIGNvbmZsaWN0aW5nIGFkZHJlc3Nlcy4gIEl0IHdvcmtzIGJ5IG1vZGlmeWluZyBJUCBhZGRyZXNzZXNcXG4gMTEyOlxcdFxcdCAgaW5zaWRlIFNOTVAgcGF5bG9hZHMgdG8gbWF0Y2ggSVAtbGF5ZXIgTkFUIG1hcHBpbmcuXFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdCAgVGhpcyBpcyB0aGUgXFxcImJhc2ljXFxcIiBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTE3OlxcdFxcbiAxMTg6XFx0Y29uZmlnIE5GX05BVF9QUFRQXFxuIDExOTpcXHRcXHR0cmlzdGF0ZVxcbiAxMjA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTIxOlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE5GX05BVF9IMzIzXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZVxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTI2OlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcXG4gMTI3OlxcdFxcbiAxMjg6XFx0ZW5kaWYgIyBORl9OQVRcXG4gMTI5OlxcdFxcbiAxMzA6XFx0Y29uZmlnIElQX05GX0lQVEFCTEVTXFxuIDEzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXFxcIlxcbiAxMzI6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuIDEzMzpcXHRcXHRzZWxlY3QgTkVURklMVEVSX1hUQUJMRVNcXG4gMTM0OlxcdFxcdGhlbHBcXG4gMTM1OlxcdFxcdCAgaXB0YWJsZXMgaXMgYSBnZW5lcmFsLCBleHRlbnNpYmxlIHBhY2tldCBpZGVudGlmaWNhdGlvbiBmcmFtZXdvcmsuXFxuIDEzNjpcXHRcXHQgIFRoZSBwYWNrZXQgZmlsdGVyaW5nIGFuZCBmdWxsIE5BVCAobWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcsXFxuIDEzNzpcXHRcXHQgIGV0Yykgc3Vic3lzdGVtcyBub3cgdXNlIHRoaXM6IHNheSBgWScgb3IgYE0nIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlXFxuIDEzODpcXHRcXHQgIGVpdGhlciBvZiB0aG9zZS5cXG4gMTM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzo0Ny40MjExNDM5NzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5NjUxMjYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIG5ldHdvcmtpbmcvbmV0ZmlsdGVyOlxuXG4qKkRlcGVuZGVuY3kgQ2hhaW4gYW5kIENvbmZpZ3VyYXRpb24gQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBgTkZfTkFUX0gzMjNgLiBUaGF0J3MgYSBjbGFzc2ljIOKAkyBpdCByZWxpZXMgb24gY29ubmVjdGlvbiB0cmFja2luZywgc3BlY2lmaWNhbGx5IGBORl9DT05OVFJBQ0tgLiBBbmQsIGJ5IGRlZmF1bHQsIGl0IHVzdWFsbHkgYXNzdW1lcyB0aGUgSC4zMjMtc3BlY2lmaWMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGlzIGFsc28gZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEguMzIzIE5BVCB3b3VsZG4ndCBiZSB2ZXJ5IHVzZWZ1bCB3aXRob3V0IHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdGhvdWdoLCBzbyBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgYEtjb25maWdgIGZpbGUuIEknbGwgY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjM5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCBhbmQgd2hhdCB0aGUgZGVmYXVsdHMgYXJlLiBUaGF0J3Mgd2hlcmUgdGhlIG9wdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgc2VsZWN0aW9ucyBhcmUgdXN1YWxseSBzcGVjaWZpZWQuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NTAuODE3NjYwMjg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMwOlxcdFxcdGhlbHBcXG4gMjMxOlxcdFxcdCAgVHJhY2tpbmcgRlRQIGNvbm5lY3Rpb25zIGlzIHByb2JsZW1hdGljOiBzcGVjaWFsIGhlbHBlcnMgYXJlXFxuIDIzMjpcXHRcXHQgIHJlcXVpcmVkIGZvciB0cmFja2luZyB0aGVtLCBhbmQgZG9pbmcgbWFzcXVlcmFkaW5nIGFuZCBvdGhlciBmb3Jtc1xcbiAyMzM6XFx0XFx0ICBvZiBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gb24gdGhlbS5cXG4gMjM0OlxcdFxcbiAyMzU6XFx0XFx0ICBUaGlzIGlzIEZUUCBzdXBwb3J0IG9uIExheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvbiB0cmFja2luZy5cXG4gMjM2OlxcdFxcbiAyMzc6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjM4OlxcdFxcbiAyMzk6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxuIDI0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4gMjQxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDI0MjpcXHRcXHRoZWxwXFxuIDI0MzpcXHRcXHQgIEguMzIzIGlzIGEgVm9JUCBzaWduYWxsaW5nIHByb3RvY29sIGZyb20gSVRVLVQuIEFzIG9uZSBvZiB0aGUgbW9zdFxcbiAyNDQ6XFx0XFx0ICBpbXBvcnRhbnQgVm9JUCBwcm90b2NvbHMsIGl0IGlzIHdpZGVseSB1c2VkIGJ5IHZvaWNlIGhhcmR3YXJlIGFuZFxcbiAyNDU6XFx0XFx0ICBzb2Z0d2FyZSBpbmNsdWRpbmcgdm9pY2UgZ2F0ZXdheXMsIElQIHBob25lcywgTmV0bWVldGluZywgT3BlblBob25lLFxcbiAyNDY6XFx0XFx0ICBHbm9tZW1lZXRpbmcsIGV0Yy5cXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0ICBXaXRoIHRoaXMgbW9kdWxlIHlvdSBjYW4gc3VwcG9ydCBILjMyMyBvbiBhIGNvbm5lY3Rpb24gdHJhY2tpbmcvTkFUXFxuIDI0OTpcXHRcXHQgIGZpcmV3YWxsLlxcbiAyNTA6XFx0XFxuIDI1MTpcXHRcXHQgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIFJBUywgRmFzdCBTdGFydCwgSC4yNDUgVHVubmVsbGluZywgQ2FsbFxcbiAyNTI6XFx0XFx0ICBGb3J3YXJkaW5nLCBSVFAvUlRDUCBhbmQgVC4xMjAgYmFzZWQgYXVkaW8sIHZpZGVvLCBmYXgsIGNoYXQsXFxuIDI1MzpcXHRcXHQgIHdoaXRlYm9hcmQsIGZpbGUgdHJhbnNmZXIsIGV0Yy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZVxcbiAyNTQ6XFx0XFx0ICB2aXNpdCBodHRwOi8vbmF0aDMyMy5zb3VyY2Vmb3JnZS5uZXQvLlxcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzo1MC44MTc4MzQ0NzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMjQ5MjIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZCBhYm91dCB0aGlzIG5ldGZpbHRlciBjb25maWd1cmF0aW9uOlxuXG4qKk5ldGZpbHRlciBNb2R1bGUgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCB3ZSBuZWVkIHRoZSBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfTkFUX0gzMjNgIG1vZHVsZXMuIE9mIGNvdXJzZSwgYE5GX05BVF9IMzIzYCBzZWVtcyB0byBkZWZhdWx0IHRvIGBORl9DT05OVFJBQ0tfSDMyM2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQsIGJ1dCBJJ20gcmVhc29uYWJseSBjZXJ0YWluIGl0J3MgYSBzYWZlIGFzc3VtcHRpb24gZm9yIG5vdy5cblxuQmV5b25kIHRob3NlIHNwZWNpZmljIEguMzIzIG1vZHVsZXMsIEkgY2FuJ3QgZm9yZ2V0IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIG5lZWQgYm90aCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX05BVGAgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseSwgb2J2aW91c2x5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiwgdGhvdWdoLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmb3IgdGhlIGBORl9OQVRgIG1vZHVsZSB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24uIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NTUuNjMwMzMyMDA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA2NTk5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9OTk9aWYgTkZfTkFUXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTAwOmNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiQmFzaWMgU05NUC1BTEcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTExNy1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTg6Y29uZmlnIE5GX05BVF9QUFRQXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MDAuMjM2OTQwMzI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODU0Nzk0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgSC4zMjMgQ29ubmVjdGlvbiBUcmFja2luZyBhbmQgTkFUKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB3ZSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQuIEkga25vdyBgTkZfTkFUX0gzMjNgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFJpZ2h0LCBhbmQgdGhhdCBsaWtlbHkgbWVhbnMgaXQgZGVwZW5kcyBvbiBgTkZfTkFUYCBpdHNlbGYuIFdlIGNhbid0IGp1c3QgZW5hYmxlIGl0IG9uIGl0cyBvd24uIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCBhbnkgY29uZmlndXJhdGlvbiBjb25mbGljdHMuIFdlIGNhbid0IGhhdmUgYW55IGxvb3NlIGVuZHMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjAzLjkyMjQyNTQwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0c2VsZWN0IE5GX0xPR19TWVNMT0dcXG4gIDkxOlxcdFxcdGhlbHBcXG4gIDkyOlxcdFxcdFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAgOTM6XFx0XFx0KGUuZy4gd2hlbiBydW5uaW5nIG9sZGNvbmZpZykuIEl0IHNlbGVjdHMgQ09ORklHX05GX0xPR19TWVNMT0cuXFxuICA5NDpcXHRcXG4gIDk1OlxcdGNvbmZpZyBORl9SRUpFQ1RfSVBWNFxcbiAgOTY6XFx0XFx0dHJpc3RhdGUgXFxcIklQdjQgcGFja2V0IHJlamVjdGlvblxcXCJcXG4gIDk3OlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAgOTg6XFx0XFxuICA5OTpcXHRpZiBORl9OQVRcXG4gMTAwOlxcdGNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xcbiAxMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkJhc2ljIFNOTVAtQUxHIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS19TTk1QXFxuIDEwMzpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxMDQ6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1NOTVBcXG4gMTA1OlxcdFxcdHNlbGVjdCBBU04xXFxuIDEwNjpcXHRcXHRoZWxwXFxuIDEwNzpcXHRcXG4gMTA4OlxcdFxcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhbiBBcHBsaWNhdGlvbiBMYXllciBHYXRld2F5IChBTEcpIGZvclxcbiAxMDk6XFx0XFx0ICBTTk1QIHBheWxvYWRzLiAgSW4gY29uanVuY3Rpb24gd2l0aCBOQVQsIGl0IGFsbG93cyBhIG5ldHdvcmtcXG4gMTEwOlxcdFxcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxcbiAxMTE6XFx0XFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXFxuIDExMjpcXHRcXHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHQgIFRoaXMgaXMgdGhlIFxcXCJiYXNpY1xcXCIgZm9ybSBvZiBTTk1QLUFMRywgYXMgZGVzY3JpYmVkIGluIFJGQyAyOTYyXFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDExNzpcXHRcXG4gMTE4OlxcdGNvbmZpZyBORl9OQVRfUFBUUFxcbiAxMTk6XFx0XFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MDMuOTIyNTk5MDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTUzOTQzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEguMzIzIE5BVCBNb2R1bGUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEguMzIzIE5BVCBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYE5GX05BVF9IMzIzYCBpcyBuZXN0ZWQgd2l0aGluIGFuIGBpZiBORl9OQVRgIGJsb2NrLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBiYXNlIE5BVCBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYmVmb3JlIGV2ZW4gY29uc2lkZXJpbmcgdGhlIEguMzIzIHNwZWNpZmljIGZlYXR1cmVzLiBTbywgdG8gYmUgY2xlYXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGBORl9OQVRgLCBgTkZfQ09OTlRSQUNLX0gzMjNgLCBhbmQgb2J2aW91c2x5LCBgTkZfTkFUX0gzMjNgIGl0c2VsZi4gV2UgY2FuJ3QgbmVnbGVjdCB0aGUgdW5kZXJseWluZyBidWlsZGluZyBibG9ja3MuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTGV0J3MgZGlnIGludG8gdGhlIGNvcmUgZnVuY3Rpb25zLiBUaGUgYHNldF9hZGRyYCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSBhbmQgcHJvYmFibHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBJIHdvbid0IHNwZW5kIHRvbyBtdWNoIHRpbWUgb24gaXQgZGlyZWN0bHkuIEluc3RlYWQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25zIGFyZSAqY2FsbGluZyogYHNldF9hZGRyYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiBob3cgdGhpcyBhZGRyZXNzIHNldHRpbmcgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwgSC4zMjMgTkFUIHByb2Nlc3MuIFRyYWNpbmcgdGhlIGNhbGxzIHRvIGBzZXRfYWRkcmAgd2lsbCBiZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDgsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjA3LjgxNzk5ODQ4OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTAwOTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfYWRkclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxOTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLW1pcGktZGJpLXNwaS55YW1sPTEyPWRlc2NyaXB0aW9uOiB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01NS0gIHRoZSBUeXBlIEMgaW50ZXJmYWNlIGFuZCBtb3N0IGNvbW1vbiBhbW9uZyB0aGVzZSBhcmUgUkdCNTY1IGFuZCBSR0I2NjYuXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtbWlwaS1kYmktc3BpLnlhbWw6NTY6ICBUaGUgTUlQSSBEQ1MgY29tbWFuZCBzZXRfYWRkcmVzc19tb2RlICgzNmgpIGhhcyBvbmUgYml0IHRoYXQgY29udHJvbHMgUkdCL0JHUlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLW1pcGktZGJpLXNwaS55YW1sLTU3LSAgb3JkZXIuIFRoaXMgZ2l2ZXMgZWFjaCBzdXBwb3J0ZWQgUkdCIGZvcm1hdCBhIEJHUiB2YXJpYW50Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0PTI0MD1uZWVkcyB0byBoYW5kbGUgc29tZSBkaWZmZXJlbmNlcy4gVXNlIHRoZSBBUEkgbGlrZSB0aGlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1NC0zLiBUaGUgaGFyZHdhcmUgZHJpdmVyIGNhbiBub3cgc3RhcnQgZW51bWVyYXRpbmcuIFRoZSBzdGVwcyBpdCBoYW5kbGVzXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0OjI1NTogICBhcmUgdG8gYWNjZXB0IFVTQiBgYHBvd2VyYGAgYW5kIGBgc2V0X2FkZHJlc3NgYCByZXF1ZXN0cy4gT3RoZXIgc3RlcHMgYXJlXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1Ni0gICBoYW5kbGVkIGJ5IHRoZSBnYWRnZXQgZHJpdmVyLiBJZiB0aGUgZ2FkZ2V0IGRyaXZlciBtb2R1bGUgaXMgdW5sb2FkZWRcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM9NTc9c3RhdGljIHUzMiBzb2NpZDtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTU4LVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NTk6c3RhdGljIHZvaWQgX19pb21lbSAqcmVzZXRfYWRkcjtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTYwLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zNTU9c3RhdGljIGludCBfX2luaXQgbXhzX3Jlc3RhcnRfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNjEtXFx0XFx0bnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcXFwiZnNsLGlteDI4LWNsa2N0cmxcXFwiKTtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2MjpcXHRyZXNldF9hZGRyID0gb2ZfaW9tYXAobnAsIDApO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYzOlxcdGlmICghcmVzZXRfYWRkcilcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM2NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY2LVxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXFxcImZzbCxpbXgyMy1jbGtjdHJsXFxcIikpXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozNjc6XFx0XFx0cmVzZXRfYWRkciArPSBNWDIzX0NMS0NUUkxfUkVTRVRfT0ZGU0VUO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY4LVxcdGVsc2VcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2OTpcXHRcXHRyZXNldF9hZGRyICs9IE1YMjhfQ0xLQ1RSTF9SRVNFVF9PRkZTRVQ7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNzAtXFx0b2Zfbm9kZV9wdXQobnApO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz00NTM9c3RhdGljIHZvaWQgbXhzX3Jlc3RhcnQoZW51bSByZWJvb3RfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpjbWQpXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy00NTQte1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NDU1OlxcdGlmIChyZXNldF9hZGRyKSB7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy00NTYtXFx0XFx0LyogcmVzZXQgdGhlIGNoaXAgKi9cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjQ1NzpcXHRcXHRfX214c19zZXRsKE1YU19DTEtDVFJMX1JFU0VUX0NISVAsIHJlc2V0X2FkZHIpO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU4LVxcbi0tXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jPTI5PXN0YXRpYyBib29sIGlzX2VuYWJsZWQ7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTMwLVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzozMTpzdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KGNvbnN0IHUzMiByZXNldF9hZGRyZXNzKVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy0zMi17XFxuLS1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDEtXFx0ICovXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jOjQyOlxcdHdyaXRlbChyZXNldF9hZGRyZXNzLCBldnBfY3B1X3Jlc2V0KTtcXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDMtXFx0d21iKCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM9NTY9c3RhdGljIHZvaWQgX19pbml0IHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX2VuYWJsZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTU4LVxcdHZvaWQgX19pb21lbSAqaXJhbV9iYXNlID0gSU9fQUREUkVTUyhURUdSQV9JUkFNX1JFU0VUX0JBU0UpO1xcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzo1OTpcXHRjb25zdCB1MzIgcmVzZXRfYWRkcmVzcyA9IFRFR1JBX0lSQU1fUkVTRVRfQkFTRSArXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTYwLVxcdFxcdFxcdFxcdFxcdFxcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX29mZnNldDtcXG4tLVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy02OC1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6Njk6XFx0ZXJyID0gY2FsbF9maXJtd2FyZV9vcChzZXRfY3B1X2Jvb3RfYWRkciwgMCwgcmVzZXRfYWRkcmVzcyk7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTcwLVxcdHN3aXRjaCAoZXJyKSB7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTcxLVxcdGNhc2UgLUVOT1NZUzpcXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NzI6XFx0XFx0dGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KHJlc2V0X2FkZHJlc3MpO1xcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03My1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmg9MjY9c3RhdGljIGlubGluZSBpbnQgcnNpX3NldF9tZW1vcnlfcmFuZ2UocGh5c19hZGRyX3Qgc3RhcnQsIHBoeXNfYWRkcl90IGVuZCxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmgtMzItXFx0d2hpbGUgKHN0YXJ0ICE9IGVuZCkge1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmg6MzM6XFx0XFx0cmV0ID0gcnNpX3NldF9hZGRyX3JhbmdlX3N0YXRlKHN0YXJ0LCBlbmQsIHN0YXRlLCBmbGFncywgXFx1MDAyNnRvcCk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaC0zNC1cXHRcXHRpZiAocmV0IHx8IHRvcCBcXHUwMDNjIHN0YXJ0IHx8IHRvcCBcXHUwMDNlIGVuZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpX2NtZHMuaD01MD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcnNpX2lwYV9zdGF0ZV9nZXQocGh5c19hZGRyX3Qgc3RhcnQsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaV9jbWRzLmgtNzAtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oOjcxOnN0YXRpYyBpbmxpbmUgbG9uZyByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUocGh5c19hZGRyX3Qgc3RhcnQsXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oLTcyLVxcdFxcdFxcdFxcdFxcdCAgICBwaHlzX2FkZHJfdCBlbmQsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYz00MjQ9c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9jdHJsKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy00NDgtXFxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6NDQ5OnN0YXRpYyBpbnQgcHRyYWNlX2hicF9zZXRfYWRkcih1bnNpZ25lZCBpbnQgbm90ZV90eXBlLFxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ1MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYz01MDY9c3RhdGljIGludCBod19icmVha19zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy01MjgtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYzo1Mjk6XFx0XFx0cmV0ID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRhcmdldCwgaWR4LCBhZGRyKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy01MzAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jPTIxNjk9c3RhdGljIGludCBjb21wYXRfcHRyYWNlX2hicF9zZXQodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTIxODAtXFx0XFx0YWRkciA9ICprZGF0YTtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYzoyMTgxOlxcdFxcdGVyciA9IHB0cmFjZV9oYnBfc2V0X2FkZHIobm90ZV90eXBlLCB0c2ssIGlkeCwgYWRkcik7XFxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMtMjE4Mi1cXHR9IGVsc2Uge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jPTYyNj1zdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X21hc2sodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYy02NDQtXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jOjY0NTpzdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X2FkZHIodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNjQ2LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYz03MTc9c3RhdGljIGludCBod19icmVha19zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNzQxLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYzo3NDI6XFx0XFx0cmV0ID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRhcmdldCwgaWR4LCBhZGRyKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNzQzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM9NDg0PXN0YXRpYyB2b2lkIGF0YXJpX3Jlc2V0KHZvaWQpXFxuLS1cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg2LVxcdGxvbmcgdGNfdmFsID0gMDtcXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NDg3OlxcdGxvbmcgcmVzZXRfYWRkcjtcXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg4LVxcbi0tXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5Mi1cXHQgKi9cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NDkzOlxcdHJlc2V0X2FkZHIgPSBNQUNIX0lTX01FRFVTQSB8fCBNQUNIX0lTX0FCNDAgPyAweGUwMDAzMCA6XFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5NC1cXHRcXHQgICAgICoodW5zaWduZWQgbG9uZyAqKSAweGZmMDAwMDA0O1xcbi0tXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU1NS1cXHRcXHRcXHQ6IC8qIG5vIG91dHB1dHMgKi9cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NTU2OlxcdFxcdFxcdDogXFxcImFcXFwiIChyZXNldF9hZGRyKVxcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NTctXFx0XFx0XFx0OiBcXFwiZDBcXFwiKTtcXG4tLVxcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NjItXFx0XFx0XFx0OiAvKiBubyBvdXRwdXRzICovXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jOjU2MzpcXHRcXHRcXHQ6IFxcXCJtXFxcIiAodGNfdmFsKSwgXFxcImFcXFwiIChyZXNldF9hZGRyKSk7XFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU2NC19XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTE3MT1zdGF0aWMgaW50IF9faW5pdCByZWdpc3Rlcl9zaGFyZWQodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMTc5LVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTgwOlxcdHNoYXJlZF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVERNQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xODEtXFx0c2hhcmVkX3Jlc1swXS5lbmQgPSBzaGFyZWRfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTMtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoxOTQ6XFx0c2hhcmVkX3Jlc1sxXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BQyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTUtXFx0c2hhcmVkX3Jlc1sxXS5lbmQgPSBzaGFyZWRfcmVzWzFdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTctXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoxOTg6XFx0c2hhcmVkX3Jlc1syXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BUyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTktXFx0c2hhcmVkX3Jlc1syXS5lbmQgPSBzaGFyZWRfcmVzWzJdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYz0yMTA9aW50IF9faW5pdCBiY202M3h4X2VuZXRfcmVnaXN0ZXIoaW50IHVuaXQsXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyNy1cXHRpZiAodW5pdCA9PSAwKSB7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoyMjg6XFx0XFx0ZW5ldDBfcmVzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0VORVQwKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyOS1cXHRcXHRlbmV0MF9yZXNbMF0uZW5kID0gZW5ldDBfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMzUtXFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjIzNjpcXHRcXHRlbmV0MV9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVDEpO1xcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMjM3LVxcdFxcdGVuZXQxX3Jlc1swXS5lbmQgPSBlbmV0MV9yZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTI5MT1iY202M3h4X2VuZXRzd19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYmNtNjN4eF9lbmV0c3dfcGxhdGZvcm1fZGF0YSAqcGQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTMwMS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjMwMjpcXHRlbmV0c3dfcmVzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0VORVRTVyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0zMDMtXFx0ZW5ldHN3X3Jlc1swXS5lbmQgPSBlbmV0c3dfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWhzc3BpLmM9MzY9aW50IF9faW5pdCBiY202M3h4X2hzc3BpX3JlZ2lzdGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYy00MC1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYzo0MTpcXHRzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0hTU1BJKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYy00Mi1cXHRzcGlfcmVzb3VyY2VzWzBdLmVuZCA9IHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcGNtY2lhLmM9MTA0PWludCBfX2luaXQgYmNtNjN4eF9wY21jaWFfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYy0xMjQtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jOjEyNTpcXHRwY21jaWFfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1BDTUNJQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jLTEyNi1cXHRwY21jaWFfcmVzb3VyY2VzWzBdLmVuZCA9IHBjbWNpYV9yZXNvdXJjZXNbMF0uc3RhcnQgK1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXJuZy5jPTI5PXN0YXRpYyBpbnQgX19pbml0IGJjbTYzeHhfcm5nX3JlZ2lzdGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcm5nLmMtMzMtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXJuZy5jOjM0OlxcdHJuZ19yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUk5HKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcm5nLmMtMzUtXFx0cm5nX3Jlc291cmNlc1swXS5lbmQgPSBybmdfcmVzb3VyY2VzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXNwaS5jPTM5PWludCBfX2luaXQgYmNtNjN4eF9zcGlfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00My1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtc3BpLmM6NDQ6XFx0c3BpX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9TUEkpO1xcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00NS1cXHRzcGlfcmVzb3VyY2VzWzBdLmVuZCA9IHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jPTUzPWludCBfX2luaXQgYmNtNjN4eF91YXJ0X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmMtNjItXFx0aWYgKGlkID09IDApIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjYzOlxcdFxcdHVhcnQwX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMCk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy02NC1cXHRcXHR1YXJ0MF9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDBfcmVzb3VyY2VzWzBdLnN0YXJ0ICtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmMtNjktXFx0aWYgKGlkID09IDEpIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjcwOlxcdFxcdHVhcnQxX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy03MS1cXHRcXHR1YXJ0MV9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDFfcmVzb3VyY2VzWzBdLnN0YXJ0ICtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jPTM2PWludCBfX2luaXQgYmNtNjN4eF91c2JkX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmRfcGxhdGZvcm1fZGF0YSAqcGQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy00Ni1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo0NzpcXHR1c2JkX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VU0JEKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy00OC1cXHR1c2JkX3Jlc291cmNlc1swXS5lbmQgPSB1c2JkX3Jlc291cmNlc1swXS5zdGFydCArIFJTRVRfVVNCRF9TSVpFIC0gMTtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jLTUwLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jOjUxOlxcdHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkRNQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNTItXFx0dXNiZF9yZXNvdXJjZXNbMV0uZW5kID0gdXNiZF9yZXNvdXJjZXNbMV0uc3RhcnQgKyBSU0VUX1VTQkRNQV9TSVpFIC0gMTtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYz0zNz1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3dkdF9yZWdpc3Rlcih2b2lkKVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYy0zOC17XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXdkdC5jOjM5OlxcdHdkdF9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfV0RUKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtd2R0LmMtNDAtXFx0d2R0X3Jlc291cmNlc1swXS5lbmQgPSB3ZHRfcmVzb3VyY2VzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvaXJxLmM9NDAyPXN0YXRpYyB2b2lkIGJjbTYzeHhfaW5pdF9pcnEodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2lycS5jLTQwNS1cXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDY6XFx0aXJxX3N0YXRfYWRkclswXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDc6XFx0aXJxX21hc2tfYWRkclswXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDg6XFx0aXJxX3N0YXRfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDk6XFx0aXJxX21hc2tfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYy00MTAtXFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oPTE5PWV4dGVybiB2b2lkIHZkbWFfc2V0X21vZGUoaW50IGNoYW5uZWwsIGludCBtb2RlKTtcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oOjIwOmV4dGVybiB2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcik7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenpkbWEuaC0yMS1leHRlcm4gdm9pZCB2ZG1hX3NldF9jb3VudChpbnQgY2hhbm5lbCwgaW50IGNvdW50KTtcXG4tLVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaD01NTA9ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJjbTYzeHhfcmVnc19iYXNlO1xcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2NwdS5oLTU5NS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1Lmg6NTk2OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY202M3h4X3JlZ3NldF9hZGRyZXNzKGVudW0gYmNtNjN4eF9yZWdzX3NldCBzZXQpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2NwdS5oLTU5Ny17XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02NS0gKi9cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaDo2NjojZGVmaW5lIGJjbV9yc2V0X3JlYWRiKHMsIG8pXFx0YmNtX3JlYWRiKGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MocykgKyAobykpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6Njc6I2RlZmluZSBiY21fcnNldF9yZWFkdyhzLCBvKVxcdGJjbV9yZWFkdyhiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICsgKG8pKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY4OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGwocywgbylcXHRiY21fcmVhZGwoYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02OS0jZGVmaW5lIGJjbV9yc2V0X3dyaXRlYihzLCB2LCBvKVxcdGJjbV93cml0ZWIoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzA6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03MS0jZGVmaW5lIGJjbV9yc2V0X3dyaXRldyhzLCB2LCBvKVxcdGJjbV93cml0ZXcoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzI6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03My0jZGVmaW5lIGJjbV9yc2V0X3dyaXRlbChzLCB2LCBvKVxcdGJjbV93cml0ZWwoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzQ6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03NS1cXG4tLVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg9NjU9c3RhdGljIGlubGluZSB2b2lkIGZkX3NldF9kbWFfYWRkcihjaGFyICphKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5LmgtNjYte1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg6Njc6XFx0dmRtYV9zZXRfYWRkcihKQVpaX0ZMT1BQWV9ETUEsIHZkbWFfcGh5czJsb2coQ1BIWVNBRERSKCh1bnNpZ25lZCBsb25nKWEpKSk7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtamF6ei9mbG9wcHkuaC02OC19XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTUyLSNkZWZpbmUgcmJ0eDQ5Mjdfc29mdGludF9hZGRyXFx0KChfX3U4IF9faW9tZW0gKilSQlRYNDkyN19TT0ZUSU5UX0FERFIpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaDo1MzojZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyICgoX191OCBfX2lvbWVtICopUkJUWDQ5MjdfU09GVFJFU0VUX0FERFIpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaC01NC0jZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldGxvY2tfYWRkclxcdFxcXFxcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTU1LVxcdFxcdFxcdFxcdCgoX191OCBfX2lvbWVtICopUkJUWDQ5MjdfU09GVFJFU0VUTE9DS19BRERSKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTY6I2RlZmluZSByYnR4NDkyN19wY2lyZXNldF9hZGRyXFx0KChfX3U4IF9faW9tZW0gKilSQlRYNDkyN19QQ0lSRVNFVF9BRERSKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3LmgtNTctXFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM9NDI5PUVYUE9SVF9TWU1CT0wodmRtYV9zZXRfbW9kZSk7XFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDMzLSAqL1xcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYzo0MzQ6dm9pZCB2ZG1hX3NldF9hZGRyKGludCBjaGFubmVsLCBsb25nIGFkZHIpXFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNS17XFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNi1cXHRpZiAodmRtYV9kZWJ1ZylcXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM6NDM3OlxcdFxcdHByaW50ayhcXFwidmRtYV9zZXRfYWRkcjogY2hhbm5lbCAlZCwgYWRkciAlbHhcXFxcblxcXCIsIGNoYW5uZWwsXFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzOC1cXHRcXHQgICAgICAgYWRkcik7XFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQyLVxcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYzo0NDM6RVhQT1JUX1NZTUJPTCh2ZG1hX3NldF9hZGRyKTtcXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQ0LVxcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz02Mj1zdGF0aWMgdm9pZCBfX2luaXQgdHg0OTI3X3BjaV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy03NC1cXHQvKiBSZXNldCBQQ0kgQnVzICovXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo3NTpcXHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy03Ni1cXHQvKiBSZXNldCBQQ0lDICovXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTgzLVxcdHR4eDlfY2xlYXI2NChcXHUwMDI2dHg0OTI3X2NjZmdwdHItXFx1MDAzZWNsa2N0ciwgVFg0OTI3X0NMS0NUUl9QQ0lSU1QpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6ODQ6XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtODUtXFx0aW9iKCk7XFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTkyLVxcdFxcdC8qIFJlc2V0IFBDSSBCdXMgKi9cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjkzOlxcdFxcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTk0LVxcdFxcdC8qIFJlc2V0IFBDSUMgKi9cXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtOTktXFx0XFx0dHh4OV9jbGVhcjY0KFxcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cXHUwMDNlY2xrY3RyLCBUWDQ5MjdfQ0xLQ1RSX1BDSVJTVCk7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxMDA6XFx0XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTAxLVxcdFxcdGlvYigpO1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz0xMDk9c3RhdGljIHZvaWQgX19pbml0IHR4NDkzN19wY2lfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTIxLVxcdC8qIFJlc2V0IFBDSSBCdXMgKi9cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjEyMjpcXHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMjMtXFx0LyogUmVzZXQgUENJQyAqL1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzAtXFx0dHh4OV9jbGVhcjY0KFxcdTAwMjZ0eDQ5MzhfY2NmZ3B0ci1cXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxMzE6XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTMyLVxcdGlvYigpO1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzktXFx0XFx0LyogUmVzZXQgUENJIEJ1cyAqL1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTQwOlxcdFxcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0MS1cXHRcXHQvKiBSZXNldCBQQ0lDICovXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0Ni1cXHRcXHR0eHg5X2NsZWFyNjQoXFx1MDAyNnR4NDkzOF9jY2ZncHRyLVxcdTAwM2VjbGtjdHIsIFRYNDkzOF9DTEtDVFJfUENJUlNUKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjE0NzpcXHRcXHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xNDgtXFx0XFx0aW9iKCk7XFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jPTE4Nz1zdGF0aWMgdm9pZCB0b3NoaWJhX3JidHg0OTI3X3Jlc3RhcnQoY2hhciAqY29tbWFuZClcXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk2LVxcdC8qIGRvIGEgcy93IHJlc2V0ICovXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxOTc6XFx0d3JpdGViKDEsIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE5OC1cXG4tLVxcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oPTExPXN0cnVjdCBjcHVpbmZvIHtcXG4tLVxcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM2LVxcdC8qIEFkZHJlc3NlcyAqL1xcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oOjM3OlxcdHUzMiByZXNldF9hZGRyO1xcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM4LVxcdHUzMiBleGNlcHRpb25fYWRkcjtcXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYz0zMT12b2lkIF9faW5pdCBzZXR1cF9jcHVpbmZvKHZvaWQpXFxuLS1cXG5hcmNoL25pb3MyL2tlcm5lbC9jcHVpbmZvLmMtMTAzLVxcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYzoxMDQ6XFx0Y3B1aW5mby5yZXNldF9hZGRyID0gZmNwdShjcHUsIFxcXCJhbHRyLHJlc2V0LWFkZHJcXFwiKTtcXG5hcmNoL25pb3MyL2tlcm5lbC9jcHVpbmZvLmMtMTA1LVxcdGNwdWluZm8uZXhjZXB0aW9uX2FkZHIgPSBmY3B1KGNwdSwgXFxcImFsdHIsZXhjZXB0aW9uLWFkZHJcXFwiKTtcXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYz00Mz12b2lkIG1hY2hpbmVfcmVzdGFydChjaGFyICpfX3VudXNlZClcXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNDQte1xcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYzo0NTpcXHRwcl9ub3RpY2UoXFxcIk1hY2hpbmUgcmVzdGFydCAoJTA4eCkuLi5cXFxcblxcXCIsIGNwdWluZm8ucmVzZXRfYWRkcik7XFxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jLTQ2LVxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuLS1cXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNDktXFx0OlxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYzo1MDpcXHQ6IFxcXCJyXFxcIiAoY3B1aW5mby5yZXNldF9hZGRyKVxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy01MS1cXHQ6IFxcXCJyNFxcXCIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTI1PXN0YXRpYyB2b2lkIF9faW5pdCBmd25taV9pbml0KHZvaWQpXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTI2LXtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMjc6XFx0dW5zaWduZWQgbG9uZyBzeXN0ZW1fcmVzZXRfYWRkciwgbWFjaGluZV9jaGVja19hZGRyO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTEyOC1cXHR1OCAqbWNlX2RhdGFfYnVmO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTQ2LVxcdCAqIGFkZHJlc3NlcyBhbnl3YXksIGFuZCB1c2UgYSB0cmFtcG9saW5lIHRvIGdldCB0byB0aGUgcmVhbCBjb2RlLiAqL1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjE0NzpcXHRzeXN0ZW1fcmVzZXRfYWRkciAgPSBfX3BhKHN5c3RlbV9yZXNldF9md25taSkgLSBQSFlTSUNBTF9TVEFSVDtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNDgtXFx0bWFjaGluZV9jaGVja19hZGRyID0gX19wYShtYWNoaW5lX2NoZWNrX2Z3bm1pKSAtIFBIWVNJQ0FMX1NUQVJUO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTUwLVxcdGlmICgwID09IHJ0YXNfY2FsbChpYm1fbm1pX3JlZ2lzdGVyX3Rva2VuLCAyLCAxLCBOVUxMLFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjE1MTpcXHRcXHRcXHQgICBzeXN0ZW1fcmVzZXRfYWRkciwgbWFjaGluZV9jaGVja19hZGRyKSlcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNTItXFx0XFx0ZndubWlfYWN0aXZlID0gMTtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjE5OD1zdGF0aWMgYm9vbCBicGZfaXNfbmV3X2FkZHJfc2FuZShzdHJ1Y3QgYnBmX2ppdCAqaml0LCBpbnQgaSlcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNC0gKi9cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyMTU6c3RhdGljIGludCBicGZfc2V0X2FkZHIoc3RydWN0IGJwZl9qaXQgKmppdCwgaW50IGkpXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjE2LXtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjIzMz1zdGF0aWMgaW50IGJwZl9qaXRfcHJvZyhzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU1LVxcdGJwZl9qaXRfcHJvbG9ndWUoaml0LCBmcCk7XFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzoyMjU2OlxcdGlmIChicGZfc2V0X2FkZHIoaml0LCAwKSBcXHUwMDNjIDApXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU3LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI2Mi1cXHRcXHQvKiBOZXh0IGluc3RydWN0aW9uIGFkZHJlc3MgKi9cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyNjM6XFx0XFx0aWYgKGJwZl9zZXRfYWRkcihqaXQsIGkgKyBpbnNuX2NvdW50KSBcXHUwMDNjIDApXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjY0LVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jPTQ5NT1zdGF0aWMgaW50IGFtZHhkbmFfZ2VtX29ial9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iaixcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jLTUxMi1cXHRYRE5BX0RCRyh4ZG5hLCBcXFwiQk8gbWFwX29mZnNldCAweCVsbHggdHlwZSAlZCB1c2VycHRyIDB4JWx4IHNpemUgMHglbHhcXFwiLFxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jOjUxMzpcXHRcXHQgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFxcdTAwMjZnb2JqLVxcdTAwM2V2bWFfbm9kZSksIGFiby1cXHUwMDNldHlwZSxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYy01MTQtXFx0XFx0IHZtYS1cXHUwMDNldm1fc3RhcnQsIGdvYmotXFx1MDAzZXNpemUpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmM9MTIwMT1pbnQgYW1keGRuYV9kcm1fZ2V0X2JvX2luZm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtMTIyMi1cXHRpZiAoYWJvLVxcdTAwM2V0eXBlICE9IEFNRFhETkFfQk9fREVWKVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jOjEyMjM6XFx0XFx0YXJncy1cXHUwMDNlbWFwX29mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcXHUwMDI2Z29iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jLTEyMjQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jPTk3PXN0YXRpYyBpbnQgZXRob3N1X2lvY3RsX2JvX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTEwOS1cXG5kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmM6MTEwOlxcdGFyZ3MtXFx1MDAzZW9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcXHUwMDI2b2JqLVxcdTAwM2V2bWFfbm9kZSk7XFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTExMS1cXHRkcm1fZ2VtX29iamVjdF9wdXQob2JqKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jPTQ4NT1pbnQgaXZwdV9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jLTQ5OS1cXHRhcmdzLVxcdTAwM2VmbGFncyA9IGJvLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYzo1MDA6XFx0YXJncy1cXHUwMDNlbW1hcF9vZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXFx1MDAyNm9iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jLTUwMS1cXHRhcmdzLVxcdTAwM2V2cHVfYWRkciA9IGJvLVxcdTAwM2V2cHVfYWRkcjtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYz03OTc9aW50IHFhaWNfbW1hcF9ib19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjUtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGF0YS5jOjgyNjpcXHRhcmdzLVxcdTAwM2VvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXFx1MDAyNm9iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjctXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3JvY2tldC9yb2NrZXRfZ2VtLmM9NjA9aW50IHJvY2tldF9pb2N0bF9jcmVhdGVfYm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTEwOC1cXHRya3Rfb2JqLVxcdTAwM2VzaXplID0gcmV0O1xcbmRyaXZlcnMvYWNjZWwvcm9ja2V0L3JvY2tldF9nZW0uYzoxMDk6XFx0YXJncy1cXHUwMDNlb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFxcdTAwMjZnZW1fb2JqLVxcdTAwM2V2bWFfbm9kZSk7XFxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTExMC1cXHRhcmdzLVxcdTAwM2VkbWFfYWRkcmVzcyA9IHJrdF9vYmotXFx1MDAzZW1tLnN0YXJ0O1xcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGljYS9hY3Jlc3JjLmg9MjIwPXZvaWRcXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaDoyMjE6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXFxuZHJpdmVycy9hY3BpL2FjcGljYS9hY3Jlc3JjLmgtMjIyLVxcdFxcdFxcdCAgIHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSk7XFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTI3Mj1hY3BpX3JzX2dldF9hZGRyZXNzX2NvbW1vbihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jLTMwOS0gKlxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmM6MzEwOiAqIEZVTkNUSU9OOiAgICBhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vblxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmMtMzExLSAqXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTMyMj12b2lkXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYzozMjM6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMjQtXFx0XFx0XFx0ICAgc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc21pc2MuYz00NDY9YWNwaV9yc19jb252ZXJ0X3Jlc291cmNlX3RvX2FtbChzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2Ni1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jOjY2NzpcXHRcXHRcXHRhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vbihhbWwsIHJlc291cmNlKTtcXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2OC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz03Nj1zdGF0aWMgaW50IGFjcGlfZ3BlX2lycV9zZXR1cChzdHJ1Y3Qgc2lfc21faW8gKmlvKVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEwMi1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MTAzOnN0YXRpYyB2b2lkIGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2Uoc3RydWN0IHJlc291cmNlICpyLCBzdHJ1Y3Qgc2lfc21faW8gKmlvKVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYy0xMDQte1xcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTExMz1pcG1pX2dldF9pbmZvX2Zyb21fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTIyLVxcdH1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MTIzOlxcdGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2UocmVzLCBpbyk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEyNC1cXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz0yMjc9c3RhdGljIGludCBvZl9pcG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcyLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNzM6XFx0aXBtaV9zZXRfYWRkcl9kYXRhX2FuZF9zcGFjZShcXHUwMDI2cmVzb3VyY2UsIFxcdTAwMjZpbyk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9MTk5PXN0YXRpYyB2b2lkIGFzcGVlZF9rY3NfdXBkYXRlYihzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiByZWcsIHU4IG1hc2ssIHU4IHZhbClcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtMjI3LSAqL1xcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM6MjI4OnN0YXRpYyBpbnQgYXNwZWVkX2tjc19zZXRfYWRkcmVzcyhzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiBhZGRyc1syXSwgaW50IG5yX2FkZHJzKVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtMjI5LXtcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9NTU1PXN0YXRpYyBpbnQgYXNwZWVkX2tjc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy02MDgtXFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYzo2MDk6XFx0cmMgPSBhc3BlZWRfa2NzX3NldF9hZGRyZXNzKGtjc19ibWMsIGFkZHJzLCBucl9hZGRycyk7XFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy02MTAtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTI4OD1zdGF0aWMgaW50IG10a19wbGxfcHJlcGFyZV9zZXRjbHIoc3RydWN0IGNsa19odyAqaHcpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMjkxLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYzoyOTI6XFx0d3JpdGVsKEJJVChwbGwtXFx1MDAzZWRhdGEtXFx1MDAzZXBsbF9lbl9iaXQpLCBwbGwtXFx1MDAzZWVuX3NldF9hZGRyKTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMjkzLVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTMyNj1zdHJ1Y3QgY2xrX2h3ICptdGtfY2xrX3JlZ2lzdGVyX3BsbF9vcHMoc3RydWN0IG10a19jbGtfcGxsICpwbGwsXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMzUxLVxcdGlmIChkYXRhLVxcdTAwM2Vlbl9zZXRfcmVnKVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYzozNTI6XFx0XFx0cGxsLVxcdTAwM2Vlbl9zZXRfYWRkciA9IGJhc2UgKyBkYXRhLVxcdTAwM2Vlbl9zZXRfcmVnO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0zNTMtXFx0aWYgKGRhdGEtXFx1MDAzZWVuX2Nscl9yZWcpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg9NjQ9c3RydWN0IG10a19jbGtfcGxsIHtcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03NC1cXHR2b2lkIF9faW9tZW1cXHQqZW5fYWRkcjtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg6NzU6XFx0dm9pZCBfX2lvbWVtXFx0KmVuX3NldF9hZGRyO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03Ni1cXHR2b2lkIF9faW9tZW1cXHQqZW5fY2xyX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzUzPXN0YXRpYyBzdHJ1Y3QgYWVhZF9lZGVzYyAqYWVhZF9lZGVzY19hbGxvYyhzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU2LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zZyk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU1NzpcXHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIHFtX3NnX2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU1OC1cXHRkcGFhMl9mbF9zZXRfbGVuKGluX2ZsZSwgaW5fbGVuKTtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjItXFx0XFx0XFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChvdXRfZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1NjM6XFx0XFx0XFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgc2dfZG1hX2FkZHJlc3MocmVxLVxcdTAwM2VzcmMpKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTY0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2NS1cXHRcXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NnKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTY2OlxcdFxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHFtX3NnX2RtYSArXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2Ny1cXHRcXHRcXHRcXHRcXHQgICgxICsgISFpdnNpemUpICogc2l6ZW9mKCpzZ190YWJsZSkpO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU3OC1cXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU3OTpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBzZ19kbWFfYWRkcmVzcyhyZXEtXFx1MDAzZWRzdCkpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTgxLVxcdFxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2cpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1ODI6XFx0XFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgcW1fc2dfZG1hICsgcW1fc2dfaW5kZXggKlxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODMtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnNnX3RhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MTExND1zdGF0aWMgc3RydWN0IHNrY2lwaGVyX2VkZXNjICpza2NpcGhlcl9lZGVzY19hbGxvYyhzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNDgtXFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChpbl9mbGUsIGRwYWEyX2ZsX3NnKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI0OTpcXHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGVkZXNjLVxcdTAwM2VxbV9zZ19kbWEpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjUwLVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTMtXFx0aWYgKHJlcS1cXHUwMDNlc3JjID09IHJlcS1cXHUwMDNlZHN0KVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzoxMjU0OlxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIGVkZXNjLVxcdTAwM2VxbV9zZ19kbWEgK1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjU1LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjU2LVxcdGVsc2VcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NzpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBlZGVzYy1cXHUwMDNlcW1fc2dfZG1hICsgZHN0X3NnX2lkeCAqXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTgtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnNnX3RhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzIxNj1zdGF0aWMgaW50IGhhc2hfZGlnZXN0X2tleShzdHJ1Y3QgY2FhbV9oYXNoX2N0eCAqY3R4LCB1MzIgKmtleWxlbiwgdTggKmtleSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zMjY2LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozMjY3OlxcdGRwYWEyX2ZsX3NldF9hZGRyKGluX2ZsZSwga2V5X2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTMyNjgtXFx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsICprZXlsZW4pO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zMjY5LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzI3MDpcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBrZXlfZG1hKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI3MS1cXHRkcGFhMl9mbF9zZXRfbGVuKG91dF9mbGUsIGRpZ2VzdHNpemUpO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jPTM1MzI9c3RhdGljIGludCBhaGFzaF91cGRhdGVfY3R4KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzYxNi1cXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KGluX2ZsZSwgZHBhYTJfZmxfc2cpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozNjE3OlxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKGluX2ZsZSwgZWRlc2MtXFx1MDAzZXFtX3NnX2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTgtXFx0XFx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsIGN0eC1cXHUwMDNlY3R4X2xlbiArIHRvX2hhc2gpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zNjE5LVxcdFxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYyMDpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBzdGF0ZS1cXHUwMDNlY3R4X2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MjEtXFx0XFx0ZHBhYTJfZmxfc2V0X2xlbihvdXRfZmxlLCBjdHgtXFx1MDAzZWN0eF9sZW4pO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDoxMi40NDMwMTgwMDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MTA2OTUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG5ldGZpbHRlciBOQVQgSC4zMjMgTW9kdWxlJ3MgQWRkcmVzcyBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGZpbGUgYW5kIHNwZWNpZmljYWxseSB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCdzIGNydWNpYWwgYmVjYXVzZSBib3RoIGBuYXRfcnRwX3J0Y3BgIGFuZCBgbmF0X3QxMjBgIGFyZSBjYWxsaW5nIGl0LiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGEgY29yZSBjb21wb25lbnQgZm9yIGFkZHJlc3MgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZS4gTm93LCBgbmF0X3J0cF9ydGNwYCBpcyBpdHNlbGYgY2FsbGVkIHRocm91Z2ggYSBob29rIHNldHVwIGJ5IGBuZl9uYXRfaDMyM19pbml0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgYG5mX25hdF9oMzIzX2luaXRgIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJpbmcgYW5kIGVuYWJsaW5nIHRoZSBlbnRpcmUgSC4zMjMgTkFUIGZ1bmN0aW9uYWxpdHkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBuZl9uYXRfaDMyM19pbml0YCBhbmQgdW5kZXJzdGFuZCAqaG93KiBpdCdzIGludGVncmF0aW5nIGBuYXRfcnRwX3J0Y3BgIGFzIGEgaG9vayBhbmQsIGJ5IGV4dGVuc2lvbiwgaG93IGBzZXRfYWRkcmAgaXMgdWx0aW1hdGVseSBicm91Z2h0IGludG8gcGxheS4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBhZGRyZXNzIHRyYW5zbGF0aW9uIHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc1NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjE2Ljg5NDA5MTg3M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTQwOlxcdH07XFxuIDU0MTpcXHRcXG4gNTQyOlxcdHN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGNhbGxmb3J3YXJkaW5nX25hdCA9IHtcXG4gNTQzOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiY2FsbGZvcndhcmRpbmdcXFwiLFxcbiA1NDQ6XFx0XFx0LmV4cGVjdGZuXFx0PSBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0LFxcbiA1NDU6XFx0fTtcXG4gNTQ2OlxcdFxcbiA1NDc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbiA1NDg6XFx0XFx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxcbiA1NDk6XFx0XFx0LnNldF9oMjI1X2FkZHIgPSBzZXRfaDIyNV9hZGRyLFxcbiA1NTA6XFx0XFx0LnNldF9zaWdfYWRkciA9IHNldF9zaWdfYWRkcixcXG4gNTUxOlxcdFxcdC5zZXRfcmFzX2FkZHIgPSBzZXRfcmFzX2FkZHIsXFxuIDU1MjpcXHRcXHQubmF0X3J0cF9ydGNwID0gbmF0X3J0cF9ydGNwLFxcbiA1NTM6XFx0XFx0Lm5hdF90MTIwID0gbmF0X3QxMjAsXFxuIDU1NDpcXHRcXHQubmF0X2gyNDUgPSBuYXRfaDI0NSxcXG4gNTU1OlxcdFxcdC5uYXRfY2FsbGZvcndhcmRpbmcgPSBuYXRfY2FsbGZvcndhcmRpbmcsXFxuIDU1NjpcXHRcXHQubmF0X3E5MzEgPSBuYXRfcTkzMSxcXG4gNTU3OlxcdH07XFxuIDU1ODpcXHRcXG4gNTU5OlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiA1NjA6XFx0c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxcbiA1NjE6XFx0e1xcbiA1NjI6XFx0XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFxcdTAwMjZuYXRob29rcyk7XFxuIDU2MzpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNnE5MzFfbmF0KTtcXG4gNTY0OlxcdFxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcXG4gNTY1OlxcdFxcdHJldHVybiAwO1xcbiA1NjY6XFx0fVxcbiA1Njc6XFx0XFxuIDU2ODpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gNTY5OlxcdHN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXFxuIDU3MDpcXHR7XFxuIDU3MTpcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG5mY3RfaDMyM19uYXRfaG9vaywgTlVMTCk7XFxuIDU3MjpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbiA1NzM6XFx0XFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNmNhbGxmb3J3YXJkaW5nX25hdCk7XFxuIDU3NDpcXHRcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4gNTc1OlxcdFxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KFxcdTAwMjZxOTMxX25hdCk7XFxuIDU3NjpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcXG4gNTc3OlxcdH1cXG4gNTc4OlxcdFxcbiA1Nzk6XFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuIDU4MDpcXHRtb2R1bGVfaW5pdChuZl9uYXRfaDMyM19pbml0KTtcXG4gNTgxOlxcdG1vZHVsZV9leGl0KG5mX25hdF9oMzIzX2ZpbmkpO1xcbiA1ODI6XFx0XFxuIDU4MzpcXHRNT0RVTEVfQVVUSE9SKFxcXCJKaW5nIE1pbiBaaGFvIFxcdTAwM2N6aGFvamluZ21pbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXRcXHUwMDNlXFxcIik7XFxuIDU4NDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkguMzIzIE5BVCBoZWxwZXJcXFwiKTtcXG4gNTg1OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gNTg2OlxcdE1PRFVMRV9BTElBU19ORl9OQVRfSEVMUEVSKFxcXCJoMzIzXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjE2Ljg5NDMwMTU3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDM3MzA4NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbCBIaWVyYXJjaHk6IGBzZXRfYWRkcmAgYW5kIE5BVCBIb29rcyoqXG5cblJpZ2h0LCBzbyBgc2V0X2FkZHJgIOKAkyB0aGF04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5BVCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgSC4zMjMuIEkgc2VlIHRoYXQgYHNldF9hZGRyYCBpcyBkaXJlY3RseSBjYWxsZWQgYnkgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAuIE1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgdGhlIHR5cGljYWwgcHJvdG9jb2xzIHRoYXQgd291bGQgbmVlZCBhZGRyZXNzIHRyYW5zbGF0aW9uLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIgdXBzdHJlYW0uXG5cbldoZXJlIGRvICp0aG9zZSogZnVuY3Rpb25zLCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgZ2V0IGNhbGxlZD8gSSBiZXQgdGhlIGhvb2sgZnVuY3Rpb25zIGluIHRoZSBgbmF0aG9va3NgIG1vZHVsZSBhcmUgaW52b2x2ZWQuIExldCBtZSBjaGVjayB0aGF0LiBZZXAsIGxvb2tzIGxpa2UgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgdGhlIG5leHQgc3RlcCB0byBpbnZlc3RpZ2F0ZS4gT2theSwgc28gdGhhdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvIGZvbGxvdyBub3cuIEkgbmVlZCB0byBzZWUgaG93IGBuZmN0X2gzMjNfbmF0X2hvb2tgIHRyaWdnZXJzIHRob3NlIE5BVCBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIEguMzIzIHNpZ25hbGluZy4gVGhpcyB3aWxsIGlsbHVtaW5hdGUgdGhlIGNydWNpYWwgbGluayBiZXR3ZWVuIGBzZXRfYWRkcmAgYW5kIHRoZSBvdmVyYWxsIE5BVCBwcm9jZXNzLCB3aGljaCBpcyB3aGF0IEknbSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgcmlnaHQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDAwMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MjIuMzMxNjEzMDk3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTE2MDM4MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY3RfaDMyM19uYXRfaG9va1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oPTM0PWludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtMzctXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozODpzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyB7XFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC0zOS1cXHRpbnQgKCpzZXRfaDI0NV9hZGRyKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTMtfTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oOjk0OmV4dGVybiBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBfX3JjdSAqbmZjdF9oMzIzX25hdF9ob29rO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTUtXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDI9c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gY2FsbGZvcndhcmRpbmdfbmF0ID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ2LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU0NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgbmF0aG9va3MgPSB7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ4LVxcdC5zZXRfaDI0NV9hZGRyID0gc2V0X2gyNDVfYWRkcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTU2MD1zdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjI6XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFxcdTAwMjZuYXRob29rcyk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYzLVxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTY5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTcwLXtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NzE6XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU3Mi1cXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NTE9TU9EVUxFX1BBUk1fREVTQyhjYWxsZm9yd2FyZF9maWx0ZXIsIFxcXCJvbmx5IGNyZWF0ZSBjYWxsIGZvcndhcmRpbmcgZXhwZWN0YXRpb25zIFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU1OmNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIF9fcmN1ICpuZmN0X2gzMjNfbmF0X2hvb2sgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo1NjpFWFBPUlRfU1lNQk9MX0dQTChuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MjA5PXN0YXRpYyBpbnQgZXhwZWN0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTIxNC17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MjE1OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTIxNi1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjUxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI1MjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjUzLVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjg5LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyOTA6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjkxLVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0zMTEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MzEyOlxcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0zMTMtXFx0aWYgKG1lbWNtcChcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51MyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTYyMj1zdGF0aWMgaW50IGV4cGVjdF9oMjQ1KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyNi17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NjI3OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyOC1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjQ4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjY0OTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjUwLVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz03Mzk9c3RhdGljIGludCBleHBlY3RfY2FsbGZvcndhcmRpbmcoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc0NS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NzQ2OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc0Ny1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzc1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc3NjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzc3LVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz04MDA9c3RhdGljIGludCBwcm9jZXNzX3NldHVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgwNS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6ODA2OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgwNy1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtODIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjgyMjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtODIzLVxcdGlmICgoc2V0dXAtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBlU2V0dXBfVVVJRV9kZXN0Q2FsbFNpZ25hbEFkZHJlc3MpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMTg3PXN0YXRpYyBpbnQgZXhwZWN0X3E5MzEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTE5Mi1cXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTE5MzpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMTk0LVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTI0Nz1zdGF0aWMgaW50IHByb2Nlc3NfZ3JxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTEte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyNTI6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1My1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1NjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1Ny1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzExPXN0YXRpYyBpbnQgcHJvY2Vzc19ycnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTMxNi1cXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTMxNzpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzE4LVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzMwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEzMzE6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMzItXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTM1MD1zdGF0aWMgaW50IHByb2Nlc3NfcmNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNTUtXFx0c3RydWN0IG5mX2N0X2gzMjNfbWFzdGVyICppbmZvID0gbmZjdF9oZWxwX2RhdGEoY3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEzNTY6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTM1Ny1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTM2NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzY2OlxcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzY3LVxcdGlmIChuYXRob29rIFxcdTAwMjZcXHUwMDI2IG5mX2N0X2wzbnVtKGN0KSA9PSBORlBST1RPX0lQVjQgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE0MDQ9c3RhdGljIGludCBwcm9jZXNzX3VycShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDA5LVxcdHN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDEwOlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MTEtXFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MTgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQxOTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTQyMC1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDQwPXN0YXRpYyBpbnQgcHJvY2Vzc19hcnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTQ0NS1cXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQ0NjpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDQ3LVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDU1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE0NTY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NTctXFx0aWYgKCFuYXRob29rKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ5MD1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MDctXFx0aWYgKCFtZW1jbXAoXFx1MDAyNmFkZHIsIFxcdTAwMjZjdC1cXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0LnUzLCBzaXplb2YoYWRkcikpKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUwODpcXHRcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTA5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MTAtXFx0XFx0LyogQW5zd2VyaW5nIEFDRiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE1MTE6XFx0XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MTItXFx0XFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTU0MD1zdGF0aWMgaW50IHByb2Nlc3NfbHJxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDQte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE1NDU6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU0Ni1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0OTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU1MC1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTk2PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwMC17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTYwMTpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjAyLVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjA1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE2MDY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE2MDctXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDoyOC4yNDc2NTczMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0MjYyMzgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgYW5kIENvbnRleHQgb2YgYG5mY3RfaDMyM19uYXRfaG9va2AqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgc2VlaW5nIHRoYXQgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgY2FsbGVkIGZyb20gYSBwcmV0dHkgZXh0ZW5zaXZlIGxpc3Qgb2YgZnVuY3Rpb25zIHdpdGhpbiBgbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gb2JzZXJ2aW5nIGl0cyB1c2Ugd2l0aGluIGBleHBlY3RfcnRwX3J0Y3BgLCBgZXhwZWN0X3QxMjBgLCBgZXhwZWN0X2gyNDVgLCBgZXhwZWN0X2NhbGxmb3J3YXJkaW5nYCwgYHByb2Nlc3Nfc2V0dXBgLCBgZXhwZWN0X3E5MzFgLCBhbmQgdGhlIGVudGlyZSBzdWl0ZSBvZiBgcHJvY2Vzc18qYCBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIEdSUSwgUlJRLCBSQ0YsIFVSUSwgQVJRLCBBQ0YsIExSUSwgYW5kIElSUi4gVGhhdCdzIGEgbG90IG9mIGRpZmZlcmVudCBjYWxsIHBhdGhzIHRvIGJlIGF3YXJlIG9mISBUaGlzIHN1Z2dlc3RzIGEgcmVhbGx5IGNlbnRyYWwgcm9sZSBpbiBob3cgSC4zMjMgTkFUIHRyYXZlcnNhbCBpcyBoYW5kbGVkLlxuXG5JIGFsc28gc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGBoMjQ1X2hlbHBgIGluIHRoZSBzYW1lIGZpbGUgYXMgcGFydCBvZiB0aGlzIHBhdGNoLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGxpa2VseSBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCBILjI0NSBzaWduYWxpbmcuIEl0IHNlZW1zIHdpc2UgdG8gcXVpY2tseSBkaXZlIGludG8gdW5kZXJzdGFuZGluZyBob3cgYGgyNDVfaGVscGAgZnVuY3Rpb25zIGluIG9yZGVyIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MzMuNDkwMjg1NzMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA5MzA2MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImgyNDVfaGVscFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTI4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01MzAtXFx0XFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTcxNT1zdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNzI2LVxcdFxcdFxcdCAgXFxcIkguMjQ1XFxcIiwgMCwgMCwgMCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNzI3OlxcdFxcdFxcdCAgXFx1MDAyNmgyNDVfZXhwX3BvbGljeSwgMCwgaDI0NV9oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MzcuODk5NjQ5Mjc1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTgyMzUyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25udHJhY2sgSGVscGVyKipcblxuT2theSwgc28gYGgyNDVfaGVscGAgaXMgZmxhZ2dlZCBhcyBhIGNvbm50cmFjayBoZWxwZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gdGhlIGNvZGUgZm9yIGBoMzIzX2hlbHBlcl9pbml0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IGhvdyB0aGUgaGVscGVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb25udHJhY2ssIHdoYXQgY2FsbGJhY2tzIGFyZSB1c2VkLCBhbmQgaG93IGl0IGhhbmRsZXMgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgSC4yNDUsIGdpdmVuIEguMzIzJ3MgcmVsYXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBoZWxwZXIncyBjYXBhYmlsaXRpZXMgYW5kIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxODQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDo0Mi4wMTc4ODg1OTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3MTA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0X3BvbGljeSByYXNfZXhwX3BvbGljeSA9IHtcXG4xNzExOlxcdFxcdC5tYXhfZXhwZWN0ZWRcXHRcXHQ9IDMyLFxcbjE3MTI6XFx0XFx0LnRpbWVvdXRcXHRcXHQ9IDI0MCxcXG4xNzEzOlxcdH07XFxuMTcxNDpcXHRcXG4xNzE1OlxcdHN0YXRpYyBpbnQgX19pbml0IGgzMjNfaGVscGVyX2luaXQodm9pZClcXG4xNzE2OlxcdHtcXG4xNzE3OlxcdFxcdGludCByZXQ7XFxuMTcxODpcXHRcXG4xNzE5OlxcdFxcdG5mX2N0X2hlbHBlcl9pbml0KFxcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX3Jhc1swXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXFxuMTcyMDpcXHRcXHRcXHRcXHQgIFxcXCJSQVNcXFwiLCBSQVNfUE9SVCwgUkFTX1BPUlQsIFJBU19QT1JULFxcbjE3MjE6XFx0XFx0XFx0XFx0ICBcXHUwMDI2cmFzX2V4cF9wb2xpY3ksIDAsIHJhc19oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxuMTcyMjpcXHRcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9yYXNbMV0sIEFGX0lORVQ2LCBJUFBST1RPX1VEUCxcXG4xNzIzOlxcdFxcdFxcdFxcdCAgXFxcIlJBU1xcXCIsIFJBU19QT1JULCBSQVNfUE9SVCwgUkFTX1BPUlQsXFxuMTcyNDpcXHRcXHRcXHRcXHQgIFxcdTAwMjZyYXNfZXhwX3BvbGljeSwgMCwgcmFzX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG4xNzI1OlxcdFxcdG5mX2N0X2hlbHBlcl9pbml0KFxcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX2gyNDUsIEFGX1VOU1BFQywgSVBQUk9UT19VRFAsXFxuMTcyNjpcXHRcXHRcXHRcXHQgIFxcXCJILjI0NVxcXCIsIDAsIDAsIDAsXFxuMTcyNzpcXHRcXHRcXHRcXHQgIFxcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbjE3Mjg6XFx0XFx0bmZfY3RfaGVscGVyX2luaXQoXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXFxuMTcyOTpcXHRcXHRcXHRcXHQgIFxcXCJRLjkzMVxcXCIsIFE5MzFfUE9SVCwgUTkzMV9QT1JULCBROTMxX1BPUlQsXFxuMTczMDpcXHRcXHRcXHRcXHQgIFxcdTAwMjZxOTMxX2V4cF9wb2xpY3ksIDAsIHE5MzFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbjE3MzE6XFx0XFx0bmZfY3RfaGVscGVyX2luaXQoXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVENQLFxcbjE3MzI6XFx0XFx0XFx0XFx0ICBcXFwiUS45MzFcXFwiLCBROTMxX1BPUlQsIFE5MzFfUE9SVCwgUTkzMV9QT1JULFxcbjE3MzM6XFx0XFx0XFx0XFx0ICBcXHUwMDI2cTkzMV9leHBfcG9saWN5LCAwLCBxOTMxX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG4xNzM0OlxcdFxcbjE3MzU6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcl9yZWdpc3RlcihcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1LFxcbjE3MzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xcbjE3Mzc6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTczODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE3Mzk6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxLFxcbjE3NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIEFSUkFZX1NJWkUobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxKSxcXG4xNzQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZl9jb25udHJhY2tfaGVscGVyX3E5MzFfcHRyKTtcXG4xNzQyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3NDM6XFx0XFx0XFx0Z290byBlcnIxO1xcbjE3NDQ6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9yYXMsXFxuMTc0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgQVJSQVlfU0laRShuZl9jb25udHJhY2tfaGVscGVyX3JhcyksXFxuMTc0NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgbmZfY29ubnRyYWNrX2hlbHBlcl9yYXNfcHRyKTtcXG4xNzQ3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3NDg6XFx0XFx0XFx0Z290byBlcnIyO1xcbjE3NDk6XFx0XFxuMTc1MDpcXHRcXHRyZXR1cm4gMDtcXG4xNzUxOlxcdGVycjI6XFxuMTc1MjpcXHRcXHRuZl9jb25udHJhY2tfaGVscGVyc191bnJlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIsXFxuMTc1MzpcXHRcXHRcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpKTtcXG4xNzU0OlxcdGVycjE6XFxuMTc1NTpcXHRcXHRuZl9jb25udHJhY2tfaGVscGVyX3VucmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1X3B0cik7XFxuMTc1NjpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3NTc6XFx0fVxcbjE3NTg6XFx0XFxuMTc1OTpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgaDMyM19oZWxwZXJfZXhpdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDo0Mi4wMTgwNTk4NjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDIxODM3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBILjI0NSBDb25udHJhY2sgSGVscGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEguMjQ1IGNvbm50cmFjayBoZWxwZXIsIHNwZWNpZmljYWxseSBgaDI0NV9oZWxwYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgY2hlY2sgYWRkZWQgd2l0aGluIGBoMjQ1X2hlbHBgIHRoYXQgZW5mb3JjZXMgVENQIChgaWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUCkgcmV0dXJuIE5GX0FDQ0VQVDtgKS4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBhZGRyZXNzaW5nIGEgcHJvdG9jb2wtc3BlY2lmaWMgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBvdGhlciBwYXJ0IG9mIHRoZSBwYXRjaCBtb2RpZmllcyBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCB0byB1c2UgYG5mX2N0X3Byb3RvbnVtKGN0KWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sYC5cblxuSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBJUHY2IGNvbXBhdGliaWxpdHksIGJ1dCBjb25zaWRlcmluZyBgbmZfbmF0X2gzMjMuY2AgaXMgZXhwbGljaXRseSBJUHY0LCB0aGF0J3MgbGVzcyBsaWtlbHkuIEhvd2V2ZXIsIHRoZSB1c2Ugb2YgYGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sYCBpbiBgc2V0X2FkZHJgIGlzIHByb2JsZW1hdGljIGluIGl0c2VsZi4gIFRoZSBrZXkgcmVhbGl6YXRpb24gaGVyZSBpcyB0aGF0IGEgdXNlciBjYW4gKmJpbmQqIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gTm93LCB3aXRoIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAsIHdlIHJ1biBpbnRvIHByb2JsZW1zIHdoZW4gbm9uLVRDUCBwYWNrZXRzIGdldCBwYXNzZWQgdGhyb3VnaCB0aGUgaGVscGVyLiBGb3IgZXhhbXBsZSwgaWYgYW4gSUNNUCBlcnJvciBvciBzaW1pbGFyIHBhY2tldCBjb21lcyB0aHJvdWdoIGFmdGVyIGEgVURQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHRoZSBvcmlnaW5hbCBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHZhbHVlIGlzIHVzZWQsIGFuZCB0aGUgbWFuZ2xlIGZ1bmN0aW9uIGlzIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgVURQLiBUaGlzIHRoZW4gbGVhZHMgdG8gaXNzdWVzIGFjY2Vzc2luZyBVRFAgaGVhZGVycyBvbiBub24tVURQIHBhY2tldHMuIEJpbmdvISBXZSdyZSB0YWxraW5nIGFib3V0IGEgY3Jhc2ggb3IgT09CIHJlYWQuXG5cblVzaW5nIGBuZl9jdF9wcm90b251bShjdClgIHNvbHZlcyB0aGlzLiBJdCByZWxpZXMgb24gdGhlICpjb25uZWN0aW9uJ3MqIHByb3RvY29sLCBub3QgdGhlICpwYWNrZXQncyogcHJvdG9jb2wuIFRoZSBhZGRlZCBzd2l0Y2ggc3RhdGVtZW50IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIGJ5IHByZXZlbnRpbmcgY2FsbHMgdG8gbWFuZ2xlIGZ1bmN0aW9ucyBmb3IgdW5leHBlY3RlZCBwcm90b2NvbHMsIHdoaWNoIGlzIGEgc29saWQsIGRlZmVuc2l2ZSBjb2RpbmcgcHJhY3RpY2UuXG5cblRoZSBwYXRjaCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGBzd2l0Y2hgIHN0YXRlbWVudDpcbmBgYGNcblx0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcblx0Y2FzZSBJUFBST1RPX1RDUDpcbi4uLlxuXHRjYXNlIElQUFJPVE9fVURQOlxuLi4uXG5cdGRlZmF1bHQ6XG5cdFx0cmV0dXJuIC0xO1xuXHR9XG5gYGBcblRoaXMgYWRkaXRpb25hbCBjaGVjayBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgdW5leHBlY3RlZCBwcm90b2NvbHMgdGhhdCBjb3VsZCBjb21lIGluLlxuXG5GdXJ0aGVybW9yZSwgdGhlIGNoYW5nZSB0byBgaDI0NV9oZWxwYCBlZmZlY3RpdmVseSBpZ25vcmVzIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMsIHdoaWNoIGl0IGV4cGVjdHMgdG8gYmUgVENQLlxuXG5UaGlzIGlzIGEgd2VsbC10YXJnZXRlZCBmdW5jdGlvbmFsIGNoYW5nZS4gTXkgbmV4dCBzdGVwIHdvdWxkIGJlIGZ1enppbmcgdGhpcyB0byBlbnN1cmUgcm9idXN0bmVzcy4gVGhlIGtleSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdvdWxkIGJlIGBoMjQ1X2hlbHBgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgTkFUIGZ1bmN0aW9uczogYG5hdF9ydHBfcnRjcGAsIGBuYXRfdDEyMGAsIGBuYXRfaDI0NWAsIGBuYXRfY2FsbGZvcndhcmRpbmdgLCBgbmF0X3E5MzFgLCBgc2V0X2gyNDVfYWRkcmAsIGBzZXRfaDIyNV9hZGRyYCwgYHNldF9zaWdfYWRkcmAsIGFuZCBgc2V0X3Jhc19hZGRyYC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzY29wZSBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gYG5mX25hdF9oMzIzLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTUzOSwiT3V0cHV0VG9rZW5zIjo2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjU0LjAyMDI0NjkyM1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MzU1NjY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjU0LjEzNDYxMzU4MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYwMjUzNzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipRdWljayBTY2FuIGZvciBTdGF0aWMgSW50ZWdlciBEZWNsYXJhdGlvbnMgaW4gdGhlIE5BVCBILjMyMyBDb2RlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZS4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggSC4zMjMgTkFUIGFuZCBwb3RlbnRpYWxseSBpbnRlcm5hbCBpbnRlZ2VyIHN0YXRlcywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4gVGhlIHF1aWNrZXN0IHdheSB0byBkbyB0aGF0IGluIHRoaXMgc2NlbmFyaW8gaXMgcHJvYmFibHkgdG8gcnVuIGBncmVwYCBvbiB0aGUgYG5mX25hdF9oMzIzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIHNlYXJjaCBmb3IgbGluZXMgdGhhdCBzdGFydCB3aXRoIGBzdGF0aWMgaW50YC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBwYXNzIGF0IGFueSBzdGF0aWNhbGx5IGRlY2xhcmVkIGludGVnZXJzIHRoYXQgYXJlIHJlbGV2YW50IHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZSBpbiB0aGF0IHNwZWNpZmljIG5ldGZpbHRlciBmaWxlLiBJIHdhbnQgdG8gc2VlIHdoYXQncyBiZWluZyBtYW5hZ2VkLCB3aGF0IHZhcmlhYmxlcyBjb3VsZCBiZSBob2xkaW5nIGludGVybmFsIHN0YXRlcyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgaXNzdWVzLiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgZGlncyB1cC4gSXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBkZWVwZXIgYW5hbHlzaXMgb2YgdGhlIEguMzIzIE5BVCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6NTguNDk0ODcxMDA3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ3MzUzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjIzOnN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjQtXFx0XFx0ICAgIHVuc2lnbmVkIGNoYXIgKipkYXRhLCBpbnQgZGF0YW9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTc1LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjc2OnN0YXRpYyBpbnQgc2V0X2gyMjVfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy03Ny1cXHRcXHRcXHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtODUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6ODY6c3RhdGljIGludCBzZXRfaDI0NV9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHByb3RvZmYsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtODctXFx0XFx0XFx0IHVuc2lnbmVkIGNoYXIgKipkYXRhLCBpbnQgZGF0YW9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTk2LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjk3OnN0YXRpYyBpbnQgc2V0X3NpZ19hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy05OC1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1Mi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxNTM6c3RhdGljIGludCBzZXRfcmFzX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1NC1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE4MS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxODI6c3RhdGljIGludCBuYXRfcnRwX3J0Y3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE4My1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5MC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyOTE6c3RhdGljIGludCBuYXRfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjkyLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyOC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzozMjk6c3RhdGljIGludCBuYXRfaDI0NShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzMwLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTM4Mj1zdGF0aWMgdm9pZCBpcF9uYXRfcTkzMV9leHBlY3Qoc3RydWN0IG5mX2Nvbm4gKm5ldyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQwOS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo0MTA6c3RhdGljIGludCBuYXRfcTkzMShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNDExLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTQ3ND1zdGF0aWMgdm9pZCBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0KHN0cnVjdCBuZl9jb25uICpuZXcsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NDk2OnN0YXRpYyBpbnQgbmF0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTctXFx0XFx0XFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTU5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU2MDpzdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6NTguNjA5NjEzMDA0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDY0NjA1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBILjMyMyBOQVQgTW9kdWxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZfbmF0X2gzMjMuY2AgZmlsZSBhbmQgaW1tZWRpYXRlbHkgdGhlIFwic3RhdGljXCIgZGVjbGFyYXRpb24gb24gYWxsIHRob3NlIGZ1bmN0aW9ucyBwb3BzIG91dC4gVGhhdCBzdWdnZXN0cyB0aGVzZSBhcmUgYWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoaXMgbW9kdWxlLCBsaWtlbHkgZm9yIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIG5hbWluZyBjb25mbGljdHMuIEdvb2QgcHJhY3RpY2UsIGdlbmVyYWxseS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIGFyZSB1c2VkLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8ganVtcCBvdmVyIHRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3IgbWFpbiBlbnRyeSBwb2ludHMgZm9yIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvY2F0aW5nIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiwgYXMgdGhhdCdzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciBILjI0NSBzaWduYWxpbmcuIFNlZWluZyB3aGVyZSB0aGF0J3MgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgTkFUIGhlbHBlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBpbnNwZWN0aW9uIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjAyLjgxNjA3Njg0M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTAzMzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImgyNDVfaGVscFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTI4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01MzAtXFx0XFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTcxNT1zdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNzI2LVxcdFxcdFxcdCAgXFxcIkguMjQ1XFxcIiwgMCwgMCwgMCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNzI3OlxcdFxcdFxcdCAgXFx1MDAyNmgyNDVfZXhwX3BvbGljeSwgMCwgaDI0NV9oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MDIuOTgyOTg3MTI5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA1MTgyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ29ubnRyYWNrIEhlbHBlciBQb25kZXJpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gSXQncyBzZWVtaW5nIHByZXR0eSBzdGF0aWMgaW4gaXRzIHN0cnVjdHVyZSwgaXNuJ3QgaXQ/IEJ1dCwgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGEgKmNvbm50cmFjayBoZWxwZXIqLiBUaGF0IG1lYW5zIGl0cyBwcmltYXJ5IGVudHJ5IHBvaW50IGlzIGdvaW5nIHRvIGJlIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyLCBpbmplY3RlZCBpbnRvIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLiBJJ20gdHJ5aW5nIHRvIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBzZWVpbmcgaG93IHRoaXMgaGVscGVyIGFjdHVhbGx5IGdldHMgaW52b2tlZCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcuXG5cbk15IGNvbmNlcm4gaXMgd2hldGhlciB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LCBhcyBteSBleHBlcmllbmNlIHRlbGxzIG1lIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG1vcmUgdHJpY2t5LiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgd2l0aGluIGBuZl9jb25udHJhY2tfaDMyM19tYWluLmNgPyBTb21ldGhpbmcgdGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciB2aWV3IG9mIGhvdyB0aGlzIHRoaW5nIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWw/IEZpbmRpbmcgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gbWF5IHByb3ZpZGUgc29tZSBjbHVlcyBob3cgdGhlIGhlbHBlciBpcyBpbnZva2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ2NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjA3LjAzMzUwOTgyMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMTgyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTkwOmludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXFx0XFx0ICBUcmFuc3BvcnRBZGRyZXNzICp0YWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MDcuMjA1NzAxMjU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDg3NTMxNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgRnVuY3Rpb24gTW9kaWZpZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZ2V0X2gyMjVfYWRkcmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIGl0J3MgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoaXMgc3BhcmtzIGEgdHJhaW4gb2YgdGhvdWdodDogaWYgKnRoaXMqIGZ1bmN0aW9uIGlzbid0IHN0YXRpYywgd2hhdCBhYm91dCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIG1vZGlmaWVycyBvbiB0aGUgb3RoZXJzLCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZWlyIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBUaGlzIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRlc2lnbi4gQXJlIHdlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCdzIGludGVuZGVkIHRvIGJlIGdsb2JhbGx5IGFjY2Vzc2libGUsIG9yIGlzIGl0IHN1cHBvc2VkIHRvIGJlIGVuY2Fwc3VsYXRlZD8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLCBlc3BlY2lhbGx5IGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudCB3aGVyZSB1bmV4cGVjdGVkIGFjY2VzcyBjb3VsZCBsZWFkIHRvIHJhY2UgY29uZGl0aW9ucy4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSByZXN0IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk1OSwiT3V0cHV0VG9rZW5zIjo2MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjExLjI1NDQ1ODI5OVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3ODc1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTg6c3RhdGljIERFRklORV9TUElOTE9DSyhuZl9oMzIzX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU5LXN0YXRpYyBjaGFyICpoMzIzX2J1ZmZlcjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTkwOmludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXFx0XFx0ICBUcmFuc3BvcnRBZGRyZXNzICp0YWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MTEuMzM3MjUxNTQ3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4ODk4NDM2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29ubnRyYWNrIEhlbHBlciBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgSC4yMjUvSC4yNDUgc2l0dWF0aW9uLiBJdCBzZWVtcyBgZ2V0X2gyMjVfYWRkcmAgaXMgdGhlIGxvbmUgbm9uLXN0YXRpYyBmdW5jdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguLi4gV2FpdCwgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gYGgyNDVfaGVscGAgKmlzKiBhIGNvbm50cmFjayBoZWxwZXIsIGFuZCBjb25udHJhY2sgZnV6emluZyBvZnRlbiBpbnZvbHZlcyB0YXJnZXRpbmcgdGhlIGhlbHBlcnMgdGhlbXNlbHZlcy4gSSdtIHRoaW5raW5nLCBldmVuIHRob3VnaCBgaDI0NV9oZWxwYCBpcyBzdGF0aWMsIHN5emthbGxlciAqbWlnaHQqIHN0aWxsIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSdzIGRlYnVnIGluZm9ybWF0aW9uIGF2YWlsYWJsZS4gSXQncyB3b3J0aCBsaXN0aW5nIGl0IGFzIGEgZm9jdXMgc3ltYm9sLlxuXG5BbHNvLCBJIHNlZSBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCBpcyBzdGF0aWMgdG9vLiBUaGUgc3RhdGljLW5lc3Mgb2YgZnVuY3Rpb25zIGxpa2UgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAgYWxzbyBjb25jZXJucyBtZSwgYnV0IHN0aWxsLCBJIGFtIGdvaW5nIHRvIGxpc3QgYGgyNDVfaGVscGAsIGBzZXRfYWRkcmAsIGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgIGFzIGZvY3VzIHN5bWJvbHMuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgY29uZmlndXJhdGlvbnMgbGluZWQgdXAuIExldCdzIGRvdWJsZS1jaGVjazogYE5GX0NPTk5UUkFDS19IMzIzYCwgYE5GX05BVF9IMzIzYCwgYE5GX05BVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBjb21wb25lbnRzIGVuYWJsZWQuXG5cbkxldCdzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTE2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjE3LjIyNzA5OTk2NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMjA2MDE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTIyNz1jb25maWcgTkZfQ09OTlRSQUNLX0ZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjIyLjEzOTE2NjgyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzUwMDA4NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBoaW5nZXMgb24gdGhlIHN0YXRlIG9mIGBORVRGSUxURVJfQURWQU5DRURgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBFdmVyeXRoaW5nIGVsc2UgaXMgc2Vjb25kYXJ5IHVudGlsIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBwcm92aWRlZCBieSB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgdmFyaWFibGUgdGhhdCBkaWN0YXRlcyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGFwcHJvYWNoLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZGV0ZXJtaW5lICpob3cqIHRoaXMgb3B0aW9uIGlzIHNldCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcyBvciByZW1vdmVzLCBhbmQgaG93IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgYmVoYXZlcyBpbiBkaWZmZXJlbnQgYnVpbGQgY29uZmlndXJhdGlvbnMuIElzIGl0IGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBpbnRlcm1lZGlhcnkgbGV2ZWw/IFRoYXQgaXMgdGhlIHF1ZXN0aW9uLiBUaGUgYW5zd2VyIGltcGFjdHMgKmV2ZXJ5dGhpbmcqLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzIxMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjM1LjYzOTI1NDg3N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNzQ3MjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcXG5uZXQvS2NvbmZpZy0yMTktXFxubmV0L0tjb25maWc6MjIwOmNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcXG5uZXQvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQWR2YW5jZWQgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjQwLjk3NjczMzY5M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkzMTM3NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIHRoaW5raW5nLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBILjMyMyBOQVQgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgc28gSSBzZWUgdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZSBoZXJlLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgb2YgY291cnNlLCB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgKGBORl9DT05OVFJBQ0tfSDMyM2ApIGlzIHJlcXVpcmVkLiBOb3csIG5hdHVyYWxseSwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIEkgYWxzbyBuZWVkIGBORl9OQVRfSDMyM2AuXG5cbkJlZm9yZSBJIHByb2NlZWQgZnVydGhlciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9OQVRfSDMyM2AgZG9lc24ndCBoYXZlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJJ20gb3Zlcmxvb2tpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSByZXF1aXJlbWVudHMgaXQgbWlnaHQgaW1wb3NlIG9uIHRoZSBzdXJyb3VuZGluZyBlbnZpcm9ubWVudC4gVGhpcyBpcyBqdXN0IHN0YW5kYXJkIHByYWN0aWNlLCBvZiBjb3Vyc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6NDYuMDY5ODc1MDQ1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTg6XFx0Y29uZmlnIE5GX05BVF9QUFRQXFxuIDExOTpcXHRcXHR0cmlzdGF0ZVxcbiAxMjA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTIxOlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE5GX05BVF9IMzIzXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZVxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTI2OlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcXG4gMTI3OlxcdFxcbiAxMjg6XFx0ZW5kaWYgIyBORl9OQVRcXG4gMTI5OlxcdFxcbiAxMzA6XFx0Y29uZmlnIElQX05GX0lQVEFCTEVTXFxuIDEzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXFxcIlxcbiAxMzI6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjQ2LjA2OTk3OTkxNFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ5ODE4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEguMzIzIE5BVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYmFzZWQgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIChgTkZfQ09OTlRSQUNLX0gzMjNgKSBpcyB0aGUga2V5LCBhbmQgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYE5GX0NPTk5UUkFDS2AgYmVpbmcgYWN0aXZlLCB3aGljaCBpcyB0eXBpY2FsLiBOb3csIEkgc2VlIHRoYXQgZW5hYmxpbmcgSC4zMjMgTkFUIChgTkZfTkFUX0gzMjNgKSBpc24ndCBkaXJlY3RseSBleHBvc2VkIGluIHRoZSBtZW51IGNvbmZpZ3VyYXRpb247IHRoZXJlJ3Mgbm8gcHJvbXB0IHN0cmluZyBmb3IgaXQuIEFoLCBJIGdldCBpdCDigJMgaXQncyBhbiBhdXRvbWF0aWNhbGx5LXNlbGVjdGVkIGRlcGVuZGVuY3kuIEl0IGJlY29tZXMgYWN0aXZlIG9ubHkgaWYgSSBlbmFibGUgdGhlIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tlciAoYE5GX0NPTk5UUkFDS19IMzIzYCkgKmFuZCogdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgKGBORl9OQVRgKS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIHNvbWV3aGF0LCBhbHRob3VnaCBpdCByZXF1aXJlcyBhIHNsaWdodGx5IGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiwgZm9yIEguMzIzIE5BVCBmdW5jdGlvbmFsaXR5LCBpcyB0byBlbmFibGUgKmJvdGgqIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRgLiBJdCdzIGVzc2VudGlhbCB0byBlbmFibGUgYmFzZSBOQVQgZnVuY3Rpb25hbGl0eS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBJIGhhdmUgYE5GX05BVGAgZW5hYmxlZCBqdXN0IHRvIGJlIHN1cmUuIFRoYXQgd291bGQgYmUgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk2NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjUxLjExOTgwMzcxN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZWZhdWx0IG5cXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbiA0MDI6XFx0XFx0aGVscFxcbiA0MDM6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxcbiA0MDQ6XFx0XFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xcbiA0MDU6XFx0XFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIE5GX05BVFxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjUxLjExOTk3NzQzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTEyMDg5OTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBILjMyMyBOQVQgYW5kIENvbm50cmFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgdGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBvcGVuIGEgdnVsbmVyYWJpbGl0eSB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIHNvbWVvbmUgbWFudWFsbHkgY29uZmlndXJlcyB0aGUgSC4yNDUgaGVscGVyIG9uIGEgVURQIGNvbm5lY3Rpb24uIEl0J3MgYWxzbyBhZGRpbmcgYSBzYWZldHkgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gc3BlY2lmaWNhbGx5IGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLCB3aGljaCBtYWtlcyBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgcmVhY2hlcyBjb3JlIG5ldGZpbHRlciBsb2dpYywgbWFraW5nIGZ1enppbmcgYSBnb29kIGlkZWEuXG5cbkZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgZW5hYmxlZC4gVGhhdCdzIGBORVRGSUxURVJfQURWQU5DRURgLCBgTkZfQ09OTlRSQUNLYCwgYE5GX05BVGAsIGFuZCBgTkZfQ09OTlRSQUNLX0gzMjNgLiBJIHdpbGwgbGlzdCB0aG9zZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSeKAmWxsIGZvY3VzIG9uIGBoMjQ1X2hlbHBgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuYXRfdDEyMGAuIGBzZXRfYWRkcmAgaXMgYWxzbyBpbXBvcnRhbnQsIHNpbmNlIGl0J3MgdXNlZCBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgc2V0X2FkZHJgIGlzbid0IGlubGluZWQsIGFzIGl0cyBhZGRyZXNzIGlzIHRha2VuIChpdCdzIHB1dCBpbiBgbmF0aG9va3NgKS4gSWYgbm90IGlubGluZWQsIHRoZW4gdGhhdCdzIHRoZSBvbmUgdGhhdCBpcyBtb2RpZmllZC4gSWYgaXQncyBpbmxpbmVkLCB0aGVuIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0IGFyZSBpbXBvcnRhbnQuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBzZXRfYWRkcmAgaXMgaW5saW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgdHdpY2UgaW4gYG5mX25hdF9oMzIzLmNgLCBtZWFuaW5nIGl0IGlzIHBvc3NpYmxlLiBTbyBJIHdpbGwgYWRkIGBuYXRfcnRwX3J0Y3BgIGFuZCBgbmF0X3QxMjBgLCBhcyB0aGV5IGJvdGggY2FsbCBgc2V0X2FkZHJgLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZnVuY3Rpb25zIGBuZl9uYXRfaDMyM19pbml0YCBhbmQgYGgzMjNfaGVscGVyX2luaXRgIGFyZSBwcm9wZXJseSBob29rZWQgdXAuXG5cblNvLCBteSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzIHdpbGwgYmU6XG5cbiogICBgaDI0NV9oZWxwYFxuKiAgIGBuYXRfcnRwX3J0Y3BgXG4qICAgYG5hdF90MTIwYFxuKiAgIGBzZXRfYWRkcmAgKGNvbmRpdGlvbmFsOyBpZiBub3QgaW5saW5lZCwgaXQncyBtb2RpZmllZClcblxuSeKAmW0gY29uZmlkZW50IHRoaXMgY292ZXJzIHRoZSBlc3NlbnRpYWwgcGllY2VzIG9mIHRoZSBwYXRjaCB0aGF0IG5lZWQgY2xvc2Ugc2NydXRpbnkgZm9yIGZ1bmN0aW9uYWwgY29ycmVjdG5lc3MgYW5kIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjgxLCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE2OjAyLjI0MDg4MjIwMVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDM2NjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoMjQ1X2hlbHBcIixcbiAgICBcIm5hdF9ydHBfcnRjcFwiLFxuICAgIFwibmF0X3QxMjBcIixcbiAgICBcInNldF9hZGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEguMzIzIE5BVCBhbmQgY29ubnRyYWNrIGhlbHBlcnMgd2hlcmUgYGlwX2hkcihza2IpLVxcdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImgyNDVfaGVscFwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuYXRfdDEyMFwiLFxuICAgIFwic2V0X2FkZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXFx1MDAzZXByb3RvY29sYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGEgdXNlciBtYW51YWxseSBiaW5kcyB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIGBoMjQ1X2hlbHBgIHRvIGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlv4tn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 14:42:08 +0000 UTC FinishedAt: 2026-07-28 15:16:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d0d6415963040c401e7a7e4e482a698ba52448cb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NF_CONNTRACK", "NF_NAT", "NF_CONNTRACK_H323" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d0d6415963040c401e7a7e4e482a698ba52448cb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NF_CONNTRACK", "NF_NAT", "NF_CONNTRACK_H323" ], "series_id": "ed9ba880-1241-4990-81e3-e06ca4068d70" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "h245_help", "nat_rtp_rtcp", "nat_t120", "set_addr" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTU6MTM6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYi4uOThkNTBiM2E2YmUyYyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuQEAgLTM3LDcgJiM0MzszNyw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRidWYucG9ydCA9IHBvcnQ7XG4gXHRhZGRyb2ZmICYjNDM7PSBkYXRhb2ZmO1xuIFxuLVx0aWYgKGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVENQKSB7XG4mIzQzO1x0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcbiYjNDM7XHRjYXNlIElQUFJPVE9fVENQOlxuIFx0XHRpZiAoIW5mX25hdF9tYW5nbGVfdGNwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHRcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxuIFx0XHRcdFx0XHQgICAgICAoY2hhciAqKSBcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xuQEAgLTUxLDcgJiM0Mzs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdGlmICh0aCA9PSBOVUxMKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyB0aC1cdTAwM2Vkb2ZmICogNCAmIzQzOyBkYXRhb2ZmO1xuLVx0fSBlbHNlIHtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSVBQUk9UT19VRFA6XG4gXHRcdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbyxcbiBcdFx0XHRcdFx0ICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksXG4gXHRcdFx0XHRcdCAgICAgIChjaGFyICopIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XG5AQCAtNjIsNiAmIzQzOzY0LDkgQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICogb3IgcHVsbCBldmVyeXRoaW5nIGluIGEgbGluZWFyIGJ1ZmZlciwgc28gd2UgY2FuIHNhZmVseVxuIFx0XHQgKiB1c2UgdGhlIHNrYiBwb2ludGVycyBub3cgKi9cbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuaW5kZXggMjQ5MzFlMzc5OTg1Yi4uOWNhYzNlNWFiMzllZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuQEAgLTUzOSw2ICYjNDM7NTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0aWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCBcdTAwMjZcdTAwMjYgY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEX1JFUExZKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFxuJiM0MztcdC8qIEguMjQ1IGlzIFRQS1QvVENQOyBpZ25vcmUgbWFudWFsIGJpbmRpbmdzIHRvIG90aGVyIEw0IHByb3RvY29scy4gKi9cbiYjNDM7XHRpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVENQKVxuJiM0MztcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiYjNDM7XG4gXHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9oMjQ1OiBza2JsZW4gPSAldVxcblwmIzM0Oywgc2tiLVx1MDAzZWxlbik7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfaDMyM19sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoMjQ1X2hlbHAmIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25hdF90MTIwJiMzNDssCiAgICAmIzM0O3NldF9hZGRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzIHdoZXJlIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRkMDdhNTIzZGRmMzU4NWI3MDNkM2Q5ZDQxMjEyOGI2NDk3ZjRmMWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAxNToxMzoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKaW5kZXggMTgzZThhM2ZmMmJhYi4uOThkNTBiM2E2YmUyYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKQEAgLTM3LDcgJiM0MzszNyw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJYnVmLnBvcnQgPSBwb3J0OwogCWFkZHJvZmYgJiM0Mzs9IGRhdGFvZmY7CiAKLQlpZiAoaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sID09IElQUFJPVE9fVENQKSB7CiYjNDM7CXN3aXRjaCAobmZfY3RfcHJvdG9udW0oY3QpKSB7CiYjNDM7CWNhc2UgSVBQUk9UT19UQ1A6CiAJCWlmICghbmZfbmF0X21hbmdsZV90Y3BfcGFja2V0KHNrYiwgY3QsIGN0aW5mbywKIAkJCQkJICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksCiAJCQkJCSAgICAgIChjaGFyICopICZhbXA7YnVmLCBzaXplb2YoYnVmKSkpIHsKQEAgLTUxLDcgJiM0Mzs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCWlmICh0aCA9PSBOVUxMKQogCQkJcmV0dXJuIC0xOwogCQkqZGF0YSA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBpcF9oZHJsZW4oc2tiKSAmIzQzOyB0aC0mZ3Q7ZG9mZiAqIDQgJiM0MzsgZGF0YW9mZjsKLQl9IGVsc2UgewomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSVBQUk9UT19VRFA6CiAJCWlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbywKIAkJCQkJICAgICAgcHJvdG9mZiwgYWRkcm9mZiwgc2l6ZW9mKGJ1ZiksCiAJCQkJCSAgICAgIChjaGFyICopICZhbXA7YnVmLCBzaXplb2YoYnVmKSkpIHsKQEAgLTYyLDYgJiM0Mzs2NCw5IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCSAqIG9yIHB1bGwgZXZlcnl0aGluZyBpbiBhIGxpbmVhciBidWZmZXIsIHNvIHdlIGNhbiBzYWZlbHkKIAkJICogdXNlIHRoZSBza2IgcG9pbnRlcnMgbm93ICovCiAJCSpkYXRhID0gc2tiLSZndDtkYXRhICYjNDM7IGlwX2hkcmxlbihza2IpICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC0xOwogCX0KIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwppbmRleCAyNDkzMWUzNzk5ODViLi45Y2FjM2U1YWIzOWVmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwpAQCAtNTM5LDYgJiM0Mzs1MzksMTAgQEAgc3RhdGljIGludCBoMjQ1X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJaWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCAmYW1wOyZhbXA7IGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRF9SRVBMWSkKIAkJcmV0dXJuIE5GX0FDQ0VQVDsKIAomIzQzOwkvKiBILjI0NSBpcyBUUEtUL1RDUDsgaWdub3JlIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMuICovCiYjNDM7CWlmIChuZl9jdF9wcm90b251bShjdCkgIT0gSVBQUk9UT19UQ1ApCiYjNDM7CQlyZXR1cm4gTkZfQUNDRVBUOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7bmZfY3RfaDI0NTogc2tibGVuID0gJXVcbiYjMzQ7LCBza2ItJmd0O2xlbik7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9oMzIzX2xvY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjgzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEguMzIzIE5BVCBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgSC4zMjMgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQgYW5kIHdoeS4gSXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBhIGJ1ZyBmaXggaW4gYG5mX25hdF9oMzIzLmNgIHdoZXJlIHRoZXkgd2VyZSB1c2luZyB0aGUgd3JvbmcgcHJvdG9jb2wgaWRlbnRpZmllciDigJMgdXNpbmcgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCBpbiB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbWlzdGFrZSwgYW5kIGl0JiMzOTtzIGdvb2QgdGhleSBjYXVnaHQgaXQuCgpJIGFsc28gc2VlIGEgbmV3IGNoZWNrIGFkZGVkIGluIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AgdG8gdmVyaWZ5IHRoZSBwcm90b2NvbCBpcyBgSVBQUk9UT19UQ1BgLiBUaGlzIHByb2JhYmx5IGFkZHMgc29tZSBjcnVjaWFsIHZhbGlkYXRpb24gdG8gdGhlIEguMjQ1IGhlbHBlci4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIExldCBtZSBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkOiBgc2V0X2FkZHJgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBoMjQ1X2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uLgoKTm93LCBiZWZvcmUgSSBzdGFydCBhbmFseXppbmcgdGhlIGNvZGUsIEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZXNlIG1vZHVsZXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIGVudHJpZXMgZm9yIGJvdGggYG5mX25hdF9oMzIzYCBhbmQgYG5mX2Nvbm50cmFja19oMzIzYCB0byBnZXQgdGhlIGNvbnRleHQuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdXNlZnVsIGJhY2tncm91bmQgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2gzMjMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgJiM0Mzs9IG5mX3JlamVjdF9pcHY0Lm9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTUtIyBOQVQgaGVscGVycyAobmZfY29ubnRyYWNrKVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORl9OQVRfSDMyMykgJiM0Mzs9IG5mX25hdF9oMzIzLm9cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfTkZfTkFUX1BQVFApICYjNDM7PSBuZl9uYXRfcHB0cC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjM9c3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00NC1cdFx0XHRcdFx0ICAgICAgKGNoYXIgKikgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ1Olx0XHRcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXCYjMzQ7bmZfbmF0X2gzMjM6IG5mX25hdF9tYW5nbGVfdGNwX3BhY2tldCBlcnJvclxcblwmIzM0Oyk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00Ni1cdFx0XHRyZXR1cm4gLTE7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTktXHRcdFx0XHRcdCAgICAgIChjaGFyICopIFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo2MDpcdFx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQgZXJyb3JcXG5cJiMzNDspO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNjEtXHRcdFx0cmV0dXJuIC0xO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTE4Mj1zdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjI0LVx0aWYgKGkgXHUwMDNlPSBIMzIzX1JUUF9DSEFOTkVMX01BWCkge1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MjI1Olx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBvdXQgb2YgZXhwZWN0YXRpb25zXFxuXCYjMzQ7KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyNi1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjU2LVx0aWYgKG5hdGVkX3BvcnQgPT0gMCkge1x0LyogTm8gcG9ydCBhdmFpbGFibGUgKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI1NzpcdFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcJiMzNDtuZl9uYXRfaDMyMzogb3V0IG9mIFJUUCBwb3J0c1xcblwmIzM0Oyk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yNTgtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI3NS1cdC8qIFN1Y2Nlc3MgKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI3NjpcdHByX2RlYnVnKFwmIzM0O25mX25hdF9oMzIzOiBleHBlY3QgUlRQICVwSTQ6JWh1LVx1MDAzZSVwSTQ6JWh1XFxuXCYjMzQ7LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjc3LVx0XHQgXHUwMDI2cnRwX2V4cC1cdTAwM2V0dXBsZS5zcmMudTMuaXAsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgwLVx0XHQgbnRvaHMocnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCkpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MjgxOlx0cHJfZGVidWcoXCYjMzQ7bmZfbmF0X2gzMjM6IGV4cGVjdCBSVENQICVwSTQ6JWh1LVx1MDAzZSVwSTQ6JWh1XFxuXCYjMzQ7LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgyLVx0XHQgXHUwMDI2cnRjcF9leHAtXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTI5MT1zdGF0aWMgaW50IG5hdF90MTIwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0zMDYtXHRpZiAobmF0ZWRfcG9ydCA9PSAwKSB7XHQvKiBObyBwb3J0IGF2YWlsYWJsZSAqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MzA3Olx0XHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFwmIzM0O25mX25hdF9oMzIzOiBvdXQgb2YgVENQIHBvcnRzXFxuXCYjMzQ7KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMwOC1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzE4LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MzE5Olx0cHJfZGVidWcoXCYjMzQ7bmZfbmF0X2gzMjM6IGV4cGVjdCBULjEyMCAlcEk0OiVodS1cdTAwM2UlcEk0OiVodVxcblwmIzM0Oyxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyMC1cdFx0IFx1MDAyNmV4cC1cdTAwM2V0dXBsZS5zcmMudTMuaXAsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBuYXRob29rcyA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NTktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjA6c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NjgtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1Njk6c3RhdGljIHZvaWQgX19leGl0IG5mX25hdF9oMzIzX2Zpbmkodm9pZClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU3MC17XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTc5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTgwOm1vZHVsZV9pbml0KG5mX25hdF9oMzIzX2luaXQpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTgxOm1vZHVsZV9leGl0KG5mX25hdF9oMzIzX2ZpbmkpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTgyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipIdW50aW5nIERvd24gVGhvc2UgSC4zMjMgS2NvbmZpZ3MqKgoKUmlnaHQsIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZ3MgZm9yIGBDT05GSUdfTkZfTkFUX0gzMjNgIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19IMzIzYC4gVGhpcyB0eXBpY2FsbHkgbWVhbnMgZGl2aW5nIGludG8gdGhlIGRlcHRocyBvZiB0aGUga2VybmVsJiMzOTtzIHNvdXJjZSB0cmVlLCBzcGVjaWZpY2FsbHkgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byBuZXRmaWx0ZXIgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcuIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gc3RhcnQgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnksIG9yIHBlcmhhcHMgd2l0aGluIHRoZSBtb3JlIHNwZWNpZmljIGFyZWFzIGxpa2UgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrYCBpZiB0aG9zZSBhcmUgc3RhbmRhbG9uZSBtb2R1bGVzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgb3Igc2ltaWxhciB0b29scyB0byBlZmZpY2llbnRseSBzZWFyY2ggZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhY3Jvc3MgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgb2YgZGVwZW5kZW5jaWVzOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZXNlIHRvIGV2ZW4gc2hvdyB1cCBpbiB0aGUgbWVudWNvbmZpZyBvciwgZXZlbiB3b3JzZSwgd2hhdCBtaWdodCBiZSBwdWxsaW5nIHRoZW0gaW4gKnRyYW5zaXRpdmVseSogYnkgYmVpbmcgaGFyZCBjb2RlZCBkZXBlbmRlbmNpZXMuIE9mdGVuLCB0aGVzZSBILjMyMyByZWxhdGVkIG9wdGlvbnMgYXJlIGJ1cmllZCBwcmV0dHkgZGVlcCB3aXRoaW4gdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBiZWNhdXNlIG9mIHRoZWlyIHJlbGF0aXZlIG5pY2hlLiBJdCYjMzk7cyBhIHF1aWNrIGpvYiwgYnV0IEkmIzM5O2xsIGhhdmUgdG8gYmUgbWV0aG9kaWNhbCBhbmQgYWNjb3VudCBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IENoYWluIG9mIGBORl9OQVRfSDMyM2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIHN1cHBvcnQgc3RydWN0dXJlIGZvciBgTkZfTkFUX0gzMjNgIGxvb2sgbGlrZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGFzc3VtaW5nLCBuYXR1cmFsbHksIHRoYXQgaXQgaG9va3MgaW50byB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBCdXQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc3BlY2lmaWMqIE5ldGZpbHRlciBtb2R1bGVzIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IHRpZWQgdG8gY29ubnRyYWNrPyBEb2VzIGl0IGxldmVyYWdlIHBhcnRpY3VsYXIgaGVscGVyIG1vZHVsZXMsIG9yIGRvZXMgaXQgaGF2ZSBhIHRpZ2h0LCBjdXN0b20gaW50ZWdyYXRpb24gd2l0aCBzb21lIG90aGVyIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2s/IFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgcGllY2VzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoaXMgTkFUIGZ1bmN0aW9uYWxpdHkuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIElQdjQgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEyMy4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIHN0YXJ0cyBmb3IgYSBnaXZlbiBzZWN0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIGNvcmUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgd2hpY2ggbW9kdWxlcyBhcmUgcmVsZXZhbnQgZm9yIGFueSBnaXZlbiB0YXNrLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IGJ1aWxkaW5nIGEgbWVudGFsIG1vZGVsIG9mIHRoZSBhdmFpbGFibGUgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiB0aGUgSVB2NCBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTA6XHRcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxuIDExMTpcdFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXG4gMTEyOlx0XHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIHRoZSBcJiMzNDtiYXNpY1wmIzM0OyBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcbiAxMTU6XHRcbiAxMTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTE3Olx0XG4gMTE4Olx0Y29uZmlnIE5GX05BVF9QUFRQXG4gMTE5Olx0XHR0cmlzdGF0ZVxuIDEyMDpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiAxMjE6XHRcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcbiAxMjI6XHRcbiAxMjM6XHRjb25maWcgTkZfTkFUX0gzMjNcbiAxMjQ6XHRcdHRyaXN0YXRlXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDEyNjpcdFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xuIDEyNzpcdFxuIDEyODpcdGVuZGlmICMgTkZfTkFUXG4gMTI5Olx0XG4gMTMwOlx0Y29uZmlnIElQX05GX0lQVEFCTEVTXG4gMTMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZy9tYXNxL05BVClcJiMzNDtcbiAxMzI6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDEzMzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXG4gMTM0Olx0XHRoZWxwXG4gMTM1Olx0XHQgIGlwdGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxuIDEzNjpcdFx0ICBUaGUgcGFja2V0IGZpbHRlcmluZyBhbmQgZnVsbCBOQVQgKG1hc3F1ZXJhZGluZywgcG9ydCBmb3J3YXJkaW5nLFxuIDEzNzpcdFx0ICBldGMpIHN1YnN5c3RlbXMgbm93IHVzZSB0aGlzOiBzYXkgYFkmIzM5OyBvciBgTSYjMzk7IGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlXG4gMTM4Olx0XHQgIGVpdGhlciBvZiB0aG9zZS5cbiAxMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBuZXR3b3JraW5nL25ldGZpbHRlcjoKCioqRGVwZW5kZW5jeSBDaGFpbiBhbmQgQ29uZmlndXJhdGlvbiBDb250ZXh0KioKClJpZ2h0LCBzbyBgTkZfTkFUX0gzMjNgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyDigJMgaXQgcmVsaWVzIG9uIGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNwZWNpZmljYWxseSBgTkZfQ09OTlRSQUNLYC4gQW5kLCBieSBkZWZhdWx0LCBpdCB1c3VhbGx5IGFzc3VtZXMgdGhlIEguMzIzLXNwZWNpZmljIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLCBgTkZfQ09OTlRSQUNLX0gzMjNgLCBpcyBhbHNvIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBILjMyMyBOQVQgd291bGRuJiMzOTt0IGJlIHZlcnkgdXNlZnVsIHdpdGhvdXQgdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbiB0cmFja2luZyBpbmZyYXN0cnVjdHVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0aG91Z2gsIHNvIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjM5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCBhbmQgd2hhdCB0aGUgZGVmYXVsdHMgYXJlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBvcHRpb24gZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHNlbGVjdGlvbnMgYXJlIHVzdWFsbHkgc3BlY2lmaWVkLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRcdGhlbHBcbiAyMzE6XHRcdCAgVHJhY2tpbmcgRlRQIGNvbm5lY3Rpb25zIGlzIHByb2JsZW1hdGljOiBzcGVjaWFsIGhlbHBlcnMgYXJlXG4gMjMyOlx0XHQgIHJlcXVpcmVkIGZvciB0cmFja2luZyB0aGVtLCBhbmQgZG9pbmcgbWFzcXVlcmFkaW5nIGFuZCBvdGhlciBmb3Jtc1xuIDIzMzpcdFx0ICBvZiBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gb24gdGhlbS5cbiAyMzQ6XHRcbiAyMzU6XHRcdCAgVGhpcyBpcyBGVFAgc3VwcG9ydCBvbiBMYXllciAzIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gdHJhY2tpbmcuXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDIzODpcdFxuIDIzOTpcdGNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xuIDI0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7SC4zMjMgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuIDI0MTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAyNDI6XHRcdGhlbHBcbiAyNDM6XHRcdCAgSC4zMjMgaXMgYSBWb0lQIHNpZ25hbGxpbmcgcHJvdG9jb2wgZnJvbSBJVFUtVC4gQXMgb25lIG9mIHRoZSBtb3N0XG4gMjQ0Olx0XHQgIGltcG9ydGFudCBWb0lQIHByb3RvY29scywgaXQgaXMgd2lkZWx5IHVzZWQgYnkgdm9pY2UgaGFyZHdhcmUgYW5kXG4gMjQ1Olx0XHQgIHNvZnR3YXJlIGluY2x1ZGluZyB2b2ljZSBnYXRld2F5cywgSVAgcGhvbmVzLCBOZXRtZWV0aW5nLCBPcGVuUGhvbmUsXG4gMjQ2Olx0XHQgIEdub21lbWVldGluZywgZXRjLlxuIDI0NzpcdFxuIDI0ODpcdFx0ICBXaXRoIHRoaXMgbW9kdWxlIHlvdSBjYW4gc3VwcG9ydCBILjMyMyBvbiBhIGNvbm5lY3Rpb24gdHJhY2tpbmcvTkFUXG4gMjQ5Olx0XHQgIGZpcmV3YWxsLlxuIDI1MDpcdFxuIDI1MTpcdFx0ICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBSQVMsIEZhc3QgU3RhcnQsIEguMjQ1IFR1bm5lbGxpbmcsIENhbGxcbiAyNTI6XHRcdCAgRm9yd2FyZGluZywgUlRQL1JUQ1AgYW5kIFQuMTIwIGJhc2VkIGF1ZGlvLCB2aWRlbywgZmF4LCBjaGF0LFxuIDI1MzpcdFx0ICB3aGl0ZWJvYXJkLCBmaWxlIHRyYW5zZmVyLCBldGMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2VcbiAyNTQ6XHRcdCAgdmlzaXQgaHR0cDovL25hdGgzMjMuc291cmNlZm9yZ2UubmV0Ly5cbiAyNTU6XHRcbiAyNTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMjU3Olx0XG4gMjU4Olx0Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbiAyNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyODMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkIGFib3V0IHRoaXMgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb246CgoqKk5ldGZpbHRlciBNb2R1bGUgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IHdlIG5lZWQgdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AgbW9kdWxlcy4gT2YgY291cnNlLCBgTkZfTkFUX0gzMjNgIHNlZW1zIHRvIGRlZmF1bHQgdG8gYE5GX0NPTk5UUkFDS19IMzIzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQsIGJ1dCBJJiMzOTttIHJlYXNvbmFibHkgY2VydGFpbiBpdCYjMzk7cyBhIHNhZmUgYXNzdW1wdGlvbiBmb3Igbm93LgoKQmV5b25kIHRob3NlIHNwZWNpZmljIEguMzIzIG1vZHVsZXMsIEkgY2FuJiMzOTt0IGZvcmdldCB0aGUgY29yZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBib3RoIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfTkFUYCBlbmFibGVkIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LCBvYnZpb3VzbHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiwgdGhvdWdoLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmb3IgdGhlIGBORl9OQVRgIG1vZHVsZSB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgYmFzZSBjb25maWd1cmF0aW9uLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9OQVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9OTk9aWYgTkZfTkFUXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDA6Y29uZmlnIE5GX05BVF9TTk1QX0JBU0lDXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtCYXNpYyBTTk1QLUFMRyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE3LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTE4OmNvbmZpZyBORl9OQVRfUFBUUFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE5LVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBILjMyMyBDb25uZWN0aW9uIFRyYWNraW5nIGFuZCBOQVQqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB3ZSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQuIEkga25vdyBgTkZfTkFUX0gzMjNgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFJpZ2h0LCBhbmQgdGhhdCBsaWtlbHkgbWVhbnMgaXQgZGVwZW5kcyBvbiBgTkZfTkFUYCBpdHNlbGYuIFdlIGNhbiYjMzk7dCBqdXN0IGVuYWJsZSBpdCBvbiBpdHMgb3duLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSBhbmQgbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBlbmQgdXAgd2l0aCBhbnkgY29uZmlndXJhdGlvbiBjb25mbGljdHMuIFdlIGNhbiYjMzk7dCBoYXZlIGFueSBsb29zZSBlbmRzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XHRzZWxlY3QgTkZfTE9HX1NZU0xPR1xuICA5MTpcdFx0aGVscFxuICA5MjpcdFx0VGhpcyBpcyBhIGJhY2t3YXJkcy1jb21wYXQgb3B0aW9uIGZvciB0aGUgdXNlciYjMzk7cyBjb252ZW5pZW5jZVxuICA5MzpcdFx0KGUuZy4gd2hlbiBydW5uaW5nIG9sZGNvbmZpZykuIEl0IHNlbGVjdHMgQ09ORklHX05GX0xPR19TWVNMT0cuXG4gIDk0Olx0XG4gIDk1Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG4gIDk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgOTc6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA5ODpcdFxuICA5OTpcdGlmIE5GX05BVFxuIDEwMDpcdGNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xuIDEwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QmFzaWMgU05NUC1BTEcgc3VwcG9ydFwmIzM0O1xuIDEwMjpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU05NUFxuIDEwMzpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAxMDQ6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfU05NUFxuIDEwNTpcdFx0c2VsZWN0IEFTTjFcbiAxMDY6XHRcdGhlbHBcbiAxMDc6XHRcbiAxMDg6XHRcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhbiBBcHBsaWNhdGlvbiBMYXllciBHYXRld2F5IChBTEcpIGZvclxuIDEwOTpcdFx0ICBTTk1QIHBheWxvYWRzLiAgSW4gY29uanVuY3Rpb24gd2l0aCBOQVQsIGl0IGFsbG93cyBhIG5ldHdvcmtcbiAxMTA6XHRcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxuIDExMTpcdFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXG4gMTEyOlx0XHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxuIDExMzpcdFxuIDExNDpcdFx0ICBUaGlzIGlzIHRoZSBcJiMzNDtiYXNpY1wmIzM0OyBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcbiAxMTU6XHRcbiAxMTY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTE3Olx0XG4gMTE4Olx0Y29uZmlnIE5GX05BVF9QUFRQXG4gMTE5Olx0XHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDQ4CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEguMzIzIE5BVCBNb2R1bGUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgSC4zMjMgTkFUIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgTkZfTkFUX0gzMjNgIGlzIG5lc3RlZCB3aXRoaW4gYW4gYGlmIE5GX05BVGAgYmxvY2suIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBiZWZvcmUgZXZlbiBjb25zaWRlcmluZyB0aGUgSC4zMjMgc3BlY2lmaWMgZmVhdHVyZXMuIFNvLCB0byBiZSBjbGVhciwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYE5GX05BVGAsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGFuZCBvYnZpb3VzbHksIGBORl9OQVRfSDMyM2AgaXRzZWxmLiBXZSBjYW4mIzM5O3QgbmVnbGVjdCB0aGUgdW5kZXJseWluZyBidWlsZGluZyBibG9ja3MuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29yZSBmdW5jdGlvbnMuIFRoZSBgc2V0X2FkZHJgIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBzY29wZSBhbmQgcHJvYmFibHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBJIHdvbiYjMzk7dCBzcGVuZCB0b28gbXVjaCB0aW1lIG9uIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgKmNhbGxpbmcqIGBzZXRfYWRkcmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHBpY3R1cmUgb2YgaG93IHRoaXMgYWRkcmVzcyBzZXR0aW5nIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIEguMzIzIE5BVCBwcm9jZXNzLiBUcmFjaW5nIHRoZSBjYWxscyB0byBgc2V0X2FkZHJgIHdpbGwgYmUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRfYWRkciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE5MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtbWlwaS1kYmktc3BpLnlhbWw9MTI9ZGVzY3JpcHRpb246IHxcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01NS0gIHRoZSBUeXBlIEMgaW50ZXJmYWNlIGFuZCBtb3N0IGNvbW1vbiBhbW9uZyB0aGVzZSBhcmUgUkdCNTY1IGFuZCBSR0I2NjYuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbDo1NjogIFRoZSBNSVBJIERDUyBjb21tYW5kIHNldF9hZGRyZXNzX21vZGUgKDM2aCkgaGFzIG9uZSBiaXQgdGhhdCBjb250cm9scyBSR0IvQkdSXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01Ny0gIG9yZGVyLiBUaGlzIGdpdmVzIGVhY2ggc3VwcG9ydGVkIFJHQiBmb3JtYXQgYSBCR1IgdmFyaWFudC5cbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2dhZGdldC5yc3Q9MjQwPW5lZWRzIHRvIGhhbmRsZSBzb21lIGRpZmZlcmVuY2VzLiBVc2UgdGhlIEFQSSBsaWtlIHRoaXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1NC0zLiBUaGUgaGFyZHdhcmUgZHJpdmVyIGNhbiBub3cgc3RhcnQgZW51bWVyYXRpbmcuIFRoZSBzdGVwcyBpdCBoYW5kbGVzXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2dhZGdldC5yc3Q6MjU1OiAgIGFyZSB0byBhY2NlcHQgVVNCIGBgcG93ZXJgYCBhbmQgYGBzZXRfYWRkcmVzc2BgIHJlcXVlc3RzLiBPdGhlciBzdGVwcyBhcmVcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZ2FkZ2V0LnJzdC0yNTYtICAgaGFuZGxlZCBieSB0aGUgZ2FkZ2V0IGRyaXZlci4gSWYgdGhlIGdhZGdldCBkcml2ZXIgbW9kdWxlIGlzIHVubG9hZGVkXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz01Nz1zdGF0aWMgdTMyIHNvY2lkO1xuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy01OC1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NTk6c3RhdGljIHZvaWQgX19pb21lbSAqcmVzZXRfYWRkcjtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNjAtXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zNTU9c3RhdGljIGludCBfX2luaXQgbXhzX3Jlc3RhcnRfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzYxLVx0XHRucCA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsIFwmIzM0O2ZzbCxpbXgyOC1jbGtjdHJsXCYjMzQ7KTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYyOlx0cmVzZXRfYWRkciA9IG9mX2lvbWFwKG5wLCAwKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYzOlx0aWYgKCFyZXNldF9hZGRyKVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNjQtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY2LVx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcJiMzNDtmc2wsaW14MjMtY2xrY3RybFwmIzM0OykpXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2NzpcdFx0cmVzZXRfYWRkciAmIzQzOz0gTVgyM19DTEtDVFJMX1JFU0VUX09GRlNFVDtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY4LVx0ZWxzZVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozNjk6XHRcdHJlc2V0X2FkZHIgJiM0Mzs9IE1YMjhfQ0xLQ1RSTF9SRVNFVF9PRkZTRVQ7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM3MC1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTQ1Mz1zdGF0aWMgdm9pZCBteHNfcmVzdGFydChlbnVtIHJlYm9vdF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmNtZClcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU0LXtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NDU1Olx0aWYgKHJlc2V0X2FkZHIpIHtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU2LVx0XHQvKiByZXNldCB0aGUgY2hpcCAqL1xuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzo0NTc6XHRcdF9fbXhzX3NldGwoTVhTX0NMS0NUUkxfUkVTRVRfQ0hJUCwgcmVzZXRfYWRkcik7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTQ1OC1cbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM9Mjk9c3RhdGljIGJvb2wgaXNfZW5hYmxlZDtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy0zMC1cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzozMTpzdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KGNvbnN0IHUzMiByZXNldF9hZGRyZXNzKVxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTMyLXtcbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDEtXHQgKi9cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzo0MjpcdHdyaXRlbChyZXNldF9hZGRyZXNzLCBldnBfY3B1X3Jlc2V0KTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy00My1cdHdtYigpO1xuLS1cbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYz01Nj1zdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfZW5hYmxlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTU4LVx0dm9pZCBfX2lvbWVtICppcmFtX2Jhc2UgPSBJT19BRERSRVNTKFRFR1JBX0lSQU1fUkVTRVRfQkFTRSk7XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NTk6XHRjb25zdCB1MzIgcmVzZXRfYWRkcmVzcyA9IFRFR1JBX0lSQU1fUkVTRVRfQkFTRSAmIzQzO1xuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTYwLVx0XHRcdFx0XHRcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX29mZnNldDtcbi0tXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNjgtXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6Njk6XHRlcnIgPSBjYWxsX2Zpcm13YXJlX29wKHNldF9jcHVfYm9vdF9hZGRyLCAwLCByZXNldF9hZGRyZXNzKTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03MC1cdHN3aXRjaCAoZXJyKSB7XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNzEtXHRjYXNlIC1FTk9TWVM6XG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NzI6XHRcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX3NldChyZXNldF9hZGRyZXNzKTtcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03My1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaD0yNj1zdGF0aWMgaW5saW5lIGludCByc2lfc2V0X21lbW9yeV9yYW5nZShwaHlzX2FkZHJfdCBzdGFydCwgcGh5c19hZGRyX3QgZW5kLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmgtMzItXHR3aGlsZSAoc3RhcnQgIT0gZW5kKSB7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaS5oOjMzOlx0XHRyZXQgPSByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUoc3RhcnQsIGVuZCwgc3RhdGUsIGZsYWdzLCBcdTAwMjZ0b3ApO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaC0zNC1cdFx0aWYgKHJldCB8fCB0b3AgXHUwMDNjIHN0YXJ0IHx8IHRvcCBcdTAwM2UgZW5kKVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpX2NtZHMuaD01MD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcnNpX2lwYV9zdGF0ZV9nZXQocGh5c19hZGRyX3Qgc3RhcnQsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oLTcwLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oOjcxOnN0YXRpYyBpbmxpbmUgbG9uZyByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUocGh5c19hZGRyX3Qgc3RhcnQsXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaV9jbWRzLmgtNzItXHRcdFx0XHRcdCAgICBwaHlzX2FkZHJfdCBlbmQsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM9NDI0PXN0YXRpYyBpbnQgcHRyYWNlX2hicF9zZXRfY3RybCh1bnNpZ25lZCBpbnQgbm90ZV90eXBlLFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ0OC1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jOjQ0OTpzdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X2FkZHIodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ1MC1cdFx0XHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM9NTA2PXN0YXRpYyBpbnQgaHdfYnJlYWtfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTUyOC1cdFx0XHRyZXR1cm4gcmV0O1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6NTI5Olx0XHRyZXQgPSBwdHJhY2VfaGJwX3NldF9hZGRyKG5vdGVfdHlwZSwgdGFyZ2V0LCBpZHgsIGFkZHIpO1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMtNTMwLVx0XHRpZiAocmV0KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jPTIxNjk9c3RhdGljIGludCBjb21wYXRfcHRyYWNlX2hicF9zZXQodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy0yMTgwLVx0XHRhZGRyID0gKmtkYXRhO1xuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6MjE4MTpcdFx0ZXJyID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRzaywgaWR4LCBhZGRyKTtcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTIxODItXHR9IGVsc2Uge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYz02MjY9c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9tYXNrKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jLTY0NC1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYzo2NDU6c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9hZGRyKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNjQ2LVx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmM9NzE3PXN0YXRpYyBpbnQgaHdfYnJlYWtfc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYy03NDEtXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmM6NzQyOlx0XHRyZXQgPSBwdHJhY2VfaGJwX3NldF9hZGRyKG5vdGVfdHlwZSwgdGFyZ2V0LCBpZHgsIGFkZHIpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jLTc0My1cdFx0aWYgKHJldClcbi0tXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM9NDg0PXN0YXRpYyB2b2lkIGF0YXJpX3Jlc2V0KHZvaWQpXG4tLVxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ4Ni1cdGxvbmcgdGNfdmFsID0gMDtcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYzo0ODc6XHRsb25nIHJlc2V0X2FkZHI7XG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg4LVxuLS1cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy00OTItXHQgKi9cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYzo0OTM6XHRyZXNldF9hZGRyID0gTUFDSF9JU19NRURVU0EgfHwgTUFDSF9JU19BQjQwID8gMHhlMDAwMzAgOlxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5NC1cdFx0ICAgICAqKHVuc2lnbmVkIGxvbmcgKikgMHhmZjAwMDAwNDtcbi0tXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNTU1LVx0XHRcdDogLyogbm8gb3V0cHV0cyAqL1xuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jOjU1NjpcdFx0XHQ6IFwmIzM0O2FcJiMzNDsgKHJlc2V0X2FkZHIpXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNTU3LVx0XHRcdDogXCYjMzQ7ZDBcJiMzNDspO1xuLS1cbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NjItXHRcdFx0OiAvKiBubyBvdXRwdXRzICovXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NTYzOlx0XHRcdDogXCYjMzQ7bVwmIzM0OyAodGNfdmFsKSwgXCYjMzQ7YVwmIzM0OyAocmVzZXRfYWRkcikpO1xuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU2NC19XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYz0xNzE9c3RhdGljIGludCBfX2luaXQgcmVnaXN0ZXJfc2hhcmVkKHZvaWQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xNzktXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjE4MDpcdHNoYXJlZF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVERNQSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE4MS1cdHNoYXJlZF9yZXNbMF0uZW5kID0gc2hhcmVkX3Jlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5My1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTk0Olx0c2hhcmVkX3Jlc1sxXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BQyk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5NS1cdHNoYXJlZF9yZXNbMV0uZW5kID0gc2hhcmVkX3Jlc1sxXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5Ny1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTk4Olx0c2hhcmVkX3Jlc1syXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BUyk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTE5OS1cdHNoYXJlZF9yZXNbMl0uZW5kID0gc2hhcmVkX3Jlc1syXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTIxMD1pbnQgX19pbml0IGJjbTYzeHhfZW5ldF9yZWdpc3RlcihpbnQgdW5pdCxcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyNy1cdGlmICh1bml0ID09IDApIHtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MjI4Olx0XHRlbmV0MF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVDApO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMjktXHRcdGVuZXQwX3Jlc1swXS5lbmQgPSBlbmV0MF9yZXNbMF0uc3RhcnQ7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMzUtXHR9IGVsc2Uge1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoyMzY6XHRcdGVuZXQxX3Jlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVUMSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIzNy1cdFx0ZW5ldDFfcmVzWzBdLmVuZCA9IGVuZXQxX3Jlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTI5MT1iY202M3h4X2VuZXRzd19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYmNtNjN4eF9lbmV0c3dfcGxhdGZvcm1fZGF0YSAqcGQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0zMDEtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjMwMjpcdGVuZXRzd19yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVFNXKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMzAzLVx0ZW5ldHN3X3Jlc1swXS5lbmQgPSBlbmV0c3dfcmVzWzBdLnN0YXJ0O1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jPTM2PWludCBfX2luaXQgYmNtNjN4eF9oc3NwaV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jLTQwLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWhzc3BpLmM6NDE6XHRzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0hTU1BJKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1oc3NwaS5jLTQyLVx0c3BpX3Jlc291cmNlc1swXS5lbmQgPSBzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0O1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYz0xMDQ9aW50IF9faW5pdCBiY202M3h4X3BjbWNpYV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYy0xMjQtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcGNtY2lhLmM6MTI1Olx0cGNtY2lhX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QQ01DSUEpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jLTEyNi1cdHBjbWNpYV9yZXNvdXJjZXNbMF0uZW5kID0gcGNtY2lhX3Jlc291cmNlc1swXS5zdGFydCAmIzQzO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYz0yOT1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3JuZ19yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYy0zMy1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYzozNDpcdHJuZ19yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUk5HKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1ybmcuYy0zNS1cdHJuZ19yZXNvdXJjZXNbMF0uZW5kID0gcm5nX3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtc3BpLmM9Mzk9aW50IF9faW5pdCBiY202M3h4X3NwaV9yZWdpc3Rlcih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00My1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYzo0NDpcdHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfU1BJKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00NS1cdHNwaV9yZXNvdXJjZXNbMF0uZW5kID0gc3BpX3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jPTUzPWludCBfX2luaXQgYmNtNjN4eF91YXJ0X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpZClcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jLTYyLVx0aWYgKGlkID09IDApIHtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmM6NjM6XHRcdHVhcnQwX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMCk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jLTY0LVx0XHR1YXJ0MF9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDBfcmVzb3VyY2VzWzBdLnN0YXJ0ICYjNDM7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy02OS1cdGlmIChpZCA9PSAxKSB7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjcwOlx0XHR1YXJ0MV9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfVUFSVDEpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy03MS1cdFx0dWFydDFfcmVzb3VyY2VzWzBdLmVuZCA9IHVhcnQxX3Jlc291cmNlc1swXS5zdGFydCAmIzQzO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jPTM2PWludCBfX2luaXQgYmNtNjN4eF91c2JkX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmRfcGxhdGZvcm1fZGF0YSAqcGQpXG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNDYtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo0NzpcdHVzYmRfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkQpO1xuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNDgtXHR1c2JkX3Jlc291cmNlc1swXS5lbmQgPSB1c2JkX3Jlc291cmNlc1swXS5zdGFydCAmIzQzOyBSU0VUX1VTQkRfU0laRSAtIDE7XG4tLVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNTAtXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo1MTpcdHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkRNQSk7XG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy01Mi1cdHVzYmRfcmVzb3VyY2VzWzFdLmVuZCA9IHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ICYjNDM7IFJTRVRfVVNCRE1BX1NJWkUgLSAxO1xuLS1cbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYz0zNz1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3dkdF9yZWdpc3Rlcih2b2lkKVxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXdkdC5jLTM4LXtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYzozOTpcdHdkdF9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfV0RUKTtcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYy00MC1cdHdkdF9yZXNvdXJjZXNbMF0uZW5kID0gd2R0X3Jlc291cmNlc1swXS5zdGFydDtcbi0tXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYz00MDI9c3RhdGljIHZvaWQgYmNtNjN4eF9pbml0X2lycSh2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY202M3h4L2lycS5jLTQwNS1cbmFyY2gvbWlwcy9iY202M3h4L2lycS5jOjQwNjpcdGlycV9zdGF0X2FkZHJbMF0gPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUEVSRik7XG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDc6XHRpcnFfbWFza19hZGRyWzBdID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1BFUkYpO1xuYXJjaC9taXBzL2JjbTYzeHgvaXJxLmM6NDA4Olx0aXJxX3N0YXRfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcbmFyY2gvbWlwcy9iY202M3h4L2lycS5jOjQwOTpcdGlycV9tYXNrX2FkZHJbMV0gPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUEVSRik7XG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYy00MTAtXG4tLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenpkbWEuaD0xOT1leHRlcm4gdm9pZCB2ZG1hX3NldF9tb2RlKGludCBjaGFubmVsLCBpbnQgbW9kZSk7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oOjIwOmV4dGVybiB2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcik7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oLTIxLWV4dGVybiB2b2lkIHZkbWFfc2V0X2NvdW50KGludCBjaGFubmVsLCBpbnQgY291bnQpO1xuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaD01NTA9ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJjbTYzeHhfcmVnc19iYXNlO1xuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaC01OTUtXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1Lmg6NTk2OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY202M3h4X3JlZ3NldF9hZGRyZXNzKGVudW0gYmNtNjN4eF9yZWdzX3NldCBzZXQpXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1LmgtNTk3LXtcbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02NS0gKi9cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY2OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGIocywgbylcdGJjbV9yZWFkYihiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY3OiNkZWZpbmUgYmNtX3JzZXRfcmVhZHcocywgbylcdGJjbV9yZWFkdyhiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY4OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGwocywgbylcdGJjbV9yZWFkbChiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTY5LSNkZWZpbmUgYmNtX3JzZXRfd3JpdGViKHMsIHYsIG8pXHRiY21fd3JpdGViKCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjcwOlx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTcxLSNkZWZpbmUgYmNtX3JzZXRfd3JpdGV3KHMsIHYsIG8pXHRiY21fd3JpdGV3KCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjcyOlx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTczLSNkZWZpbmUgYmNtX3JzZXRfd3JpdGVsKHMsIHYsIG8pXHRiY21fd3JpdGVsKCh2KSwgXFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjc0Olx0XHRcdFx0XHRiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICYjNDM7IChvKSlcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oLTc1LVxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg9NjU9c3RhdGljIGlubGluZSB2b2lkIGZkX3NldF9kbWFfYWRkcihjaGFyICphKVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtamF6ei9mbG9wcHkuaC02Ni17XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1qYXp6L2Zsb3BweS5oOjY3Olx0dmRtYV9zZXRfYWRkcihKQVpaX0ZMT1BQWV9ETUEsIHZkbWFfcGh5czJsb2coQ1BIWVNBRERSKCh1bnNpZ25lZCBsb25nKWEpKSk7XG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1qYXp6L2Zsb3BweS5oLTY4LX1cbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTUyLSNkZWZpbmUgcmJ0eDQ5Mjdfc29mdGludF9hZGRyXHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRJTlRfQUREUilcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTM6I2RlZmluZSByYnR4NDkyN19zb2Z0cmVzZXRfYWRkciAoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRSRVNFVF9BRERSKVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaC01NC0jZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldGxvY2tfYWRkclx0XFxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3LmgtNTUtXHRcdFx0XHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1NPRlRSRVNFVExPQ0tfQUREUilcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTY6I2RlZmluZSByYnR4NDkyN19wY2lyZXNldF9hZGRyXHQoKF9fdTggX19pb21lbSAqKVJCVFg0OTI3X1BDSVJFU0VUX0FERFIpXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTU3LVxuLS1cbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYz00Mjk9RVhQT1JUX1NZTUJPTCh2ZG1hX3NldF9tb2RlKTtcbi0tXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDMzLSAqL1xuYXJjaC9taXBzL2phenovamF6emRtYS5jOjQzNDp2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcilcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYy00MzUte1xuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNi1cdGlmICh2ZG1hX2RlYnVnKVxuYXJjaC9taXBzL2phenovamF6emRtYS5jOjQzNzpcdFx0cHJpbnRrKFwmIzM0O3ZkbWFfc2V0X2FkZHI6IGNoYW5uZWwgJWQsIGFkZHIgJWx4XFxuXCYjMzQ7LCBjaGFubmVsLFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzOC1cdFx0ICAgICAgIGFkZHIpO1xuLS1cbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYy00NDItXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM6NDQzOkVYUE9SVF9TWU1CT0wodmRtYV9zZXRfYWRkcik7XG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQ0LVxuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM9NjI9c3RhdGljIHZvaWQgX19pbml0IHR4NDkyN19wY2lfc2V0dXAodm9pZClcbi0tXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTc0LVx0LyogUmVzZXQgUENJIEJ1cyAqL1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo3NTpcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtNzYtXHQvKiBSZXNldCBQQ0lDICovXG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy04My1cdHR4eDlfY2xlYXI2NChcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cdTAwM2VjbGtjdHIsIFRYNDkyN19DTEtDVFJfUENJUlNUKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6ODQ6XHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTg1LVx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy05Mi1cdFx0LyogUmVzZXQgUENJIEJ1cyAqL1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo5MzpcdFx0d3JpdGViKDEsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy05NC1cdFx0LyogUmVzZXQgUENJQyAqL1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtOTktXHRcdHR4eDlfY2xlYXI2NChcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cdTAwM2VjbGtjdHIsIFRYNDkyN19DTEtDVFJfUENJUlNUKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTAwOlx0XHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTEwMS1cdFx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz0xMDk9c3RhdGljIHZvaWQgX19pbml0IHR4NDkzN19wY2lfc2V0dXAodm9pZClcbi0tXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTEyMS1cdC8qIFJlc2V0IFBDSSBCdXMgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTIyOlx0d3JpdGViKDEsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMjMtXHQvKiBSZXNldCBQQ0lDICovXG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzAtXHR0eHg5X2NsZWFyNjQoXHUwMDI2dHg0OTM4X2NjZmdwdHItXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjEzMTpcdHdyaXRlYigwLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTMyLVx0aW9iKCk7XG4tLVxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzktXHRcdC8qIFJlc2V0IFBDSSBCdXMgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTQwOlx0XHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0MS1cdFx0LyogUmVzZXQgUENJQyAqL1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTQ2LVx0XHR0eHg5X2NsZWFyNjQoXHUwMDI2dHg0OTM4X2NjZmdwdHItXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjE0NzpcdFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xNDgtXHRcdGlvYigpO1xuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM9MTg3PXN0YXRpYyB2b2lkIHRvc2hpYmFfcmJ0eDQ5MjdfcmVzdGFydChjaGFyICpjb21tYW5kKVxuLS1cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk2LVx0LyogZG8gYSBzL3cgcmVzZXQgKi9cbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTk3Olx0d3JpdGViKDEsIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyKTtcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk4LVxuLS1cbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oPTExPXN0cnVjdCBjcHVpbmZvIHtcbi0tXG5hcmNoL25pb3MyL2luY2x1ZGUvYXNtL2NwdWluZm8uaC0zNi1cdC8qIEFkZHJlc3NlcyAqL1xuYXJjaC9uaW9zMi9pbmNsdWRlL2FzbS9jcHVpbmZvLmg6Mzc6XHR1MzIgcmVzZXRfYWRkcjtcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM4LVx0dTMyIGV4Y2VwdGlvbl9hZGRyO1xuLS1cbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYz0zMT12b2lkIF9faW5pdCBzZXR1cF9jcHVpbmZvKHZvaWQpXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvY3B1aW5mby5jLTEwMy1cbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYzoxMDQ6XHRjcHVpbmZvLnJlc2V0X2FkZHIgPSBmY3B1KGNwdSwgXCYjMzQ7YWx0cixyZXNldC1hZGRyXCYjMzQ7KTtcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYy0xMDUtXHRjcHVpbmZvLmV4Y2VwdGlvbl9hZGRyID0gZmNwdShjcHUsIFwmIzM0O2FsdHIsZXhjZXB0aW9uLWFkZHJcJiMzNDspO1xuLS1cbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYz00Mz12b2lkIG1hY2hpbmVfcmVzdGFydChjaGFyICpfX3VudXNlZClcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy00NC17XG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmM6NDU6XHRwcl9ub3RpY2UoXCYjMzQ7TWFjaGluZSByZXN0YXJ0ICglMDh4KS4uLlxcblwmIzM0OywgY3B1aW5mby5yZXNldF9hZGRyKTtcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy00Ni1cdGxvY2FsX2lycV9kaXNhYmxlKCk7XG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jLTQ5LVx0OlxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jOjUwOlx0OiBcJiMzNDtyXCYjMzQ7IChjcHVpbmZvLnJlc2V0X2FkZHIpXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNTEtXHQ6IFwmIzM0O3I0XCYjMzQ7KTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMjU9c3RhdGljIHZvaWQgX19pbml0IGZ3bm1pX2luaXQodm9pZClcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTEyNi17XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMjc6XHR1bnNpZ25lZCBsb25nIHN5c3RlbV9yZXNldF9hZGRyLCBtYWNoaW5lX2NoZWNrX2FkZHI7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMjgtXHR1OCAqbWNlX2RhdGFfYnVmO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTE0Ni1cdCAqIGFkZHJlc3NlcyBhbnl3YXksIGFuZCB1c2UgYSB0cmFtcG9saW5lIHRvIGdldCB0byB0aGUgcmVhbCBjb2RlLiAqL1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTQ3Olx0c3lzdGVtX3Jlc2V0X2FkZHIgID0gX19wYShzeXN0ZW1fcmVzZXRfZndubWkpIC0gUEhZU0lDQUxfU1RBUlQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNDgtXHRtYWNoaW5lX2NoZWNrX2FkZHIgPSBfX3BhKG1hY2hpbmVfY2hlY2tfZndubWkpIC0gUEhZU0lDQUxfU1RBUlQ7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTUwLVx0aWYgKDAgPT0gcnRhc19jYWxsKGlibV9ubWlfcmVnaXN0ZXJfdG9rZW4sIDIsIDEsIE5VTEwsXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxNTE6XHRcdFx0ICAgc3lzdGVtX3Jlc2V0X2FkZHIsIG1hY2hpbmVfY2hlY2tfYWRkcikpXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNTItXHRcdGZ3bm1pX2FjdGl2ZSA9IDE7XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yMTk4PXN0YXRpYyBib29sIGJwZl9pc19uZXdfYWRkcl9zYW5lKHN0cnVjdCBicGZfaml0ICpqaXQsIGludCBpKVxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNC0gKi9cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MjIxNTpzdGF0aWMgaW50IGJwZl9zZXRfYWRkcihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBpbnQgaSlcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNi17XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yMjMzPXN0YXRpYyBpbnQgYnBmX2ppdF9wcm9nKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU1LVx0YnBmX2ppdF9wcm9sb2d1ZShqaXQsIGZwKTtcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MjI1NjpcdGlmIChicGZfc2V0X2FkZHIoaml0LCAwKSBcdTAwM2MgMClcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI1Ny1cdFx0cmV0dXJuIC0xO1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI2Mi1cdFx0LyogTmV4dCBpbnN0cnVjdGlvbiBhZGRyZXNzICovXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyNjM6XHRcdGlmIChicGZfc2V0X2FkZHIoaml0LCBpICYjNDM7IGluc25fY291bnQpIFx1MDAzYyAwKVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjY0LVx0XHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYz00OTU9c3RhdGljIGludCBhbWR4ZG5hX2dlbV9vYmpfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmosXG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtNTEyLVx0WEROQV9EQkcoeGRuYSwgXCYjMzQ7Qk8gbWFwX29mZnNldCAweCVsbHggdHlwZSAlZCB1c2VycHRyIDB4JWx4IHNpemUgMHglbHhcJiMzNDssXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYzo1MTM6XHRcdCBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXHUwMDI2Z29iai1cdTAwM2V2bWFfbm9kZSksIGFiby1cdTAwM2V0eXBlLFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtNTE0LVx0XHQgdm1hLVx1MDAzZXZtX3N0YXJ0LCBnb2JqLVx1MDAzZXNpemUpO1xuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jPTEyMDE9aW50IGFtZHhkbmFfZHJtX2dldF9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscClcbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYy0xMjIyLVx0aWYgKGFiby1cdTAwM2V0eXBlICE9IEFNRFhETkFfQk9fREVWKVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmM6MTIyMzpcdFx0YXJncy1cdTAwM2VtYXBfb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNmdvYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtMTIyNC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmM9OTc9c3RhdGljIGludCBldGhvc3VfaW9jdGxfYm9fbW1hcF9vZmZzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTEwOS1cbmRyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kcnYuYzoxMTA6XHRhcmdzLVx1MDAzZW9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcdTAwMjZvYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTExMS1cdGRybV9nZW1fb2JqZWN0X3B1dChvYmopO1xuLS1cbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jPTQ4NT1pbnQgaXZwdV9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcbi0tXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYy00OTktXHRhcmdzLVx1MDAzZWZsYWdzID0gYm8tXHUwMDNlZmxhZ3M7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYzo1MDA6XHRhcmdzLVx1MDAzZW1tYXBfb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNm9iai1cdTAwM2V2bWFfbm9kZSk7XG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYy01MDEtXHRhcmdzLVx1MDAzZXZwdV9hZGRyID0gYm8tXHUwMDNldnB1X2FkZHI7XG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGF0YS5jPTc5Nz1pbnQgcWFpY19tbWFwX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjUtXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kYXRhLmM6ODI2Olx0YXJncy1cdTAwM2VvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXHUwMDI2b2JqLVx1MDAzZXZtYV9ub2RlKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjctXG4tLVxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jPTYwPWludCByb2NrZXRfaW9jdGxfY3JlYXRlX2JvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcbi0tXG5kcml2ZXJzL2FjY2VsL3JvY2tldC9yb2NrZXRfZ2VtLmMtMTA4LVx0cmt0X29iai1cdTAwM2VzaXplID0gcmV0O1xuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jOjEwOTpcdGFyZ3MtXHUwMDNlb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFx1MDAyNmdlbV9vYmotXHUwMDNldm1hX25vZGUpO1xuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTExMC1cdGFyZ3MtXHUwMDNlZG1hX2FkZHJlc3MgPSBya3Rfb2JqLVx1MDAzZW1tLnN0YXJ0O1xuLS1cbmRyaXZlcnMvYWNwaS9hY3BpY2EvYWNyZXNyYy5oPTIyMD12b2lkXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaDoyMjE6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaC0yMjItXHRcdFx0ICAgc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlKTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTI3Mj1hY3BpX3JzX2dldF9hZGRyZXNzX2NvbW1vbihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXG4tLVxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMDktICpcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmM6MzEwOiAqIEZVTkNUSU9OOiAgICBhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vblxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMTEtICpcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTMyMj12b2lkXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jOjMyMzphY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vbih1bmlvbiBhbWxfcmVzb3VyY2UgKmFtbCxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmMtMzI0LVx0XHRcdCAgIHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSlcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jPTQ0Nj1hY3BpX3JzX2NvbnZlcnRfcmVzb3VyY2VfdG9fYW1sKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSxcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2Ni1cbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNtaXNjLmM6NjY3Olx0XHRcdGFjcGlfcnNfc2V0X2FkZHJlc3NfY29tbW9uKGFtbCwgcmVzb3VyY2UpO1xuZHJpdmVycy9hY3BpL2FjcGljYS9yc21pc2MuYy02NjgtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTc2PXN0YXRpYyBpbnQgYWNwaV9ncGVfaXJxX3NldHVwKHN0cnVjdCBzaV9zbV9pbyAqaW8pXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEwMi1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoxMDM6c3RhdGljIHZvaWQgaXBtaV9zZXRfYWRkcl9kYXRhX2FuZF9zcGFjZShzdHJ1Y3QgcmVzb3VyY2UgKnIsIHN0cnVjdCBzaV9zbV9pbyAqaW8pXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTA0LXtcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM9MTEzPWlwbWlfZ2V0X2luZm9fZnJvbV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTIyLVx0fVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jOjEyMzpcdGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2UocmVzLCBpbyk7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTI0LVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz0yMjc9c3RhdGljIGludCBvZl9pcG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3Mi1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNzM6XHRpcG1pX3NldF9hZGRyX2RhdGFfYW5kX3NwYWNlKFx1MDAyNnJlc291cmNlLCBcdTAwMjZpbyk7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjc0LVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9MTk5PXN0YXRpYyB2b2lkIGFzcGVlZF9rY3NfdXBkYXRlYihzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiByZWcsIHU4IG1hc2ssIHU4IHZhbClcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9rY3NfYm1jX2FzcGVlZC5jLTIyNy0gKi9cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM6MjI4OnN0YXRpYyBpbnQgYXNwZWVkX2tjc19zZXRfYWRkcmVzcyhzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiBhZGRyc1syXSwgaW50IG5yX2FkZHJzKVxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy0yMjkte1xuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9NTU1PXN0YXRpYyBpbnQgYXNwZWVkX2tjc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtNjA4LVxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYzo2MDk6XHRyYyA9IGFzcGVlZF9rY3Nfc2V0X2FkZHJlc3Moa2NzX2JtYywgYWRkcnMsIG5yX2FkZHJzKTtcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtNjEwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYz0yODg9c3RhdGljIGludCBtdGtfcGxsX3ByZXBhcmVfc2V0Y2xyKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0yOTEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmM6MjkyOlx0d3JpdGVsKEJJVChwbGwtXHUwMDNlZGF0YS1cdTAwM2VwbGxfZW5fYml0KSwgcGxsLVx1MDAzZWVuX3NldF9hZGRyKTtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0yOTMtXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTMyNj1zdHJ1Y3QgY2xrX2h3ICptdGtfY2xrX3JlZ2lzdGVyX3BsbF9vcHMoc3RydWN0IG10a19jbGtfcGxsICpwbGwsXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jLTM1MS1cdGlmIChkYXRhLVx1MDAzZWVuX3NldF9yZWcpXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmM6MzUyOlx0XHRwbGwtXHUwMDNlZW5fc2V0X2FkZHIgPSBiYXNlICYjNDM7IGRhdGEtXHUwMDNlZW5fc2V0X3JlZztcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0zNTMtXHRpZiAoZGF0YS1cdTAwM2Vlbl9jbHJfcmVnKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaD02ND1zdHJ1Y3QgbXRrX2Nsa19wbGwge1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03NC1cdHZvaWQgX19pb21lbVx0KmVuX2FkZHI7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg6NzU6XHR2b2lkIF9faW9tZW1cdCplbl9zZXRfYWRkcjtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03Ni1cdHZvaWQgX19pb21lbVx0KmVuX2Nscl9hZGRyO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYz0zNTM9c3RhdGljIHN0cnVjdCBhZWFkX2VkZXNjICphZWFkX2VkZXNjX2FsbG9jKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU2LVx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChpbl9mbGUsIGRwYWEyX2ZsX3NnKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1NTc6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIHFtX3NnX2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU4LVx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsIGluX2xlbik7XG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2Mi1cdFx0XHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTYzOlx0XHRcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHNnX2RtYV9hZGRyZXNzKHJlcS1cdTAwM2VzcmMpKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTY1LVx0XHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2cpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU2NjpcdFx0XHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBxbV9zZ19kbWEgJiM0MztcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjctXHRcdFx0XHRcdCAgKDEgJiM0MzsgISFpdnNpemUpICogc2l6ZW9mKCpzZ190YWJsZSkpO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NzgtXHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1Nzk6XHRcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHNnX2RtYV9hZGRyZXNzKHJlcS1cdTAwM2Vkc3QpKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODAtXHR9IGVsc2Uge1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU4MS1cdFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChvdXRfZmxlLCBkcGFhMl9mbF9zZyk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTgyOlx0XHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBxbV9zZ19kbWEgJiM0MzsgcW1fc2dfaW5kZXggKlxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU4My1cdFx0XHRcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYz0xMTE0PXN0YXRpYyBzdHJ1Y3Qgc2tjaXBoZXJfZWRlc2MgKnNrY2lwaGVyX2VkZXNjX2FsbG9jKHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNDgtXHRkcGFhMl9mbF9zZXRfZm9ybWF0KGluX2ZsZSwgZHBhYTJfZmxfc2cpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjEyNDk6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGVkZXNjLVx1MDAzZXFtX3NnX2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1MC1cbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1My1cdGlmIChyZXEtXHUwMDNlc3JjID09IHJlcS1cdTAwM2Vkc3QpXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NDpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgZWRlc2MtXHUwMDNlcW1fc2dfZG1hICYjNDM7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMTI1NS1cdFx0XHRcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTYtXHRlbHNlXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NzpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgZWRlc2MtXHUwMDNlcW1fc2dfZG1hICYjNDM7IGRzdF9zZ19pZHggKlxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTgtXHRcdFx0XHQgIHNpemVvZigqc2dfdGFibGUpKTtcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzIxNj1zdGF0aWMgaW50IGhhc2hfZGlnZXN0X2tleShzdHJ1Y3QgY2FhbV9oYXNoX2N0eCAqY3R4LCB1MzIgKmtleWxlbiwgdTggKmtleSxcbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI2Ni1cdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjMyNjc6XHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGtleV9kbWEpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTMyNjgtXHRkcGFhMl9mbF9zZXRfbGVuKGluX2ZsZSwgKmtleWxlbik7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI2OS1cdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozMjcwOlx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwga2V5X2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI3MS1cdGRwYWEyX2ZsX3NldF9sZW4ob3V0X2ZsZSwgZGlnZXN0c2l6ZSk7XG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jPTM1MzI9c3RhdGljIGludCBhaGFzaF91cGRhdGVfY3R4KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTYtXHRcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zZyk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYxNzpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIoaW5fZmxlLCBlZGVzYy1cdTAwM2VxbV9zZ19kbWEpO1xuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTgtXHRcdGRwYWEyX2ZsX3NldF9sZW4oaW5fZmxlLCBjdHgtXHUwMDNlY3R4X2xlbiAmIzQzOyB0b19oYXNoKTtcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zNjE5LVx0XHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYyMDpcdFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgc3RhdGUtXHUwMDNlY3R4X2RtYSk7XG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzYyMS1cdFx0ZHBhYTJfZmxfc2V0X2xlbihvdXRfZmxlLCBjdHgtXHUwMDNlY3R4X2xlbik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3NTYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG5ldGZpbHRlciBOQVQgSC4zMjMgTW9kdWxlJiMzOTtzIEFkZHJlc3MgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGZpbGUgYW5kIHNwZWNpZmljYWxseSB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjcnVjaWFsIGJlY2F1c2UgYm90aCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCBhcmUgY2FsbGluZyBpdC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IGZvciBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIEguMzIzIE5BVCBtb2R1bGUuIE5vdywgYG5hdF9ydHBfcnRjcGAgaXMgaXRzZWxmIGNhbGxlZCB0aHJvdWdoIGEgaG9vayBzZXR1cCBieSBgbmZfbmF0X2gzMjNfaW5pdGAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGBuZl9uYXRfaDMyM19pbml0YCBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIGFuZCBlbmFibGluZyB0aGUgZW50aXJlIEguMzIzIE5BVCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byBgbmZfbmF0X2gzMjNfaW5pdGAgYW5kIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3MgaW50ZWdyYXRpbmcgYG5hdF9ydHBfcnRjcGAgYXMgYSBob29rIGFuZCwgYnkgZXh0ZW5zaW9uLCBob3cgYHNldF9hZGRyYCBpcyB1bHRpbWF0ZWx5IGJyb3VnaHQgaW50byBwbGF5LiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIGFkZHJlc3MgdHJhbnNsYXRpb24gcHJvY2VzcyBpcyBpbml0aWF0ZWQgYW5kIG1hbmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU0MDpcdH07XG4gNTQxOlx0XG4gNTQyOlx0c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gY2FsbGZvcndhcmRpbmdfbmF0ID0ge1xuIDU0MzpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtjYWxsZm9yd2FyZGluZ1wmIzM0OyxcbiA1NDQ6XHRcdC5leHBlY3Rmblx0PSBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0LFxuIDU0NTpcdH07XG4gNTQ2Olx0XG4gNTQ3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xuIDU0ODpcdFx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxuIDU0OTpcdFx0LnNldF9oMjI1X2FkZHIgPSBzZXRfaDIyNV9hZGRyLFxuIDU1MDpcdFx0LnNldF9zaWdfYWRkciA9IHNldF9zaWdfYWRkcixcbiA1NTE6XHRcdC5zZXRfcmFzX2FkZHIgPSBzZXRfcmFzX2FkZHIsXG4gNTUyOlx0XHQubmF0X3J0cF9ydGNwID0gbmF0X3J0cF9ydGNwLFxuIDU1MzpcdFx0Lm5hdF90MTIwID0gbmF0X3QxMjAsXG4gNTU0Olx0XHQubmF0X2gyNDUgPSBuYXRfaDI0NSxcbiA1NTU6XHRcdC5uYXRfY2FsbGZvcndhcmRpbmcgPSBuYXRfY2FsbGZvcndhcmRpbmcsXG4gNTU2Olx0XHQubmF0X3E5MzEgPSBuYXRfcTkzMSxcbiA1NTc6XHR9O1xuIDU1ODpcdFxuIDU1OTpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIDU2MDpcdHN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9oMzIzX2luaXQodm9pZClcbiA1NjE6XHR7XG4gNTYyOlx0XHRSQ1VfSU5JVF9QT0lOVEVSKG5mY3RfaDMyM19uYXRfaG9vaywgXHUwMDI2bmF0aG9va3MpO1xuIDU2MzpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKFx1MDAyNnE5MzFfbmF0KTtcbiA1NjQ6XHRcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZjYWxsZm9yd2FyZGluZ19uYXQpO1xuIDU2NTpcdFx0cmV0dXJuIDA7XG4gNTY2Olx0fVxuIDU2NzpcdFxuIDU2ODpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIDU2OTpcdHN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXG4gNTcwOlx0e1xuIDU3MTpcdFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xuIDU3MjpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2cTkzMV9uYXQpO1xuIDU3MzpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcbiA1NzQ6XHRcdHN5bmNocm9uaXplX3JjdSgpO1xuIDU3NTpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2cTkzMV9uYXQpO1xuIDU3NjpcdFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcbiA1Nzc6XHR9XG4gNTc4Olx0XG4gNTc5Olx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gNTgwOlx0bW9kdWxlX2luaXQobmZfbmF0X2gzMjNfaW5pdCk7XG4gNTgxOlx0bW9kdWxlX2V4aXQobmZfbmF0X2gzMjNfZmluaSk7XG4gNTgyOlx0XG4gNTgzOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtKaW5nIE1pbiBaaGFvIFx1MDAzY3poYW9qaW5nbWluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldFx1MDAzZVwmIzM0Oyk7XG4gNTg0Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0guMzIzIE5BVCBoZWxwZXJcJiMzNDspO1xuIDU4NTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gNTg2Olx0TU9EVUxFX0FMSUFTX05GX05BVF9IRUxQRVIoXCYjMzQ7aDMyM1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDAxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGwgSGllcmFyY2h5OiBgc2V0X2FkZHJgIGFuZCBOQVQgSG9va3MqKgoKUmlnaHQsIHNvIGBzZXRfYWRkcmAg4oCTIHRoYXTigJlzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgTkFUIHByb2Nlc3MsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiBILjMyMy4gSSBzZWUgdGhhdCBgc2V0X2FkZHJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYC4gTWFrZXMgc2Vuc2UsIHRob3NlIGFyZSB0aGUgdHlwaWNhbCBwcm90b2NvbHMgdGhhdCB3b3VsZCBuZWVkIGFkZHJlc3MgdHJhbnNsYXRpb24uIE5vdywgSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVydGhlciB1cHN0cmVhbS4KCldoZXJlIGRvICp0aG9zZSogZnVuY3Rpb25zLCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgZ2V0IGNhbGxlZD8gSSBiZXQgdGhlIGhvb2sgZnVuY3Rpb25zIGluIHRoZSBgbmF0aG9va3NgIG1vZHVsZSBhcmUgaW52b2x2ZWQuIExldCBtZSBjaGVjayB0aGF0LiBZZXAsIGxvb2tzIGxpa2UgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgdGhlIG5leHQgc3RlcCB0byBpbnZlc3RpZ2F0ZS4gT2theSwgc28gdGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBmb2xsb3cgbm93LiBJIG5lZWQgdG8gc2VlIGhvdyBgbmZjdF9oMzIzX25hdF9ob29rYCB0cmlnZ2VycyB0aG9zZSBOQVQgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBILjMyMyBzaWduYWxpbmcuIFRoaXMgd2lsbCBpbGx1bWluYXRlIHRoZSBjcnVjaWFsIGxpbmsgYmV0d2VlbiBgc2V0X2FkZHJgIGFuZCB0aGUgb3ZlcmFsbCBOQVQgcHJvY2Vzcywgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyByaWdodCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY3RfaDMyM19uYXRfaG9vayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oPTM0PWludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTM3LVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozODpzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyB7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTM5LVx0aW50ICgqc2V0X2gyNDVfYWRkcikoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC05My19O1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDo5NDpleHRlcm4gY29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgX19yY3UgKm5mY3RfaDMyM19uYXRfaG9vaztcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTUtXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQyPXN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGNhbGxmb3J3YXJkaW5nX25hdCA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NDYtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ4LVx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTU2MD1zdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NjEte1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTYyOlx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFx1MDAyNm5hdGhvb2tzKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU2My1cdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZxOTMxX25hdCk7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTY5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NzAte1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NTcxOlx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTcyLVx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXHUwMDI2cTkzMV9uYXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTUxPU1PRFVMRV9QQVJNX0RFU0MoY2FsbGZvcndhcmRfZmlsdGVyLCBcJiMzNDtvbmx5IGNyZWF0ZSBjYWxsIGZvcndhcmRpbmcgZXhwZWN0YXRpb25zIFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTU6Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgX19yY3UgKm5mY3RfaDMyM19uYXRfaG9vayBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTY6RVhQT1JUX1NZTUJPTF9HUEwobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjE0LXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjIxNTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjE2LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNTEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyNTI6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNTMtXHRpZiAobWVtY21wKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51Myxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI4OS17XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyOTA6XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI5MS1cdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzExLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MzEyOlx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzEzLVx0aWYgKG1lbWNtcChcdTAwMjZjdC1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NjIyPXN0YXRpYyBpbnQgZXhwZWN0X2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyNi17XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo2Mjc6XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyOC1cdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjQ4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NjQ5Olx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjUwLVx0aWYgKG1lbWNtcChcdTAwMjZjdC1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NzM5PXN0YXRpYyBpbnQgZXhwZWN0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzQ1LXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc0NjpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzQ3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03NzUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo3NzY6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03NzctXHRpZiAobWVtY21wKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51Myxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz04MDA9c3RhdGljIGludCBwcm9jZXNzX3NldHVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy04MDUte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6ODA2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy04MDctXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgyMS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjgyMjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgyMy1cdGlmICgoc2V0dXAtXHUwMDNlb3B0aW9ucyBcdTAwMjYgZVNldHVwX1VVSUVfZGVzdENhbGxTaWduYWxBZGRyZXNzKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMTg3PXN0YXRpYyBpbnQgZXhwZWN0X3E5MzEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTExOTItXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMTkzOlx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMTk0LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTIyNjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMjQ3PXN0YXRpYyBpbnQgcHJvY2Vzc19ncnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTEte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1MjpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1My1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjU1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzExPXN0YXRpYyBpbnQgcHJvY2Vzc19ycnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMTYtXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzE3Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzE4LVx0aW50IHJldDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzMwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTMzMTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMzItXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzUwPXN0YXRpYyBpbnQgcHJvY2Vzc19yY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNTUtXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzU2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzU3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzY1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTM2NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNjctXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDA0PXN0YXRpYyBpbnQgcHJvY2Vzc191cnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MDktXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDEwOlx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDExLVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDE4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQxOTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MjAtXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDQwPXN0YXRpYyBpbnQgcHJvY2Vzc19hcnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NDUtXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDQ2Olx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDQ3LVx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDU1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQ1NjpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NTctXHRpZiAoIW5hdGhvb2spXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ5MD1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTA3LVx0aWYgKCFtZW1jbXAoXHUwMDI2YWRkciwgXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0LnUzLCBzaXplb2YoYWRkcikpKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTA4Olx0XHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MDktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTEwLVx0XHQvKiBBbnN3ZXJpbmcgQUNGICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTExOlx0XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTEyLVx0XHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTQwPXN0YXRpYyBpbnQgcHJvY2Vzc19scnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDQte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0NTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU0Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTQ4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0OTpcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NTAtXHRpZiAobmF0aG9vayBcdTAwMjZcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTk2PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE2MDAte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTYwMTpcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwMi1cdGludCByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwNS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE2MDY6XHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjA3LVx0aWYgKG5hdGhvb2sgXHUwMDI2XHUwMDI2IG5mX2N0X2wzbnVtKGN0KSA9PSBORlBST1RPX0lQVjQgXHUwMDI2XHUwMDI2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzI5CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayBhbmQgQ29udGV4dCBvZiBgbmZjdF9oMzIzX25hdF9ob29rYCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHNlZWluZyB0aGF0IGBuZmN0X2gzMjNfbmF0X2hvb2tgIGlzIGNhbGxlZCBmcm9tIGEgcHJldHR5IGV4dGVuc2l2ZSBsaXN0IG9mIGZ1bmN0aW9ucyB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBvYnNlcnZpbmcgaXRzIHVzZSB3aXRoaW4gYGV4cGVjdF9ydHBfcnRjcGAsIGBleHBlY3RfdDEyMGAsIGBleHBlY3RfaDI0NWAsIGBleHBlY3RfY2FsbGZvcndhcmRpbmdgLCBgcHJvY2Vzc19zZXR1cGAsIGBleHBlY3RfcTkzMWAsIGFuZCB0aGUgZW50aXJlIHN1aXRlIG9mIGBwcm9jZXNzXypgIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggR1JRLCBSUlEsIFJDRiwgVVJRLCBBUlEsIEFDRiwgTFJRLCBhbmQgSVJSLiBUaGF0JiMzOTtzIGEgbG90IG9mIGRpZmZlcmVudCBjYWxsIHBhdGhzIHRvIGJlIGF3YXJlIG9mISBUaGlzIHN1Z2dlc3RzIGEgcmVhbGx5IGNlbnRyYWwgcm9sZSBpbiBob3cgSC4zMjMgTkFUIHRyYXZlcnNhbCBpcyBoYW5kbGVkLgoKSSBhbHNvIHNlZSBhIG1vZGlmaWNhdGlvbiB0byBgaDI0NV9oZWxwYCBpbiB0aGUgc2FtZSBmaWxlIGFzIHBhcnQgb2YgdGhpcyBwYXRjaC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgaXMgaW1wb3J0YW50LCBhcyBpdCBsaWtlbHkgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggSC4yNDUgc2lnbmFsaW5nLiBJdCBzZWVtcyB3aXNlIHRvIHF1aWNrbHkgZGl2ZSBpbnRvIHVuZGVyc3RhbmRpbmcgaG93IGBoMjQ1X2hlbHBgIGZ1bmN0aW9ucyBpbiBvcmRlciB0byBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2gyNDVfaGVscCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUzMC1cdFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE3MTU9c3RhdGljIGludCBfX2luaXQgaDMyM19oZWxwZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE3MjYtXHRcdFx0ICBcJiMzNDtILjI0NVwmIzM0OywgMCwgMCwgMCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE3Mjc6XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTg0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBhIENvbm50cmFjayBIZWxwZXIqKgoKT2theSwgc28gYGgyNDVfaGVscGAgaXMgZmxhZ2dlZCBhcyBhIGNvbm50cmFjayBoZWxwZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0JiMzOTtzIGdldCByaWdodCBpbnRvIHRoZSBjb2RlIGZvciBgaDMyM19oZWxwZXJfaW5pdGAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBUaGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgaG93IHRoZSBoZWxwZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIGNvbm50cmFjaywgd2hhdCBjYWxsYmFja3MgYXJlIHVzZWQsIGFuZCBob3cgaXQgaGFuZGxlcyBjb25uZWN0aW9uIHRyYWNraW5nIGZvciBILjI0NSwgZ2l2ZW4gSC4zMjMmIzM5O3MgcmVsYXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBoZWxwZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3MTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IHJhc19leHBfcG9saWN5ID0ge1xuMTcxMTpcdFx0Lm1heF9leHBlY3RlZFx0XHQ9IDMyLFxuMTcxMjpcdFx0LnRpbWVvdXRcdFx0PSAyNDAsXG4xNzEzOlx0fTtcbjE3MTQ6XHRcbjE3MTU6XHRzdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXG4xNzE2Olx0e1xuMTcxNzpcdFx0aW50IHJldDtcbjE3MTg6XHRcbjE3MTk6XHRcdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcmFzWzBdLCBBRl9JTkVULCBJUFBST1RPX1VEUCxcbjE3MjA6XHRcdFx0XHQgIFwmIzM0O1JBU1wmIzM0OywgUkFTX1BPUlQsIFJBU19QT1JULCBSQVNfUE9SVCxcbjE3MjE6XHRcdFx0XHQgIFx1MDAyNnJhc19leHBfcG9saWN5LCAwLCByYXNfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyMjpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9yYXNbMV0sIEFGX0lORVQ2LCBJUFBST1RPX1VEUCxcbjE3MjM6XHRcdFx0XHQgIFwmIzM0O1JBU1wmIzM0OywgUkFTX1BPUlQsIFJBU19QT1JULCBSQVNfUE9SVCxcbjE3MjQ6XHRcdFx0XHQgIFx1MDAyNnJhc19leHBfcG9saWN5LCAwLCByYXNfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyNTpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1LCBBRl9VTlNQRUMsIElQUFJPVE9fVURQLFxuMTcyNjpcdFx0XHRcdCAgXCYjMzQ7SC4yNDVcJiMzNDssIDAsIDAsIDAsXG4xNzI3Olx0XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTcyODpcdFx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcbjE3Mjk6XHRcdFx0XHQgIFwmIzM0O1EuOTMxXCYjMzQ7LCBROTMxX1BPUlQsIFE5MzFfUE9SVCwgUTkzMV9QT1JULFxuMTczMDpcdFx0XHRcdCAgXHUwMDI2cTkzMV9leHBfcG9saWN5LCAwLCBxOTMxX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcbjE3MzE6XHRcdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVENQLFxuMTczMjpcdFx0XHRcdCAgXCYjMzQ7US45MzFcJiMzNDssIFE5MzFfUE9SVCwgUTkzMV9QT1JULCBROTMxX1BPUlQsXG4xNzMzOlx0XHRcdFx0ICBcdTAwMjZxOTMxX2V4cF9wb2xpY3ksIDAsIHE5MzFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xuMTczNDpcdFxuMTczNTpcdFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcl9yZWdpc3RlcihcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX2gyNDUsXG4xNzM2Olx0XHRcdFx0XHRcdCAgIFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xuMTczNzpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE3Mzg6XHRcdFx0cmV0dXJuIHJldDtcbjE3Mzk6XHRcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMSxcbjE3NDA6XHRcdFx0XHRcdFx0ICAgIEFSUkFZX1NJWkUobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxKSxcbjE3NDE6XHRcdFx0XHRcdFx0ICAgIG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpO1xuMTc0MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE3NDM6XHRcdFx0Z290byBlcnIxO1xuMTc0NDpcdFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9yYXMsXG4xNzQ1Olx0XHRcdFx0XHRcdCAgICBBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcmFzKSxcbjE3NDY6XHRcdFx0XHRcdFx0ICAgIG5mX2Nvbm50cmFja19oZWxwZXJfcmFzX3B0cik7XG4xNzQ3Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTc0ODpcdFx0XHRnb3RvIGVycjI7XG4xNzQ5Olx0XG4xNzUwOlx0XHRyZXR1cm4gMDtcbjE3NTE6XHRlcnIyOlxuMTc1MjpcdFx0bmZfY29ubnRyYWNrX2hlbHBlcnNfdW5yZWdpc3RlcihuZl9jb25udHJhY2tfaGVscGVyX3E5MzFfcHRyLFxuMTc1MzpcdFx0XHRcdFx0XHRBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpKTtcbjE3NTQ6XHRlcnIxOlxuMTc1NTpcdFx0bmZfY29ubnRyYWNrX2hlbHBlcl91bnJlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xuMTc1NjpcdFx0cmV0dXJuIHJldDtcbjE3NTc6XHR9XG4xNzU4Olx0XG4xNzU5Olx0c3RhdGljIHZvaWQgX19leGl0IGgzMjNfaGVscGVyX2V4aXQodm9pZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1MzkKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiA4MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBILjI0NSBDb25udHJhY2sgSGVscGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSC4yNDUgY29ubnRyYWNrIGhlbHBlciwgc3BlY2lmaWNhbGx5IGBoMjQ1X2hlbHBgLiBUaGUgY29yZSBjaGFuZ2UgaXMgYSBjaGVjayBhZGRlZCB3aXRoaW4gYGgyNDVfaGVscGAgdGhhdCBlbmZvcmNlcyBUQ1AgKGBpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVENQKSByZXR1cm4gTkZfQUNDRVBUO2ApLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcHJvdG9jb2wtc3BlY2lmaWMgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBvdGhlciBwYXJ0IG9mIHRoZSBwYXRjaCBtb2RpZmllcyBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCB0byB1c2UgYG5mX2N0X3Byb3RvbnVtKGN0KWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAuCgpJbml0aWFsbHksIEkgdGhvdWdodCB0aGlzIG1pZ2h0IGJlIGFib3V0IElQdjYgY29tcGF0aWJpbGl0eSwgYnV0IGNvbnNpZGVyaW5nIGBuZl9uYXRfaDMyMy5jYCBpcyBleHBsaWNpdGx5IElQdjQsIHRoYXQmIzM5O3MgbGVzcyBsaWtlbHkuIEhvd2V2ZXIsIHRoZSB1c2Ugb2YgYGlwX2hkcihza2IpLSZndDtwcm90b2NvbGAgaW4gYHNldF9hZGRyYCBpcyBwcm9ibGVtYXRpYyBpbiBpdHNlbGYuICBUaGUga2V5IHJlYWxpemF0aW9uIGhlcmUgaXMgdGhhdCBhIHVzZXIgY2FuICpiaW5kKiB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIE5vdywgd2l0aCBgaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sYCwgd2UgcnVuIGludG8gcHJvYmxlbXMgd2hlbiBub24tVENQIHBhY2tldHMgZ2V0IHBhc3NlZCB0aHJvdWdoIHRoZSBoZWxwZXIuIEZvciBleGFtcGxlLCBpZiBhbiBJQ01QIGVycm9yIG9yIHNpbWlsYXIgcGFja2V0IGNvbWVzIHRocm91Z2ggYWZ0ZXIgYSBVRFAgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgdGhlIG9yaWdpbmFsIGBpcF9oZHIoc2tiKS0mZ3Q7cHJvdG9jb2xgIHZhbHVlIGlzIHVzZWQsIGFuZCB0aGUgbWFuZ2xlIGZ1bmN0aW9uIGlzIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgVURQLiBUaGlzIHRoZW4gbGVhZHMgdG8gaXNzdWVzIGFjY2Vzc2luZyBVRFAgaGVhZGVycyBvbiBub24tVURQIHBhY2tldHMuIEJpbmdvISBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGNyYXNoIG9yIE9PQiByZWFkLgoKVXNpbmcgYG5mX2N0X3Byb3RvbnVtKGN0KWAgc29sdmVzIHRoaXMuIEl0IHJlbGllcyBvbiB0aGUgKmNvbm5lY3Rpb24mIzM5O3MqIHByb3RvY29sLCBub3QgdGhlICpwYWNrZXQmIzM5O3MqIHByb3RvY29sLiBUaGUgYWRkZWQgc3dpdGNoIHN0YXRlbWVudCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhpcyBieSBwcmV2ZW50aW5nIGNhbGxzIHRvIG1hbmdsZSBmdW5jdGlvbnMgZm9yIHVuZXhwZWN0ZWQgcHJvdG9jb2xzLCB3aGljaCBpcyBhIHNvbGlkLCBkZWZlbnNpdmUgY29kaW5nIHByYWN0aWNlLgoKVGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgYHN3aXRjaGAgc3RhdGVtZW50OgpgYGBjCglzd2l0Y2ggKG5mX2N0X3Byb3RvbnVtKGN0KSkgewoJY2FzZSBJUFBST1RPX1RDUDoKLi4uCgljYXNlIElQUFJPVE9fVURQOgouLi4KCWRlZmF1bHQ6CgkJcmV0dXJuIC0xOwoJfQpgYGAKVGhpcyBhZGRpdGlvbmFsIGNoZWNrIGlzIGNyaXRpY2FsIGZvciBoYW5kbGluZyB1bmV4cGVjdGVkIHByb3RvY29scyB0aGF0IGNvdWxkIGNvbWUgaW4uCgpGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZSB0byBgaDI0NV9oZWxwYCBlZmZlY3RpdmVseSBpZ25vcmVzIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMsIHdoaWNoIGl0IGV4cGVjdHMgdG8gYmUgVENQLgoKVGhpcyBpcyBhIHdlbGwtdGFyZ2V0ZWQgZnVuY3Rpb25hbCBjaGFuZ2UuIE15IG5leHQgc3RlcCB3b3VsZCBiZSBmdXp6aW5nIHRoaXMgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3b3VsZCBiZSBgaDI0NV9oZWxwYCwgYWxvbmcgd2l0aCByZWxhdGVkIE5BVCBmdW5jdGlvbnM6IGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgLCBgbmF0X2gyNDVgLCBgbmF0X2NhbGxmb3J3YXJkaW5nYCwgYG5hdF9xOTMxYCwgYHNldF9oMjQ1X2FkZHJgLCBgc2V0X2gyMjVfYWRkcmAsIGBzZXRfc2lnX2FkZHJgLCBhbmQgYHNldF9yYXNfYWRkcmAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiBgbmZfbmF0X2gzMjMuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzA4OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlF1aWNrIFNjYW4gZm9yIFN0YXRpYyBJbnRlZ2VyIERlY2xhcmF0aW9ucyBpbiB0aGUgTkFUIEguMzIzIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZS4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEguMzIzIE5BVCBhbmQgcG90ZW50aWFsbHkgaW50ZXJuYWwgaW50ZWdlciBzdGF0ZXMsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3Igc3RhdGljIGludGVnZXIgdmFyaWFibGUgZGVjbGFyYXRpb25zLiBUaGUgcXVpY2tlc3Qgd2F5IHRvIGRvIHRoYXQgaW4gdGhpcyBzY2VuYXJpbyBpcyBwcm9iYWJseSB0byBydW4gYGdyZXBgIG9uIHRoZSBgbmZfbmF0X2gzMjMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCBmb3IgbGluZXMgdGhhdCBzdGFydCB3aXRoIGBzdGF0aWMgaW50YC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBwYXNzIGF0IGFueSBzdGF0aWNhbGx5IGRlY2xhcmVkIGludGVnZXJzIHRoYXQgYXJlIHJlbGV2YW50IHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZSBpbiB0aGF0IHNwZWNpZmljIG5ldGZpbHRlciBmaWxlLiBJIHdhbnQgdG8gc2VlIHdoYXQmIzM5O3MgYmVpbmcgbWFuYWdlZCwgd2hhdCB2YXJpYWJsZXMgY291bGQgYmUgaG9sZGluZyBpbnRlcm5hbCBzdGF0ZXMgdGhhdCBtaWdodCBiZSBjYXVzaW5nIGlzc3Vlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCBkaWdzIHVwLiBJdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgSC4zMjMgTkFUIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjItLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyMzpzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjQtXHRcdCAgICB1bnNpZ25lZCBjaGFyICoqZGF0YSwgaW50IGRhdGFvZmYsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNzUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo3NjpzdGF0aWMgaW50IHNldF9oMjI1X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy03Ny1cdFx0XHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTg1LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6ODY6c3RhdGljIGludCBzZXRfaDI0NV9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHByb3RvZmYsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy04Ny1cdFx0XHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTk2LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6OTc6c3RhdGljIGludCBzZXRfc2lnX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtOTgtXHRcdFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMTUyLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6MTUzOnN0YXRpYyBpbnQgc2V0X3Jhc19hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1NC1cdFx0XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0xODEtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxODI6c3RhdGljIGludCBuYXRfcnRwX3J0Y3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMTgzLVx0XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5MC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI5MTpzdGF0aWMgaW50IG5hdF90MTIwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5Mi1cdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyOC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMyOTpzdGF0aWMgaW50IG5hdF9oMjQ1KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMzMC1cdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTM4Mj1zdGF0aWMgdm9pZCBpcF9uYXRfcTkzMV9leHBlY3Qoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00MDktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo0MTA6c3RhdGljIGludCBuYXRfcTkzMShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00MTEtXHRcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz00NzQ9c3RhdGljIHZvaWQgaXBfbmF0X2NhbGxmb3J3YXJkaW5nX2V4cGVjdChzdHJ1Y3QgbmZfY29ubiAqbmV3LFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ5NS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ5NjpzdGF0aWMgaW50IG5hdF9jYWxsZm9yd2FyZGluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTctXHRcdFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBuYXRob29rcyA9IHtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NTktLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjA6c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgSC4zMjMgTkFUIE1vZHVsZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZfbmF0X2gzMjMuY2AgZmlsZSBhbmQgaW1tZWRpYXRlbHkgdGhlICYjMzQ7c3RhdGljJiMzNDsgZGVjbGFyYXRpb24gb24gYWxsIHRob3NlIGZ1bmN0aW9ucyBwb3BzIG91dC4gVGhhdCBzdWdnZXN0cyB0aGVzZSBhcmUgYWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoaXMgbW9kdWxlLCBsaWtlbHkgZm9yIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIG5hbWluZyBjb25mbGljdHMuIEdvb2QgcHJhY3RpY2UsIGdlbmVyYWxseS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucyBhcmUgdXNlZC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgb3ZlciB0byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3IgbWFpbiBlbnRyeSBwb2ludHMgZm9yIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb2NhdGluZyB0aGUgYGgyNDVfaGVscGAgZnVuY3Rpb24sIGFzIHRoYXQmIzM5O3MgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIEguMjQ1IHNpZ25hbGluZy4gU2VlaW5nIHdoZXJlIHRoYXQmIzM5O3MgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgTkFUIGhlbHBlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBpbnNwZWN0aW9uIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoMjQ1X2hlbHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTUzMC1cdFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE3MTU9c3RhdGljIGludCBfX2luaXQgaDMyM19oZWxwZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE3MjYtXHRcdFx0ICBcJiMzNDtILjI0NVwmIzM0OywgMCwgMCwgMCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE3Mjc6XHRcdFx0ICBcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cdG5mX2N0X2hlbHBlcl9pbml0KFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDY1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDb25udHJhY2sgSGVscGVyIFBvbmRlcmluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIEl0JiMzOTtzIHNlZW1pbmcgcHJldHR5IHN0YXRpYyBpbiBpdHMgc3RydWN0dXJlLCBpc24mIzM5O3QgaXQ/IEJ1dCwgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhICpjb25udHJhY2sgaGVscGVyKi4gVGhhdCBtZWFucyBpdHMgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyBnb2luZyB0byBiZSB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgaW5qZWN0ZWQgaW50byB0aGUgY29ubnRyYWNrIGZyYW1ld29yay4gSSYjMzk7bSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgY29udHJvbCBmbG93IGhlcmUsIHNlZWluZyBob3cgdGhpcyBoZWxwZXIgYWN0dWFsbHkgZ2V0cyBpbnZva2VkIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZy4KCk15IGNvbmNlcm4gaXMgd2hldGhlciB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LCBhcyBteSBleHBlcmllbmNlIHRlbGxzIG1lIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG1vcmUgdHJpY2t5LiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgd2l0aGluIGBuZl9jb25udHJhY2tfaDMyM19tYWluLmNgPyBTb21ldGhpbmcgdGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciB2aWV3IG9mIGhvdyB0aGlzIHRoaW5nIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWw/IEZpbmRpbmcgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gbWF5IHByb3ZpZGUgc29tZSBjbHVlcyBob3cgdGhlIGhlbHBlciBpcyBpbnZva2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU4OS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU5MDppbnQgZ2V0X2gyMjVfYWRkcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHVuc2lnbmVkIGNoYXIgKmRhdGEsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXHRcdCAgVHJhbnNwb3J0QWRkcmVzcyAqdGFkZHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTU5CgkJCQkJCQlvdXRwdXQ6IDYyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgRnVuY3Rpb24gTW9kaWZpZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBnZXRfaDIyNV9hZGRyYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbm90aWNpbmcgaXQmIzM5O3MgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoaXMgc3BhcmtzIGEgdHJhaW4gb2YgdGhvdWdodDogaWYgKnRoaXMqIGZ1bmN0aW9uIGlzbiYjMzk7dCBzdGF0aWMsIHdoYXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBtb2RpZmllcnMgb24gdGhlIG90aGVycywgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkZXNpZ24uIEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgZ2xvYmFsbHkgYWNjZXNzaWJsZSwgb3IgaXMgaXQgc3VwcG9zZWQgdG8gYmUgZW5jYXBzdWxhdGVkPyBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBpcyBjcml0aWNhbCB0byBlbnN1cmluZyBwcm9wZXIgZW5jYXBzdWxhdGlvbiBhbmQgYXZvaWRpbmcgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIGVzcGVjaWFsbHkgaW4gYSBjb25jdXJyZW50IGVudmlyb25tZW50IHdoZXJlIHVuZXhwZWN0ZWQgYWNjZXNzIGNvdWxkIGxlYWQgdG8gcmFjZSBjb25kaXRpb25zLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aMC05X10mIzQzOyBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKG5mY3RfaDMyM19uYXRfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU4OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmZfaDMyM19sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU5LXN0YXRpYyBjaGFyICpoMzIzX2J1ZmZlcjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz01ODg9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpuZl9jb25udHJhY2tfaGVscGVyX2gyNDVfcHRyIF9fcmVhZF9tb3N0bHk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo1OTA6aW50IGdldF9oMjI1X2FkZHIoc3RydWN0IG5mX2Nvbm4gKmN0LCB1bnNpZ25lZCBjaGFyICpkYXRhLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTkxLVx0XHQgIFRyYW5zcG9ydEFkZHJlc3MgKnRhZGRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUxNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25udHJhY2sgSGVscGVyIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEguMjI1L0guMjQ1IHNpdHVhdGlvbi4gSXQgc2VlbXMgYGdldF9oMjI1X2FkZHJgIGlzIHRoZSBsb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLi4uIFdhaXQsIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBgaDI0NV9oZWxwYCAqaXMqIGEgY29ubnRyYWNrIGhlbHBlciwgYW5kIGNvbm50cmFjayBmdXp6aW5nIG9mdGVuIGludm9sdmVzIHRhcmdldGluZyB0aGUgaGVscGVycyB0aGVtc2VsdmVzLiBJJiMzOTttIHRoaW5raW5nLCBldmVuIHRob3VnaCBgaDI0NV9oZWxwYCBpcyBzdGF0aWMsIHN5emthbGxlciAqbWlnaHQqIHN0aWxsIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSYjMzk7cyBkZWJ1ZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUuIEl0JiMzOTtzIHdvcnRoIGxpc3RpbmcgaXQgYXMgYSBmb2N1cyBzeW1ib2wuCgpBbHNvLCBJIHNlZSBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCBpcyBzdGF0aWMgdG9vLiBUaGUgc3RhdGljLW5lc3Mgb2YgZnVuY3Rpb25zIGxpa2UgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAgYWxzbyBjb25jZXJucyBtZSwgYnV0IHN0aWxsLCBJIGFtIGdvaW5nIHRvIGxpc3QgYGgyNDVfaGVscGAsIGBzZXRfYWRkcmAsIGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgIGFzIGZvY3VzIHN5bWJvbHMuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb25zIGxpbmVkIHVwLiBMZXQmIzM5O3MgZG91YmxlLWNoZWNrOiBgTkZfQ09OTlRSQUNLX0gzMjNgLCBgTkZfTkFUX0gzMjNgLCBgTkZfTkFUYCwgYW5kIGBORl9DT05OVFJBQ0tgLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbXBvbmVudHMgZW5hYmxlZC4KCkxldCYjMzk7cyBkbyBhIG1vcmUgdGhvcm91Z2ggY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjExCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgaGluZ2VzIG9uIHRoZSBzdGF0ZSBvZiBgTkVURklMVEVSX0FEVkFOQ0VEYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzZWNvbmRhcnkgdW50aWwgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHByb3ZpZGVkIGJ5IHRoYXQgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCB0aGUgdmFyaWFibGUgdGhhdCBkaWN0YXRlcyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGFwcHJvYWNoLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZGV0ZXJtaW5lICpob3cqIHRoaXMgb3B0aW9uIGlzIHNldCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcyBvciByZW1vdmVzLCBhbmQgaG93IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgYmVoYXZlcyBpbiBkaWZmZXJlbnQgYnVpbGQgY29uZmlndXJhdGlvbnMuIElzIGl0IGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBpbnRlcm1lZGlhcnkgbGV2ZWw/IFRoYXQgaXMgdGhlIHF1ZXN0aW9uLiBUaGUgYW5zd2VyIGltcGFjdHMgKmV2ZXJ5dGhpbmcqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcbm5ldC9LY29uZmlnLTIxOS1cbm5ldC9LY29uZmlnOjIyMDpjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0FkdmFuY2VkIG5ldGZpbHRlciBjb25maWd1cmF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSYjMzk7bSB0aGlua2luZywgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEguMzIzIE5BVCBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gSSBzZWUgdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZSBoZXJlLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgb2YgY291cnNlLCB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgKGBORl9DT05OVFJBQ0tfSDMyM2ApIGlzIHJlcXVpcmVkLiBOb3csIG5hdHVyYWxseSwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBJIGFsc28gbmVlZCBgTkZfTkFUX0gzMjNgLgoKQmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5GX05BVF9IMzIzYCBkb2VzbiYjMzk7dCBoYXZlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwgaW4gdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSByZXF1aXJlbWVudHMgaXQgbWlnaHQgaW1wb3NlIG9uIHRoZSBzdXJyb3VuZGluZyBlbnZpcm9ubWVudC4gVGhpcyBpcyBqdXN0IHN0YW5kYXJkIHByYWN0aWNlLCBvZiBjb3Vyc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdGNvbmZpZyBORl9OQVRfUFBUUFxuIDExOTpcdFx0dHJpc3RhdGVcbiAxMjA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gMTIxOlx0XHRkZWZhdWx0IE5GX0NPTk5UUkFDS19QUFRQXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIE5GX05BVF9IMzIzXG4gMTI0Olx0XHR0cmlzdGF0ZVxuIDEyNTpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiAxMjY6XHRcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcbiAxMjc6XHRcbiAxMjg6XHRlbmRpZiAjIE5GX05BVFxuIDEyOTpcdFxuIDEzMDpcdGNvbmZpZyBJUF9ORl9JUFRBQkxFU1xuIDEzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXCYjMzQ7XG4gMTMyOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgSC4zMjMgTkFUIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYmFzZWQgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIChgTkZfQ09OTlRSQUNLX0gzMjNgKSBpcyB0aGUga2V5LCBhbmQgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYE5GX0NPTk5UUkFDS2AgYmVpbmcgYWN0aXZlLCB3aGljaCBpcyB0eXBpY2FsLiBOb3csIEkgc2VlIHRoYXQgZW5hYmxpbmcgSC4zMjMgTkFUIChgTkZfTkFUX0gzMjNgKSBpc24mIzM5O3QgZGlyZWN0bHkgZXhwb3NlZCBpbiB0aGUgbWVudSBjb25maWd1cmF0aW9uOyB0aGVyZSYjMzk7cyBubyBwcm9tcHQgc3RyaW5nIGZvciBpdC4gQWgsIEkgZ2V0IGl0IOKAkyBpdCYjMzk7cyBhbiBhdXRvbWF0aWNhbGx5LXNlbGVjdGVkIGRlcGVuZGVuY3kuIEl0IGJlY29tZXMgYWN0aXZlIG9ubHkgaWYgSSBlbmFibGUgdGhlIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tlciAoYE5GX0NPTk5UUkFDS19IMzIzYCkgKmFuZCogdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgKGBORl9OQVRgKS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIHNvbWV3aGF0LCBhbHRob3VnaCBpdCByZXF1aXJlcyBhIHNsaWdodGx5IGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgpUaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGNvdXJzZSBvZiBhY3Rpb24sIGZvciBILjMyMyBOQVQgZnVuY3Rpb25hbGl0eSwgaXMgdG8gZW5hYmxlICpib3RoKiBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfTkFUYC4gSXQmIzM5O3MgZXNzZW50aWFsIHRvIGVuYWJsZSBiYXNlIE5BVCBmdW5jdGlvbmFsaXR5LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IEkgaGF2ZSBgTkZfTkFUYCBlbmFibGVkIGp1c3QgdG8gYmUgc3VyZS4gVGhhdCB3b3VsZCBiZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlZmF1bHQgblxuIDQwMTpcdFx0ZGVwZW5kcyBvbiAoTkVURklMVEVSX05FVExJTktfUVVFVUUgfHwgTkVURklMVEVSX05FVExJTktfTE9HKSBcdTAwMjZcdTAwMjYgTkZfQ1RfTkVUTElOS1xuIDQwMjpcdFx0aGVscFxuIDQwMzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxuIDQwNDpcdFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xuIDQwNTpcdFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgTkZfTkFUXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiA0MTA6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDQxMTpcdFx0aGVscFxuIDQxMjpcdFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXG4gNDEzOlx0XHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXG4gNDE0Olx0XHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXG4gNDE1Olx0XG4gNDE2Olx0Y29uZmlnIE5GX05BVF9BTUFOREFcbiA0MTc6XHRcdHRyaXN0YXRlXG4gNDE4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDE5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0FNQU5EQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY4MQoJCQkJCQkJb3V0cHV0OiAyMTMKCQkJCQkJCXRob3VnaHRzOiA1MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgSC4zMjMgTkFUIGFuZCBDb25udHJhY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgdGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgaXBfaGRyKHNrYiktJmd0O3Byb3RvY29sYCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgb3BlbiBhIHZ1bG5lcmFiaWxpdHkgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBzb21lb25lIG1hbnVhbGx5IGNvbmZpZ3VyZXMgdGhlIEguMjQ1IGhlbHBlciBvbiBhIFVEUCBjb25uZWN0aW9uLiBJdCYjMzk7cyBhbHNvIGFkZGluZyBhIHNhZmV0eSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBzcGVjaWZpY2FsbHkgaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMsIHdoaWNoIG1ha2VzIHNlbnNlLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCByZWFjaGVzIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBtYWtpbmcgZnV6emluZyBhIGdvb2QgaWRlYS4KCkZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgZW5hYmxlZC4gVGhhdCYjMzk7cyBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9OQVRgLCBhbmQgYE5GX0NPTk5UUkFDS19IMzIzYC4gSSB3aWxsIGxpc3QgdGhvc2UgY29uZmlndXJhdGlvbnMuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSeKAmWxsIGZvY3VzIG9uIGBoMjQ1X2hlbHBgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuYXRfdDEyMGAuIGBzZXRfYWRkcmAgaXMgYWxzbyBpbXBvcnRhbnQsIHNpbmNlIGl0JiMzOTtzIHVzZWQgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHNldF9hZGRyYCBpc24mIzM5O3QgaW5saW5lZCwgYXMgaXRzIGFkZHJlc3MgaXMgdGFrZW4gKGl0JiMzOTtzIHB1dCBpbiBgbmF0aG9va3NgKS4gSWYgbm90IGlubGluZWQsIHRoZW4gdGhhdCYjMzk7cyB0aGUgb25lIHRoYXQgaXMgbW9kaWZpZWQuIElmIGl0JiMzOTtzIGlubGluZWQsIHRoZW4gdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgYXJlIGltcG9ydGFudC4KCkkgbmVlZCB0byBjb25maXJtIGlmIGBzZXRfYWRkcmAgaXMgaW5saW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIHR3aWNlIGluIGBuZl9uYXRfaDMyMy5jYCwgbWVhbmluZyBpdCBpcyBwb3NzaWJsZS4gU28gSSB3aWxsIGFkZCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgYXMgdGhleSBib3RoIGNhbGwgYHNldF9hZGRyYC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9ucyBgbmZfbmF0X2gzMjNfaW5pdGAgYW5kIGBoMzIzX2hlbHBlcl9pbml0YCBhcmUgcHJvcGVybHkgaG9va2VkIHVwLgoKU28sIG15IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMgd2lsbCBiZToKCiogICBgaDI0NV9oZWxwYAoqICAgYG5hdF9ydHBfcnRjcGAKKiAgIGBuYXRfdDEyMGAKKiAgIGBzZXRfYWRkcmAgKGNvbmRpdGlvbmFsOyBpZiBub3QgaW5saW5lZCwgaXQmIzM5O3MgbW9kaWZpZWQpCgpJ4oCZbSBjb25maWRlbnQgdGhpcyBjb3ZlcnMgdGhlIGVzc2VudGlhbCBwaWVjZXMgb2YgdGhlIHBhdGNoIHRoYXQgbmVlZCBjbG9zZSBzY3J1dGlueSBmb3IgZnVuY3Rpb25hbCBjb3JyZWN0bmVzcyBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aDI0NV9oZWxwJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuYXRfdDEyMCYjMzQ7LAogICAgJiMzNDtzZXRfYWRkciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgYSB1c2VyIG1hbnVhbGx5IGJpbmRzIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gaWdub3JlIG5vbi1UQ1AgY29ubmVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxMy41MjYwODU1NzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4OTUxOTQyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoMjQ1X2hlbHBcIixcbiAgICBcIm5hdF9ydHBfcnRjcFwiLFxuICAgIFwibmF0X3QxMjBcIixcbiAgICBcInNldF9hZGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEguMzIzIE5BVCBhbmQgY29ubnRyYWNrIGhlbHBlcnMgd2hlcmUgYGlwX2hkcihza2IpLVxcdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6MTMuNTI2MDkyNTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ4MzM2ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDE1OjEzOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5pbmRleCAxODNlOGEzZmYyYmFiLi45OGQ1MGIzYTZiZTJjIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5AQCAtMzcsNyArMzcsOCBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRidWYucG9ydCA9IHBvcnQ7XFxuIFxcdGFkZHJvZmYgKz0gZGF0YW9mZjtcXG4gXFxuLVxcdGlmIChpcF9oZHIoc2tiKS1cXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1ApIHtcXG4rXFx0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcXG4rXFx0Y2FzZSBJUFBST1RPX1RDUDpcXG4gXFx0XFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQoc2tiLCBjdCwgY3RpbmZvLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBwcm90b2ZmLCBhZGRyb2ZmLCBzaXplb2YoYnVmKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgKGNoYXIgKikgXFx1MDAyNmJ1Ziwgc2l6ZW9mKGJ1ZikpKSB7XFxuQEAgLTUxLDcgKzUyLDggQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0aWYgKHRoID09IE5VTEwpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFx0XFx0KmRhdGEgPSBza2ItXFx1MDAzZWRhdGEgKyBpcF9oZHJsZW4oc2tiKSArIHRoLVxcdTAwM2Vkb2ZmICogNCArIGRhdGFvZmY7XFxuLVxcdH0gZWxzZSB7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElQUFJPVE9fVURQOlxcbiBcXHRcXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAoY2hhciAqKSBcXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcXG5AQCAtNjIsNiArNjQsOSBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRcXHQgKiBvciBwdWxsIGV2ZXJ5dGhpbmcgaW4gYSBsaW5lYXIgYnVmZmVyLCBzbyB3ZSBjYW4gc2FmZWx5XFxuIFxcdFxcdCAqIHVzZSB0aGUgc2tiIHBvaW50ZXJzIG5vdyAqL1xcbiBcXHRcXHQqZGF0YSA9IHNrYi1cXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xcbmluZGV4IDI0OTMxZTM3OTk4NWIuLjljYWMzZTVhYjM5ZWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xcbkBAIC01MzksNiArNTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXHRpZiAoY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEIFxcdTAwMjZcXHUwMDI2IGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRF9SRVBMWSlcXG4gXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4gXFxuK1xcdC8qIEguMjQ1IGlzIFRQS1QvVENQOyBpZ25vcmUgbWFudWFsIGJpbmRpbmdzIHRvIG90aGVyIEw0IHByb3RvY29scy4gKi9cXG4rXFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUClcXG4rXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4rXFxuIFxcdHByX2RlYnVnKFxcXCJuZl9jdF9oMjQ1OiBza2JsZW4gPSAldVxcXFxuXFxcIiwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZl9oMzIzX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxNC4xMDE5Mjc2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2ODMxOTMyODA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImgyNDVfaGVscFwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuYXRfdDEyMFwiLFxuICAgIFwic2V0X2FkZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXFx1MDAzZXByb3RvY29sYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGEgdXNlciBtYW51YWxseSBiaW5kcyB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIGBoMjQ1X2hlbHBgIHRvIGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZDA3YTUyM2RkZjM1ODViNzAzZDNkOWQ0MTIxMjhiNjQ5N2Y0ZjFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjggMTU6MTM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5pbmRleCAxODNlOGEzZmYyYmFiLi45OGQ1MGIzYTZiZTJjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMzcsNyArMzcsOCBAQCBzdGF0aWMgaW50IHNldF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0YnVmLnBvcnQgPSBwb3J0O1xuIFx0YWRkcm9mZiArPSBkYXRhb2ZmO1xuIFxuLVx0aWYgKGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVENQKSB7XG4rXHRzd2l0Y2ggKG5mX2N0X3Byb3RvbnVtKGN0KSkge1xuK1x0Y2FzZSBJUFBST1RPX1RDUDpcbiBcdFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQoc2tiLCBjdCwgY3RpbmZvLFxuIFx0XHRcdFx0XHQgICAgICBwcm90b2ZmLCBhZGRyb2ZmLCBzaXplb2YoYnVmKSxcbiBcdFx0XHRcdFx0ICAgICAgKGNoYXIgKikgXHUwMDI2YnVmLCBzaXplb2YoYnVmKSkpIHtcbkBAIC01MSw3ICs1Miw4IEBAIHN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdGlmICh0aCA9PSBOVUxMKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgdGgtXHUwMDNlZG9mZiAqIDQgKyBkYXRhb2ZmO1xuLVx0fSBlbHNlIHtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIElQUFJPVE9fVURQOlxuIFx0XHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHRcdCAgICAgIHByb3RvZmYsIGFkZHJvZmYsIHNpemVvZihidWYpLFxuIFx0XHRcdFx0XHQgICAgICAoY2hhciAqKSBcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xuQEAgLTYyLDYgKzY0LDkgQEAgc3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICogb3IgcHVsbCBldmVyeXRoaW5nIGluIGEgbGluZWFyIGJ1ZmZlciwgc28gd2UgY2FuIHNhZmVseVxuIFx0XHQgKiB1c2UgdGhlIHNrYiBwb2ludGVycyBub3cgKi9cbiBcdFx0KmRhdGEgPSBza2ItXHUwMDNlZGF0YSArIGlwX2hkcmxlbihza2IpICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcbmluZGV4IDI0OTMxZTM3OTk4NWIuLjljYWMzZTVhYjM5ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNcbkBAIC01MzksNiArNTM5LDEwIEBAIHN0YXRpYyBpbnQgaDI0NV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0aWYgKGN0aW5mbyAhPSBJUF9DVF9FU1RBQkxJU0hFRCBcdTAwMjZcdTAwMjYgY3RpbmZvICE9IElQX0NUX0VTVEFCTElTSEVEX1JFUExZKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuIFxuK1x0LyogSC4yNDUgaXMgVFBLVC9UQ1A7IGlnbm9yZSBtYW51YWwgYmluZGluZ3MgdG8gb3RoZXIgTDQgcHJvdG9jb2xzLiAqL1xuK1x0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUClcbitcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbitcbiBcdHByX2RlYnVnKFwibmZfY3RfaDI0NTogc2tibGVuID0gJXVcXG5cIiwgc2tiLVx1MDAzZWxlbik7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfaDMyM19sb2NrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjEzOjE0LjEwMTkyOTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM2MjA5MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEguMzIzIE5BVCBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEguMzIzIE5BVCBhbmQgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIGl0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCdzIGJlZW4gY2hhbmdlZCBhbmQgd2h5LiBJdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBidWcgZml4IGluIGBuZl9uYXRfaDMyMy5jYCB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHdyb25nIHByb3RvY29sIGlkZW50aWZpZXIg4oCTIHVzaW5nIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCBpbiB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gVGhhdCdzIGEgY2xhc3NpYyBtaXN0YWtlLCBhbmQgaXQncyBnb29kIHRoZXkgY2F1Z2h0IGl0LlxuXG5JIGFsc28gc2VlIGEgbmV3IGNoZWNrIGFkZGVkIGluIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiB3aXRoaW4gYG5mX2Nvbm50cmFja19oMzIzX21haW4uY2AgdG8gdmVyaWZ5IHRoZSBwcm90b2NvbCBpcyBgSVBQUk9UT19UQ1BgLiBUaGlzIHByb2JhYmx5IGFkZHMgc29tZSBjcnVjaWFsIHZhbGlkYXRpb24gdG8gdGhlIEguMjQ1IGhlbHBlci5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLiBMZXQgbWUgY2hlY2sgdGhlIGV4YWN0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNldF9hZGRyYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGFuZCBgaDI0NV9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmNgLiBUaGVzZSBhcmUgdGhlIGtleSBhcmVhcyB0byBmb2N1cyBvbi5cblxuTm93LCBiZWZvcmUgSSBzdGFydCBhbmFseXppbmcgdGhlIGNvZGUsIEkgc2hvdWxkIGxvb2sgaW50byB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZXNlIG1vZHVsZXMuIExldCdzIHNlZSBpZiB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHZhbHVlcy4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBlbnRyaWVzIGZvciBib3RoIGBuZl9uYXRfaDMyM2AgYW5kIGBuZl9jb25udHJhY2tfaDMyM2AgdG8gZ2V0IHRoZSBjb250ZXh0LiBUaGF0J2xsIHByb3ZpZGUgdXNlZnVsIGJhY2tncm91bmQgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoxOS4yMzgxNDIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzgyODk4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjM9c3RhdGljIGludCBzZXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIChjaGFyICopIFxcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjQ1OlxcdFxcdFxcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXFxcIm5mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3RjcF9wYWNrZXQgZXJyb3JcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQ2LVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU5LVxcdFxcdFxcdFxcdFxcdCAgICAgIChjaGFyICopIFxcdTAwMjZidWYsIHNpemVvZihidWYpKSkge1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjYwOlxcdFxcdFxcdG5ldF9ub3RpY2VfcmF0ZWxpbWl0ZWQoXFxcIm5mX25hdF9oMzIzOiBuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQgZXJyb3JcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTYxLVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTE4Mj1zdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yMjQtXFx0aWYgKGkgXFx1MDAzZT0gSDMyM19SVFBfQ0hBTk5FTF9NQVgpIHtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyMjU6XFx0XFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcXFwibmZfbmF0X2gzMjM6IG91dCBvZiBleHBlY3RhdGlvbnNcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI1Ni1cXHRpZiAobmF0ZWRfcG9ydCA9PSAwKSB7XFx0LyogTm8gcG9ydCBhdmFpbGFibGUgKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyNTc6XFx0XFx0bmV0X25vdGljZV9yYXRlbGltaXRlZChcXFwibmZfbmF0X2gzMjM6IG91dCBvZiBSVFAgcG9ydHNcXFxcblxcXCIpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI1OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI3NS1cXHQvKiBTdWNjZXNzICovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6Mjc2OlxcdHByX2RlYnVnKFxcXCJuZl9uYXRfaDMyMzogZXhwZWN0IFJUUCAlcEk0OiVodS1cXHUwMDNlJXBJNDolaHVcXFxcblxcXCIsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjc3LVxcdFxcdCBcXHUwMDI2cnRwX2V4cC1cXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjgwLVxcdFxcdCBudG9ocyhydHBfZXhwLVxcdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCkpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjI4MTpcXHRwcl9kZWJ1ZyhcXFwibmZfbmF0X2gzMjM6IGV4cGVjdCBSVENQICVwSTQ6JWh1LVxcdTAwM2UlcEk0OiVodVxcXFxuXFxcIixcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy0yODItXFx0XFx0IFxcdTAwMjZydGNwX2V4cC1cXHUwMDNldHVwbGUuc3JjLnUzLmlwLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9MjkxPXN0YXRpYyBpbnQgbmF0X3QxMjAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzA2LVxcdGlmIChuYXRlZF9wb3J0ID09IDApIHtcXHQvKiBObyBwb3J0IGF2YWlsYWJsZSAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMwNzpcXHRcXHRuZXRfbm90aWNlX3JhdGVsaW1pdGVkKFxcXCJuZl9uYXRfaDMyMzogb3V0IG9mIFRDUCBwb3J0c1xcXFxuXFxcIik7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzA4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzE4LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjMxOTpcXHRwcl9kZWJ1ZyhcXFwibmZfbmF0X2gzMjM6IGV4cGVjdCBULjEyMCAlcEk0OiVodS1cXHUwMDNlJXBJNDolaHVcXFxcblxcXCIsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzIwLVxcdFxcdCBcXHUwMDI2ZXhwLVxcdTAwM2V0dXBsZS5zcmMudTMuaXAsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTU5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU2MDpzdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU2OC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1Njk6c3RhdGljIHZvaWQgX19leGl0IG5mX25hdF9oMzIzX2Zpbmkodm9pZClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy01NzAte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTc5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU4MDptb2R1bGVfaW5pdChuZl9uYXRfaDMyM19pbml0KTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1ODE6bW9kdWxlX2V4aXQobmZfbmF0X2gzMjNfZmluaSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTgyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoyNC42NzY0Mzg0NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ5NjcyNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gVGhvc2UgSC4zMjMgS2NvbmZpZ3MqKlxuXG5SaWdodCwgdGltZSB0byB0cmFjayBkb3duIHRoZSBLY29uZmlncyBmb3IgYENPTkZJR19ORl9OQVRfSDMyM2AgYW5kIGBDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjNgLiBUaGlzIHR5cGljYWxseSBtZWFucyBkaXZpbmcgaW50byB0aGUgZGVwdGhzIG9mIHRoZSBrZXJuZWwncyBzb3VyY2UgdHJlZSwgc3BlY2lmaWNhbGx5IHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gbmV0ZmlsdGVyIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIHN0YXJ0IGluIHRoZSBgbmV0L25ldGZpbHRlcmAgZGlyZWN0b3J5LCBvciBwZXJoYXBzIHdpdGhpbiB0aGUgbW9yZSBzcGVjaWZpYyBhcmVhcyBsaWtlIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja2AgaWYgdGhvc2UgYXJlIHN0YW5kYWxvbmUgbW9kdWxlcy4gSSdsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgb3Igc2ltaWxhciB0b29scyB0byBlZmZpY2llbnRseSBzZWFyY2ggZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhY3Jvc3MgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJJ2xsIGFsc28gYmUgbWluZGZ1bCBvZiBkZXBlbmRlbmNpZXM7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgS2NvbmZpZyBvcHRpb25zIG1pZ2h0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlc2UgdG8gZXZlbiBzaG93IHVwIGluIHRoZSBtZW51Y29uZmlnIG9yLCBldmVuIHdvcnNlLCB3aGF0IG1pZ2h0IGJlIHB1bGxpbmcgdGhlbSBpbiAqdHJhbnNpdGl2ZWx5KiBieSBiZWluZyBoYXJkIGNvZGVkIGRlcGVuZGVuY2llcy4gT2Z0ZW4sIHRoZXNlIEguMzIzIHJlbGF0ZWQgb3B0aW9ucyBhcmUgYnVyaWVkIHByZXR0eSBkZWVwIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGJlY2F1c2Ugb2YgdGhlaXIgcmVsYXRpdmUgbmljaGUuIEl0J3MgYSBxdWljayBqb2IsIGJ1dCBJJ2xsIGhhdmUgdG8gYmUgbWV0aG9kaWNhbCBhbmQgYWNjb3VudCBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzoyOS43MjYxMzEyMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MzA0OTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTIyLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6MzQuODc5MTg3MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NTM2NjkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBvZiBgTkZfTkFUX0gzMjNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoZSBzdXBwb3J0IHN0cnVjdHVyZSBmb3IgYE5GX05BVF9IMzIzYCBsb29rIGxpa2U/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSdtIGFzc3VtaW5nLCBuYXR1cmFsbHksIHRoYXQgaXQgaG9va3MgaW50byB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBCdXQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqc3BlY2lmaWMqIE5ldGZpbHRlciBtb2R1bGVzIG9yIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgaXQgcmVsaWVzIHVwb24uIElzIGl0IHN0cmljdGx5IHRpZWQgdG8gY29ubnRyYWNrPyBEb2VzIGl0IGxldmVyYWdlIHBhcnRpY3VsYXIgaGVscGVyIG1vZHVsZXMsIG9yIGRvZXMgaXQgaGF2ZSBhIHRpZ2h0LCBjdXN0b20gaW50ZWdyYXRpb24gd2l0aCBzb21lIG90aGVyIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2s/IFVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgcGllY2VzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgZXh0ZW5kaW5nIHRoaXMgTkFUIGZ1bmN0aW9uYWxpdHkuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzozOC40NTQ1NTk0MjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5MzgzNTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTIyNz1jb25maWcgTkZfQ09OTlRSQUNLX0ZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjEzOjQzLjg0ODQwMTQ3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzI2MDk3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBJUHY0IG5ldGZpbHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEyMy4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3RhcnRzIGZvciBhIGdpdmVuIHNlY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGZlYXR1cmVzIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCB0aGVyZS4gVW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHdoaWNoIG1vZHVsZXMgYXJlIHJlbGV2YW50IGZvciBhbnkgZ2l2ZW4gdGFzay4gVGhpcyBpcyB3aGVyZSBJIGNhbiBzdGFydCBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgYXZhaWxhYmxlIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gdGhlIElQdjQgbmV0ZmlsdGVyIGZyYW1ld29yay4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NDcuNDIxMDE0Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBtYW5hZ2VtZW50IHN5c3RlbSB0byBhY2Nlc3MgbXVsdGlwbGUgcHJpdmF0ZSBuZXR3b3JrcyB3aXRoXFxuIDExMTpcXHRcXHQgIGNvbmZsaWN0aW5nIGFkZHJlc3Nlcy4gIEl0IHdvcmtzIGJ5IG1vZGlmeWluZyBJUCBhZGRyZXNzZXNcXG4gMTEyOlxcdFxcdCAgaW5zaWRlIFNOTVAgcGF5bG9hZHMgdG8gbWF0Y2ggSVAtbGF5ZXIgTkFUIG1hcHBpbmcuXFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdCAgVGhpcyBpcyB0aGUgXFxcImJhc2ljXFxcIiBmb3JtIG9mIFNOTVAtQUxHLCBhcyBkZXNjcmliZWQgaW4gUkZDIDI5NjJcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTE3OlxcdFxcbiAxMTg6XFx0Y29uZmlnIE5GX05BVF9QUFRQXFxuIDExOTpcXHRcXHR0cmlzdGF0ZVxcbiAxMjA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTIxOlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE5GX05BVF9IMzIzXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZVxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTI2OlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcXG4gMTI3OlxcdFxcbiAxMjg6XFx0ZW5kaWYgIyBORl9OQVRcXG4gMTI5OlxcdFxcbiAxMzA6XFx0Y29uZmlnIElQX05GX0lQVEFCTEVTXFxuIDEzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXFxcIlxcbiAxMzI6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuIDEzMzpcXHRcXHRzZWxlY3QgTkVURklMVEVSX1hUQUJMRVNcXG4gMTM0OlxcdFxcdGhlbHBcXG4gMTM1OlxcdFxcdCAgaXB0YWJsZXMgaXMgYSBnZW5lcmFsLCBleHRlbnNpYmxlIHBhY2tldCBpZGVudGlmaWNhdGlvbiBmcmFtZXdvcmsuXFxuIDEzNjpcXHRcXHQgIFRoZSBwYWNrZXQgZmlsdGVyaW5nIGFuZCBmdWxsIE5BVCAobWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcsXFxuIDEzNzpcXHRcXHQgIGV0Yykgc3Vic3lzdGVtcyBub3cgdXNlIHRoaXM6IHNheSBgWScgb3IgYE0nIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlXFxuIDEzODpcXHRcXHQgIGVpdGhlciBvZiB0aG9zZS5cXG4gMTM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzo0Ny40MjExNDM5NzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5NjUxMjYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIG5ldHdvcmtpbmcvbmV0ZmlsdGVyOlxuXG4qKkRlcGVuZGVuY3kgQ2hhaW4gYW5kIENvbmZpZ3VyYXRpb24gQ29udGV4dCoqXG5cblJpZ2h0LCBzbyBgTkZfTkFUX0gzMjNgLiBUaGF0J3MgYSBjbGFzc2ljIOKAkyBpdCByZWxpZXMgb24gY29ubmVjdGlvbiB0cmFja2luZywgc3BlY2lmaWNhbGx5IGBORl9DT05OVFJBQ0tgLiBBbmQsIGJ5IGRlZmF1bHQsIGl0IHVzdWFsbHkgYXNzdW1lcyB0aGUgSC4zMjMtc3BlY2lmaWMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGlzIGFsc28gZW5hYmxlZC4gTWFrZXMgc2Vuc2UuIEguMzIzIE5BVCB3b3VsZG4ndCBiZSB2ZXJ5IHVzZWZ1bCB3aXRob3V0IHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdGhvdWdoLCBzbyBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgYEtjb25maWdgIGZpbGUuIEknbGwgY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMjM5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCBhbmQgd2hhdCB0aGUgZGVmYXVsdHMgYXJlLiBUaGF0J3Mgd2hlcmUgdGhlIG9wdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgc2VsZWN0aW9ucyBhcmUgdXN1YWxseSBzcGVjaWZpZWQuIEtub3dpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NTAuODE3NjYwMjg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMwOlxcdFxcdGhlbHBcXG4gMjMxOlxcdFxcdCAgVHJhY2tpbmcgRlRQIGNvbm5lY3Rpb25zIGlzIHByb2JsZW1hdGljOiBzcGVjaWFsIGhlbHBlcnMgYXJlXFxuIDIzMjpcXHRcXHQgIHJlcXVpcmVkIGZvciB0cmFja2luZyB0aGVtLCBhbmQgZG9pbmcgbWFzcXVlcmFkaW5nIGFuZCBvdGhlciBmb3Jtc1xcbiAyMzM6XFx0XFx0ICBvZiBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gb24gdGhlbS5cXG4gMjM0OlxcdFxcbiAyMzU6XFx0XFx0ICBUaGlzIGlzIEZUUCBzdXBwb3J0IG9uIExheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvbiB0cmFja2luZy5cXG4gMjM2OlxcdFxcbiAyMzc6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjM4OlxcdFxcbiAyMzk6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxuIDI0MDpcXHRcXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4gMjQxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDI0MjpcXHRcXHRoZWxwXFxuIDI0MzpcXHRcXHQgIEguMzIzIGlzIGEgVm9JUCBzaWduYWxsaW5nIHByb3RvY29sIGZyb20gSVRVLVQuIEFzIG9uZSBvZiB0aGUgbW9zdFxcbiAyNDQ6XFx0XFx0ICBpbXBvcnRhbnQgVm9JUCBwcm90b2NvbHMsIGl0IGlzIHdpZGVseSB1c2VkIGJ5IHZvaWNlIGhhcmR3YXJlIGFuZFxcbiAyNDU6XFx0XFx0ICBzb2Z0d2FyZSBpbmNsdWRpbmcgdm9pY2UgZ2F0ZXdheXMsIElQIHBob25lcywgTmV0bWVldGluZywgT3BlblBob25lLFxcbiAyNDY6XFx0XFx0ICBHbm9tZW1lZXRpbmcsIGV0Yy5cXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0ICBXaXRoIHRoaXMgbW9kdWxlIHlvdSBjYW4gc3VwcG9ydCBILjMyMyBvbiBhIGNvbm5lY3Rpb24gdHJhY2tpbmcvTkFUXFxuIDI0OTpcXHRcXHQgIGZpcmV3YWxsLlxcbiAyNTA6XFx0XFxuIDI1MTpcXHRcXHQgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIFJBUywgRmFzdCBTdGFydCwgSC4yNDUgVHVubmVsbGluZywgQ2FsbFxcbiAyNTI6XFx0XFx0ICBGb3J3YXJkaW5nLCBSVFAvUlRDUCBhbmQgVC4xMjAgYmFzZWQgYXVkaW8sIHZpZGVvLCBmYXgsIGNoYXQsXFxuIDI1MzpcXHRcXHQgIHdoaXRlYm9hcmQsIGZpbGUgdHJhbnNmZXIsIGV0Yy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZVxcbiAyNTQ6XFx0XFx0ICB2aXNpdCBodHRwOi8vbmF0aDMyMy5zb3VyY2Vmb3JnZS5uZXQvLlxcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxMzo1MC44MTc4MzQ0NzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMjQ5MjIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZCBhYm91dCB0aGlzIG5ldGZpbHRlciBjb25maWd1cmF0aW9uOlxuXG4qKk5ldGZpbHRlciBNb2R1bGUgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCB3ZSBuZWVkIHRoZSBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfTkFUX0gzMjNgIG1vZHVsZXMuIE9mIGNvdXJzZSwgYE5GX05BVF9IMzIzYCBzZWVtcyB0byBkZWZhdWx0IHRvIGBORl9DT05OVFJBQ0tfSDMyM2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQsIGJ1dCBJJ20gcmVhc29uYWJseSBjZXJ0YWluIGl0J3MgYSBzYWZlIGFzc3VtcHRpb24gZm9yIG5vdy5cblxuQmV5b25kIHRob3NlIHNwZWNpZmljIEguMzIzIG1vZHVsZXMsIEkgY2FuJ3QgZm9yZ2V0IHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIG5lZWQgYm90aCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX05BVGAgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseSwgb2J2aW91c2x5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiwgdGhvdWdoLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmb3IgdGhlIGBORl9OQVRgIG1vZHVsZSB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24uIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTM6NTUuNjMwMzMyMDA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA2NTk5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9OTk9aWYgTkZfTkFUXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTAwOmNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiQmFzaWMgU05NUC1BTEcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTExNy1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTg6Y29uZmlnIE5GX05BVF9QUFRQXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTE5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MDAuMjM2OTQwMzI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODU0Nzk0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgSC4zMjMgQ29ubmVjdGlvbiBUcmFja2luZyBhbmQgTkFUKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB3ZSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRfSDMyM2AuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQuIEkga25vdyBgTkZfTkFUX0gzMjNgIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFJpZ2h0LCBhbmQgdGhhdCBsaWtlbHkgbWVhbnMgaXQgZGVwZW5kcyBvbiBgTkZfTkFUYCBpdHNlbGYuIFdlIGNhbid0IGp1c3QgZW5hYmxlIGl0IG9uIGl0cyBvd24uIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCBhbnkgY29uZmlndXJhdGlvbiBjb25mbGljdHMuIFdlIGNhbid0IGhhdmUgYW55IGxvb3NlIGVuZHMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjAzLjkyMjQyNTQwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0c2VsZWN0IE5GX0xPR19TWVNMT0dcXG4gIDkxOlxcdFxcdGhlbHBcXG4gIDkyOlxcdFxcdFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAgOTM6XFx0XFx0KGUuZy4gd2hlbiBydW5uaW5nIG9sZGNvbmZpZykuIEl0IHNlbGVjdHMgQ09ORklHX05GX0xPR19TWVNMT0cuXFxuICA5NDpcXHRcXG4gIDk1OlxcdGNvbmZpZyBORl9SRUpFQ1RfSVBWNFxcbiAgOTY6XFx0XFx0dHJpc3RhdGUgXFxcIklQdjQgcGFja2V0IHJlamVjdGlvblxcXCJcXG4gIDk3OlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAgOTg6XFx0XFxuICA5OTpcXHRpZiBORl9OQVRcXG4gMTAwOlxcdGNvbmZpZyBORl9OQVRfU05NUF9CQVNJQ1xcbiAxMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkJhc2ljIFNOTVAtQUxHIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS19TTk1QXFxuIDEwMzpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxMDQ6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1NOTVBcXG4gMTA1OlxcdFxcdHNlbGVjdCBBU04xXFxuIDEwNjpcXHRcXHRoZWxwXFxuIDEwNzpcXHRcXG4gMTA4OlxcdFxcdCAgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhbiBBcHBsaWNhdGlvbiBMYXllciBHYXRld2F5IChBTEcpIGZvclxcbiAxMDk6XFx0XFx0ICBTTk1QIHBheWxvYWRzLiAgSW4gY29uanVuY3Rpb24gd2l0aCBOQVQsIGl0IGFsbG93cyBhIG5ldHdvcmtcXG4gMTEwOlxcdFxcdCAgbWFuYWdlbWVudCBzeXN0ZW0gdG8gYWNjZXNzIG11bHRpcGxlIHByaXZhdGUgbmV0d29ya3Mgd2l0aFxcbiAxMTE6XFx0XFx0ICBjb25mbGljdGluZyBhZGRyZXNzZXMuICBJdCB3b3JrcyBieSBtb2RpZnlpbmcgSVAgYWRkcmVzc2VzXFxuIDExMjpcXHRcXHQgIGluc2lkZSBTTk1QIHBheWxvYWRzIHRvIG1hdGNoIElQLWxheWVyIE5BVCBtYXBwaW5nLlxcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHQgIFRoaXMgaXMgdGhlIFxcXCJiYXNpY1xcXCIgZm9ybSBvZiBTTk1QLUFMRywgYXMgZGVzY3JpYmVkIGluIFJGQyAyOTYyXFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDExNzpcXHRcXG4gMTE4OlxcdGNvbmZpZyBORl9OQVRfUFBUUFxcbiAxMTk6XFx0XFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MDMuOTIyNTk5MDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTUzOTQzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIEguMzIzIE5BVCBNb2R1bGUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEguMzIzIE5BVCBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYE5GX05BVF9IMzIzYCBpcyBuZXN0ZWQgd2l0aGluIGFuIGBpZiBORl9OQVRgIGJsb2NrLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBiYXNlIE5BVCBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYmVmb3JlIGV2ZW4gY29uc2lkZXJpbmcgdGhlIEguMzIzIHNwZWNpZmljIGZlYXR1cmVzLiBTbywgdG8gYmUgY2xlYXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGBORl9OQVRgLCBgTkZfQ09OTlRSQUNLX0gzMjNgLCBhbmQgb2J2aW91c2x5LCBgTkZfTkFUX0gzMjNgIGl0c2VsZi4gV2UgY2FuJ3QgbmVnbGVjdCB0aGUgdW5kZXJseWluZyBidWlsZGluZyBibG9ja3MuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTGV0J3MgZGlnIGludG8gdGhlIGNvcmUgZnVuY3Rpb25zLiBUaGUgYHNldF9hZGRyYCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSBhbmQgcHJvYmFibHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLiBJIHdvbid0IHNwZW5kIHRvbyBtdWNoIHRpbWUgb24gaXQgZGlyZWN0bHkuIEluc3RlYWQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25zIGFyZSAqY2FsbGluZyogYHNldF9hZGRyYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiBob3cgdGhpcyBhZGRyZXNzIHNldHRpbmcgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwgSC4zMjMgTkFUIHByb2Nlc3MuIFRyYWNpbmcgdGhlIGNhbGxzIHRvIGBzZXRfYWRkcmAgd2lsbCBiZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDgsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjA3LjgxNzk5ODQ4OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTAwOTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfYWRkclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxOTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLW1pcGktZGJpLXNwaS55YW1sPTEyPWRlc2NyaXB0aW9uOiB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1zcGkueWFtbC01NS0gIHRoZSBUeXBlIEMgaW50ZXJmYWNlIGFuZCBtb3N0IGNvbW1vbiBhbW9uZyB0aGVzZSBhcmUgUkdCNTY1IGFuZCBSR0I2NjYuXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtbWlwaS1kYmktc3BpLnlhbWw6NTY6ICBUaGUgTUlQSSBEQ1MgY29tbWFuZCBzZXRfYWRkcmVzc19tb2RlICgzNmgpIGhhcyBvbmUgYml0IHRoYXQgY29udHJvbHMgUkdCL0JHUlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLW1pcGktZGJpLXNwaS55YW1sLTU3LSAgb3JkZXIuIFRoaXMgZ2l2ZXMgZWFjaCBzdXBwb3J0ZWQgUkdCIGZvcm1hdCBhIEJHUiB2YXJpYW50Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0PTI0MD1uZWVkcyB0byBoYW5kbGUgc29tZSBkaWZmZXJlbmNlcy4gVXNlIHRoZSBBUEkgbGlrZSB0aGlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1NC0zLiBUaGUgaGFyZHdhcmUgZHJpdmVyIGNhbiBub3cgc3RhcnQgZW51bWVyYXRpbmcuIFRoZSBzdGVwcyBpdCBoYW5kbGVzXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0OjI1NTogICBhcmUgdG8gYWNjZXB0IFVTQiBgYHBvd2VyYGAgYW5kIGBgc2V0X2FkZHJlc3NgYCByZXF1ZXN0cy4gT3RoZXIgc3RlcHMgYXJlXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9nYWRnZXQucnN0LTI1Ni0gICBoYW5kbGVkIGJ5IHRoZSBnYWRnZXQgZHJpdmVyLiBJZiB0aGUgZ2FkZ2V0IGRyaXZlciBtb2R1bGUgaXMgdW5sb2FkZWRcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM9NTc9c3RhdGljIHUzMiBzb2NpZDtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTU4LVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NTk6c3RhdGljIHZvaWQgX19pb21lbSAqcmVzZXRfYWRkcjtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTYwLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zNTU9c3RhdGljIGludCBfX2luaXQgbXhzX3Jlc3RhcnRfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNjEtXFx0XFx0bnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCBcXFwiZnNsLGlteDI4LWNsa2N0cmxcXFwiKTtcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2MjpcXHRyZXNldF9hZGRyID0gb2ZfaW9tYXAobnAsIDApO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzYzOlxcdGlmICghcmVzZXRfYWRkcilcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM2NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY2LVxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXFxcImZzbCxpbXgyMy1jbGtjdHJsXFxcIikpXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozNjc6XFx0XFx0cmVzZXRfYWRkciArPSBNWDIzX0NMS0NUUkxfUkVTRVRfT0ZGU0VUO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzY4LVxcdGVsc2VcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjM2OTpcXHRcXHRyZXNldF9hZGRyICs9IE1YMjhfQ0xLQ1RSTF9SRVNFVF9PRkZTRVQ7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zNzAtXFx0b2Zfbm9kZV9wdXQobnApO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz00NTM9c3RhdGljIHZvaWQgbXhzX3Jlc3RhcnQoZW51bSByZWJvb3RfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpjbWQpXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy00NTQte1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6NDU1OlxcdGlmIChyZXNldF9hZGRyKSB7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy00NTYtXFx0XFx0LyogcmVzZXQgdGhlIGNoaXAgKi9cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjQ1NzpcXHRcXHRfX214c19zZXRsKE1YU19DTEtDVFJMX1JFU0VUX0NISVAsIHJlc2V0X2FkZHIpO1xcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtNDU4LVxcbi0tXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jPTI5PXN0YXRpYyBib29sIGlzX2VuYWJsZWQ7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTMwLVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzozMTpzdGF0aWMgdm9pZCBfX2luaXQgdGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KGNvbnN0IHUzMiByZXNldF9hZGRyZXNzKVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy0zMi17XFxuLS1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDEtXFx0ICovXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jOjQyOlxcdHdyaXRlbChyZXNldF9hZGRyZXNzLCBldnBfY3B1X3Jlc2V0KTtcXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmMtNDMtXFx0d21iKCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM9NTY9c3RhdGljIHZvaWQgX19pbml0IHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX2VuYWJsZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTU4LVxcdHZvaWQgX19pb21lbSAqaXJhbV9iYXNlID0gSU9fQUREUkVTUyhURUdSQV9JUkFNX1JFU0VUX0JBU0UpO1xcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYzo1OTpcXHRjb25zdCB1MzIgcmVzZXRfYWRkcmVzcyA9IFRFR1JBX0lSQU1fUkVTRVRfQkFTRSArXFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTYwLVxcdFxcdFxcdFxcdFxcdFxcdHRlZ3JhX2NwdV9yZXNldF9oYW5kbGVyX29mZnNldDtcXG4tLVxcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy02OC1cXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6Njk6XFx0ZXJyID0gY2FsbF9maXJtd2FyZV9vcChzZXRfY3B1X2Jvb3RfYWRkciwgMCwgcmVzZXRfYWRkcmVzcyk7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTcwLVxcdHN3aXRjaCAoZXJyKSB7XFxuYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC5jLTcxLVxcdGNhc2UgLUVOT1NZUzpcXG5hcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0LmM6NzI6XFx0XFx0dGVncmFfY3B1X3Jlc2V0X2hhbmRsZXJfc2V0KHJlc2V0X2FkZHJlc3MpO1xcbmFyY2gvYXJtL21hY2gtdGVncmEvcmVzZXQuYy03My1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmg9MjY9c3RhdGljIGlubGluZSBpbnQgcnNpX3NldF9tZW1vcnlfcmFuZ2UocGh5c19hZGRyX3Qgc3RhcnQsIHBoeXNfYWRkcl90IGVuZCxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmgtMzItXFx0d2hpbGUgKHN0YXJ0ICE9IGVuZCkge1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpLmg6MzM6XFx0XFx0cmV0ID0gcnNpX3NldF9hZGRyX3JhbmdlX3N0YXRlKHN0YXJ0LCBlbmQsIHN0YXRlLCBmbGFncywgXFx1MDAyNnRvcCk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2kuaC0zNC1cXHRcXHRpZiAocmV0IHx8IHRvcCBcXHUwMDNjIHN0YXJ0IHx8IHRvcCBcXHUwMDNlIGVuZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcnNpX2NtZHMuaD01MD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcnNpX2lwYV9zdGF0ZV9nZXQocGh5c19hZGRyX3Qgc3RhcnQsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3JzaV9jbWRzLmgtNzAtXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oOjcxOnN0YXRpYyBpbmxpbmUgbG9uZyByc2lfc2V0X2FkZHJfcmFuZ2Vfc3RhdGUocGh5c19hZGRyX3Qgc3RhcnQsXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yc2lfY21kcy5oLTcyLVxcdFxcdFxcdFxcdFxcdCAgICBwaHlzX2FkZHJfdCBlbmQsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYz00MjQ9c3RhdGljIGludCBwdHJhY2VfaGJwX3NldF9jdHJsKHVuc2lnbmVkIGludCBub3RlX3R5cGUsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy00NDgtXFxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmM6NDQ5OnN0YXRpYyBpbnQgcHRyYWNlX2hicF9zZXRfYWRkcih1bnNpZ25lZCBpbnQgbm90ZV90eXBlLFxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTQ1MC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYz01MDY9c3RhdGljIGludCBod19icmVha19zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy01MjgtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYzo1Mjk6XFx0XFx0cmV0ID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRhcmdldCwgaWR4LCBhZGRyKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYy01MzAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jPTIxNjk9c3RhdGljIGludCBjb21wYXRfcHRyYWNlX2hicF9zZXQodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3B0cmFjZS5jLTIxODAtXFx0XFx0YWRkciA9ICprZGF0YTtcXG5hcmNoL2FybTY0L2tlcm5lbC9wdHJhY2UuYzoyMTgxOlxcdFxcdGVyciA9IHB0cmFjZV9oYnBfc2V0X2FkZHIobm90ZV90eXBlLCB0c2ssIGlkeCwgYWRkcik7XFxuYXJjaC9hcm02NC9rZXJuZWwvcHRyYWNlLmMtMjE4Mi1cXHR9IGVsc2Uge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jPTYyNj1zdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X21hc2sodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYy02NDQtXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3B0cmFjZS5jOjY0NTpzdGF0aWMgaW50IHB0cmFjZV9oYnBfc2V0X2FkZHIodW5zaWduZWQgaW50IG5vdGVfdHlwZSxcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNjQ2LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYz03MTc9c3RhdGljIGludCBod19icmVha19zZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXJnZXQsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNzQxLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9wdHJhY2UuYzo3NDI6XFx0XFx0cmV0ID0gcHRyYWNlX2hicF9zZXRfYWRkcihub3RlX3R5cGUsIHRhcmdldCwgaWR4LCBhZGRyKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHRyYWNlLmMtNzQzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM9NDg0PXN0YXRpYyB2b2lkIGF0YXJpX3Jlc2V0KHZvaWQpXFxuLS1cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg2LVxcdGxvbmcgdGNfdmFsID0gMDtcXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NDg3OlxcdGxvbmcgcmVzZXRfYWRkcjtcXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmMtNDg4LVxcbi0tXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5Mi1cXHQgKi9cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NDkzOlxcdHJlc2V0X2FkZHIgPSBNQUNIX0lTX01FRFVTQSB8fCBNQUNIX0lTX0FCNDAgPyAweGUwMDAzMCA6XFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTQ5NC1cXHRcXHQgICAgICoodW5zaWduZWQgbG9uZyAqKSAweGZmMDAwMDA0O1xcbi0tXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU1NS1cXHRcXHRcXHQ6IC8qIG5vIG91dHB1dHMgKi9cXG5hcmNoL202OGsvYXRhcmkvY29uZmlnLmM6NTU2OlxcdFxcdFxcdDogXFxcImFcXFwiIChyZXNldF9hZGRyKVxcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NTctXFx0XFx0XFx0OiBcXFwiZDBcXFwiKTtcXG4tLVxcbmFyY2gvbTY4ay9hdGFyaS9jb25maWcuYy01NjItXFx0XFx0XFx0OiAvKiBubyBvdXRwdXRzICovXFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jOjU2MzpcXHRcXHRcXHQ6IFxcXCJtXFxcIiAodGNfdmFsKSwgXFxcImFcXFwiIChyZXNldF9hZGRyKSk7XFxuYXJjaC9tNjhrL2F0YXJpL2NvbmZpZy5jLTU2NC19XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTE3MT1zdGF0aWMgaW50IF9faW5pdCByZWdpc3Rlcl9zaGFyZWQodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMTc5LVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmM6MTgwOlxcdHNoYXJlZF9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVERNQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xODEtXFx0c2hhcmVkX3Jlc1swXS5lbmQgPSBzaGFyZWRfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTMtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoxOTQ6XFx0c2hhcmVkX3Jlc1sxXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BQyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTUtXFx0c2hhcmVkX3Jlc1sxXS5lbmQgPSBzaGFyZWRfcmVzWzFdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTctXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoxOTg6XFx0c2hhcmVkX3Jlc1syXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9FTkVURE1BUyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0xOTktXFx0c2hhcmVkX3Jlc1syXS5lbmQgPSBzaGFyZWRfcmVzWzJdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYz0yMTA9aW50IF9faW5pdCBiY202M3h4X2VuZXRfcmVnaXN0ZXIoaW50IHVuaXQsXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyNy1cXHRpZiAodW5pdCA9PSAwKSB7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYzoyMjg6XFx0XFx0ZW5ldDBfcmVzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0VORVQwKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTIyOS1cXHRcXHRlbmV0MF9yZXNbMF0uZW5kID0gZW5ldDBfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0yMzUtXFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjIzNjpcXHRcXHRlbmV0MV9yZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfRU5FVDEpO1xcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1lbmV0LmMtMjM3LVxcdFxcdGVuZXQxX3Jlc1swXS5lbmQgPSBlbmV0MV9yZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jPTI5MT1iY202M3h4X2VuZXRzd19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgYmNtNjN4eF9lbmV0c3dfcGxhdGZvcm1fZGF0YSAqcGQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jLTMwMS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtZW5ldC5jOjMwMjpcXHRlbmV0c3dfcmVzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0VORVRTVyk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWVuZXQuYy0zMDMtXFx0ZW5ldHN3X3Jlc1swXS5lbmQgPSBlbmV0c3dfcmVzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LWhzc3BpLmM9MzY9aW50IF9faW5pdCBiY202M3h4X2hzc3BpX3JlZ2lzdGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYy00MC1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYzo0MTpcXHRzcGlfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX0hTU1BJKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtaHNzcGkuYy00Mi1cXHRzcGlfcmVzb3VyY2VzWzBdLmVuZCA9IHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcGNtY2lhLmM9MTA0PWludCBfX2luaXQgYmNtNjN4eF9wY21jaWFfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1wY21jaWEuYy0xMjQtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jOjEyNTpcXHRwY21jaWFfcmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1BDTUNJQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXBjbWNpYS5jLTEyNi1cXHRwY21jaWFfcmVzb3VyY2VzWzBdLmVuZCA9IHBjbWNpYV9yZXNvdXJjZXNbMF0uc3RhcnQgK1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXJuZy5jPTI5PXN0YXRpYyBpbnQgX19pbml0IGJjbTYzeHhfcm5nX3JlZ2lzdGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcm5nLmMtMzMtXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXJuZy5jOjM0OlxcdHJuZ19yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfUk5HKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtcm5nLmMtMzUtXFx0cm5nX3Jlc291cmNlc1swXS5lbmQgPSBybmdfcmVzb3VyY2VzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXNwaS5jPTM5PWludCBfX2luaXQgYmNtNjN4eF9zcGlfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00My1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtc3BpLmM6NDQ6XFx0c3BpX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9TUEkpO1xcbmFyY2gvbWlwcy9iY202M3h4L2Rldi1zcGkuYy00NS1cXHRzcGlfcmVzb3VyY2VzWzBdLmVuZCA9IHNwaV9yZXNvdXJjZXNbMF0uc3RhcnQ7XFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jPTUzPWludCBfX2luaXQgYmNtNjN4eF91YXJ0X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmMtNjItXFx0aWYgKGlkID09IDApIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjYzOlxcdFxcdHVhcnQwX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMCk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy02NC1cXHRcXHR1YXJ0MF9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDBfcmVzb3VyY2VzWzBdLnN0YXJ0ICtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11YXJ0LmMtNjktXFx0aWYgKGlkID09IDEpIHtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdWFydC5jOjcwOlxcdFxcdHVhcnQxX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VQVJUMSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVhcnQuYy03MS1cXHRcXHR1YXJ0MV9yZXNvdXJjZXNbMF0uZW5kID0gdWFydDFfcmVzb3VyY2VzWzBdLnN0YXJ0ICtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jPTM2PWludCBfX2luaXQgYmNtNjN4eF91c2JkX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmRfcGxhdGZvcm1fZGF0YSAqcGQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy00Ni1cXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYzo0NzpcXHR1c2JkX3Jlc291cmNlc1swXS5zdGFydCA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9VU0JEKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtdXNiLXVzYmQuYy00OC1cXHR1c2JkX3Jlc291cmNlc1swXS5lbmQgPSB1c2JkX3Jlc291cmNlc1swXS5zdGFydCArIFJTRVRfVVNCRF9TSVpFIC0gMTtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jLTUwLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi11c2ItdXNiZC5jOjUxOlxcdHVzYmRfcmVzb3VyY2VzWzFdLnN0YXJ0ID0gYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhSU0VUX1VTQkRNQSk7XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXVzYi11c2JkLmMtNTItXFx0dXNiZF9yZXNvdXJjZXNbMV0uZW5kID0gdXNiZF9yZXNvdXJjZXNbMV0uc3RhcnQgKyBSU0VUX1VTQkRNQV9TSVpFIC0gMTtcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYz0zNz1zdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3dkdF9yZWdpc3Rlcih2b2lkKVxcbmFyY2gvbWlwcy9iY202M3h4L2Rldi13ZHQuYy0zOC17XFxuYXJjaC9taXBzL2JjbTYzeHgvZGV2LXdkdC5jOjM5OlxcdHdkdF9yZXNvdXJjZXNbMF0uc3RhcnQgPSBiY202M3h4X3JlZ3NldF9hZGRyZXNzKFJTRVRfV0RUKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9kZXYtd2R0LmMtNDAtXFx0d2R0X3Jlc291cmNlc1swXS5lbmQgPSB3ZHRfcmVzb3VyY2VzWzBdLnN0YXJ0O1xcbi0tXFxuYXJjaC9taXBzL2JjbTYzeHgvaXJxLmM9NDAyPXN0YXRpYyB2b2lkIGJjbTYzeHhfaW5pdF9pcnEodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY202M3h4L2lycS5jLTQwNS1cXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDY6XFx0aXJxX3N0YXRfYWRkclswXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDc6XFx0aXJxX21hc2tfYWRkclswXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDg6XFx0aXJxX3N0YXRfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYzo0MDk6XFx0aXJxX21hc2tfYWRkclsxXSA9IGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MoUlNFVF9QRVJGKTtcXG5hcmNoL21pcHMvYmNtNjN4eC9pcnEuYy00MTAtXFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oPTE5PWV4dGVybiB2b2lkIHZkbWFfc2V0X21vZGUoaW50IGNoYW5uZWwsIGludCBtb2RlKTtcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vamF6emRtYS5oOjIwOmV4dGVybiB2b2lkIHZkbWFfc2V0X2FkZHIoaW50IGNoYW5uZWwsIGxvbmcgYWRkcik7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenpkbWEuaC0yMS1leHRlcm4gdm9pZCB2ZG1hX3NldF9jb3VudChpbnQgY2hhbm5lbCwgaW50IGNvdW50KTtcXG4tLVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9jcHUuaD01NTA9ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJjbTYzeHhfcmVnc19iYXNlO1xcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2NwdS5oLTU5NS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfY3B1Lmg6NTk2OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBiY202M3h4X3JlZ3NldF9hZGRyZXNzKGVudW0gYmNtNjN4eF9yZWdzX3NldCBzZXQpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2NwdS5oLTU5Ny17XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02NS0gKi9cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaDo2NjojZGVmaW5lIGJjbV9yc2V0X3JlYWRiKHMsIG8pXFx0YmNtX3JlYWRiKGJjbTYzeHhfcmVnc2V0X2FkZHJlc3MocykgKyAobykpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6Njc6I2RlZmluZSBiY21fcnNldF9yZWFkdyhzLCBvKVxcdGJjbV9yZWFkdyhiY202M3h4X3JlZ3NldF9hZGRyZXNzKHMpICsgKG8pKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtNjN4eF9pby5oOjY4OiNkZWZpbmUgYmNtX3JzZXRfcmVhZGwocywgbylcXHRiY21fcmVhZGwoYmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC02OS0jZGVmaW5lIGJjbV9yc2V0X3dyaXRlYihzLCB2LCBvKVxcdGJjbV93cml0ZWIoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzA6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03MS0jZGVmaW5lIGJjbV9yc2V0X3dyaXRldyhzLCB2LCBvKVxcdGJjbV93cml0ZXcoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzI6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03My0jZGVmaW5lIGJjbV9yc2V0X3dyaXRlbChzLCB2LCBvKVxcdGJjbV93cml0ZWwoKHYpLCBcXFxcXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY202M3h4X2lvLmg6NzQ6XFx0XFx0XFx0XFx0XFx0YmNtNjN4eF9yZWdzZXRfYWRkcmVzcyhzKSArIChvKSlcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTYzeHhfaW8uaC03NS1cXG4tLVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg9NjU9c3RhdGljIGlubGluZSB2b2lkIGZkX3NldF9kbWFfYWRkcihjaGFyICphKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5LmgtNjYte1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWphenovZmxvcHB5Lmg6Njc6XFx0dmRtYV9zZXRfYWRkcihKQVpaX0ZMT1BQWV9ETUEsIHZkbWFfcGh5czJsb2coQ1BIWVNBRERSKCh1bnNpZ25lZCBsb25nKWEpKSk7XFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtamF6ei9mbG9wcHkuaC02OC19XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTUyLSNkZWZpbmUgcmJ0eDQ5Mjdfc29mdGludF9hZGRyXFx0KChfX3U4IF9faW9tZW0gKilSQlRYNDkyN19TT0ZUSU5UX0FERFIpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaDo1MzojZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyICgoX191OCBfX2lvbWVtICopUkJUWDQ5MjdfU09GVFJFU0VUX0FERFIpXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3R4eDkvcmJ0eDQ5MjcuaC01NC0jZGVmaW5lIHJidHg0OTI3X3NvZnRyZXNldGxvY2tfYWRkclxcdFxcXFxcXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vdHh4OS9yYnR4NDkyNy5oLTU1LVxcdFxcdFxcdFxcdCgoX191OCBfX2lvbWVtICopUkJUWDQ5MjdfU09GVFJFU0VUTE9DS19BRERSKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3Lmg6NTY6I2RlZmluZSByYnR4NDkyN19wY2lyZXNldF9hZGRyXFx0KChfX3U4IF9faW9tZW0gKilSQlRYNDkyN19QQ0lSRVNFVF9BRERSKVxcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS90eHg5L3JidHg0OTI3LmgtNTctXFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM9NDI5PUVYUE9SVF9TWU1CT0wodmRtYV9zZXRfbW9kZSk7XFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDMzLSAqL1xcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYzo0MzQ6dm9pZCB2ZG1hX3NldF9hZGRyKGludCBjaGFubmVsLCBsb25nIGFkZHIpXFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNS17XFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzNi1cXHRpZiAodmRtYV9kZWJ1ZylcXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmM6NDM3OlxcdFxcdHByaW50ayhcXFwidmRtYV9zZXRfYWRkcjogY2hhbm5lbCAlZCwgYWRkciAlbHhcXFxcblxcXCIsIGNoYW5uZWwsXFxuYXJjaC9taXBzL2phenovamF6emRtYS5jLTQzOC1cXHRcXHQgICAgICAgYWRkcik7XFxuLS1cXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQyLVxcbmFyY2gvbWlwcy9qYXp6L2phenpkbWEuYzo0NDM6RVhQT1JUX1NZTUJPTCh2ZG1hX3NldF9hZGRyKTtcXG5hcmNoL21pcHMvamF6ei9qYXp6ZG1hLmMtNDQ0LVxcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz02Mj1zdGF0aWMgdm9pZCBfX2luaXQgdHg0OTI3X3BjaV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy03NC1cXHQvKiBSZXNldCBQQ0kgQnVzICovXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzo3NTpcXHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy03Ni1cXHQvKiBSZXNldCBQQ0lDICovXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTgzLVxcdHR4eDlfY2xlYXI2NChcXHUwMDI2dHg0OTI3X2NjZmdwdHItXFx1MDAzZWNsa2N0ciwgVFg0OTI3X0NMS0NUUl9QQ0lSU1QpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6ODQ6XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtODUtXFx0aW9iKCk7XFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTkyLVxcdFxcdC8qIFJlc2V0IFBDSSBCdXMgKi9cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjkzOlxcdFxcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTk0LVxcdFxcdC8qIFJlc2V0IFBDSUMgKi9cXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtOTktXFx0XFx0dHh4OV9jbGVhcjY0KFxcdTAwMjZ0eDQ5MjdfY2NmZ3B0ci1cXHUwMDNlY2xrY3RyLCBUWDQ5MjdfQ0xLQ1RSX1BDSVJTVCk7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxMDA6XFx0XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTAxLVxcdFxcdGlvYigpO1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYz0xMDk9c3RhdGljIHZvaWQgX19pbml0IHR4NDkzN19wY2lfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTIxLVxcdC8qIFJlc2V0IFBDSSBCdXMgKi9cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjEyMjpcXHR3cml0ZWIoMSwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMjMtXFx0LyogUmVzZXQgUENJQyAqL1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzAtXFx0dHh4OV9jbGVhcjY0KFxcdTAwMjZ0eDQ5MzhfY2NmZ3B0ci1cXHUwMDNlY2xrY3RyLCBUWDQ5MzhfQ0xLQ1RSX1BDSVJTVCk7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxMzE6XFx0d3JpdGViKDAsIHJidHg0OTI3X3BjaXJlc2V0X2FkZHIpO1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTMyLVxcdGlvYigpO1xcbi0tXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xMzktXFx0XFx0LyogUmVzZXQgUENJIEJ1cyAqL1xcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmM6MTQwOlxcdFxcdHdyaXRlYigxLCByYnR4NDkyN19wY2lyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0MS1cXHRcXHQvKiBSZXNldCBQQ0lDICovXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE0Ni1cXHRcXHR0eHg5X2NsZWFyNjQoXFx1MDAyNnR4NDkzOF9jY2ZncHRyLVxcdTAwM2VjbGtjdHIsIFRYNDkzOF9DTEtDVFJfUENJUlNUKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jOjE0NzpcXHRcXHR3cml0ZWIoMCwgcmJ0eDQ5MjdfcGNpcmVzZXRfYWRkcik7XFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYy0xNDgtXFx0XFx0aW9iKCk7XFxuLS1cXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jPTE4Nz1zdGF0aWMgdm9pZCB0b3NoaWJhX3JidHg0OTI3X3Jlc3RhcnQoY2hhciAqY29tbWFuZClcXG4tLVxcbmFyY2gvbWlwcy90eHg5L3JidHg0OTI3L3NldHVwLmMtMTk2LVxcdC8qIGRvIGEgcy93IHJlc2V0ICovXFxuYXJjaC9taXBzL3R4eDkvcmJ0eDQ5Mjcvc2V0dXAuYzoxOTc6XFx0d3JpdGViKDEsIHJidHg0OTI3X3NvZnRyZXNldF9hZGRyKTtcXG5hcmNoL21pcHMvdHh4OS9yYnR4NDkyNy9zZXR1cC5jLTE5OC1cXG4tLVxcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oPTExPXN0cnVjdCBjcHVpbmZvIHtcXG4tLVxcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM2LVxcdC8qIEFkZHJlc3NlcyAqL1xcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oOjM3OlxcdHUzMiByZXNldF9hZGRyO1xcbmFyY2gvbmlvczIvaW5jbHVkZS9hc20vY3B1aW5mby5oLTM4LVxcdHUzMiBleGNlcHRpb25fYWRkcjtcXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYz0zMT12b2lkIF9faW5pdCBzZXR1cF9jcHVpbmZvKHZvaWQpXFxuLS1cXG5hcmNoL25pb3MyL2tlcm5lbC9jcHVpbmZvLmMtMTAzLVxcbmFyY2gvbmlvczIva2VybmVsL2NwdWluZm8uYzoxMDQ6XFx0Y3B1aW5mby5yZXNldF9hZGRyID0gZmNwdShjcHUsIFxcXCJhbHRyLHJlc2V0LWFkZHJcXFwiKTtcXG5hcmNoL25pb3MyL2tlcm5lbC9jcHVpbmZvLmMtMTA1LVxcdGNwdWluZm8uZXhjZXB0aW9uX2FkZHIgPSBmY3B1KGNwdSwgXFxcImFsdHIsZXhjZXB0aW9uLWFkZHJcXFwiKTtcXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYz00Mz12b2lkIG1hY2hpbmVfcmVzdGFydChjaGFyICpfX3VudXNlZClcXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNDQte1xcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYzo0NTpcXHRwcl9ub3RpY2UoXFxcIk1hY2hpbmUgcmVzdGFydCAoJTA4eCkuLi5cXFxcblxcXCIsIGNwdWluZm8ucmVzZXRfYWRkcik7XFxuYXJjaC9uaW9zMi9rZXJuZWwvcHJvY2Vzcy5jLTQ2LVxcdGxvY2FsX2lycV9kaXNhYmxlKCk7XFxuLS1cXG5hcmNoL25pb3MyL2tlcm5lbC9wcm9jZXNzLmMtNDktXFx0OlxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYzo1MDpcXHQ6IFxcXCJyXFxcIiAoY3B1aW5mby5yZXNldF9hZGRyKVxcbmFyY2gvbmlvczIva2VybmVsL3Byb2Nlc3MuYy01MS1cXHQ6IFxcXCJyNFxcXCIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTI1PXN0YXRpYyB2b2lkIF9faW5pdCBmd25taV9pbml0KHZvaWQpXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTI2LXtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMjc6XFx0dW5zaWduZWQgbG9uZyBzeXN0ZW1fcmVzZXRfYWRkciwgbWFjaGluZV9jaGVja19hZGRyO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTEyOC1cXHR1OCAqbWNlX2RhdGFfYnVmO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTQ2LVxcdCAqIGFkZHJlc3NlcyBhbnl3YXksIGFuZCB1c2UgYSB0cmFtcG9saW5lIHRvIGdldCB0byB0aGUgcmVhbCBjb2RlLiAqL1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjE0NzpcXHRzeXN0ZW1fcmVzZXRfYWRkciAgPSBfX3BhKHN5c3RlbV9yZXNldF9md25taSkgLSBQSFlTSUNBTF9TVEFSVDtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNDgtXFx0bWFjaGluZV9jaGVja19hZGRyID0gX19wYShtYWNoaW5lX2NoZWNrX2Z3bm1pKSAtIFBIWVNJQ0FMX1NUQVJUO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTUwLVxcdGlmICgwID09IHJ0YXNfY2FsbChpYm1fbm1pX3JlZ2lzdGVyX3Rva2VuLCAyLCAxLCBOVUxMLFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjE1MTpcXHRcXHRcXHQgICBzeXN0ZW1fcmVzZXRfYWRkciwgbWFjaGluZV9jaGVja19hZGRyKSlcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xNTItXFx0XFx0ZndubWlfYWN0aXZlID0gMTtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjE5OD1zdGF0aWMgYm9vbCBicGZfaXNfbmV3X2FkZHJfc2FuZShzdHJ1Y3QgYnBmX2ppdCAqaml0LCBpbnQgaSlcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjIxNC0gKi9cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyMTU6c3RhdGljIGludCBicGZfc2V0X2FkZHIoc3RydWN0IGJwZl9qaXQgKmppdCwgaW50IGkpXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjE2LXtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjIzMz1zdGF0aWMgaW50IGJwZl9qaXRfcHJvZyhzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU1LVxcdGJwZl9qaXRfcHJvbG9ndWUoaml0LCBmcCk7XFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzoyMjU2OlxcdGlmIChicGZfc2V0X2FkZHIoaml0LCAwKSBcXHUwMDNjIDApXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjU3LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjI2Mi1cXHRcXHQvKiBOZXh0IGluc3RydWN0aW9uIGFkZHJlc3MgKi9cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjIyNjM6XFx0XFx0aWYgKGJwZl9zZXRfYWRkcihqaXQsIGkgKyBpbnNuX2NvdW50KSBcXHUwMDNjIDApXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yMjY0LVxcdFxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jPTQ5NT1zdGF0aWMgaW50IGFtZHhkbmFfZ2VtX29ial9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iaixcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jLTUxMi1cXHRYRE5BX0RCRyh4ZG5hLCBcXFwiQk8gbWFwX29mZnNldCAweCVsbHggdHlwZSAlZCB1c2VycHRyIDB4JWx4IHNpemUgMHglbHhcXFwiLFxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jOjUxMzpcXHRcXHQgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFxcdTAwMjZnb2JqLVxcdTAwM2V2bWFfbm9kZSksIGFiby1cXHUwMDNldHlwZSxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9nZW0uYy01MTQtXFx0XFx0IHZtYS1cXHUwMDNldm1fc3RhcnQsIGdvYmotXFx1MDAzZXNpemUpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmM9MTIwMT1pbnQgYW1keGRuYV9kcm1fZ2V0X2JvX2luZm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxwKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfZ2VtLmMtMTIyMi1cXHRpZiAoYWJvLVxcdTAwM2V0eXBlICE9IEFNRFhETkFfQk9fREVWKVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jOjEyMjM6XFx0XFx0YXJncy1cXHUwMDNlbWFwX29mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcXHUwMDI2Z29iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2dlbS5jLTEyMjQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jPTk3PXN0YXRpYyBpbnQgZXRob3N1X2lvY3RsX2JvX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTEwOS1cXG5kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmM6MTEwOlxcdGFyZ3MtXFx1MDAzZW9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihcXHUwMDI2b2JqLVxcdTAwM2V2bWFfbm9kZSk7XFxuZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jLTExMS1cXHRkcm1fZ2VtX29iamVjdF9wdXQob2JqKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jPTQ4NT1pbnQgaXZwdV9ib19pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jLTQ5OS1cXHRhcmdzLVxcdTAwM2VmbGFncyA9IGJvLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL2FjY2VsL2l2cHUvaXZwdV9nZW0uYzo1MDA6XFx0YXJncy1cXHUwMDNlbW1hcF9vZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXFx1MDAyNm9iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvaXZwdS9pdnB1X2dlbS5jLTUwMS1cXHRhcmdzLVxcdTAwM2V2cHVfYWRkciA9IGJvLVxcdTAwM2V2cHVfYWRkcjtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYz03OTc9aW50IHFhaWNfbW1hcF9ib19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjUtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGF0YS5jOjgyNjpcXHRhcmdzLVxcdTAwM2VvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoXFx1MDAyNm9iai1cXHUwMDNldm1hX25vZGUpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RhdGEuYy04MjctXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3JvY2tldC9yb2NrZXRfZ2VtLmM9NjA9aW50IHJvY2tldF9pb2N0bF9jcmVhdGVfYm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTEwOC1cXHRya3Rfb2JqLVxcdTAwM2VzaXplID0gcmV0O1xcbmRyaXZlcnMvYWNjZWwvcm9ja2V0L3JvY2tldF9nZW0uYzoxMDk6XFx0YXJncy1cXHUwMDNlb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKFxcdTAwMjZnZW1fb2JqLVxcdTAwM2V2bWFfbm9kZSk7XFxuZHJpdmVycy9hY2NlbC9yb2NrZXQvcm9ja2V0X2dlbS5jLTExMC1cXHRhcmdzLVxcdTAwM2VkbWFfYWRkcmVzcyA9IHJrdF9vYmotXFx1MDAzZW1tLnN0YXJ0O1xcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGljYS9hY3Jlc3JjLmg9MjIwPXZvaWRcXG5kcml2ZXJzL2FjcGkvYWNwaWNhL2FjcmVzcmMuaDoyMjE6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXFxuZHJpdmVycy9hY3BpL2FjcGljYS9hY3Jlc3JjLmgtMjIyLVxcdFxcdFxcdCAgIHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSk7XFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTI3Mj1hY3BpX3JzX2dldF9hZGRyZXNzX2NvbW1vbihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jLTMwOS0gKlxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmM6MzEwOiAqIEZVTkNUSU9OOiAgICBhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vblxcbmRyaXZlcnMvYWNwaS9hY3BpY2EvcnNhZGRyLmMtMzExLSAqXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzYWRkci5jPTMyMj12b2lkXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYzozMjM6YWNwaV9yc19zZXRfYWRkcmVzc19jb21tb24odW5pb24gYW1sX3Jlc291cmNlICphbWwsXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc2FkZHIuYy0zMjQtXFx0XFx0XFx0ICAgc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGljYS9yc21pc2MuYz00NDY9YWNwaV9yc19jb252ZXJ0X3Jlc291cmNlX3RvX2FtbChzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2Ni1cXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jOjY2NzpcXHRcXHRcXHRhY3BpX3JzX3NldF9hZGRyZXNzX2NvbW1vbihhbWwsIHJlc291cmNlKTtcXG5kcml2ZXJzL2FjcGkvYWNwaWNhL3JzbWlzYy5jLTY2OC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz03Nj1zdGF0aWMgaW50IGFjcGlfZ3BlX2lycV9zZXR1cChzdHJ1Y3Qgc2lfc21faW8gKmlvKVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEwMi1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MTAzOnN0YXRpYyB2b2lkIGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2Uoc3RydWN0IHJlc291cmNlICpyLCBzdHJ1Y3Qgc2lfc21faW8gKmlvKVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYy0xMDQte1xcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTExMz1pcG1pX2dldF9pbmZvX2Zyb21fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMTIyLVxcdH1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MTIzOlxcdGlwbWlfc2V0X2FkZHJfZGF0YV9hbmRfc3BhY2UocmVzLCBpbyk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTEyNC1cXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYz0yMjc9c3RhdGljIGludCBvZl9pcG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcyLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNzM6XFx0aXBtaV9zZXRfYWRkcl9kYXRhX2FuZF9zcGFjZShcXHUwMDI2cmVzb3VyY2UsIFxcdTAwMjZpbyk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9MTk5PXN0YXRpYyB2b2lkIGFzcGVlZF9rY3NfdXBkYXRlYihzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiByZWcsIHU4IG1hc2ssIHU4IHZhbClcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtMjI3LSAqL1xcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM6MjI4OnN0YXRpYyBpbnQgYXNwZWVkX2tjc19zZXRfYWRkcmVzcyhzdHJ1Y3Qga2NzX2JtY19kZXZpY2UgKmtjc19ibWMsIHUzMiBhZGRyc1syXSwgaW50IG5yX2FkZHJzKVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmMtMjI5LXtcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2tjc19ibWNfYXNwZWVkLmM9NTU1PXN0YXRpYyBpbnQgYXNwZWVkX2tjc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy02MDgtXFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYzo2MDk6XFx0cmMgPSBhc3BlZWRfa2NzX3NldF9hZGRyZXNzKGtjc19ibWMsIGFkZHJzLCBucl9hZGRycyk7XFxuZHJpdmVycy9jaGFyL2lwbWkva2NzX2JtY19hc3BlZWQuYy02MTAtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTI4OD1zdGF0aWMgaW50IG10a19wbGxfcHJlcGFyZV9zZXRjbHIoc3RydWN0IGNsa19odyAqaHcpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMjkxLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYzoyOTI6XFx0d3JpdGVsKEJJVChwbGwtXFx1MDAzZWRhdGEtXFx1MDAzZXBsbF9lbl9iaXQpLCBwbGwtXFx1MDAzZWVuX3NldF9hZGRyKTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMjkzLVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLXBsbC5jPTMyNj1zdHJ1Y3QgY2xrX2h3ICptdGtfY2xrX3JlZ2lzdGVyX3BsbF9vcHMoc3RydWN0IG10a19jbGtfcGxsICpwbGwsXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmMtMzUxLVxcdGlmIChkYXRhLVxcdTAwM2Vlbl9zZXRfcmVnKVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYzozNTI6XFx0XFx0cGxsLVxcdTAwM2Vlbl9zZXRfYWRkciA9IGJhc2UgKyBkYXRhLVxcdTAwM2Vlbl9zZXRfcmVnO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuYy0zNTMtXFx0aWYgKGRhdGEtXFx1MDAzZWVuX2Nscl9yZWcpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg9NjQ9c3RydWN0IG10a19jbGtfcGxsIHtcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03NC1cXHR2b2lkIF9faW9tZW1cXHQqZW5fYWRkcjtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstcGxsLmg6NzU6XFx0dm9pZCBfX2lvbWVtXFx0KmVuX3NldF9hZGRyO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1wbGwuaC03Ni1cXHR2b2lkIF9faW9tZW1cXHQqZW5fY2xyX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzUzPXN0YXRpYyBzdHJ1Y3QgYWVhZF9lZGVzYyAqYWVhZF9lZGVzY19hbGxvYyhzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTU2LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zZyk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU1NzpcXHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIHFtX3NnX2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU1OC1cXHRkcGFhMl9mbF9zZXRfbGVuKGluX2ZsZSwgaW5fbGVuKTtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01NjItXFx0XFx0XFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChvdXRfZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1NjM6XFx0XFx0XFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgc2dfZG1hX2FkZHJlc3MocmVxLVxcdTAwM2VzcmMpKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTY0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2NS1cXHRcXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NnKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6NTY2OlxcdFxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIHFtX3NnX2RtYSArXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU2Ny1cXHRcXHRcXHRcXHRcXHQgICgxICsgISFpdnNpemUpICogc2l6ZW9mKCpzZ190YWJsZSkpO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTU3OC1cXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KG91dF9mbGUsIGRwYWEyX2ZsX3NpbmdsZSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jOjU3OTpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBzZ19kbWFfYWRkcmVzcyhyZXEtXFx1MDAzZWRzdCkpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtNTgxLVxcdFxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2cpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzo1ODI6XFx0XFx0ZHBhYTJfZmxfc2V0X2FkZHIob3V0X2ZsZSwgcW1fc2dfZG1hICsgcW1fc2dfaW5kZXggKlxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy01ODMtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnNnX3RhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MTExND1zdGF0aWMgc3RydWN0IHNrY2lwaGVyX2VkZXNjICpza2NpcGhlcl9lZGVzY19hbGxvYyhzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNDgtXFx0ZHBhYTJfZmxfc2V0X2Zvcm1hdChpbl9mbGUsIGRwYWEyX2ZsX3NnKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI0OTpcXHRkcGFhMl9mbF9zZXRfYWRkcihpbl9mbGUsIGVkZXNjLVxcdTAwM2VxbV9zZ19kbWEpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjUwLVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTMtXFx0aWYgKHJlcS1cXHUwMDNlc3JjID09IHJlcS1cXHUwMDNlZHN0KVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzoxMjU0OlxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKG91dF9mbGUsIGVkZXNjLVxcdTAwM2VxbV9zZ19kbWEgK1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjU1LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpzZ190YWJsZSkpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0xMjU2LVxcdGVsc2VcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MTI1NzpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBlZGVzYy1cXHUwMDNlcW1fc2dfZG1hICsgZHN0X3NnX2lkeCAqXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTEyNTgtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnNnX3RhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM9MzIxNj1zdGF0aWMgaW50IGhhc2hfZGlnZXN0X2tleShzdHJ1Y3QgY2FhbV9oYXNoX2N0eCAqY3R4LCB1MzIgKmtleWxlbiwgdTggKmtleSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zMjY2LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQoaW5fZmxlLCBkcGFhMl9mbF9zaW5nbGUpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozMjY3OlxcdGRwYWEyX2ZsX3NldF9hZGRyKGluX2ZsZSwga2V5X2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTMyNjgtXFx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsICprZXlsZW4pO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zMjY5LVxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzI3MDpcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBrZXlfZG1hKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzI3MS1cXHRkcGFhMl9mbF9zZXRfbGVuKG91dF9mbGUsIGRpZ2VzdHNpemUpO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jPTM1MzI9c3RhdGljIGludCBhaGFzaF91cGRhdGVfY3R4KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmMtMzYxNi1cXHRcXHRkcGFhMl9mbF9zZXRfZm9ybWF0KGluX2ZsZSwgZHBhYTJfZmxfc2cpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYzozNjE3OlxcdFxcdGRwYWEyX2ZsX3NldF9hZGRyKGluX2ZsZSwgZWRlc2MtXFx1MDAzZXFtX3NnX2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MTgtXFx0XFx0ZHBhYTJfZmxfc2V0X2xlbihpbl9mbGUsIGN0eC1cXHUwMDNlY3R4X2xlbiArIHRvX2hhc2gpO1xcbmRyaXZlcnMvY3J5cHRvL2NhYW0vY2FhbWFsZ19xaTIuYy0zNjE5LVxcdFxcdGRwYWEyX2ZsX3NldF9mb3JtYXQob3V0X2ZsZSwgZHBhYTJfZmxfc2luZ2xlKTtcXG5kcml2ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGdfcWkyLmM6MzYyMDpcXHRcXHRkcGFhMl9mbF9zZXRfYWRkcihvdXRfZmxlLCBzdGF0ZS1cXHUwMDNlY3R4X2RtYSk7XFxuZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnX3FpMi5jLTM2MjEtXFx0XFx0ZHBhYTJfZmxfc2V0X2xlbihvdXRfZmxlLCBjdHgtXFx1MDAzZWN0eF9sZW4pO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDoxMi40NDMwMTgwMDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MTA2OTUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG5ldGZpbHRlciBOQVQgSC4zMjMgTW9kdWxlJ3MgQWRkcmVzcyBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGZpbGUgYW5kIHNwZWNpZmljYWxseSB0aGUgYHNldF9hZGRyYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCdzIGNydWNpYWwgYmVjYXVzZSBib3RoIGBuYXRfcnRwX3J0Y3BgIGFuZCBgbmF0X3QxMjBgIGFyZSBjYWxsaW5nIGl0LiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGEgY29yZSBjb21wb25lbnQgZm9yIGFkZHJlc3MgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZS4gTm93LCBgbmF0X3J0cF9ydGNwYCBpcyBpdHNlbGYgY2FsbGVkIHRocm91Z2ggYSBob29rIHNldHVwIGJ5IGBuZl9uYXRfaDMyM19pbml0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgYG5mX25hdF9oMzIzX2luaXRgIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJpbmcgYW5kIGVuYWJsaW5nIHRoZSBlbnRpcmUgSC4zMjMgTkFUIGZ1bmN0aW9uYWxpdHkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBuZl9uYXRfaDMyM19pbml0YCBhbmQgdW5kZXJzdGFuZCAqaG93KiBpdCdzIGludGVncmF0aW5nIGBuYXRfcnRwX3J0Y3BgIGFzIGEgaG9vayBhbmQsIGJ5IGV4dGVuc2lvbiwgaG93IGBzZXRfYWRkcmAgaXMgdWx0aW1hdGVseSBicm91Z2h0IGludG8gcGxheS4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBhZGRyZXNzIHRyYW5zbGF0aW9uIHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc1NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjE2Ljg5NDA5MTg3M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTQwOlxcdH07XFxuIDU0MTpcXHRcXG4gNTQyOlxcdHN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGNhbGxmb3J3YXJkaW5nX25hdCA9IHtcXG4gNTQzOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiY2FsbGZvcndhcmRpbmdcXFwiLFxcbiA1NDQ6XFx0XFx0LmV4cGVjdGZuXFx0PSBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0LFxcbiA1NDU6XFx0fTtcXG4gNTQ2OlxcdFxcbiA1NDc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbiA1NDg6XFx0XFx0LnNldF9oMjQ1X2FkZHIgPSBzZXRfaDI0NV9hZGRyLFxcbiA1NDk6XFx0XFx0LnNldF9oMjI1X2FkZHIgPSBzZXRfaDIyNV9hZGRyLFxcbiA1NTA6XFx0XFx0LnNldF9zaWdfYWRkciA9IHNldF9zaWdfYWRkcixcXG4gNTUxOlxcdFxcdC5zZXRfcmFzX2FkZHIgPSBzZXRfcmFzX2FkZHIsXFxuIDU1MjpcXHRcXHQubmF0X3J0cF9ydGNwID0gbmF0X3J0cF9ydGNwLFxcbiA1NTM6XFx0XFx0Lm5hdF90MTIwID0gbmF0X3QxMjAsXFxuIDU1NDpcXHRcXHQubmF0X2gyNDUgPSBuYXRfaDI0NSxcXG4gNTU1OlxcdFxcdC5uYXRfY2FsbGZvcndhcmRpbmcgPSBuYXRfY2FsbGZvcndhcmRpbmcsXFxuIDU1NjpcXHRcXHQubmF0X3E5MzEgPSBuYXRfcTkzMSxcXG4gNTU3OlxcdH07XFxuIDU1ODpcXHRcXG4gNTU5OlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiA1NjA6XFx0c3RhdGljIGludCBfX2luaXQgbmZfbmF0X2gzMjNfaW5pdCh2b2lkKVxcbiA1NjE6XFx0e1xcbiA1NjI6XFx0XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFxcdTAwMjZuYXRob29rcyk7XFxuIDU2MzpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNnE5MzFfbmF0KTtcXG4gNTY0OlxcdFxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcXG4gNTY1OlxcdFxcdHJldHVybiAwO1xcbiA1NjY6XFx0fVxcbiA1Njc6XFx0XFxuIDU2ODpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gNTY5OlxcdHN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXFxuIDU3MDpcXHR7XFxuIDU3MTpcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG5mY3RfaDMyM19uYXRfaG9vaywgTlVMTCk7XFxuIDU3MjpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbiA1NzM6XFx0XFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNmNhbGxmb3J3YXJkaW5nX25hdCk7XFxuIDU3NDpcXHRcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4gNTc1OlxcdFxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KFxcdTAwMjZxOTMxX25hdCk7XFxuIDU3NjpcXHRcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcXHUwMDI2Y2FsbGZvcndhcmRpbmdfbmF0KTtcXG4gNTc3OlxcdH1cXG4gNTc4OlxcdFxcbiA1Nzk6XFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuIDU4MDpcXHRtb2R1bGVfaW5pdChuZl9uYXRfaDMyM19pbml0KTtcXG4gNTgxOlxcdG1vZHVsZV9leGl0KG5mX25hdF9oMzIzX2ZpbmkpO1xcbiA1ODI6XFx0XFxuIDU4MzpcXHRNT0RVTEVfQVVUSE9SKFxcXCJKaW5nIE1pbiBaaGFvIFxcdTAwM2N6aGFvamluZ21pbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXRcXHUwMDNlXFxcIik7XFxuIDU4NDpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkguMzIzIE5BVCBoZWxwZXJcXFwiKTtcXG4gNTg1OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gNTg2OlxcdE1PRFVMRV9BTElBU19ORl9OQVRfSEVMUEVSKFxcXCJoMzIzXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjE2Ljg5NDMwMTU3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDM3MzA4NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbCBIaWVyYXJjaHk6IGBzZXRfYWRkcmAgYW5kIE5BVCBIb29rcyoqXG5cblJpZ2h0LCBzbyBgc2V0X2FkZHJgIOKAkyB0aGF04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5BVCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgSC4zMjMuIEkgc2VlIHRoYXQgYHNldF9hZGRyYCBpcyBkaXJlY3RseSBjYWxsZWQgYnkgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAuIE1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgdGhlIHR5cGljYWwgcHJvdG9jb2xzIHRoYXQgd291bGQgbmVlZCBhZGRyZXNzIHRyYW5zbGF0aW9uLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIgdXBzdHJlYW0uXG5cbldoZXJlIGRvICp0aG9zZSogZnVuY3Rpb25zLCBgbmF0X3J0cF9ydGNwYCBhbmQgYG5hdF90MTIwYCwgZ2V0IGNhbGxlZD8gSSBiZXQgdGhlIGhvb2sgZnVuY3Rpb25zIGluIHRoZSBgbmF0aG9va3NgIG1vZHVsZSBhcmUgaW52b2x2ZWQuIExldCBtZSBjaGVjayB0aGF0LiBZZXAsIGxvb2tzIGxpa2UgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgdGhlIG5leHQgc3RlcCB0byBpbnZlc3RpZ2F0ZS4gT2theSwgc28gdGhhdCdzIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvIGZvbGxvdyBub3cuIEkgbmVlZCB0byBzZWUgaG93IGBuZmN0X2gzMjNfbmF0X2hvb2tgIHRyaWdnZXJzIHRob3NlIE5BVCBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIEguMzIzIHNpZ25hbGluZy4gVGhpcyB3aWxsIGlsbHVtaW5hdGUgdGhlIGNydWNpYWwgbGluayBiZXR3ZWVuIGBzZXRfYWRkcmAgYW5kIHRoZSBvdmVyYWxsIE5BVCBwcm9jZXNzLCB3aGljaCBpcyB3aGF0IEknbSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgcmlnaHQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDAwMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MjIuMzMxNjEzMDk3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTE2MDM4MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY3RfaDMyM19uYXRfaG9va1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oPTM0PWludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtMzctXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozODpzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyB7XFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC0zOS1cXHRpbnQgKCpzZXRfaDI0NV9hZGRyKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTMtfTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oOjk0OmV4dGVybiBjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyBfX3JjdSAqbmZjdF9oMzIzX25hdF9ob29rO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtOTUtXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDI9c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gY2FsbGZvcndhcmRpbmdfbmF0ID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ2LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU0NzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgbmF0aG9va3MgPSB7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTQ4LVxcdC5zZXRfaDI0NV9hZGRyID0gc2V0X2gyNDVfYWRkcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTU2MD1zdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NjI6XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIFxcdTAwMjZuYXRob29rcyk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYzLVxcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM9NTY5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfaDMyM19maW5pKHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTcwLXtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo1NzE6XFx0UkNVX0lOSVRfUE9JTlRFUihuZmN0X2gzMjNfbmF0X2hvb2ssIE5VTEwpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTU3Mi1cXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcXHUwMDI2cTkzMV9uYXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NTE9TU9EVUxFX1BBUk1fREVTQyhjYWxsZm9yd2FyZF9maWx0ZXIsIFxcXCJvbmx5IGNyZWF0ZSBjYWxsIGZvcndhcmRpbmcgZXhwZWN0YXRpb25zIFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjU1OmNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIF9fcmN1ICpuZmN0X2gzMjNfbmF0X2hvb2sgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo1NjpFWFBPUlRfU1lNQk9MX0dQTChuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MjA5PXN0YXRpYyBpbnQgZXhwZWN0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTIxNC17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MjE1OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTIxNi1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjUxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI1MjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjUzLVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjg5LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoyOTA6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjkxLVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0zMTEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MzEyOlxcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0zMTMtXFx0aWYgKG1lbWNtcChcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51MyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTYyMj1zdGF0aWMgaW50IGV4cGVjdF9oMjQ1KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyNi17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NjI3OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTYyOC1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjQ4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjY0OTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjUwLVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz03Mzk9c3RhdGljIGludCBleHBlY3RfY2FsbGZvcndhcmRpbmcoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc0NS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NzQ2OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc0Ny1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzc1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc3NjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzc3LVxcdGlmIChtZW1jbXAoXFx1MDAyNmN0LVxcdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5zcmMudTMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz04MDA9c3RhdGljIGludCBwcm9jZXNzX3NldHVwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgwNS17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6ODA2OlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTgwNy1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtODIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjgyMjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtODIzLVxcdGlmICgoc2V0dXAtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNiBlU2V0dXBfVVVJRV9kZXN0Q2FsbFNpZ25hbEFkZHJlc3MpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMTg3PXN0YXRpYyBpbnQgZXhwZWN0X3E5MzEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTE5Mi1cXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTE5MzpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMTk0LVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTI0Nz1zdGF0aWMgaW50IHByb2Nlc3NfZ3JxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTEte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyNTI6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1My1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyNTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI1NjpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI1Ny1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMzExPXN0YXRpYyBpbnQgcHJvY2Vzc19ycnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTMxNi1cXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTMxNzpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzE4LVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzMwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEzMzE6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzMzItXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTM1MD1zdGF0aWMgaW50IHByb2Nlc3NfcmNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEzNTUtXFx0c3RydWN0IG5mX2N0X2gzMjNfbWFzdGVyICppbmZvID0gbmZjdF9oZWxwX2RhdGEoY3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEzNTY6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTM1Ny1cXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTM2NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMzY2OlxcdG5hdGhvb2sgPSByY3VfZGVyZWZlcmVuY2UobmZjdF9oMzIzX25hdF9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMzY3LVxcdGlmIChuYXRob29rIFxcdTAwMjZcXHUwMDI2IG5mX2N0X2wzbnVtKGN0KSA9PSBORlBST1RPX0lQVjQgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTE0MDQ9c3RhdGljIGludCBwcm9jZXNzX3VycShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDA5LVxcdHN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNDEwOlxcdGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzICpuYXRob29rO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MTEtXFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0MTgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQxOTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTQyMC1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNDQwPXN0YXRpYyBpbnQgcHJvY2Vzc19hcnEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTQ0NS1cXHRjb25zdCBzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTQ0NjpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDQ3LVxcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNDU1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE0NTY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE0NTctXFx0aWYgKCFuYXRob29rKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ5MD1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MDctXFx0aWYgKCFtZW1jbXAoXFx1MDAyNmFkZHIsIFxcdTAwMjZjdC1cXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0LnUzLCBzaXplb2YoYWRkcikpKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUwODpcXHRcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTA5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MTAtXFx0XFx0LyogQW5zd2VyaW5nIEFDRiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE1MTE6XFx0XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MTItXFx0XFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTU0MD1zdGF0aWMgaW50IHByb2Nlc3NfbHJxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDQte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE1NDU6XFx0Y29uc3Qgc3RydWN0IG5mY3RfaDMyM19uYXRfaG9va3MgKm5hdGhvb2s7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU0Ni1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1NDgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU0OTpcXHRuYXRob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU1MC1cXHRpZiAobmF0aG9vayBcXHUwMDI2XFx1MDAyNiBuZl9jdF9sM251bShjdCkgPT0gTkZQUk9UT19JUFY0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTk2PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTYwMC17XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTYwMTpcXHRjb25zdCBzdHJ1Y3QgbmZjdF9oMzIzX25hdF9ob29rcyAqbmF0aG9vaztcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjAyLVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNjA1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjE2MDY6XFx0bmF0aG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZmN0X2gzMjNfbmF0X2hvb2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE2MDctXFx0aWYgKG5hdGhvb2sgXFx1MDAyNlxcdTAwMjYgbmZfY3RfbDNudW0oY3QpID09IE5GUFJPVE9fSVBWNCBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDoyOC4yNDc2NTczMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0MjYyMzgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgYW5kIENvbnRleHQgb2YgYG5mY3RfaDMyM19uYXRfaG9va2AqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgc2VlaW5nIHRoYXQgYG5mY3RfaDMyM19uYXRfaG9va2AgaXMgY2FsbGVkIGZyb20gYSBwcmV0dHkgZXh0ZW5zaXZlIGxpc3Qgb2YgZnVuY3Rpb25zIHdpdGhpbiBgbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gb2JzZXJ2aW5nIGl0cyB1c2Ugd2l0aGluIGBleHBlY3RfcnRwX3J0Y3BgLCBgZXhwZWN0X3QxMjBgLCBgZXhwZWN0X2gyNDVgLCBgZXhwZWN0X2NhbGxmb3J3YXJkaW5nYCwgYHByb2Nlc3Nfc2V0dXBgLCBgZXhwZWN0X3E5MzFgLCBhbmQgdGhlIGVudGlyZSBzdWl0ZSBvZiBgcHJvY2Vzc18qYCBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIEdSUSwgUlJRLCBSQ0YsIFVSUSwgQVJRLCBBQ0YsIExSUSwgYW5kIElSUi4gVGhhdCdzIGEgbG90IG9mIGRpZmZlcmVudCBjYWxsIHBhdGhzIHRvIGJlIGF3YXJlIG9mISBUaGlzIHN1Z2dlc3RzIGEgcmVhbGx5IGNlbnRyYWwgcm9sZSBpbiBob3cgSC4zMjMgTkFUIHRyYXZlcnNhbCBpcyBoYW5kbGVkLlxuXG5JIGFsc28gc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGBoMjQ1X2hlbHBgIGluIHRoZSBzYW1lIGZpbGUgYXMgcGFydCBvZiB0aGlzIHBhdGNoLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGxpa2VseSBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCBILjI0NSBzaWduYWxpbmcuIEl0IHNlZW1zIHdpc2UgdG8gcXVpY2tseSBkaXZlIGludG8gdW5kZXJzdGFuZGluZyBob3cgYGgyNDVfaGVscGAgZnVuY3Rpb25zIGluIG9yZGVyIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MzMuNDkwMjg1NzMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA5MzA2MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImgyNDVfaGVscFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTI4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01MzAtXFx0XFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTcxNT1zdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNzI2LVxcdFxcdFxcdCAgXFxcIkguMjQ1XFxcIiwgMCwgMCwgMCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNzI3OlxcdFxcdFxcdCAgXFx1MDAyNmgyNDVfZXhwX3BvbGljeSwgMCwgaDI0NV9oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6MzcuODk5NjQ5Mjc1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTgyMzUyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb25udHJhY2sgSGVscGVyKipcblxuT2theSwgc28gYGgyNDVfaGVscGAgaXMgZmxhZ2dlZCBhcyBhIGNvbm50cmFjayBoZWxwZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gdGhlIGNvZGUgZm9yIGBoMzIzX2hlbHBlcl9pbml0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gVGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IGhvdyB0aGUgaGVscGVyIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb25udHJhY2ssIHdoYXQgY2FsbGJhY2tzIGFyZSB1c2VkLCBhbmQgaG93IGl0IGhhbmRsZXMgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgSC4yNDUsIGdpdmVuIEguMzIzJ3MgcmVsYXRpb24uIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBoZWxwZXIncyBjYXBhYmlsaXRpZXMgYW5kIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxODQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDo0Mi4wMTc4ODg1OTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3MTA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0X3BvbGljeSByYXNfZXhwX3BvbGljeSA9IHtcXG4xNzExOlxcdFxcdC5tYXhfZXhwZWN0ZWRcXHRcXHQ9IDMyLFxcbjE3MTI6XFx0XFx0LnRpbWVvdXRcXHRcXHQ9IDI0MCxcXG4xNzEzOlxcdH07XFxuMTcxNDpcXHRcXG4xNzE1OlxcdHN0YXRpYyBpbnQgX19pbml0IGgzMjNfaGVscGVyX2luaXQodm9pZClcXG4xNzE2OlxcdHtcXG4xNzE3OlxcdFxcdGludCByZXQ7XFxuMTcxODpcXHRcXG4xNzE5OlxcdFxcdG5mX2N0X2hlbHBlcl9pbml0KFxcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX3Jhc1swXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXFxuMTcyMDpcXHRcXHRcXHRcXHQgIFxcXCJSQVNcXFwiLCBSQVNfUE9SVCwgUkFTX1BPUlQsIFJBU19QT1JULFxcbjE3MjE6XFx0XFx0XFx0XFx0ICBcXHUwMDI2cmFzX2V4cF9wb2xpY3ksIDAsIHJhc19oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxuMTcyMjpcXHRcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9yYXNbMV0sIEFGX0lORVQ2LCBJUFBST1RPX1VEUCxcXG4xNzIzOlxcdFxcdFxcdFxcdCAgXFxcIlJBU1xcXCIsIFJBU19QT1JULCBSQVNfUE9SVCwgUkFTX1BPUlQsXFxuMTcyNDpcXHRcXHRcXHRcXHQgIFxcdTAwMjZyYXNfZXhwX3BvbGljeSwgMCwgcmFzX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG4xNzI1OlxcdFxcdG5mX2N0X2hlbHBlcl9pbml0KFxcdTAwMjZuZl9jb25udHJhY2tfaGVscGVyX2gyNDUsIEFGX1VOU1BFQywgSVBQUk9UT19VRFAsXFxuMTcyNjpcXHRcXHRcXHRcXHQgIFxcXCJILjI0NVxcXCIsIDAsIDAsIDAsXFxuMTcyNzpcXHRcXHRcXHRcXHQgIFxcdTAwMjZoMjQ1X2V4cF9wb2xpY3ksIDAsIGgyNDVfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbjE3Mjg6XFx0XFx0bmZfY3RfaGVscGVyX2luaXQoXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVswXSwgQUZfSU5FVCwgSVBQUk9UT19UQ1AsXFxuMTcyOTpcXHRcXHRcXHRcXHQgIFxcXCJRLjkzMVxcXCIsIFE5MzFfUE9SVCwgUTkzMV9QT1JULCBROTMxX1BPUlQsXFxuMTczMDpcXHRcXHRcXHRcXHQgIFxcdTAwMjZxOTMxX2V4cF9wb2xpY3ksIDAsIHE5MzFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbjE3MzE6XFx0XFx0bmZfY3RfaGVscGVyX2luaXQoXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfcTkzMVsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVENQLFxcbjE3MzI6XFx0XFx0XFx0XFx0ICBcXFwiUS45MzFcXFwiLCBROTMxX1BPUlQsIFE5MzFfUE9SVCwgUTkzMV9QT1JULFxcbjE3MzM6XFx0XFx0XFx0XFx0ICBcXHUwMDI2cTkzMV9leHBfcG9saWN5LCAwLCBxOTMxX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG4xNzM0OlxcdFxcbjE3MzU6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcl9yZWdpc3RlcihcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1LFxcbjE3MzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIpO1xcbjE3Mzc6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTczODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE3Mzk6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxLFxcbjE3NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIEFSUkFZX1NJWkUobmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxKSxcXG4xNzQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZl9jb25udHJhY2tfaGVscGVyX3E5MzFfcHRyKTtcXG4xNzQyOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3NDM6XFx0XFx0XFx0Z290byBlcnIxO1xcbjE3NDQ6XFx0XFx0cmV0ID0gbmZfY29ubnRyYWNrX2hlbHBlcnNfcmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9yYXMsXFxuMTc0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgQVJSQVlfU0laRShuZl9jb25udHJhY2tfaGVscGVyX3JhcyksXFxuMTc0NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgbmZfY29ubnRyYWNrX2hlbHBlcl9yYXNfcHRyKTtcXG4xNzQ3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3NDg6XFx0XFx0XFx0Z290byBlcnIyO1xcbjE3NDk6XFx0XFxuMTc1MDpcXHRcXHRyZXR1cm4gMDtcXG4xNzUxOlxcdGVycjI6XFxuMTc1MjpcXHRcXHRuZl9jb25udHJhY2tfaGVscGVyc191bnJlZ2lzdGVyKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIsXFxuMTc1MzpcXHRcXHRcXHRcXHRcXHRcXHRBUlJBWV9TSVpFKG5mX2Nvbm50cmFja19oZWxwZXJfcTkzMV9wdHIpKTtcXG4xNzU0OlxcdGVycjE6XFxuMTc1NTpcXHRcXHRuZl9jb25udHJhY2tfaGVscGVyX3VucmVnaXN0ZXIobmZfY29ubnRyYWNrX2hlbHBlcl9oMjQ1X3B0cik7XFxuMTc1NjpcXHRcXHRyZXR1cm4gcmV0O1xcbjE3NTc6XFx0fVxcbjE3NTg6XFx0XFxuMTc1OTpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgaDMyM19oZWxwZXJfZXhpdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQxNToxNDo0Mi4wMTgwNTk4NjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDIxODM3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBILjI0NSBDb25udHJhY2sgSGVscGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEguMjQ1IGNvbm50cmFjayBoZWxwZXIsIHNwZWNpZmljYWxseSBgaDI0NV9oZWxwYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgY2hlY2sgYWRkZWQgd2l0aGluIGBoMjQ1X2hlbHBgIHRoYXQgZW5mb3JjZXMgVENQIChgaWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1RDUCkgcmV0dXJuIE5GX0FDQ0VQVDtgKS4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBhZGRyZXNzaW5nIGEgcHJvdG9jb2wtc3BlY2lmaWMgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBvdGhlciBwYXJ0IG9mIHRoZSBwYXRjaCBtb2RpZmllcyBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCB0byB1c2UgYG5mX2N0X3Byb3RvbnVtKGN0KWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sYC5cblxuSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyBtaWdodCBiZSBhYm91dCBJUHY2IGNvbXBhdGliaWxpdHksIGJ1dCBjb25zaWRlcmluZyBgbmZfbmF0X2gzMjMuY2AgaXMgZXhwbGljaXRseSBJUHY0LCB0aGF0J3MgbGVzcyBsaWtlbHkuIEhvd2V2ZXIsIHRoZSB1c2Ugb2YgYGlwX2hkcihza2IpLVx1MDAzZXByb3RvY29sYCBpbiBgc2V0X2FkZHJgIGlzIHByb2JsZW1hdGljIGluIGl0c2VsZi4gIFRoZSBrZXkgcmVhbGl6YXRpb24gaGVyZSBpcyB0aGF0IGEgdXNlciBjYW4gKmJpbmQqIHRoZSBILjI0NSBoZWxwZXIgdG8gYSBVRFAgY29ubmVjdGlvbi4gTm93LCB3aXRoIGBpcF9oZHIoc2tiKS1cdTAwM2Vwcm90b2NvbGAsIHdlIHJ1biBpbnRvIHByb2JsZW1zIHdoZW4gbm9uLVRDUCBwYWNrZXRzIGdldCBwYXNzZWQgdGhyb3VnaCB0aGUgaGVscGVyLiBGb3IgZXhhbXBsZSwgaWYgYW4gSUNNUCBlcnJvciBvciBzaW1pbGFyIHBhY2tldCBjb21lcyB0aHJvdWdoIGFmdGVyIGEgVURQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQsIHRoZSBvcmlnaW5hbCBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIHZhbHVlIGlzIHVzZWQsIGFuZCB0aGUgbWFuZ2xlIGZ1bmN0aW9uIGlzIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgVURQLiBUaGlzIHRoZW4gbGVhZHMgdG8gaXNzdWVzIGFjY2Vzc2luZyBVRFAgaGVhZGVycyBvbiBub24tVURQIHBhY2tldHMuIEJpbmdvISBXZSdyZSB0YWxraW5nIGFib3V0IGEgY3Jhc2ggb3IgT09CIHJlYWQuXG5cblVzaW5nIGBuZl9jdF9wcm90b251bShjdClgIHNvbHZlcyB0aGlzLiBJdCByZWxpZXMgb24gdGhlICpjb25uZWN0aW9uJ3MqIHByb3RvY29sLCBub3QgdGhlICpwYWNrZXQncyogcHJvdG9jb2wuIFRoZSBhZGRlZCBzd2l0Y2ggc3RhdGVtZW50IGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIGJ5IHByZXZlbnRpbmcgY2FsbHMgdG8gbWFuZ2xlIGZ1bmN0aW9ucyBmb3IgdW5leHBlY3RlZCBwcm90b2NvbHMsIHdoaWNoIGlzIGEgc29saWQsIGRlZmVuc2l2ZSBjb2RpbmcgcHJhY3RpY2UuXG5cblRoZSBwYXRjaCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGBzd2l0Y2hgIHN0YXRlbWVudDpcbmBgYGNcblx0c3dpdGNoIChuZl9jdF9wcm90b251bShjdCkpIHtcblx0Y2FzZSBJUFBST1RPX1RDUDpcbi4uLlxuXHRjYXNlIElQUFJPVE9fVURQOlxuLi4uXG5cdGRlZmF1bHQ6XG5cdFx0cmV0dXJuIC0xO1xuXHR9XG5gYGBcblRoaXMgYWRkaXRpb25hbCBjaGVjayBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgdW5leHBlY3RlZCBwcm90b2NvbHMgdGhhdCBjb3VsZCBjb21lIGluLlxuXG5GdXJ0aGVybW9yZSwgdGhlIGNoYW5nZSB0byBgaDI0NV9oZWxwYCBlZmZlY3RpdmVseSBpZ25vcmVzIG1hbnVhbCBiaW5kaW5ncyB0byBvdGhlciBMNCBwcm90b2NvbHMsIHdoaWNoIGl0IGV4cGVjdHMgdG8gYmUgVENQLlxuXG5UaGlzIGlzIGEgd2VsbC10YXJnZXRlZCBmdW5jdGlvbmFsIGNoYW5nZS4gTXkgbmV4dCBzdGVwIHdvdWxkIGJlIGZ1enppbmcgdGhpcyB0byBlbnN1cmUgcm9idXN0bmVzcy4gVGhlIGtleSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdvdWxkIGJlIGBoMjQ1X2hlbHBgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgTkFUIGZ1bmN0aW9uczogYG5hdF9ydHBfcnRjcGAsIGBuYXRfdDEyMGAsIGBuYXRfaDI0NWAsIGBuYXRfY2FsbGZvcndhcmRpbmdgLCBgbmF0X3E5MzFgLCBgc2V0X2gyNDVfYWRkcmAsIGBzZXRfaDIyNV9hZGRyYCwgYHNldF9zaWdfYWRkcmAsIGFuZCBgc2V0X3Jhc19hZGRyYC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzY29wZSBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gYG5mX25hdF9oMzIzLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTUzOSwiT3V0cHV0VG9rZW5zIjo2MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjU0LjAyMDI0NjkyM1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MzU1NjY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWjAtOV9dKyBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE0OjU0LjEzNDYxMzU4MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYwMjUzNzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipRdWljayBTY2FuIGZvciBTdGF0aWMgSW50ZWdlciBEZWNsYXJhdGlvbnMgaW4gdGhlIE5BVCBILjMyMyBDb2RlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZS4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggSC4zMjMgTkFUIGFuZCBwb3RlbnRpYWxseSBpbnRlcm5hbCBpbnRlZ2VyIHN0YXRlcywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4gVGhlIHF1aWNrZXN0IHdheSB0byBkbyB0aGF0IGluIHRoaXMgc2NlbmFyaW8gaXMgcHJvYmFibHkgdG8gcnVuIGBncmVwYCBvbiB0aGUgYG5mX25hdF9oMzIzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIHNlYXJjaCBmb3IgbGluZXMgdGhhdCBzdGFydCB3aXRoIGBzdGF0aWMgaW50YC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBwYXNzIGF0IGFueSBzdGF0aWNhbGx5IGRlY2xhcmVkIGludGVnZXJzIHRoYXQgYXJlIHJlbGV2YW50IHdpdGhpbiB0aGUgSC4zMjMgTkFUIG1vZHVsZSBpbiB0aGF0IHNwZWNpZmljIG5ldGZpbHRlciBmaWxlLiBJIHdhbnQgdG8gc2VlIHdoYXQncyBiZWluZyBtYW5hZ2VkLCB3aGF0IHZhcmlhYmxlcyBjb3VsZCBiZSBob2xkaW5nIGludGVybmFsIHN0YXRlcyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgaXNzdWVzLiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgZGlncyB1cC4gSXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBkZWVwZXIgYW5hbHlzaXMgb2YgdGhlIEguMzIzIE5BVCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6NTguNDk0ODcxMDA3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ3MzUzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTIyLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjIzOnN0YXRpYyBpbnQgc2V0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjQtXFx0XFx0ICAgIHVuc2lnbmVkIGNoYXIgKipkYXRhLCBpbnQgZGF0YW9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTc1LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjc2OnN0YXRpYyBpbnQgc2V0X2gyMjVfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy03Ny1cXHRcXHRcXHQgdW5zaWduZWQgY2hhciAqKmRhdGEsIGludCBkYXRhb2ZmLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtODUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6ODY6c3RhdGljIGludCBzZXRfaDI0NV9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIHByb3RvZmYsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtODctXFx0XFx0XFx0IHVuc2lnbmVkIGNoYXIgKipkYXRhLCBpbnQgZGF0YW9mZixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTk2LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjk3OnN0YXRpYyBpbnQgc2V0X3NpZ19hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy05OC1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1Mi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxNTM6c3RhdGljIGludCBzZXRfcmFzX2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE1NC1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE4MS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoxODI6c3RhdGljIGludCBuYXRfcnRwX3J0Y3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTE4My1cXHRcXHRcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTI5MC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzoyOTE6c3RhdGljIGludCBuYXRfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMjkyLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTMyOC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzozMjk6c3RhdGljIGludCBuYXRfaDI0NShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtMzMwLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTM4Mj1zdGF0aWMgdm9pZCBpcF9uYXRfcTkzMV9leHBlY3Qoc3RydWN0IG5mX2Nvbm4gKm5ldyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jLTQwOS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYzo0MTA6c3RhdGljIGludCBuYXRfcTkzMShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNDExLVxcdFxcdCAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jPTQ3ND1zdGF0aWMgdm9pZCBpcF9uYXRfY2FsbGZvcndhcmRpbmdfZXhwZWN0KHN0cnVjdCBuZl9jb25uICpuZXcsXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTUtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmM6NDk2OnN0YXRpYyBpbnQgbmF0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYy00OTctXFx0XFx0XFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYz01NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmN0X2gzMjNfbmF0X2hvb2tzIG5hdGhvb2tzID0ge1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTU5LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jOjU2MDpzdGF0aWMgaW50IF9faW5pdCBuZl9uYXRfaDMyM19pbml0KHZvaWQpXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMtNTYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTQ6NTguNjA5NjEzMDA0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDY0NjA1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBILjMyMyBOQVQgTW9kdWxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZfbmF0X2gzMjMuY2AgZmlsZSBhbmQgaW1tZWRpYXRlbHkgdGhlIFwic3RhdGljXCIgZGVjbGFyYXRpb24gb24gYWxsIHRob3NlIGZ1bmN0aW9ucyBwb3BzIG91dC4gVGhhdCBzdWdnZXN0cyB0aGVzZSBhcmUgYWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoaXMgbW9kdWxlLCBsaWtlbHkgZm9yIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIG5hbWluZyBjb25mbGljdHMuIEdvb2QgcHJhY3RpY2UsIGdlbmVyYWxseS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIGFyZSB1c2VkLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8ganVtcCBvdmVyIHRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3IgbWFpbiBlbnRyeSBwb2ludHMgZm9yIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXR5LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvY2F0aW5nIHRoZSBgaDI0NV9oZWxwYCBmdW5jdGlvbiwgYXMgdGhhdCdzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciBILjI0NSBzaWduYWxpbmcuIFNlZWluZyB3aGVyZSB0aGF0J3MgY2FsbGVkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgTkFUIGhlbHBlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBpbnNwZWN0aW9uIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjAyLjgxNjA3Njg0M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTAzMzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImgyNDVfaGVscFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz00OTQ9c3RhdGljIGludCBwcm9jZXNzX2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTI4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjUyOTpzdGF0aWMgaW50IGgyNDVfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01MzAtXFx0XFx0ICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTcxNT1zdGF0aWMgaW50IF9faW5pdCBoMzIzX2hlbHBlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNzI2LVxcdFxcdFxcdCAgXFxcIkguMjQ1XFxcIiwgMCwgMCwgMCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNzI3OlxcdFxcdFxcdCAgXFx1MDAyNmgyNDVfZXhwX3BvbGljeSwgMCwgaDI0NV9oZWxwLCBOVUxMLCBUSElTX01PRFVMRSk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTcyOC1cXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2bmZfY29ubnRyYWNrX2hlbHBlcl9xOTMxWzBdLCBBRl9JTkVULCBJUFBST1RPX1RDUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MDIuOTgyOTg3MTI5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA1MTgyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ29ubnRyYWNrIEhlbHBlciBQb25kZXJpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jYC4gSXQncyBzZWVtaW5nIHByZXR0eSBzdGF0aWMgaW4gaXRzIHN0cnVjdHVyZSwgaXNuJ3QgaXQ/IEJ1dCwgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGEgKmNvbm50cmFjayBoZWxwZXIqLiBUaGF0IG1lYW5zIGl0cyBwcmltYXJ5IGVudHJ5IHBvaW50IGlzIGdvaW5nIHRvIGJlIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyLCBpbmplY3RlZCBpbnRvIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLiBJJ20gdHJ5aW5nIHRvIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBzZWVpbmcgaG93IHRoaXMgaGVscGVyIGFjdHVhbGx5IGdldHMgaW52b2tlZCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcuXG5cbk15IGNvbmNlcm4gaXMgd2hldGhlciB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LCBhcyBteSBleHBlcmllbmNlIHRlbGxzIG1lIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG1vcmUgdHJpY2t5LiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgd2l0aGluIGBuZl9jb25udHJhY2tfaDMyM19tYWluLmNgPyBTb21ldGhpbmcgdGhhdCBtaWdodCBnaXZlIG1lIGEgYnJvYWRlciB2aWV3IG9mIGhvdyB0aGlzIHRoaW5nIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWw/IEZpbmRpbmcgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gbWF5IHByb3ZpZGUgc29tZSBjbHVlcyBob3cgdGhlIGhlbHBlciBpcyBpbnZva2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ2NSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjA3LjAzMzUwOTgyMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMTgyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTkwOmludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXFx0XFx0ICBUcmFuc3BvcnRBZGRyZXNzICp0YWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MDcuMjA1NzAxMjU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDg3NTMxNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgRnVuY3Rpb24gTW9kaWZpZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZ2V0X2gyMjVfYWRkcmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG5vdGljaW5nIGl0J3MgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoaXMgc3BhcmtzIGEgdHJhaW4gb2YgdGhvdWdodDogaWYgKnRoaXMqIGZ1bmN0aW9uIGlzbid0IHN0YXRpYywgd2hhdCBhYm91dCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIG1vZGlmaWVycyBvbiB0aGUgb3RoZXJzLCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZWlyIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBUaGlzIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRlc2lnbi4gQXJlIHdlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCdzIGludGVuZGVkIHRvIGJlIGdsb2JhbGx5IGFjY2Vzc2libGUsIG9yIGlzIGl0IHN1cHBvc2VkIHRvIGJlIGVuY2Fwc3VsYXRlZD8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGVuY2Fwc3VsYXRpb24gYW5kIGF2b2lkaW5nIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLCBlc3BlY2lhbGx5IGluIGEgY29uY3VycmVudCBlbnZpcm9ubWVudCB3aGVyZSB1bmV4cGVjdGVkIGFjY2VzcyBjb3VsZCBsZWFkIHRvIHJhY2UgY29uZGl0aW9ucy4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSByZXN0IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk1OSwiT3V0cHV0VG9rZW5zIjo2MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjExLjI1NDQ1ODI5OVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3ODc1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU2PUVYUE9SVF9TWU1CT0xfR1BMKG5mY3RfaDMyM19uYXRfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNTctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTg6c3RhdGljIERFRklORV9TUElOTE9DSyhuZl9oMzIzX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTU5LXN0YXRpYyBjaGFyICpoMzIzX2J1ZmZlcjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTU4OD1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKm5mX2Nvbm50cmFja19oZWxwZXJfaDI0NV9wdHIgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01ODktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6NTkwOmludCBnZXRfaDIyNV9hZGRyKHN0cnVjdCBuZl9jb25uICpjdCwgdW5zaWduZWQgY2hhciAqZGF0YSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy01OTEtXFx0XFx0ICBUcmFuc3BvcnRBZGRyZXNzICp0YWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6MTEuMzM3MjUxNTQ3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4ODk4NDM2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29ubnRyYWNrIEhlbHBlciBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgSC4yMjUvSC4yNDUgc2l0dWF0aW9uLiBJdCBzZWVtcyBgZ2V0X2gyMjVfYWRkcmAgaXMgdGhlIGxvbmUgbm9uLXN0YXRpYyBmdW5jdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguLi4gV2FpdCwgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gYGgyNDVfaGVscGAgKmlzKiBhIGNvbm50cmFjayBoZWxwZXIsIGFuZCBjb25udHJhY2sgZnV6emluZyBvZnRlbiBpbnZvbHZlcyB0YXJnZXRpbmcgdGhlIGhlbHBlcnMgdGhlbXNlbHZlcy4gSSdtIHRoaW5raW5nLCBldmVuIHRob3VnaCBgaDI0NV9oZWxwYCBpcyBzdGF0aWMsIHN5emthbGxlciAqbWlnaHQqIHN0aWxsIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSdzIGRlYnVnIGluZm9ybWF0aW9uIGF2YWlsYWJsZS4gSXQncyB3b3J0aCBsaXN0aW5nIGl0IGFzIGEgZm9jdXMgc3ltYm9sLlxuXG5BbHNvLCBJIHNlZSBgc2V0X2FkZHJgIGluIGBuZl9uYXRfaDMyMy5jYCBpcyBzdGF0aWMgdG9vLiBUaGUgc3RhdGljLW5lc3Mgb2YgZnVuY3Rpb25zIGxpa2UgYG5hdF9ydHBfcnRjcGAgYW5kIGBuYXRfdDEyMGAgYWxzbyBjb25jZXJucyBtZSwgYnV0IHN0aWxsLCBJIGFtIGdvaW5nIHRvIGxpc3QgYGgyNDVfaGVscGAsIGBzZXRfYWRkcmAsIGBuYXRfcnRwX3J0Y3BgLCBgbmF0X3QxMjBgIGFzIGZvY3VzIHN5bWJvbHMuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgY29uZmlndXJhdGlvbnMgbGluZWQgdXAuIExldCdzIGRvdWJsZS1jaGVjazogYE5GX0NPTk5UUkFDS19IMzIzYCwgYE5GX05BVF9IMzIzYCwgYE5GX05BVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmUgYWxsIHRoZSByZWxldmFudCBjb21wb25lbnRzIGVuYWJsZWQuXG5cbkxldCdzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTE2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjE3LjIyNzA5OTk2NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMjA2MDE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTIyNz1jb25maWcgTkZfQ09OTlRSQUNLX0ZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjIyLjEzOTE2NjgyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzUwMDA4NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBoaW5nZXMgb24gdGhlIHN0YXRlIG9mIGBORVRGSUxURVJfQURWQU5DRURgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBFdmVyeXRoaW5nIGVsc2UgaXMgc2Vjb25kYXJ5IHVudGlsIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBwcm92aWRlZCBieSB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgdmFyaWFibGUgdGhhdCBkaWN0YXRlcyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGFwcHJvYWNoLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZGV0ZXJtaW5lICpob3cqIHRoaXMgb3B0aW9uIGlzIHNldCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaW50cm9kdWNlcyBvciByZW1vdmVzLCBhbmQgaG93IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgYmVoYXZlcyBpbiBkaWZmZXJlbnQgYnVpbGQgY29uZmlndXJhdGlvbnMuIElzIGl0IGVuYWJsZWQsIGRpc2FibGVkLCBvciBzZXQgdG8gc29tZSBpbnRlcm1lZGlhcnkgbGV2ZWw/IFRoYXQgaXMgdGhlIHF1ZXN0aW9uLiBUaGUgYW5zd2VyIGltcGFjdHMgKmV2ZXJ5dGhpbmcqLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzIxMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjM1LjYzOTI1NDg3N1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNzQ3MjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcXG5uZXQvS2NvbmZpZy0yMTktXFxubmV0L0tjb25maWc6MjIwOmNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcXG5uZXQvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQWR2YW5jZWQgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjQwLjk3NjczMzY5M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkzMTM3NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQgSSdtIHRoaW5raW5nLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyBILjMyMyBOQVQgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgc28gSSBzZWUgdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZSBoZXJlLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgb2YgY291cnNlLCB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgKGBORl9DT05OVFJBQ0tfSDMyM2ApIGlzIHJlcXVpcmVkLiBOb3csIG5hdHVyYWxseSwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIEkgYWxzbyBuZWVkIGBORl9OQVRfSDMyM2AuXG5cbkJlZm9yZSBJIHByb2NlZWQgZnVydGhlciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9OQVRfSDMyM2AgZG9lc24ndCBoYXZlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJJ20gb3Zlcmxvb2tpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSByZXF1aXJlbWVudHMgaXQgbWlnaHQgaW1wb3NlIG9uIHRoZSBzdXJyb3VuZGluZyBlbnZpcm9ubWVudC4gVGhpcyBpcyBqdXN0IHN0YW5kYXJkIHByYWN0aWNlLCBvZiBjb3Vyc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMTU6MTU6NDYuMDY5ODc1MDQ1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTg6XFx0Y29uZmlnIE5GX05BVF9QUFRQXFxuIDExOTpcXHRcXHR0cmlzdGF0ZVxcbiAxMjA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTIxOlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX1BQVFBcXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIE5GX05BVF9IMzIzXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZVxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gMTI2OlxcdFxcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcXG4gMTI3OlxcdFxcbiAxMjg6XFx0ZW5kaWYgIyBORl9OQVRcXG4gMTI5OlxcdFxcbiAxMzA6XFx0Y29uZmlnIElQX05GX0lQVEFCTEVTXFxuIDEzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBmaWx0ZXJpbmcvbWFzcS9OQVQpXFxcIlxcbiAxMzI6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjQ2LjA2OTk3OTkxNFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQ5ODE4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEguMzIzIE5BVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYmFzZWQgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIChgTkZfQ09OTlRSQUNLX0gzMjNgKSBpcyB0aGUga2V5LCBhbmQgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYE5GX0NPTk5UUkFDS2AgYmVpbmcgYWN0aXZlLCB3aGljaCBpcyB0eXBpY2FsLiBOb3csIEkgc2VlIHRoYXQgZW5hYmxpbmcgSC4zMjMgTkFUIChgTkZfTkFUX0gzMjNgKSBpc24ndCBkaXJlY3RseSBleHBvc2VkIGluIHRoZSBtZW51IGNvbmZpZ3VyYXRpb247IHRoZXJlJ3Mgbm8gcHJvbXB0IHN0cmluZyBmb3IgaXQuIEFoLCBJIGdldCBpdCDigJMgaXQncyBhbiBhdXRvbWF0aWNhbGx5LXNlbGVjdGVkIGRlcGVuZGVuY3kuIEl0IGJlY29tZXMgYWN0aXZlIG9ubHkgaWYgSSBlbmFibGUgdGhlIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tlciAoYE5GX0NPTk5UUkFDS19IMzIzYCkgKmFuZCogdGhlIGJhc2UgTkFUIGZ1bmN0aW9uYWxpdHkgKGBORl9OQVRgKS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIHNvbWV3aGF0LCBhbHRob3VnaCBpdCByZXF1aXJlcyBhIHNsaWdodGx5IGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmNpZXMuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiwgZm9yIEguMzIzIE5BVCBmdW5jdGlvbmFsaXR5LCBpcyB0byBlbmFibGUgKmJvdGgqIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9OQVRgLiBJdCdzIGVzc2VudGlhbCB0byBlbmFibGUgYmFzZSBOQVQgZnVuY3Rpb25hbGl0eS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBJIGhhdmUgYE5GX05BVGAgZW5hYmxlZCBqdXN0IHRvIGJlIHN1cmUuIFRoYXQgd291bGQgYmUgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk2NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjUxLjExOTgwMzcxN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZWZhdWx0IG5cXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbiA0MDI6XFx0XFx0aGVscFxcbiA0MDM6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxcbiA0MDQ6XFx0XFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xcbiA0MDU6XFx0XFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIE5GX05BVFxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE1OjUxLjExOTk3NzQzN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTEyMDg5OTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBILjMyMyBOQVQgYW5kIENvbm50cmFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBILjMyMyBOQVQgYW5kIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgdGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB0aGUgaW5jb3JyZWN0IHVzZSBvZiBgaXBfaGRyKHNrYiktXHUwMDNlcHJvdG9jb2xgIGluc3RlYWQgb2YgYG5mX2N0X3Byb3RvbnVtKGN0KWAgdG8gZGV0ZXJtaW5lIHRoZSBMNCBwcm90b2NvbC4gVGhpcyBjb3VsZCBvcGVuIGEgdnVsbmVyYWJpbGl0eSB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIHNvbWVvbmUgbWFudWFsbHkgY29uZmlndXJlcyB0aGUgSC4yNDUgaGVscGVyIG9uIGEgVURQIGNvbm5lY3Rpb24uIEl0J3MgYWxzbyBhZGRpbmcgYSBzYWZldHkgY2hlY2sgaW4gYGgyNDVfaGVscGAgdG8gc3BlY2lmaWNhbGx5IGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLCB3aGljaCBtYWtlcyBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgcmVhY2hlcyBjb3JlIG5ldGZpbHRlciBsb2dpYywgbWFraW5nIGZ1enppbmcgYSBnb29kIGlkZWEuXG5cbkZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgZW5hYmxlZC4gVGhhdCdzIGBORVRGSUxURVJfQURWQU5DRURgLCBgTkZfQ09OTlRSQUNLYCwgYE5GX05BVGAsIGFuZCBgTkZfQ09OTlRSQUNLX0gzMjNgLiBJIHdpbGwgbGlzdCB0aG9zZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSeKAmWxsIGZvY3VzIG9uIGBoMjQ1X2hlbHBgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuYXRfdDEyMGAuIGBzZXRfYWRkcmAgaXMgYWxzbyBpbXBvcnRhbnQsIHNpbmNlIGl0J3MgdXNlZCBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgc2V0X2FkZHJgIGlzbid0IGlubGluZWQsIGFzIGl0cyBhZGRyZXNzIGlzIHRha2VuIChpdCdzIHB1dCBpbiBgbmF0aG9va3NgKS4gSWYgbm90IGlubGluZWQsIHRoZW4gdGhhdCdzIHRoZSBvbmUgdGhhdCBpcyBtb2RpZmllZC4gSWYgaXQncyBpbmxpbmVkLCB0aGVuIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0IGFyZSBpbXBvcnRhbnQuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBzZXRfYWRkcmAgaXMgaW5saW5lZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgdHdpY2UgaW4gYG5mX25hdF9oMzIzLmNgLCBtZWFuaW5nIGl0IGlzIHBvc3NpYmxlLiBTbyBJIHdpbGwgYWRkIGBuYXRfcnRwX3J0Y3BgIGFuZCBgbmF0X3QxMjBgLCBhcyB0aGV5IGJvdGggY2FsbCBgc2V0X2FkZHJgLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZnVuY3Rpb25zIGBuZl9uYXRfaDMyM19pbml0YCBhbmQgYGgzMjNfaGVscGVyX2luaXRgIGFyZSBwcm9wZXJseSBob29rZWQgdXAuXG5cblNvLCBteSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzIHdpbGwgYmU6XG5cbiogICBgaDI0NV9oZWxwYFxuKiAgIGBuYXRfcnRwX3J0Y3BgXG4qICAgYG5hdF90MTIwYFxuKiAgIGBzZXRfYWRkcmAgKGNvbmRpdGlvbmFsOyBpZiBub3QgaW5saW5lZCwgaXQncyBtb2RpZmllZClcblxuSeKAmW0gY29uZmlkZW50IHRoaXMgY292ZXJzIHRoZSBlc3NlbnRpYWwgcGllY2VzIG9mIHRoZSBwYXRjaCB0aGF0IG5lZWQgY2xvc2Ugc2NydXRpbnkgZm9yIGZ1bmN0aW9uYWwgY29ycmVjdG5lc3MgYW5kIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjgxLCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDE1OjE2OjAyLjI0MDg4MjIwMVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDM2NjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoMjQ1X2hlbHBcIixcbiAgICBcIm5hdF9ydHBfcnRjcFwiLFxuICAgIFwibmF0X3QxMjBcIixcbiAgICBcInNldF9hZGRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEguMzIzIE5BVCBhbmQgY29ubnRyYWNrIGhlbHBlcnMgd2hlcmUgYGlwX2hkcihza2IpLVxcdTAwM2Vwcm90b2NvbGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgbmZfY3RfcHJvdG9udW0oY3QpYCB0byBkZXRlcm1pbmUgdGhlIEw0IHByb3RvY29sLiBUaGlzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBhIHVzZXIgbWFudWFsbHkgYmluZHMgdGhlIEguMjQ1IGhlbHBlciB0byBhIFVEUCBjb25uZWN0aW9uLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgaDI0NV9oZWxwYCB0byBpZ25vcmUgbm9uLVRDUCBjb25uZWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImgyNDVfaGVscFwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuYXRfdDEyMFwiLFxuICAgIFwic2V0X2FkZHJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgSC4zMjMgTkFUIGFuZCBjb25udHJhY2sgaGVscGVycyB3aGVyZSBgaXBfaGRyKHNrYiktXFx1MDAzZXByb3RvY29sYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBuZl9jdF9wcm90b251bShjdClgIHRvIGRldGVybWluZSB0aGUgTDQgcHJvdG9jb2wuIFRoaXMgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGEgdXNlciBtYW51YWxseSBiaW5kcyB0aGUgSC4yNDUgaGVscGVyIHRvIGEgVURQIGNvbm5lY3Rpb24uIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIGBoMjQ1X2hlbHBgIHRvIGlnbm9yZSBub24tVENQIGNvbm5lY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlv4tn[1] Phase: Succeeded StartedAt: 2026-07-28 15:16:16 +0000 UTC FinishedAt: 2026-07-28 15:16:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-28 15:16:16 +0000 UTC FinishedAt: 2026-07-28 15:16:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2] Phase: Succeeded StartedAt: 2026-07-28 15:16:16 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-28 15:16:17 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-28 15:16:17 +0000 UTC FinishedAt: 2026-07-28 15:16:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-28 15:16:17 +0000 UTC FinishedAt: 2026-07-28 15:16:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowlv4tn/series-workflowlv4tn-convert-artifact-2425089429/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-28 15:16:55 +0000 UTC FinishedAt: 2026-07-28 15:39:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-28 15:16:55 +0000 UTC FinishedAt: 2026-07-28 15:39:11 +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:*cb666d5e-c7a3-42b6-a3f8-36f086e0c0fb,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-workflowlv4tn/series-workflowlv4tn-convert-artifact-2425089429/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": "96dce90e-d414-49ab-b1ff-09960b43aebb", "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-workflowlv4tn/series-workflowlv4tn-build-action-3377219067/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-28 15:16:55 +0000 UTC FinishedAt: 2026-07-28 15:38:47 +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:*cb666d5e-c7a3-42b6-a3f8-36f086e0c0fb,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-workflowlv4tn/series-workflowlv4tn-convert-artifact-2425089429/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": "96dce90e-d414-49ab-b1ff-09960b43aebb", "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-workflowlv4tn/series-workflowlv4tn-build-action-3377219067/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-28 15:39:11 +0000 UTC FinishedAt: 2026-07-28 15:39:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-28 15:39:11 +0000 UTC FinishedAt: 2026-07-28 15:39:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-28 15:39:11 +0000 UTC FinishedAt: 2026-07-28 15:39:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-28 15:39:11 +0000 UTC FinishedAt: 2026-07-28 15:39:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowlv4tn/series-workflowlv4tn-convert-artifact-3584058736/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-28 15:39:21 +0000 UTC FinishedAt: 2026-07-28 15:41:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-28 15:39:21 +0000 UTC FinishedAt: 2026-07-28 15:41:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*96dce90e-d414-49ab-b1ff-09960b43aebb,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-workflowlv4tn/series-workflowlv4tn-build-action-3377219067/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-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-28 15:41:52 +0000 UTC FinishedAt: 2026-07-28 15:41:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-28 15:41:52 +0000 UTC FinishedAt: 2026-07-28 15:41:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-28 15:41:52 +0000 UTC FinishedAt: 2026-07-28 16:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-28 15:41:52 +0000 UTC FinishedAt: 2026-07-28 16:05:02 +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:*cb666d5e-c7a3-42b6-a3f8-36f086e0c0fb,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-workflowlv4tn/series-workflowlv4tn-convert-artifact-3584058736/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": "6240e3c9-2206-43dd-bf90-b80eeb7dd3f1", "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-workflowlv4tn/series-workflowlv4tn-build-action-1714079340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-28 15:41:52 +0000 UTC FinishedAt: 2026-07-28 16:04:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb666d5e-c7a3-42b6-a3f8-36f086e0c0fb,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-workflowlv4tn/series-workflowlv4tn-convert-artifact-3584058736/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": "6240e3c9-2206-43dd-bf90-b80eeb7dd3f1", "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-workflowlv4tn/series-workflowlv4tn-build-action-1714079340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-28 16:05:02 +0000 UTC FinishedAt: 2026-07-28 16:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-28 16:05:02 +0000 UTC FinishedAt: 2026-07-28 16:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-28 16:05:02 +0000 UTC FinishedAt: 2026-07-28 16:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-28 16:05:02 +0000 UTC FinishedAt: 2026-07-28 16:07:02 +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:*6240e3c9-2206-43dd-bf90-b80eeb7dd3f1,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-workflowlv4tn/series-workflowlv4tn-build-action-1714079340/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-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +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":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"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:*96dce90e-d414-49ab-b1ff-09960b43aebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6240e3c9-2206-43dd-bf90-b80eeb7dd3f1,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-workflowlv4tn/series-workflowlv4tn-build-action-3377219067/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-workflowlv4tn/series-workflowlv4tn-build-action-1714079340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 16:07:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 16:07:17 +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":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"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-workflowlv4tn/series-workflowlv4tn-convert-artifact-1424489193/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 16:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 16:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-28 16:07:12 +0000 UTC FinishedAt: 2026-07-28 16:07:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-28 16:07:22 +0000 UTC FinishedAt: 2026-07-28 17:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlv4tn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["h245_help","nat_rtp_rtcp","nat_t120","set_addr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0d6415963040c401e7a7e4e482a698ba52448cb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NF_CONNTRACK","NF_NAT","NF_CONNTRACK_H323"],"series_id":"ed9ba880-1241-4990-81e3-e06ca4068d70","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-28 16:07:22 +0000 UTC FinishedAt: 2026-07-28 17:01:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*96dce90e-d414-49ab-b1ff-09960b43aebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6240e3c9-2206-43dd-bf90-b80eeb7dd3f1,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-workflowlv4tn/series-workflowlv4tn-build-action-3377219067/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-workflowlv4tn/series-workflowlv4tn-build-action-1714079340/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-workflowlv4tn/series-workflowlv4tn-convert-artifact-1424489193/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,}