Name: series-workflowmrxcr Phase: Succeeded StartedAt: 2026-08-05 17:49:03 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[0] Phase: Succeeded StartedAt: 2026-08-05 17:49:03 +0000 UTC FinishedAt: 2026-08-05 17:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 17:49:03 +0000 UTC FinishedAt: 2026-08-05 17:52:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_NAT", "MODULES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_NAT", "MODULES" ], "series_id": "503e0a1d-eaf0-42ac-a904-68c55f6bf47b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ctnetlink_new_conntrack", "ctnetlink_create_conntrack", "ctnetlink_parse_nat_setup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkM2FhZDEzOTYxNTEzYzQ4ZDcyZDQwZDUzNTA4NTY4OTU2MDI0YjcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxNzo1MDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbmluZGV4IDMxY2JiMWI1NWI5ZTYuLjQzZjhlNjRhMmViMTkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTE4NTksMTMgJiM0MzsxODU5LDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKCFuYXRfaG9vaykge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcJiMzNDtuZi1uYXRcJiMzNDspIFx1MDAzYyAwKSB7XG4gXHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4mIzQzO1x0XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4mIzQzO1x0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRuYXRfaG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaG9vayk7XG4gXHRcdGlmIChuYXRfaG9vaylcbkBAIC0xODc4LDEzICYjNDM7MTg4MiwxNyBAQCBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdGlmIChlcnIgPT0gLUVBR0FJTikge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcJiMzNDtuZi1uYXQtJXVcJiMzNDssIG5mX2N0X2wzbnVtKGN0KSkgXHUwMDNjIDApIHtcbiBcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gI2Vsc2VcbiBcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG5AQCAtMjI1MywxMCAmIzQzOzIyNjEsMTkgQEAgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRpZiAoaGVscGVyID09IE5VTEwpIHtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcbiYjNDM7XHRcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0XHRnb3RvIGVycjE7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0bmZubF91bmxvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiBcdFx0XHRpZiAocmVxdWVzdF9tb2R1bGUoXCYjMzQ7bmZjdC1oZWxwZXItJXNcJiMzNDssIGhlbHBuYW1lKSBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuJiM0MztcdFx0XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0XHRnb3RvIGVycjE7XG4gXHRcdFx0fVxuJiM0MztcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdGhlbHBlciA9IF9fbmZfY29ubnRyYWNrX2hlbHBlcl9maW5kKGhlbHBuYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OywKICAgICYjMzQ7TU9EVUxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0bmV0bGlua19uZXdfY29ubnRyYWNrJiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrJiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDNhYWQxMzk2MTUxM2M0OGQ3MmQ0MGQ1MzUwODU2ODk1NjAyNGI3MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMTc6NTA6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKaW5kZXggMzFjYmIxYjU1YjllNi4uNDNmOGU2NGEyZWIxOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwpAQCAtMTg1OSwxMyAmIzQzOzE4NTksMTcgQEAgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJaWYgKCFuYXRfaG9vaykgewogI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJaWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpCiYjNDM7CQkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCQluZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwogCQlpZiAocmVxdWVzdF9tb2R1bGUoJiMzNDtuZi1uYXQmIzM0OykgJmx0OyAwKSB7CiAJCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKIAkJCXJjdV9yZWFkX2xvY2soKTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCW5hdF9ob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9ob29rKTsKIAkJaWYgKG5hdF9ob29rKQpAQCAtMTg3OCwxMyAmIzQzOzE4ODIsMTcgQEAgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJaWYgKGVyciA9PSAtRUFHQUlOKSB7CiAjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkKJiM0MzsJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCW5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiAJCWlmIChyZXF1ZXN0X21vZHVsZSgmIzM0O25mLW5hdC0ldSYjMzQ7LCBuZl9jdF9sM251bShjdCkpICZsdDsgMCkgewogCQkJbmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiYjNDM7CQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CiAJCQlyY3VfcmVhZF9sb2NrKCk7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAkJbmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiYjNDM7CQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKIAkJcmN1X3JlYWRfbG9jaygpOwogI2Vsc2UKIAkJZXJyID0gLUVPUE5PVFNVUFA7CkBAIC0yMjUzLDEwICYjNDM7MjI2MSwxOSBAQCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsCiAJCWlmIChoZWxwZXIgPT0gTlVMTCkgewogCQkJcmN1X3JlYWRfdW5sb2NrKCk7CiAjaWZkZWYgQ09ORklHX01PRFVMRVMKJiM0MzsJCQlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkgewomIzQzOwkJCQllcnIgPSAtRU9QTk9UU1VQUDsKJiM0MzsJCQkJZ290byBlcnIxOwomIzQzOwkJCX0KJiM0MzsJCQluZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwogCQkJaWYgKHJlcXVlc3RfbW9kdWxlKCYjMzQ7bmZjdC1oZWxwZXItJXMmIzM0OywgaGVscG5hbWUpICZsdDsgMCkgewomIzQzOwkJCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CiAJCQkJZXJyID0gLUVPUE5PVFNVUFA7CiAJCQkJZ290byBlcnIxOwogCQkJfQomIzQzOwkJCW5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwomIzQzOwkJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwogCiAJCQlyY3VfcmVhZF9sb2NrKCk7CiAJCQloZWxwZXIgPSBfX25mX2Nvbm50cmFja19oZWxwZXJfZmluZChoZWxwbmFtZSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBOZXRsaW5rIE1vZHVsZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGFuZCBpdCYjMzk7cyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgbW9kdWxlIHVubG9hZGluZy4gSXQgc2VlbXMgdGhleSYjMzk7dmUgd3JhcHBlZCB0aGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGxzIGluIGB0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSlgIGFuZCBgbW9kdWxlX3B1dChUSElTX01PRFVMRSlgIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYmVpbmcgZG9uZSB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24sIHdoZXJlIHRoZSBtb2R1bGUgbWlnaHQgdW5sb2FkIHdoaWxlIGEgYHJlcXVlc3RfbW9kdWxlYCBjYWxsIGlzIGluIHByb2dyZXNzLiBUaGUgaW1wb3J0YW50IGRldGFpbCBoZXJlIGlzIHRoZSBwb3RlbnRpYWwgZHJvcCBvZiBgbmZubF9sb2NrYC4gVGhpcyBpcyBjbGV2ZXIsIGhhbmRsaW5nIHRoZSByZWZlcmVuY2UgY291bnRpbmcgdG8gZW5zdXJlIHRoZSBtb2R1bGUgc3RheXMgbG9hZGVkIGxvbmcgZW5vdWdoLgoKTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGwgaW1wbGllcyBzb21lIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBiZWluZyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBzYXlzIGFib3V0IGBuZl9jb25udHJhY2tfbmV0bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGVudHJ5IGZvciBhbnkgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIG5lZWQgZm9yIHRoaXMgcGF0Y2ggb3IgaG93IGl0IG1pZ2h0IGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgIGZpbGUgaXMgYmVpbmcgYnVpbHQgYW5kIHdoZXRoZXIgaXQgaGFzIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsaWtlbHkgbG9hZGVkIGR5bmFtaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19uZXRsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM0PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICYjNDM7PSBuZl9jb25udHJhY2sub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtIyBuZXRsaW5rIGludGVyZmFjZSBmb3IgbmZfY29ubnRyYWNrXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LKSAmIzQzOz0gbmZfY29ubnRyYWNrX25ldGxpbmsub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfTkZfQ1RfTkVUTElOS19USU1FT1VUKSAmIzQzOz0gbmZuZXRsaW5rX2N0dGltZW91dC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBuZXR3b3JraW5nOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gYE5GX0NUX05FVExJTktgKioKCkFscmlnaHQsIHNvIHRoZSBjbHVlIGlzIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCBgQ09ORklHX05GX0NUX05FVExJTktgLiBNeSBmaXJzdCByZWZsZXggaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCBzbyBpdCBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgTkZfQ1RfTkVUTElOS2AgYWN0dWFsbHkgKmRvZXMqLCBob3cgaXQmIzM5O3MgZGVmaW5lZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBpcyB0aGlzIG1vZHVsZSBmb3IsIHdoYXQgb3B0aW9ucyBkbyBJIGhhdmUgc3Vycm91bmRpbmcgaXQ/IEhvcGVmdWxseSB0aGUgS2NvbmZpZyBlbnRyeSBpcyB3ZWxsLWRvY3VtZW50ZWQsIGV4cGxhaW5pbmcgdGhlIGZlYXR1cmVzIGVuYWJsZWQsIGFuZCB3aGVuIHRvIGluY2x1ZGUgaXQgd2l0aGluIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzU1PWNvbmZpZyBORl9DT05OVFJBQ0tfVEZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY2OmNvbmZpZyBORl9DVF9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY3LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM3Mzpjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzc0LVx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluayYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSBvZiBORl9DVF9ORVRMSU5LKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlIG9mIGBORl9DVF9ORVRMSU5LYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcmVzdCBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgb3RoZXIgbmV0ZmlsdGVyIGNvbXBvbmVudHMgYW5kIHBlcmhhcHMgc29tZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gV2hhdCBtb2R1bGVzIG9yIGZlYXR1cmVzIGFyZSBjYWxsaW5nIGludG8gdGhpcz8gV2hhdCBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgZG9lcyBpdCByZWx5IG9uPwoKSSB3YW50IHRvIGtub3cgaWYgaXQmIzM5O3MgdGlnaHRseSBjb3VwbGVkIG9yIHJlbGF0aXZlbHkgbW9kdWxhci4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgY2hhbmdlcyBvciB1cGdyYWRlcz8gQXJlIHdlIGxpa2VseSB0byBmaW5kIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBpZiB3ZSBtb2RpZnkgb3IgZGlzYWJsZSBvdGhlciBuZXRmaWx0ZXIgcGFydHM/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTkZfQ1RfTkVUTElOS2AgaXMgY3JpdGljYWwgdG8gbWFuYWdpbmcgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB2aWEgbmV0bGluaywgc28gSeKAmW0gZXhwZWN0aW5nIGl0IHdpbGwgaGF2ZSBkZWVwIGludm9sdmVtZW50IHdpdGggY29ubnRyYWNrIGl0c2VsZiwgb2YgY291cnNlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSB2YXJpb3VzIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycywgdG9vLiBLbm93aW5nIHRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgdG8gYE5GX0NUX05FVExJTktgIGl0c2VsZiwgb3IgYW55IG9mIHRoZSBzdXJyb3VuZGluZyBwaWVjZXMuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBJIGNvbnNpZGVyIGFueSBjaGFuZ2VzIHRvIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgbWlnaHQgYWZmZWN0IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzY2Olx0Y29uZmlnIE5GX0NUX05FVExJTktcbiAzNjc6XHRcdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4gMzY4Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAzNjk6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDM3MDpcdFx0aGVscFxuIDM3MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGEgbmV0bGluay1iYXNlZCB1c2Vyc3BhY2UgaW50ZXJmYWNlXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxuIDM3NDpcdFx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4gMzc1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBORl9DVF9ORVRMSU5LKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5GX0NUX05FVExJTktgIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSB0aGUgcGFyZW50IGNvbmZpZyBvcHRpb24uIEl0IHNlZW1zIHByZXR0eSBjbGVhciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhhdCBpdCByZWxpZXMgb24gYE5GX0NPTk5UUkFDS2AuIEJ1dCwgSSBhbHdheXMgbGlrZSB0byBjb25maXJtIHRoZXNlIHRoaW5ncyBkaXJlY3RseS4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgTkZfQ09OTlRSQUNLYCBpcyBpbmRlZWQgdGhlIHBhcmVudCBtZW51IG9yICYjMzQ7aWYmIzM0OyBzdGF0ZW1lbnQuCgpJJiMzOTtsbCBqdW1wIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDM2Ni4gVGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfQ1RfTkVUTElOS2AgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBxdWlja2x5IGdpdmUgbWUgYSBkZWZpbml0aXZlIGFuc3dlciBhbmQgaG9wZWZ1bGx5LCBjb25maXJtIHdoYXQgSSBhbHJlYWR5IHN1c3BlY3QuIFRoaXMgc29ydCBvZiBjaGVjayBpcyBwcmV0dHkgcm91dGluZSwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCBhdm9pZCBhc3N1bXB0aW9ucywgZXNwZWNpYWxseSBpbiBhIHN5c3RlbSBhcyBjb21wbGV4IGFzIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9OTg9Y29uZmlnIE5GX0xPR19TWVNMT0dcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDppZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEtY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29ubnRyYWNrIE5ldGxpbmsgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZS4gVGhlIGBORl9DT05OVFJBQ0tgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhIGdpdmVuIOKAkyBpdCYjMzk7cyBmdW5kYW1lbnRhbC4gQW5kLCBhcyBleHBlY3RlZCwgYE5FVEZJTFRFUl9ORVRMSU5LYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGR1ZSB0byBgTkZfQ1RfTkVUTElOS2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBzaGlmdHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciByZWFjaGFiaWxpdHkuIE5vIHN1cnByaXNlcyBoZXJlOyB0aGV5JiMzOTtyZSBpbnRlZ3JhbCBwYXJ0cyBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UgZm9yIGNvbm50cmFjay4gU3BlY2lmaWNhbGx5LCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGlzIGNhbGxlZCB3aGVuIHVzZXJzcGFjZSBpcyBjcmVhdGluZyBhIG5ldyBjb25udHJhY2sgZW50cnkgdmlhIG5ldGxpbmsuIFRoYXQmIzM5O3MgYSBrZXkgaW50ZXJhY3Rpb24gcG9pbnQuICBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgaXMgY2xlYXJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiB0aHJvdWdoIG5ldGxpbmsg4oCTIHNvIGFueSBOQVQgcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXJlIGhhbmRsZWQgdGhlcmUuCgpOb3csIEkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aGV5IGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGZ1cnRoZXIgYW5kIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbnMgbW9yZSBjbG9zZWx5IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE4NDk9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTg1MS1cdFx0XHQgIGVudW0gbmZfbmF0X21hbmlwX3R5cGUgbWFuaXAsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkxOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlx0cmV0ID0gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX0RTVCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTIxLVx0XHRcdFx0XHRjZGFbQ1RBX05BVF9EU1RdKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTI1Olx0cmV0dXJuIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9TUkMsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cdFx0XHRcdFx0IGNkYVtDVEFfTkFUX1NSQ10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzbmlwcGV0cywgZ2VhcmVkIHRvd2FyZHMgc29tZW9uZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczoKCioqQW5hbHl6aW5nIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBtZW50YWwgY2hlY2suIEdpdmVuIHRoYXQgaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gTXkgbmV4dCBpbnN0aW5jdCBpcyB0byB0cmFjZSBob3cgYW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBhcyB1bmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IGlzIGNydWNpYWwuIENvbnNpZGVyaW5nIHRoZSBuYW1lLCBpdCYjMzk7cyBtb3N0IGxpa2VseSByZWxhdGVkIHRvIE5BVCBjb25maWd1cmF0aW9uIHZpYSBuZXRsaW5rLiBOb3csIGxldCYjMzk7cyB6b29tIGluIG9uIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBQZXJoYXBzIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBoYW5kbGVzIHBhcnNpbmcgdGhlIE5BVCBzZXR0aW5ncywgYW5kIHRoZW4gYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBnZXRzIGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBjb25udHJhY2sgZW50cnkgc2V0dXAgYW5kIGNyZWF0aW9uIHByb2Nlc3MuIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbi4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoZSBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgaW5mb3JtYXRpb24gcGFyc2VkIGJ5IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBwYXNzZWQgdG8gb3IgdXNlZCBieSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIyOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQ0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2Olx0XHRcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cdTAwM2VuZXQsIFx1MDAyNnpvbmUsIGNkYSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVx0XHRcdFx0XHRcdFx0XHUwMDI2b3R1cGxlLCBcdTAwMjZydHVwbGUsIHUzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjExNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgRW50cnkgUG9pbnRzIGluIHRoZSBDb25udHJhY2sgTmV0bGluayBNb2R1bGUqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhlIHR3byBjb3JlIGZ1bmN0aW9ucyB3ZSYjMzk7cmUgZm9jdXNpbmcgb24sIHRoZSBlbnRyeSBwb2ludHMsIGFyZSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFuZCBgY3RuZXRsaW5rX3NldHVwX25hdGAuIEJvdGggb2YgdGhlc2Ugc2VlbSB0byBiZSBzdGF0aWMgd2l0aGluIHRoZSBtb2R1bGUsIG1lYW5pbmcgdGhleSBhcmVuJiMzOTt0IGV4cG9zZWQgZXh0ZXJuYWxseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCwgbGV0JiMzOTtzIGRpdmUgaW50byBgY3RuZXRsaW5rX3NldHVwX25hdGAgZmlyc3QuIEkgd2FudCB0byBzZWUgaG93IE5BVCBpcyBoYW5kbGVkIHdpdGhpbiB0aGlzIG5ldGxpbmsgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgTkFUIHNldHVwIHdpbGwgcHJvdmlkZSBjcml0aWNhbCBpbnNpZ2h0IHRvIGhvdyB0aGUgQ29ubnRyYWNrIG1vZHVsZSBoYW5kbGVzIHRoZSB1bmRlcmx5aW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19zZXR1cF9uYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE5MTI6Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTEzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMxMzpcdGVyciA9IGN0bmV0bGlua19zZXR1cF9uYXQoY3QsIGNkYSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBDb25udHJhY2sgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBgY3RuZXRsaW5rX3NldHVwX25hdGAuLi4gdGhhdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCB0b28sIGp1c3QgbGlrZSBzb21lIG90aGVyIGNydWNpYWwgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gSXQgcmVpbmZvcmNlcyB0aGUgaWRlYSB0aGF0IGl0JiMzOTtzIG1lYW50IHRvIGJlIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIGV4dGVybmFsIGNhbGxlcnMsIHdoaWNoIGlzIGEgY29tbW9uIHByYWN0aWNlIGZvciBnb29kIG1vZHVsYXIgZGVzaWduLCBvZiBjb3Vyc2UuIEtlZXBzIHRoaW5ncyB0aWR5LiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbmV3IGNvbm50cmFjayBlbnRyaWVzIGFwcGVhcnMgdG8gYmUgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgdGhhdCBpcyB3aGVyZSB0aGUgd2hvbGUgcHJvY2VzcyBnZXRzIGtpY2tlZCBvZmYuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgaGFwcGVucyBhdCB0aGF0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0MDEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjQwMjpzdGF0aWMgaW50IGN0bmV0bGlua19uZXdfY29ubnRyYWNrKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQwMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfY2JbSVBDVE5MX01TR19NQVhdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXHRbSVBDVE5MX01TR19DVF9ORVddXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzc3Olx0XHQuY2FsbFx0XHQ9IGN0bmV0bGlua19uZXdfY29ubnRyYWNrLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzgtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2MAoJCQkJCQkJb3V0cHV0OiA2OAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4cGxvcmluZyBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBCdXQgd2FpdCwgaXQmIzM5O3MgcmVnaXN0ZXJlZCBpbiBgY3RubF9jYmAuIFRoYXQmIzM5O3MgYW4gaW50ZXJlc3RpbmcgZGV0YWlsLiBOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBhcmUgdGhlcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2U/IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IEkgY2FuIHVzZSBoZXJlLgoKTGV0JiMzOTtzIGRpdmUgaW50byBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBodW50IGZvciB1c2FibGUsIGV4dGVybmFsbHktYWNjZXNzaWJsZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjb25udHJhY2sgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZSB0aGF0IEkgY2FuIGNhbGwgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qXFwoW2EtekEtWjAtOV8gLCpdKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjkyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTM6Y3RuZXRsaW5rX2R1bXBfYWNjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIGludCB0eXBlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI5NC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA5OmN0bmV0bGlua19kdW1wX3RpbWVzdGFtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzg2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODc6Y3RuZXRsaW5rX2R1bXBfZXZlbnRfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz00MTM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQxNDpjdG5ldGxpbmtfZHVtcF9sYWJlbHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTQxNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQ1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NDU2OmR1bXBfY3Rfc2VxX2FkaihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY3Rfc2VxYWRqICpzZXEsIGludCB0eXBlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTQ1Ny17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTc0Mz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NzQ0OmN0bmV0bGlua19jb25udHJhY2tfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2N0X2V2ZW50ICppdGVtKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTc0NS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTEyMTA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjEyMTE6Y3RuZXRsaW5rX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTEyMTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzY5PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzcwOmN0bmV0bGlua19kdW1wX3VuY29uZmlybWVkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzcxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTc3NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc3NjpjdG5ldGxpbmtfZHVtcF9keWluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc3Ny17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI1Mzk9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI1NDA6Y3RuZXRsaW5rX2N0X3N0YXRfY3B1X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI1NDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjU0PXN0YXRpYyBzaXplX3Rcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjU1OmN0bmV0bGlua19nbHVlX2J1aWxkX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI2NTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODQyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODQzOmN0bmV0bGlua19nbHVlX3BhcnNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODQ0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzEwOD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEwOTpjdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzExMC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNjg9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNjk6Y3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTcwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzIxNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzIxNjpjdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzI4PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzI5OmN0bmV0bGlua19leHBfc3RhdF9jcHVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzczMC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NTc9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX2Nvbm50cmFja19uZXRsaW5rXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU4Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTkspO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTk6TU9EVUxFX0FMSUFTX05GTkxfU1VCU1lTKE5GTkxfU1VCU1lTX0NUTkVUTElOS19FWFApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NjAtXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM5MTg9c3RhdGljIHZvaWQgX19leGl0IGN0bmV0bGlua19leGl0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM5MjgtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzkyOTptb2R1bGVfaW5pdChjdG5ldGxpbmtfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzkzMDptb2R1bGVfZXhpdChjdG5ldGxpbmtfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoaXMgY29ubnRyYWNrIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHN0YXRpYyBzY29waW5nLCBhbmQgaG93IHRoZXkgbWlnaHQgYWZmZWN0IGludGVyYWN0aW9uIGJldHdlZW4gZGlmZmVyZW50IG1vZHVsZXMgb3IgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLgoKKipSZS1FeGFtaW5pbmcgQ29ubnRyYWNrIEZ1bmN0aW9ucyoqCgpNeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIGluIHRoZSBjb2RlYmFzZSB0aGF0IGhhcyBhIGNyaXRpY2FsIGltcGFjdCBvbiB0aGUgY29ubnRyYWNrIGZ1bmN0aW9uYWxpdHkuIFRvIHRoYXQgZW5kLCBJJiMzOTtsbCBzY3J1dGluaXplIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBvciwgbW9yZSBnZW5lcmFsbHksIGZ1bmN0aW9ucyB0aGF0IGFyZW4mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQsIGFuZCB0aGF0IHdvdWxkIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gaW52b2tlIG5ldGxpbmssIG9yIG1vZGlmeSBjb25udHJhY2sgYmVoYXZpb3IgaW4gbm9uLW9idmlvdXMgd2F5cy4gSSYjMzk7bSBmb2N1c2luZyBvbiBzY29wZSwgYW5kIGVuc3VyaW5nIHRoZSByaWdodCBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGluIHRoZSByaWdodCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgY3RuZXRsaW5rXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBuZl9jb25udHJhY2tfbmV0bGluay5jKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVnZXIgcmVsYXRlZCBvcGVyYXRpb25zLiBNeSBtZW50YWwgbWFwIGlzIGFscmVhZHkgZm9ybWluZyAtIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoYXQgYF5pbnQgYCBiaXQuIFRoYXQmIzM5O3MgZ290IHRvIGJlIGtleS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gVGltZSB0byB0cmFjZSB0aGlzIHRocm91Z2ggYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWxsIGFib3V0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgaW50ZWdlcnMgYXJlIGhhbmRsZWQgaGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGl2aW5nIGludG8gYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIGV4YWN0bHkgYEVYUE9SVF9TWU1CT0xgIGlzIHV0aWxpemVkIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYC4gSSYjMzk7dmUgZ290IGEgaHVuY2ggdGhlcmUmIzM5O3Mgc29tZXRoaW5nIHNwZWNpZmljIEkgbmVlZCB0byB2ZXJpZnkgcmVnYXJkaW5nIGl0cyB1c2FnZSBpbiB0aGF0IGZpbGUuIEl0JiMzOTtzIHRpbWUgdG8gZHJpbGwgZG93biBhbmQgcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRob3NlIHN5bWJvbHMgYXJlIG1hZGUgYXZhaWxhYmxlIOKAkyBsaWtlbHkgcmVsYXRlZCB0byBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZSBvciBtYXliZSBhbm90aGVyIGtlcm5lbCBtb2R1bGUuIEl0IGNvdWxkIGJlIGFib3V0IHN5bWJvbCB2aXNpYmlsaXR5IG9yIHBlcmhhcHMgc29tZSBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgSSBuZWVkIHRvIGNsYXJpZnkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gdGhpcyBmaWxlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gU2luY2UgdGhlcmUgYXJlIG5vIGV4cG9ydGVkIHN5bWJvbHMgYW5kIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBJIGNhbiBqdXN0IHplcm8gaW4gb24gYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIOKAkyB0aGV5JiMzOTtyZSB0aGUgaW50ZXJlc3Rpbmcgc3RhdGljIGZ1bmN0aW9ucyBoZXJlLiBBbHRlcm5hdGl2ZWx5LCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFdhaXQgYSBtaW51dGXigKYgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyByZWdpc3RlcmVkIGluc2lkZSBgY3RubF9jYmAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgaXMgcGFydCBvZiBgbmZuZXRsaW5rYC4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgY2hlY2sgaG93IGBjdG5sX2NiYCBpcyByZWdpc3RlcmVkLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gbGlrZWx5IGJlZ2lucy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhhdCByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmxfY2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3Njk9c3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNzc0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM3NzU6c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfY2JbSVBDVE5MX01TR19NQVhdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXHRbSVBDVE5MX01TR19DVF9ORVddXHQ9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzg0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmV0bGlua19zdWJzeXN0ZW0gY3RubF9zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDYtXHQuY2JfY291bnRcdFx0XHQ9IElQQ1ROTF9NU0dfTUFYLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NDc6XHQuY2JcdFx0XHRcdD0gY3RubF9jYixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODQ4LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25udHJhY2sgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgVGFyZ2V0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBJIHNlZSBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBsb29rIHByb21pc2luZzogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYC4gRXZlbiBpZiB0aGV5JiMzOTtyZSBkZWNsYXJlZCBzdGF0aWMsIGl0IGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGJsb2NrIFN5emthbGxlcjsgaWYgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHRoZXkgc2hvdWxkIGJlIGFjY2Vzc2libGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBpZiBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGlzIGlubGluZWQuIEl0JiMzOTtzIGEgZmFpcmx5IHN1YnN0YW50aWFsIGNodW5rIG9mIGNvZGUsIHNvIG15IGd1dCBzYXlzICYjMzQ7bm8sJiMzNDsgYnV0IGJldHRlciB0byBjb25maXJtLiBJJiMzOTtsbCBhbHNvIGhhdmUgYSBsb29rIGF0IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCB3aGlsZSBJJiMzOTttIGF0IGl0IOKAkyBpdCBsb29rcyBzaW1pbGFybHkgY29tcGxleC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBDbGVhcmx5LCBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGEgbXVzdC4gQW5kLCBhaCwgbG9va3MgbGlrZSBgQ09ORklHX01PRFVMRVNgIGlzIGFsc28gbmVlZGVkIHRvIGFjdGl2YXRlIHRoYXQgYHRyeV9tb2R1bGVfZ2V0YCBjb2RlIHBhdGgsIHdoaWNoIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJIHdvbmRlciBpZiB0aGF0JiMzOTtzIGEgY29tbW9uIG9wdGlvbj8gWWVwLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RhbmRhcmQgb25lLgoKV2FpdCBhIHNlY29uZOKApiBgQ09ORklHX05GX05BVGAgaXMgYWxzbyBsaXN0ZWQgYXMgYSByZXF1aXJlbWVudC4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGF0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzk4PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MDc6Y29uZmlnIE5GX05BVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDIxOmNvbmZpZyBORl9OQVRfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDM2OmNvbmZpZyBORl9OQVRfVEZUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Mi1cdGJvb2xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ0OmNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0NS1cdGJvb2xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ3OmNvbmZpZyBORl9OQVRfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY1OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBNb2R1bGUgUGF0Y2ggZm9yIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBgTkZfQ1RfTkVUTElOS2AgYW5kIGBORl9OQVRgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgYWN0aXZlIGFuZCBjYW4gYmUgdGVzdGVkIHByb3Blcmx5LiBCdXQgdGhlbiBJIHJlbWVtYmVyLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBkZWFscyB3aXRoIGB0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSlgIGFuZCBgbW9kdWxlX3B1dChUSElTX01PRFVMRSlgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCB1bmxvYWQgZHVyaW5nIGEgYHJlcXVlc3RfbW9kdWxlYCBjYWxsLgoKR2l2ZW4gaXRzIGZ1bmN0aW9uYWwgbmF0dXJlIGFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIHRoZSBjb3JlIG5ldGZpbHRlciBuZXRsaW5rIGNvZGUsIGZ1enppbmcgaXQgc2VlbXMgd29ydGh3aGlsZS4gTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgc3ltYm9scyBmb3IgZnV6emluZy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgYWJvdXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCBidXQgaG9sZCBvbi4uLiBJIHJlbWVtYmVyIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBhY3R1YWxseSBzdGF0aWMuIFNvLCBsZXQgbWUgcmUtZXZhbHVhdGU7IHBlcmhhcHMgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBhIGJldHRlciB0YXJnZXQuIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgYWltIGZvciBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFuZCBgY3RuZXRsaW5rX3NldHVwX25hdGAuIFdhaXQsIHNjcmF0Y2ggdGhhdCwgYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIGFsc28gc3RhdGljISBUaGUgYmVzdCBjaG9pY2UgaXMgZGVmaW5pdGVseSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24uIEFscmlnaHQsIEkmIzM5O3ZlIGdvdCBpdC4gYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHBhcmVudCBtb2R1bGUsIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgbW9kdWxlIGF0IGhhbmQgYW5kIGBORl9OQVRgIGlzIHRoZSBvbmUgYmVpbmcgcmVxdWVzdGVkLiBTbyBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAgYXJlIHRoZSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgdG8gbWFrZSBzdXJlIGFsbCBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgdGVzdGVkIHRob3JvdWdobHkuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFyZSBub3QgaW5saW5lZCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xODQ5PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxODUwOmN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXHRcdFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xOTEyPWN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyMDpcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyMS1cdFx0XHRcdFx0Y2RhW0NUQV9OQVRfRFNUXSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjQtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcdHJldHVybiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKGN0LCBORl9OQVRfTUFOSVBfU1JDLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjYtXHRcdFx0XHRcdCBjZGFbQ1RBX05BVF9TUkNdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgdGhlIENvbnRleHQgb2YgYGN0bmV0bGlua19zZXR1cF9uYXRgKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgYGN0bmV0bGlua19zZXR1cF9uYXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZS4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIEl0ICpjb3VsZCogYmUgaW5saW5lZCDigJMgdGhhdCB3b3VsZCBiZSBhIHJlYXNvbmFibGUgZXhwbGFuYXRpb24gZm9yIHRoZSBkdXBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgc2VsZi1jb250YWluZWQgYml0IG9mIGZ1bmN0aW9uYWxpdHkuIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGl0cyAmIzM0O2xhcmdlbmVzcyYjMzQ7IHN1Z2dlc3RzIGl0JiMzOTtzIHN1YnN0YW50aWFsLCBhbmQgaW5saW5pbmcgYSBiaWcgZnVuY3Rpb24gaXMgdXN1YWxseSBzb21ldGhpbmcgSSYjMzk7ZCB0cnkgdG8gYXZvaWQgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29tcGVsbGluZyBwZXJmb3JtYW5jZSByZWFzb24gb3Igc2lnbmlmaWNhbnQgc2ltcGxpZmljYXRpb24gb2YgdGhlIGNhbGxpbmcgY29kZS4KClRoZXJlZm9yZSwgc2luY2UgdGhlIGNvZGUgaXMgbGFyZ2UsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBzaW5jZSB0aGlzIGNvdWxkIGJlIHdoZXJlIHRoZSAmIzM0O3NldHVwJiMzNDsgaXMgYmVpbmcgY2FsbGVkLiBQZXJoYXBzIG9uZSBvZiB0aGUgY2FsbHMgY291bGQgYmUgb3B0aW1pemVkIGZvciBhIGRpcmVjdCBlbnRyeS4gSSBuZWVkIHRvIGRpdmUgaW50byBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFuZCB0cmFjZSBob3cgYW5kIHdoZW4gdGhhdCBjYWxsIGlzIGJlaW5nIG1hZGUuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmluZyBpZiB0aGVzZSBjYWxscyBhcmUgcmVkdW5kYW50IG9yIGlmIHRoZXkgcGVyZm9ybSBkaXN0aW5jdCwgbmVjZXNzYXJ5IHJvbGVzLiBNeSBleHBlcnQgaW50dWl0aW9uIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIHJlZmFjdG9yaW5nLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgJiMzNDtzZXR1cCYjMzQ7IGlzIGFjdHVhbGx5IHV0aWxpemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIyOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQ0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2Olx0XHRcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cdTAwM2VuZXQsIFx1MDAyNnpvbmUsIGNkYSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVx0XHRcdFx0XHRcdFx0XHUwMDI2b3R1cGxlLCBcdTAwMjZydHVwbGUsIHUzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ29ubnRyYWNrIE5ldGxpbmsgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZS4gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50LCBjYWxsZWQgb25seSBvbmNlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGlubGluZWQ/IElmIGl0ICppcyogaW5saW5lZCwgdGhlbiBzeXprYWxsZXIgbWlnaHQgbWlzcyBpdCBhcyBhIGRpc3RpbmN0IHN5bWJvbC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGluIGEgc3RydWN0IGFuZCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBtYWtlcyBtZSB0aGluayBpdCBjYW4mIzM5O3QgYmUgY29tcGxldGVseSBpbmxpbmVkIGFueXdheS4KCkp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBJJiMzOTtsbCBhbHNvIGluY2x1ZGUgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGluIHRoZSBsaXN0LCBqdXN0IGluIGNhc2UgdGhleSAqYXJlbiYjMzk7dCogaW5saW5lZCwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IG9kZG5lc3MgaW4gdGhlIGNvbXBpbGVyJiMzOTtzIG9wdGltaXphdGlvbi4KCk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4uLiB5ZXAsIGl0JiMzOTtzIGBzdGF0aWMgaW50IGN0bmV0bGlua19uZXdfY29ubnRyYWNrKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlgLiBTZWVtcyByaWdodC4KCkFscmlnaHQsIGxldCYjMzk7cyBsb29rIGZvciBvdGhlciBlbnRyeSBwb2ludHMganVzdCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4gT2theSwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyAqb25seSogY2FsbGVkIGZyb20gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4gQW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgZnJvbSBib3RoIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfY2hhbmdlX2Nvbm50cmFja2AuIEdvdCBpdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19zZXR1cF9uYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE5MTI6Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTEzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMxMzpcdGVyciA9IGN0bmV0bGlua19zZXR1cF9uYXQoY3QsIGNkYSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDA3CgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDM2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgTW9kdWxlIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIEl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIG9ubHkgY2FsbGVkIGZyb20gYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGVudHJ5IHBvaW50IGludG8gdGhpcyBtb2RpZmllZCBjb2RlIGlzIGxpa2VseSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0LiBZZXAsIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgKmlzKiBjYWxsZWQgYnkgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgYW5kIHRoZW4gYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGFuZCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgZ2V0cyBjYWxsZWQgYnkgYGN0bmV0bGlua19zZXR1cF9uYXRgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIGRlZmluaXRlbHkgdGhlIHByaW1lIGVudHJ5IHBvaW50IGhlcmUuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2UgYSBub3RlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciB0aGlzOiBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUYCwgYW5kIGBNT0RVTEVTYC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGFkZCB0aG9zZSB0byBteSBFbmFibGVDb25maWdzLgoKTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaXNzdWUgaXMgdGhpczogdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0gd2l0aGluIGBuZl9jb25udHJhY2tfbmV0bGlua2AuIFRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IHVubG9hZCB0aGUgbW9kdWxlIHdoaWxlIGByZXF1ZXN0X21vZHVsZWAgd2FzIGluIHVzZS4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYHRyeV9tb2R1bGVfZ2V0YCBhbmQgYG1vZHVsZV9wdXRgIGFyb3VuZCB0aG9zZSBgcmVxdWVzdF9tb2R1bGVgIGNhbGxzIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBzb3VuZCBhcHByb2FjaC4gVGhpcyBtZWFucyB0aGUgZml4IGlzIGFkZHJlc3NpbmcgY29yZSBuZXRmaWx0ZXIgY29kZS4gQmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvZGUsIGl0IGlzIGFic29sdXRlbHkgZnV6emFibGUuCgpHaXZlbiB0aGF0LCBJIHdhbnQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGFuZCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDozOC41NTYwNjk5MTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDE1MDk2NDA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTU9EVUxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0bmV0bGlua19uZXdfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja1wiLFxuICAgIFwiY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiBuZl9jb25udHJhY2tfbmV0bGluayB3aGVyZSB0aGUgbW9kdWxlIGNvdWxkIGJlIHVubG9hZGVkIHdoaWxlIHJlcXVlc3RfbW9kdWxlIGlzIGNhbGxlZC4gSXQgYWRkcyB0cnlfbW9kdWxlX2dldCBhbmQgbW9kdWxlX3B1dCBhcm91bmQgcmVxdWVzdF9tb2R1bGUgY2FsbHMgaW4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCBhbmQgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6MzguNTU2MDc3OTk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NTAwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkM2FhZDEzOTYxNTEzYzQ4ZDcyZDQwZDUzNTA4NTY4OTU2MDI0YjcwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTc6NTA6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXFxuaW5kZXggMzFjYmIxYjU1YjllNi4uNDNmOGU2NGEyZWIxOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5AQCAtMTg1OSwxMyArMTg1OSwxNyBAQCBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0aWYgKCFuYXRfaG9vaykge1xcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuIFxcdFxcdGlmIChyZXF1ZXN0X21vZHVsZShcXFwibmYtbmF0XFxcIikgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbitcXHRcXHRcXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdFxcdG5hdF9ob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9ob29rKTtcXG4gXFx0XFx0aWYgKG5hdF9ob29rKVxcbkBAIC0xODc4LDEzICsxODgyLDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRpZiAoZXJyID09IC1FQUdBSU4pIHtcXG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbiBcXHRcXHRpZiAocmVxdWVzdF9tb2R1bGUoXFxcIm5mLW5hdC0ldVxcXCIsIG5mX2N0X2wzbnVtKGN0KSkgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbitcXHRcXHRcXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuICNlbHNlXFxuIFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbkBAIC0yMjUzLDEwICsyMjYxLDE5IEBAIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0aWYgKGhlbHBlciA9PSBOVUxMKSB7XFxuIFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcXG4rXFx0XFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbiBcXHRcXHRcXHRpZiAocmVxdWVzdF9tb2R1bGUoXFxcIm5mY3QtaGVscGVyLSVzXFxcIiwgaGVscG5hbWUpIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRcXHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcXG4rXFx0XFx0XFx0XFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XFxuIFxcdFxcdFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRoZWxwZXIgPSBfX25mX2Nvbm50cmFja19oZWxwZXJfZmluZChoZWxwbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6MzkuMTA5NDYyMzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODk1OTc1NjIyNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCIsXG4gICAgXCJORl9OQVRcIixcbiAgICBcIk1PRFVMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfbmV3X2Nvbm50cmFja1wiLFxuICAgIFwiY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzYWFkMTM5NjE1MTNjNDhkNzJkNDBkNTM1MDg1Njg5NTYwMjRiNzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE3OjUwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCAzMWNiYjFiNTViOWU2Li40M2Y4ZTY0YTJlYjE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0xODU5LDEzICsxODU5LDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKCFuYXRfaG9vaykge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpXG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuIFx0XHRpZiAocmVxdWVzdF9tb2R1bGUoXCJuZi1uYXRcIikgXHUwMDNjIDApIHtcbiBcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR9XG4gXHRcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuK1x0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRuYXRfaG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaG9vayk7XG4gXHRcdGlmIChuYXRfaG9vaylcbkBAIC0xODc4LDEzICsxODgyLDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSlcbitcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcIm5mLW5hdC0ldVwiLCBuZl9jdF9sM251bShjdCkpIFx1MDAzYyAwKSB7XG4gXHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4rXHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiAjZWxzZVxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbkBAIC0yMjUzLDEwICsyMjYxLDE5IEBAIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0aWYgKGhlbHBlciA9PSBOVUxMKSB7XG4gXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXG4rXHRcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbitcdFx0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0XHRcdFx0Z290byBlcnIxO1xuK1x0XHRcdH1cbitcdFx0XHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuIFx0XHRcdGlmIChyZXF1ZXN0X21vZHVsZShcIm5mY3QtaGVscGVyLSVzXCIsIGhlbHBuYW1lKSBcdTAwM2MgMCkge1xuK1x0XHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4rXHRcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdFx0Z290byBlcnIxO1xuIFx0XHRcdH1cbitcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcbiBcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdFx0aGVscGVyID0gX19uZl9jb25udHJhY2tfaGVscGVyX2ZpbmQoaGVscG5hbWUsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDozOS4xMDk0NjM2NjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzYyMzU2MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIE5ldGxpbmsgTW9kdWxlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGFuZCBpdCdzIG1ha2luZyBtZSB0aGluayBhYm91dCBtb2R1bGUgdW5sb2FkaW5nLiBJdCBzZWVtcyB0aGV5J3ZlIHdyYXBwZWQgdGhlIGByZXF1ZXN0X21vZHVsZSgpYCBjYWxscyBpbiBgdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpYCBhbmQgYG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpYCB3aXRoaW4gYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGJlaW5nIGRvbmUgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uLCB3aGVyZSB0aGUgbW9kdWxlIG1pZ2h0IHVubG9hZCB3aGlsZSBhIGByZXF1ZXN0X21vZHVsZWAgY2FsbCBpcyBpbiBwcm9ncmVzcy4gVGhlIGltcG9ydGFudCBkZXRhaWwgaGVyZSBpcyB0aGUgcG90ZW50aWFsIGRyb3Agb2YgYG5mbmxfbG9ja2AuIFRoaXMgaXMgY2xldmVyLCBoYW5kbGluZyB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSB0aGUgbW9kdWxlIHN0YXlzIGxvYWRlZCBsb25nIGVub3VnaC5cblxuTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGwgaW1wbGllcyBzb21lIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGJlaW5nIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gc2F5cyBhYm91dCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBNYWtlZmlsZSBlbnRyeSBmb3IgYW55IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBuZWVkIGZvciB0aGlzIHBhdGNoIG9yIGhvdyBpdCBtaWdodCBmdW5jdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCBmaWxlIGlzIGJlaW5nIGJ1aWx0IGFuZCB3aGV0aGVyIGl0IGhhcyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlrZWx5IGxvYWRlZCBkeW5hbWljYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUwOjQzLjg3MTgyOTM0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxNDM0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX25ldGxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM0PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICs9IG5mX2Nvbm50cmFjay5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM2LSMgbmV0bGluayBpbnRlcmZhY2UgZm9yIG5mX2Nvbm50cmFja1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICs9IG5mX2Nvbm50cmFja19uZXRsaW5rLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICs9IG5mbmV0bGlua19jdHRpbWVvdXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo0My45OTA5ODE0MjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwNTYxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgbmV0d29ya2luZzpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gYE5GX0NUX05FVExJTktgKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIE15IGZpcnN0IHJlZmxleCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSwgc28gaXQgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5GX0NUX05FVExJTktgIGFjdHVhbGx5ICpkb2VzKiwgaG93IGl0J3MgZGVmaW5lZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBpcyB0aGlzIG1vZHVsZSBmb3IsIHdoYXQgb3B0aW9ucyBkbyBJIGhhdmUgc3Vycm91bmRpbmcgaXQ/IEhvcGVmdWxseSB0aGUgS2NvbmZpZyBlbnRyeSBpcyB3ZWxsLWRvY3VtZW50ZWQsIGV4cGxhaW5pbmcgdGhlIGZlYXR1cmVzIGVuYWJsZWQsIGFuZCB3aGVuIHRvIGluY2x1ZGUgaXQgd2l0aGluIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NDcuMzkxNTQ0NDcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDY4MTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo0Ny41MDIyMzM2MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcyNjI4NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgTkZfQ1RfTkVUTElOSyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgb2YgYE5GX0NUX05FVExJTktgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBvdGhlciBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgcGVyaGFwcyBzb21lIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW1zLiBXaGF0IG1vZHVsZXMgb3IgZmVhdHVyZXMgYXJlIGNhbGxpbmcgaW50byB0aGlzPyBXaGF0IGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBkb2VzIGl0IHJlbHkgb24/XG5cbkkgd2FudCB0byBrbm93IGlmIGl0J3MgdGlnaHRseSBjb3VwbGVkIG9yIHJlbGF0aXZlbHkgbW9kdWxhci4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgY2hhbmdlcyBvciB1cGdyYWRlcz8gQXJlIHdlIGxpa2VseSB0byBmaW5kIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBpZiB3ZSBtb2RpZnkgb3IgZGlzYWJsZSBvdGhlciBuZXRmaWx0ZXIgcGFydHM/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTkZfQ1RfTkVUTElOS2AgaXMgY3JpdGljYWwgdG8gbWFuYWdpbmcgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB2aWEgbmV0bGluaywgc28gSeKAmW0gZXhwZWN0aW5nIGl0IHdpbGwgaGF2ZSBkZWVwIGludm9sdmVtZW50IHdpdGggY29ubnRyYWNrIGl0c2VsZiwgb2YgY291cnNlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHZhcmlvdXMgY29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzLCB0b28uIEtub3dpbmcgdGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2hhbmdlcyB0byBgTkZfQ1RfTkVUTElOS2AgaXRzZWxmLCBvciBhbnkgb2YgdGhlIHN1cnJvdW5kaW5nIHBpZWNlcy4gSSBhbHNvIG5lZWQgdG8gYmUgY2VydGFpbiB0aGF0IEkgY29uc2lkZXIgYW55IGNoYW5nZXMgdG8gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NTEuMjc0ODY1MjIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjY6XFx0Y29uZmlnIE5GX0NUX05FVExJTktcXG4gMzY3OlxcdFxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJ1xcbiAzNjg6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDM2OTpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gMzcwOlxcdFxcdGhlbHBcXG4gMzcxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG5ldGxpbmstYmFzZWQgdXNlcnNwYWNlIGludGVyZmFjZVxcbiAzNzI6XFx0XFxuIDM3MzpcXHRjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZSAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsnXFxuIDM3NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NTEuMjc1MDI0MjAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NDQyOTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBORl9DVF9ORVRMSU5LKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBORl9DVF9ORVRMSU5LYCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY3kgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIHBhcmVudCBjb25maWcgb3B0aW9uLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHRoYXQgaXQgcmVsaWVzIG9uIGBORl9DT05OVFJBQ0tgLiBCdXQsIEkgYWx3YXlzIGxpa2UgdG8gY29uZmlybSB0aGVzZSB0aGluZ3MgZGlyZWN0bHkuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5GX0NPTk5UUkFDS2AgaXMgaW5kZWVkIHRoZSBwYXJlbnQgbWVudSBvciBcImlmXCIgc3RhdGVtZW50LlxuXG5JJ2xsIGp1bXAgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMzY2LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9uIG9mIGBORl9DVF9ORVRMSU5LYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBhIGRlZmluaXRpdmUgYW5zd2VyIGFuZCBob3BlZnVsbHksIGNvbmZpcm0gd2hhdCBJIGFscmVhZHkgc3VzcGVjdC4gVGhpcyBzb3J0IG9mIGNoZWNrIGlzIHByZXR0eSByb3V0aW5lLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYXNzdW1wdGlvbnMsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW0gYXMgY29tcGxleCBhcyB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo1NS42NTk0NTcyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNzY4ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTk4PWNvbmZpZyBORl9MT0dfU1lTTE9HXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTA6aWYgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMS1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo1NS43NTEyMzQzNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5OTk3MTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29ubnRyYWNrIE5ldGxpbmsgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIGNsZWFyIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBUaGUgYE5GX0NPTk5UUkFDS2Aga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGEgZ2l2ZW4g4oCTIGl0J3MgZnVuZGFtZW50YWwuIEFuZCwgYXMgZXhwZWN0ZWQsIGBORVRGSUxURVJfTkVUTElOS2AgaXMgaW1wbGljaXRseSBzZWxlY3RlZCBkdWUgdG8gYE5GX0NUX05FVExJTktgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBzaGlmdHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciByZWFjaGFiaWxpdHkuIE5vIHN1cnByaXNlcyBoZXJlOyB0aGV5J3JlIGludGVncmFsIHBhcnRzIG9mIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgY29ubnRyYWNrLiBTcGVjaWZpY2FsbHksIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgaXMgY2FsbGVkIHdoZW4gdXNlcnNwYWNlIGlzIGNyZWF0aW5nIGEgbmV3IGNvbm50cmFjayBlbnRyeSB2aWEgbmV0bGluay4gVGhhdCdzIGEga2V5IGludGVyYWN0aW9uIHBvaW50LiAgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNsZWFybHkgaW52b2x2ZWQgaW4gc2V0dGluZyB1cCBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gdGhyb3VnaCBuZXRsaW5rIOKAkyBzbyBhbnkgTkFUIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIGFyZSBoYW5kbGVkIHRoZXJlLlxuXG5Ob3csIEkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCBJJ20gY2hlY2tpbmcgdG8gc2VlIGlmIHRoZXkgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBnbyBmdXJ0aGVyIGFuZCBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb25zIG1vcmUgY2xvc2VseSB0byBzZWUgaG93IHRoZXkncmUgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDAuNjUxMjEwMDQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTg0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXFx0XFx0XFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTE5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlxcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjEtXFx0XFx0XFx0XFx0XFx0Y2RhW0NUQV9OQVRfRFNUXSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcXHRyZXR1cm4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX1NSQyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cXHRcXHRcXHRcXHRcXHQgY2RhW0NUQV9OQVRfU1JDXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjAwLjcxNDM2NTkxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0MzY3NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzbmlwcGV0cywgZ2VhcmVkIHRvd2FyZHMgc29tZW9uZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipBbmFseXppbmcgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrLiBHaXZlbiB0aGF0IGl0J3Mgc3RhdGljLCBpdCdzIHNjb3BlZCB3aXRoaW4gYSBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBNeSBuZXh0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGhvdyBhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGFzIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgaXMgY3J1Y2lhbC4gQ29uc2lkZXJpbmcgdGhlIG5hbWUsIGl0J3MgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBOQVQgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluay4gTm93LCBsZXQncyB6b29tIGluIG9uIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgY29udHJvbCBmbG93IGhlcmUuIFBlcmhhcHMgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGhhbmRsZXMgcGFyc2luZyB0aGUgTkFUIHNldHRpbmdzLCBhbmQgdGhlbiBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGdldHMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGNvbm50cmFjayBlbnRyeSBzZXR1cCBhbmQgY3JlYXRpb24gcHJvY2Vzcy4gVGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGlzIHdoYXQgSSdtIGZvY3VzZWQgb24uIEknbGwgbWVudGFsbHkgbWFwIHRoZSBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgaW5mb3JtYXRpb24gcGFyc2VkIGJ5IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBwYXNzZWQgdG8gb3IgdXNlZCBieSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDQuMzk4NzM1ODU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5OTAyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjI5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjMxLVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSAqem9uZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2OlxcdFxcdFxcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cXHUwMDNlbmV0LCBcXHUwMDI2em9uZSwgY2RhLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZvdHVwbGUsIFxcdTAwMjZydHVwbGUsIHUzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDQuNTAzNzMxMDI3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQ5NDc1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBFbnRyeSBQb2ludHMgaW4gdGhlIENvbm50cmFjayBOZXRsaW5rIE1vZHVsZSoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhlIHR3byBjb3JlIGZ1bmN0aW9ucyB3ZSdyZSBmb2N1c2luZyBvbiwgdGhlIGVudHJ5IHBvaW50cywgYXJlIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gQm90aCBvZiB0aGVzZSBzZWVtIHRvIGJlIHN0YXRpYyB3aXRoaW4gdGhlIG1vZHVsZSwgbWVhbmluZyB0aGV5IGFyZW4ndCBleHBvc2VkIGV4dGVybmFsbHkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCwgbGV0J3MgZGl2ZSBpbnRvIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBmaXJzdC4gSSB3YW50IHRvIHNlZSBob3cgTkFUIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgbmV0bGluayBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBOQVQgc2V0dXAgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluc2lnaHQgdG8gaG93IHRoZSBDb25udHJhY2sgbW9kdWxlIGhhbmRsZXMgdGhlIHVuZGVybHlpbmcgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjExNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjA3Ljk0ODY4MTQ2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQxNzMyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX3NldHVwX25hdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTEyOmN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIzMTM6XFx0ZXJyID0gY3RuZXRsaW5rX3NldHVwX25hdChjdCwgY2RhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDguMDEyODU5NDg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NzM0OTYxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIENvbm50cmFjayBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgY3RuZXRsaW5rX3NldHVwX25hdGAuLi4gdGhhdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgIHRvbywganVzdCBsaWtlIHNvbWUgb3RoZXIgY3J1Y2lhbCBmdW5jdGlvbnMuIEludGVyZXN0aW5nLiBJdCByZWluZm9yY2VzIHRoZSBpZGVhIHRoYXQgaXQncyBtZWFudCB0byBiZSBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBub3QgZGlyZWN0bHkgZXhwb3NlZCB0byBleHRlcm5hbCBjYWxsZXJzLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZSBmb3IgZ29vZCBtb2R1bGFyIGRlc2lnbiwgb2YgY291cnNlLiBLZWVwcyB0aGluZ3MgdGlkeS4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG5ldyBjb25udHJhY2sgZW50cmllcyBhcHBlYXJzIHRvIGJlIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIHRoYXQgaXMgd2hlcmUgdGhlIHdob2xlIHByb2Nlc3MgZ2V0cyBraWNrZWQgb2ZmLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgaGFwcGVucyBhdCB0aGF0IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTIuNDg2MzU3OTc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk3OTI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfbmV3X2Nvbm50cmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0MDEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI0MDI6c3RhdGljIGludCBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDAzLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc3NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgY3RubF9jYltJUENUTkxfTVNHX01BWF0gPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXFx0W0lQQ1ROTF9NU0dfQ1RfTkVXXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzc3OlxcdFxcdC5jYWxsXFx0XFx0PSBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc3OC1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTIuNTU4MzQzNDY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDA1MTQwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhwbG9yaW5nIENvbm50cmFjayBOZXRsaW5rIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gQnV0IHdhaXQsIGl0J3MgcmVnaXN0ZXJlZCBpbiBgY3RubF9jYmAuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBkZXRhaWwuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IHdlIGNhbiBsZXZlcmFnZT8gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgSSBjYW4gdXNlIGhlcmUuXG5cbkxldCdzIGRpdmUgaW50byBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBodW50IGZvciB1c2FibGUsIGV4dGVybmFsbHktYWNjZXNzaWJsZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjb25udHJhY2sgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0J3MgYXZhaWxhYmxlIHRoYXQgSSBjYW4gY2FsbCBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MCwiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjE2Ljk1ODg2MDQxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1MTgzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChbYS16QS1aMC05XyAsKl0qXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yOTI9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTM6Y3RuZXRsaW5rX2R1bXBfYWNjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIGludCB0eXBlKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yOTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwOTpjdG5ldGxpbmtfZHVtcF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4Nj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NzpjdG5ldGxpbmtfZHVtcF9ldmVudF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODgte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQxMz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQxNDpjdG5ldGxpbmtfZHVtcF9sYWJlbHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy00MTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQ1NT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQ1NjpkdW1wX2N0X3NlcV9hZGooc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2N0X3NlcWFkaiAqc2VxLCBpbnQgdHlwZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNDU3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz03NDM9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo3NDQ6Y3RuZXRsaW5rX2Nvbm50cmFja19ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfY3RfZXZlbnQgKml0ZW0pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTc0NS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTIxMD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjEyMTE6Y3RuZXRsaW5rX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xMjEyLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzY5PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc3MDpjdG5ldGxpbmtfZHVtcF91bmNvbmZpcm1lZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3NzEte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE3NzU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzc2OmN0bmV0bGlua19kdW1wX2R5aW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc3Ny17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjUzOT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI1NDA6Y3RuZXRsaW5rX2N0X3N0YXRfY3B1X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNTQxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjU0PXN0YXRpYyBzaXplX3RcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjY1NTpjdG5ldGxpbmtfZ2x1ZV9idWlsZF9zaXplKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjY1Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg0Mj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4NDM6Y3RuZXRsaW5rX2dsdWVfcGFyc2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODQ0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMTA4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEwOTpjdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNjg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTY5OmN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxNzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMyMTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMjE2OmN0bmV0bGlua19leHBfY3RfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3Mjg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzI5OmN0bmV0bGlua19leHBfc3RhdF9jcHVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3MzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NTc9TU9EVUxFX0FMSUFTKFxcXCJpcF9jb25udHJhY2tfbmV0bGlua1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU4Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU5Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTktfRVhQKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zOTE4PXN0YXRpYyB2b2lkIF9fZXhpdCBjdG5ldGxpbmtfZXhpdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM5MjgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM5Mjk6bW9kdWxlX2luaXQoY3RuZXRsaW5rX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozOTMwOm1vZHVsZV9leGl0KGN0bmV0bGlua19leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTcuNTA0MDUwNzE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTE0MTMxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgY29ubnRyYWNrIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIHBpbnBvaW50IGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggc3RhdGljIHNjb3BpbmcsIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgaW50ZXJhY3Rpb24gYmV0d2VlbiBkaWZmZXJlbnQgbW9kdWxlcyBvciB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbioqUmUtRXhhbWluaW5nIENvbm50cmFjayBGdW5jdGlvbnMqKlxuXG5NeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIGluIHRoZSBjb2RlYmFzZSB0aGF0IGhhcyBhIGNyaXRpY2FsIGltcGFjdCBvbiB0aGUgY29ubnRyYWNrIGZ1bmN0aW9uYWxpdHkuIFRvIHRoYXQgZW5kLCBJJ2xsIHNjcnV0aW5pemUgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgZXhwb3J0ZWQgZnVuY3Rpb25zIG9yLCBtb3JlIGdlbmVyYWxseSwgZnVuY3Rpb25zIHRoYXQgYXJlbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIGFjY2Vzc2VkIGZyb20gb3V0c2lkZSB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0LCBhbmQgdGhhdCB3b3VsZCBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGludm9rZSBuZXRsaW5rLCBvciBtb2RpZnkgY29ubnRyYWNrIGJlaGF2aW9yIGluIG5vbi1vYnZpb3VzIHdheXMuIEknbSBmb2N1c2luZyBvbiBzY29wZSwgYW5kIGVuc3VyaW5nIHRoZSByaWdodCBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGluIHRoZSByaWdodCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MjEuOTk1NDY2MjY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk4MDI0MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgY3RuZXRsaW5rX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjIyLjEwNTI3ODA3NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwOTQ2MzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBuZl9jb25udHJhY2tfbmV0bGluay5jKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlZ2VyIHJlbGF0ZWQgb3BlcmF0aW9ucy4gTXkgbWVudGFsIG1hcCBpcyBhbHJlYWR5IGZvcm1pbmcgLSBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoYXQgYF5pbnQgYCBiaXQuIFRoYXQncyBnb3QgdG8gYmUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIFRpbWUgdG8gdHJhY2UgdGhpcyB0aHJvdWdoIGFuZCBzZWUgd2hhdCB0aGF0J3MgYWxsIGFib3V0LiBMZXQncyBzZWUgaG93IHRoZSBpbnRlZ2VycyBhcmUgaGFuZGxlZCBoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MToyNS45MDYyMjYzNDlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyOTU1OTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjI1Ljk4OTE4OTE1N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjExNTQzMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpdmluZyBpbnRvIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgZXhhY3RseSBgRVhQT1JUX1NZTUJPTGAgaXMgdXRpbGl6ZWQgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJJ3ZlIGdvdCBhIGh1bmNoIHRoZXJlJ3Mgc29tZXRoaW5nIHNwZWNpZmljIEkgbmVlZCB0byB2ZXJpZnkgcmVnYXJkaW5nIGl0cyB1c2FnZSBpbiB0aGF0IGZpbGUuIEl0J3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhvc2Ugc3ltYm9scyBhcmUgbWFkZSBhdmFpbGFibGUg4oCTIGxpa2VseSByZWxhdGVkIHRvIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlIG9yIG1heWJlIGFub3RoZXIga2VybmVsIG1vZHVsZS4gSXQgY291bGQgYmUgYWJvdXQgc3ltYm9sIHZpc2liaWxpdHkgb3IgcGVyaGFwcyBzb21lIGRlcGVuZGVuY3kgdHJhY2tpbmcgdGhhdCBJIG5lZWQgdG8gY2xhcmlmeS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzg3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MjkuNjAwNzM0NDczWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDE3NTEyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjI5LjY4MDkxNjk4MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA1NDY4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIENvbm50cmFjayBOZXRsaW5rIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgZmlsZSBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFNpbmNlIHRoZXJlIGFyZSBubyBleHBvcnRlZCBzeW1ib2xzIGFuZCBldmVyeXRoaW5nIGlzIHN0YXRpYywgSSBjYW4ganVzdCB6ZXJvIGluIG9uIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCDigJMgdGhleSdyZSB0aGUgaW50ZXJlc3Rpbmcgc3RhdGljIGZ1bmN0aW9ucyBoZXJlLiBBbHRlcm5hdGl2ZWx5LCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFdhaXQgYSBtaW51dGXigKYgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyByZWdpc3RlcmVkIGluc2lkZSBgY3RubF9jYmAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgaXMgcGFydCBvZiBgbmZuZXRsaW5rYC4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgY2hlY2sgaG93IGBjdG5sX2NiYCBpcyByZWdpc3RlcmVkLCB0aGF0J3Mgd2hlcmUgdGhlIGFjdGlvbiBsaWtlbHkgYmVnaW5zLiBMZXQncyBkZWx2ZSBpbnRvIHRoYXQgcmVnaXN0cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTozMy45ODYzODgzMjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTMxNzAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5sX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc2OT1zdGF0aWMgc3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyIGN0bmxfbm90aWZpZXIgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc3NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzc3NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgY3RubF9jYltJUENUTkxfTVNHX01BWF0gPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXFx0W0lQQ1ROTF9NU0dfQ1RfTkVXXVxcdD0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIGN0bmxfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDYtXFx0LmNiX2NvdW50XFx0XFx0XFx0PSBJUENUTkxfTVNHX01BWCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzg0NzpcXHQuY2JcXHRcXHRcXHRcXHQ9IGN0bmxfY2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MzQuMDkxNzEwNTg0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NDgyNzY1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENvbm50cmFjayBGdW5jdGlvbnMgZm9yIFN5emthbGxlciBUYXJnZXRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBJIHNlZSBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBsb29rIHByb21pc2luZzogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYC4gRXZlbiBpZiB0aGV5J3JlIGRlY2xhcmVkIHN0YXRpYywgaXQgZG9lc24ndCBuZWNlc3NhcmlseSBibG9jayBTeXprYWxsZXI7IGlmIHRoZXkncmUgbm90IGlubGluZWQsIHRoZXkgc2hvdWxkIGJlIGFjY2Vzc2libGUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyBpbmxpbmVkLiBJdCdzIGEgZmFpcmx5IHN1YnN0YW50aWFsIGNodW5rIG9mIGNvZGUsIHNvIG15IGd1dCBzYXlzIFwibm8sXCIgYnV0IGJldHRlciB0byBjb25maXJtLiBJJ2xsIGFsc28gaGF2ZSBhIGxvb2sgYXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIHdoaWxlIEknbSBhdCBpdCDigJMgaXQgbG9va3Mgc2ltaWxhcmx5IGNvbXBsZXguXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBDbGVhcmx5LCBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGEgbXVzdC4gQW5kLCBhaCwgbG9va3MgbGlrZSBgQ09ORklHX01PRFVMRVNgIGlzIGFsc28gbmVlZGVkIHRvIGFjdGl2YXRlIHRoYXQgYHRyeV9tb2R1bGVfZ2V0YCBjb2RlIHBhdGgsIHdoaWNoIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJIHdvbmRlciBpZiB0aGF0J3MgYSBjb21tb24gb3B0aW9uPyBZZXAsIGl0IGxvb2tzIGxpa2UgaXQncyBhIHN0YW5kYXJkIG9uZS5cblxuV2FpdCBhIHNlY29uZOKApiBgQ09ORklHX05GX05BVGAgaXMgYWxzbyBsaXN0ZWQgYXMgYSByZXF1aXJlbWVudC4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MzkuODM5OTkwMDgyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc4NjkzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzk4PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MDc6Y29uZmlnIE5GX05BVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDE2OmNvbmZpZyBORl9OQVRfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDIxOmNvbmZpZyBORl9OQVRfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDM2OmNvbmZpZyBORl9OQVRfVEZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Mi1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ0OmNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDUtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0Nzpjb25maWcgTkZfTkFUX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTozOS45MTM3ODI3NzFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4MjMyMjcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBNb2R1bGUgUGF0Y2ggZm9yIFRlc3RhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZW5hYmxlIGBORl9DVF9ORVRMSU5LYCBhbmQgYE5GX05BVGAgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUgYW5kIGNhbiBiZSB0ZXN0ZWQgcHJvcGVybHkuIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGRlYWxzIHdpdGggYHRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKWAgYW5kIGBtb2R1bGVfcHV0KFRISVNfTU9EVUxFKWAuIEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyB0aGUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgdW5sb2FkIGR1cmluZyBhIGByZXF1ZXN0X21vZHVsZWAgY2FsbC5cblxuR2l2ZW4gaXRzIGZ1bmN0aW9uYWwgbmF0dXJlIGFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIG5ldGxpbmsgY29kZSwgZnV6emluZyBpdCBzZWVtcyB3b3J0aHdoaWxlLiBOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGJ1dCBob2xkIG9uLi4uIEkgcmVtZW1iZXIgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGFjdHVhbGx5IHN0YXRpYy4gU28sIGxldCBtZSByZS1ldmFsdWF0ZTsgcGVyaGFwcyBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIGEgYmV0dGVyIHRhcmdldC4gSSdsbCBzd2l0Y2ggZ2VhcnMgYW5kIGFpbSBmb3IgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19zZXR1cF9uYXRgLiBXYWl0LCBzY3JhdGNoIHRoYXQsIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBpcyBhbHNvIHN0YXRpYyEgVGhlIGJlc3QgY2hvaWNlIGlzIGRlZmluaXRlbHkgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBpdC4gYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHBhcmVudCBtb2R1bGUsIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgbW9kdWxlIGF0IGhhbmQgYW5kIGBORl9OQVRgIGlzIHRoZSBvbmUgYmVpbmcgcmVxdWVzdGVkLiBTbyBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAgYXJlIHRoZSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgdG8gbWFrZSBzdXJlIGFsbCBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgdGVzdGVkIHRob3JvdWdobHkuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYXJlIG5vdCBpbmxpbmVkLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjU5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjQ3LjI5NjEwNzg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzk0MzQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTg0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXFx0XFx0XFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTE5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlxcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjEtXFx0XFx0XFx0XFx0XFx0Y2RhW0NUQV9OQVRfRFNUXSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcXHRyZXR1cm4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX1NSQyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cXHRcXHRcXHRcXHRcXHQgY2RhW0NUQV9OQVRfU1JDXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjQ3LjM4NDA1NzMyOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU3NjA0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIENvbnRleHQgb2YgYGN0bmV0bGlua19zZXR1cF9uYXRgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBgY3RuZXRsaW5rX3NldHVwX25hdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS4gSXQgKmNvdWxkKiBiZSBpbmxpbmVkIOKAkyB0aGF0IHdvdWxkIGJlIGEgcmVhc29uYWJsZSBleHBsYW5hdGlvbiBmb3IgdGhlIGR1cGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3MgYSByZWxhdGl2ZWx5IHNlbGYtY29udGFpbmVkIGJpdCBvZiBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCB0aGUgbWVudGlvbiBvZiBpdHMgXCJsYXJnZW5lc3NcIiBzdWdnZXN0cyBpdCdzIHN1YnN0YW50aWFsLCBhbmQgaW5saW5pbmcgYSBiaWcgZnVuY3Rpb24gaXMgdXN1YWxseSBzb21ldGhpbmcgSSdkIHRyeSB0byBhdm9pZCB1bmxlc3MgdGhlcmUncyBhIGNvbXBlbGxpbmcgcGVyZm9ybWFuY2UgcmVhc29uIG9yIHNpZ25pZmljYW50IHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBjYWxsaW5nIGNvZGUuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIGNvZGUgaXMgbGFyZ2UsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBzaW5jZSB0aGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBcInNldHVwXCIgaXMgYmVpbmcgY2FsbGVkLiBQZXJoYXBzIG9uZSBvZiB0aGUgY2FsbHMgY291bGQgYmUgb3B0aW1pemVkIGZvciBhIGRpcmVjdCBlbnRyeS4gSSBuZWVkIHRvIGRpdmUgaW50byBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFuZCB0cmFjZSBob3cgYW5kIHdoZW4gdGhhdCBjYWxsIGlzIGJlaW5nIG1hZGUuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmluZyBpZiB0aGVzZSBjYWxscyBhcmUgcmVkdW5kYW50IG9yIGlmIHRoZXkgcGVyZm9ybSBkaXN0aW5jdCwgbmVjZXNzYXJ5IHJvbGVzLiBNeSBleHBlcnQgaW50dWl0aW9uIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIHJlZmFjdG9yaW5nLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgXCJzZXR1cFwiIGlzIGFjdHVhbGx5IHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjUyLjM0MTY2NDk2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTU0MzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjk9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjIzMDpjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI0MDI9c3RhdGljIGludCBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0NDUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI0NDY6XFx0XFx0XFx0Y3QgPSBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhpbmZvLVxcdTAwM2VuZXQsIFxcdTAwMjZ6b25lLCBjZGEsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0NDctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm90dXBsZSwgXFx1MDAyNnJ0dXBsZSwgdTMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTo1Mi40MDcyMTUwMjlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI4NDcxODkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZS4gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50LCBjYWxsZWQgb25seSBvbmNlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGlubGluZWQ/IElmIGl0ICppcyogaW5saW5lZCwgdGhlbiBzeXprYWxsZXIgbWlnaHQgbWlzcyBpdCBhcyBhIGRpc3RpbmN0IHN5bWJvbC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJJ20gZ29pbmcgdG8gaW5jbHVkZSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFzIGEgZm9jdXMgc3ltYm9sLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVnaXN0ZXJlZCBpbiBhIHN0cnVjdCBhbmQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gbWFrZXMgbWUgdGhpbmsgaXQgY2FuJ3QgYmUgY29tcGxldGVseSBpbmxpbmVkIGFueXdheS5cblxuSnVzdCB0byBjb3ZlciBhbGwgYmFzZXMsIEknbGwgYWxzbyBpbmNsdWRlIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpbiB0aGUgbGlzdCwganVzdCBpbiBjYXNlIHRoZXkgKmFyZW4ndCogaW5saW5lZCwgb3IgaWYgdGhlcmUncyBhbnkgb2RkbmVzcyBpbiB0aGUgY29tcGlsZXIncyBvcHRpbWl6YXRpb24uXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4uLiB5ZXAsIGl0J3MgYHN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdKWAuIFNlZW1zIHJpZ2h0LlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGZvciBvdGhlciBlbnRyeSBwb2ludHMganVzdCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4gT2theSwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyAqb25seSogY2FsbGVkIGZyb20gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4gQW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgZnJvbSBib3RoIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfY2hhbmdlX2Nvbm50cmFja2AuIEdvdCBpdC4gVGhhdCdzIGdvb2QgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6NTkuNjkxOTM2MDMxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIyNTA5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX3NldHVwX25hdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTEyOmN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIzMTM6XFx0ZXJyID0gY3RuZXRsaW5rX3NldHVwX25hdChjdCwgY2RhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6NTkuODA0MTkyNjA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ3OTUyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE1vZHVsZSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gSXQgbG9va3MgbGlrZSBgY3RuZXRsaW5rX3NldHVwX25hdGAgaXMgb25seSBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGUgZW50cnkgcG9pbnQgaW50byB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgbGlrZWx5IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AuIExldCdzIGNvbmZpcm0gdGhhdC4gWWVwLCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgICppcyogY2FsbGVkIGJ5IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIGFuZCB0aGVuIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBpcyBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCBhbmQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGdldHMgY2FsbGVkIGJ5IGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBkZWZpbml0ZWx5IHRoZSBwcmltZSBlbnRyeSBwb2ludCBoZXJlLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBhIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgZm9yIHRoaXM6IGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfTkVUTElOS2AsIGBORl9OQVRgLCBhbmQgYE1PRFVMRVNgLiBJJ2xsIG1ha2Ugc3VyZSB0byBhZGQgdGhvc2UgdG8gbXkgRW5hYmxlQ29uZmlncy5cblxuTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaXNzdWUgaXMgdGhpczogdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0gd2l0aGluIGBuZl9jb25udHJhY2tfbmV0bGlua2AuIFRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IHVubG9hZCB0aGUgbW9kdWxlIHdoaWxlIGByZXF1ZXN0X21vZHVsZWAgd2FzIGluIHVzZS4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYHRyeV9tb2R1bGVfZ2V0YCBhbmQgYG1vZHVsZV9wdXRgIGFyb3VuZCB0aG9zZSBgcmVxdWVzdF9tb2R1bGVgIGNhbGxzIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBzb3VuZCBhcHByb2FjaC4gVGhpcyBtZWFucyB0aGUgZml4IGlzIGFkZHJlc3NpbmcgY29yZSBuZXRmaWx0ZXIgY29kZS4gQmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvZGUsIGl0IGlzIGFic29sdXRlbHkgZnV6emFibGUuXG5cbkdpdmVuIHRoYXQsIEkgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCwgYW5kIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYC5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDA3LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MjowOC41Nzg5OTIxMzNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJNT0RVTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX25ld19jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJNT0RVTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX25ld19jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmrxcr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 17:49:03 +0000 UTC FinishedAt: 2026-08-05 17:52:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_NAT", "MODULES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_NAT", "MODULES" ], "series_id": "503e0a1d-eaf0-42ac-a904-68c55f6bf47b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "ctnetlink_new_conntrack", "ctnetlink_create_conntrack", "ctnetlink_parse_nat_setup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkM2FhZDEzOTYxNTEzYzQ4ZDcyZDQwZDUzNTA4NTY4OTU2MDI0YjcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxNzo1MDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbmluZGV4IDMxY2JiMWI1NWI5ZTYuLjQzZjhlNjRhMmViMTkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTE4NTksMTMgJiM0MzsxODU5LDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKCFuYXRfaG9vaykge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcJiMzNDtuZi1uYXRcJiMzNDspIFx1MDAzYyAwKSB7XG4gXHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4mIzQzO1x0XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdH1cbiBcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4mIzQzO1x0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRuYXRfaG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaG9vayk7XG4gXHRcdGlmIChuYXRfaG9vaylcbkBAIC0xODc4LDEzICYjNDM7MTg4MiwxNyBAQCBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdGlmIChlcnIgPT0gLUVBR0FJTikge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcJiMzNDtuZi1uYXQtJXVcJiMzNDssIG5mX2N0X2wzbnVtKGN0KSkgXHUwMDNjIDApIHtcbiBcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gI2Vsc2VcbiBcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG5AQCAtMjI1MywxMCAmIzQzOzIyNjEsMTkgQEAgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRpZiAoaGVscGVyID09IE5VTEwpIHtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcbiYjNDM7XHRcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0XHRnb3RvIGVycjE7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0bmZubF91bmxvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiBcdFx0XHRpZiAocmVxdWVzdF9tb2R1bGUoXCYjMzQ7bmZjdC1oZWxwZXItJXNcJiMzNDssIGhlbHBuYW1lKSBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuJiM0MztcdFx0XHRcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xuIFx0XHRcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG4gXHRcdFx0XHRnb3RvIGVycjE7XG4gXHRcdFx0fVxuJiM0MztcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbiYjNDM7XHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdGhlbHBlciA9IF9fbmZfY29ubnRyYWNrX2hlbHBlcl9maW5kKGhlbHBuYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OywKICAgICYjMzQ7TU9EVUxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0bmV0bGlua19uZXdfY29ubnRyYWNrJiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrJiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDNhYWQxMzk2MTUxM2M0OGQ3MmQ0MGQ1MzUwODU2ODk1NjAyNGI3MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMTc6NTA6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKaW5kZXggMzFjYmIxYjU1YjllNi4uNDNmOGU2NGEyZWIxOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwpAQCAtMTg1OSwxMyAmIzQzOzE4NTksMTcgQEAgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJaWYgKCFuYXRfaG9vaykgewogI2lmZGVmIENPTkZJR19NT0RVTEVTCiAJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJaWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpCiYjNDM7CQkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCQluZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwogCQlpZiAocmVxdWVzdF9tb2R1bGUoJiMzNDtuZi1uYXQmIzM0OykgJmx0OyAwKSB7CiAJCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKIAkJCXJjdV9yZWFkX2xvY2soKTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJfQogCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCW5hdF9ob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9ob29rKTsKIAkJaWYgKG5hdF9ob29rKQpAQCAtMTg3OCwxMyAmIzQzOzE4ODIsMTcgQEAgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJaWYgKGVyciA9PSAtRUFHQUlOKSB7CiAjaWZkZWYgQ09ORklHX01PRFVMRVMKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkKJiM0MzsJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCW5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiAJCWlmIChyZXF1ZXN0X21vZHVsZSgmIzM0O25mLW5hdC0ldSYjMzQ7LCBuZl9jdF9sM251bShjdCkpICZsdDsgMCkgewogCQkJbmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiYjNDM7CQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CiAJCQlyY3VfcmVhZF9sb2NrKCk7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0KIAkJbmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7CiYjNDM7CQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKIAkJcmN1X3JlYWRfbG9jaygpOwogI2Vsc2UKIAkJZXJyID0gLUVPUE5PVFNVUFA7CkBAIC0yMjUzLDEwICYjNDM7MjI2MSwxOSBAQCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsCiAJCWlmIChoZWxwZXIgPT0gTlVMTCkgewogCQkJcmN1X3JlYWRfdW5sb2NrKCk7CiAjaWZkZWYgQ09ORklHX01PRFVMRVMKJiM0MzsJCQlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkgewomIzQzOwkJCQllcnIgPSAtRU9QTk9UU1VQUDsKJiM0MzsJCQkJZ290byBlcnIxOwomIzQzOwkJCX0KJiM0MzsJCQluZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwogCQkJaWYgKHJlcXVlc3RfbW9kdWxlKCYjMzQ7bmZjdC1oZWxwZXItJXMmIzM0OywgaGVscG5hbWUpICZsdDsgMCkgewomIzQzOwkJCQluZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTsKJiM0MzsJCQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CiAJCQkJZXJyID0gLUVPUE5PVFNVUFA7CiAJCQkJZ290byBlcnIxOwogCQkJfQomIzQzOwkJCW5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspOwomIzQzOwkJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwogCiAJCQlyY3VfcmVhZF9sb2NrKCk7CiAJCQloZWxwZXIgPSBfX25mX2Nvbm50cmFja19oZWxwZXJfZmluZChoZWxwbmFtZSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbm50cmFjayBOZXRsaW5rIE1vZHVsZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGFuZCBpdCYjMzk7cyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgbW9kdWxlIHVubG9hZGluZy4gSXQgc2VlbXMgdGhleSYjMzk7dmUgd3JhcHBlZCB0aGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGxzIGluIGB0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSlgIGFuZCBgbW9kdWxlX3B1dChUSElTX01PRFVMRSlgIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYmVpbmcgZG9uZSB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24sIHdoZXJlIHRoZSBtb2R1bGUgbWlnaHQgdW5sb2FkIHdoaWxlIGEgYHJlcXVlc3RfbW9kdWxlYCBjYWxsIGlzIGluIHByb2dyZXNzLiBUaGUgaW1wb3J0YW50IGRldGFpbCBoZXJlIGlzIHRoZSBwb3RlbnRpYWwgZHJvcCBvZiBgbmZubF9sb2NrYC4gVGhpcyBpcyBjbGV2ZXIsIGhhbmRsaW5nIHRoZSByZWZlcmVuY2UgY291bnRpbmcgdG8gZW5zdXJlIHRoZSBtb2R1bGUgc3RheXMgbG9hZGVkIGxvbmcgZW5vdWdoLgoKTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGwgaW1wbGllcyBzb21lIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBiZWluZyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBzYXlzIGFib3V0IGBuZl9jb25udHJhY2tfbmV0bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIE1ha2VmaWxlIGVudHJ5IGZvciBhbnkgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIG5lZWQgZm9yIHRoaXMgcGF0Y2ggb3IgaG93IGl0IG1pZ2h0IGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgIGZpbGUgaXMgYmVpbmcgYnVpbHQgYW5kIHdoZXRoZXIgaXQgaGFzIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsaWtlbHkgbG9hZGVkIGR5bmFtaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19uZXRsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM0PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICYjNDM7PSBuZl9jb25udHJhY2sub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtIyBuZXRsaW5rIGludGVyZmFjZSBmb3IgbmZfY29ubnRyYWNrXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LKSAmIzQzOz0gbmZfY29ubnRyYWNrX25ldGxpbmsub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfTkZfQ1RfTkVUTElOS19USU1FT1VUKSAmIzQzOz0gbmZuZXRsaW5rX2N0dGltZW91dC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBuZXR3b3JraW5nOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gYE5GX0NUX05FVExJTktgKioKCkFscmlnaHQsIHNvIHRoZSBjbHVlIGlzIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCBgQ09ORklHX05GX0NUX05FVExJTktgLiBNeSBmaXJzdCByZWZsZXggaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCBzbyBpdCBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgTkZfQ1RfTkVUTElOS2AgYWN0dWFsbHkgKmRvZXMqLCBob3cgaXQmIzM5O3MgZGVmaW5lZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBpcyB0aGlzIG1vZHVsZSBmb3IsIHdoYXQgb3B0aW9ucyBkbyBJIGhhdmUgc3Vycm91bmRpbmcgaXQ/IEhvcGVmdWxseSB0aGUgS2NvbmZpZyBlbnRyeSBpcyB3ZWxsLWRvY3VtZW50ZWQsIGV4cGxhaW5pbmcgdGhlIGZlYXR1cmVzIGVuYWJsZWQsIGFuZCB3aGVuIHRvIGluY2x1ZGUgaXQgd2l0aGluIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzU1PWNvbmZpZyBORl9DT05OVFJBQ0tfVEZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY2OmNvbmZpZyBORl9DVF9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY3LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM3Mzpjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzc0LVx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluayYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSBvZiBORl9DVF9ORVRMSU5LKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGRlcGVuZGVuY3kgc3RydWN0dXJlIG9mIGBORl9DVF9ORVRMSU5LYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcmVzdCBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgb3RoZXIgbmV0ZmlsdGVyIGNvbXBvbmVudHMgYW5kIHBlcmhhcHMgc29tZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gV2hhdCBtb2R1bGVzIG9yIGZlYXR1cmVzIGFyZSBjYWxsaW5nIGludG8gdGhpcz8gV2hhdCBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUgZG9lcyBpdCByZWx5IG9uPwoKSSB3YW50IHRvIGtub3cgaWYgaXQmIzM5O3MgdGlnaHRseSBjb3VwbGVkIG9yIHJlbGF0aXZlbHkgbW9kdWxhci4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgY2hhbmdlcyBvciB1cGdyYWRlcz8gQXJlIHdlIGxpa2VseSB0byBmaW5kIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBpZiB3ZSBtb2RpZnkgb3IgZGlzYWJsZSBvdGhlciBuZXRmaWx0ZXIgcGFydHM/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTkZfQ1RfTkVUTElOS2AgaXMgY3JpdGljYWwgdG8gbWFuYWdpbmcgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB2aWEgbmV0bGluaywgc28gSeKAmW0gZXhwZWN0aW5nIGl0IHdpbGwgaGF2ZSBkZWVwIGludm9sdmVtZW50IHdpdGggY29ubnRyYWNrIGl0c2VsZiwgb2YgY291cnNlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSB2YXJpb3VzIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycywgdG9vLiBLbm93aW5nIHRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgdG8gYE5GX0NUX05FVExJTktgIGl0c2VsZiwgb3IgYW55IG9mIHRoZSBzdXJyb3VuZGluZyBwaWVjZXMuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBJIGNvbnNpZGVyIGFueSBjaGFuZ2VzIHRvIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgbWlnaHQgYWZmZWN0IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzY2Olx0Y29uZmlnIE5GX0NUX05FVExJTktcbiAzNjc6XHRcdHRyaXN0YXRlICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSYjMzk7XG4gMzY4Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAzNjk6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuIDM3MDpcdFx0aGVscFxuIDM3MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGEgbmV0bGluay1iYXNlZCB1c2Vyc3BhY2UgaW50ZXJmYWNlXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxuIDM3NDpcdFx0dHJpc3RhdGUgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluayYjMzk7XG4gMzc1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBORl9DVF9ORVRMSU5LKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5GX0NUX05FVExJTktgIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSB0aGUgcGFyZW50IGNvbmZpZyBvcHRpb24uIEl0IHNlZW1zIHByZXR0eSBjbGVhciwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhhdCBpdCByZWxpZXMgb24gYE5GX0NPTk5UUkFDS2AuIEJ1dCwgSSBhbHdheXMgbGlrZSB0byBjb25maXJtIHRoZXNlIHRoaW5ncyBkaXJlY3RseS4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgTkZfQ09OTlRSQUNLYCBpcyBpbmRlZWQgdGhlIHBhcmVudCBtZW51IG9yICYjMzQ7aWYmIzM0OyBzdGF0ZW1lbnQuCgpJJiMzOTtsbCBqdW1wIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDM2Ni4gVGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfQ1RfTkVUTElOS2AgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBxdWlja2x5IGdpdmUgbWUgYSBkZWZpbml0aXZlIGFuc3dlciBhbmQgaG9wZWZ1bGx5LCBjb25maXJtIHdoYXQgSSBhbHJlYWR5IHN1c3BlY3QuIFRoaXMgc29ydCBvZiBjaGVjayBpcyBwcmV0dHkgcm91dGluZSwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGFuZCBhdm9pZCBhc3N1bXB0aW9ucywgZXNwZWNpYWxseSBpbiBhIHN5c3RlbSBhcyBjb21wbGV4IGFzIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9OTg9Y29uZmlnIE5GX0xPR19TWVNMT0dcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDppZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEtY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29ubnRyYWNrIE5ldGxpbmsgSW50ZXJmYWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvbm50cmFjayBuZXRsaW5rIGludGVyZmFjZS4gVGhlIGBORl9DT05OVFJBQ0tgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhIGdpdmVuIOKAkyBpdCYjMzk7cyBmdW5kYW1lbnRhbC4gQW5kLCBhcyBleHBlY3RlZCwgYE5FVEZJTFRFUl9ORVRMSU5LYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGR1ZSB0byBgTkZfQ1RfTkVUTElOS2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBzaGlmdHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciByZWFjaGFiaWxpdHkuIE5vIHN1cnByaXNlcyBoZXJlOyB0aGV5JiMzOTtyZSBpbnRlZ3JhbCBwYXJ0cyBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UgZm9yIGNvbm50cmFjay4gU3BlY2lmaWNhbGx5LCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGlzIGNhbGxlZCB3aGVuIHVzZXJzcGFjZSBpcyBjcmVhdGluZyBhIG5ldyBjb25udHJhY2sgZW50cnkgdmlhIG5ldGxpbmsuIFRoYXQmIzM5O3MgYSBrZXkgaW50ZXJhY3Rpb24gcG9pbnQuICBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgaXMgY2xlYXJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiB0aHJvdWdoIG5ldGxpbmsg4oCTIHNvIGFueSBOQVQgcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXJlIGhhbmRsZWQgdGhlcmUuCgpOb3csIEkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aGV5IGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGZ1cnRoZXIgYW5kIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbnMgbW9yZSBjbG9zZWx5IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE4NDk9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTg1MS1cdFx0XHQgIGVudW0gbmZfbmF0X21hbmlwX3R5cGUgbWFuaXAsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkxOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlx0cmV0ID0gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX0RTVCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTIxLVx0XHRcdFx0XHRjZGFbQ1RBX05BVF9EU1RdKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTI1Olx0cmV0dXJuIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9TUkMsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cdFx0XHRcdFx0IGNkYVtDVEFfTkFUX1NSQ10pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzbmlwcGV0cywgZ2VhcmVkIHRvd2FyZHMgc29tZW9uZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczoKCioqQW5hbHl6aW5nIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBtZW50YWwgY2hlY2suIEdpdmVuIHRoYXQgaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gTXkgbmV4dCBpbnN0aW5jdCBpcyB0byB0cmFjZSBob3cgYW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBhcyB1bmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IGlzIGNydWNpYWwuIENvbnNpZGVyaW5nIHRoZSBuYW1lLCBpdCYjMzk7cyBtb3N0IGxpa2VseSByZWxhdGVkIHRvIE5BVCBjb25maWd1cmF0aW9uIHZpYSBuZXRsaW5rLiBOb3csIGxldCYjMzk7cyB6b29tIGluIG9uIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBQZXJoYXBzIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBoYW5kbGVzIHBhcnNpbmcgdGhlIE5BVCBzZXR0aW5ncywgYW5kIHRoZW4gYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBnZXRzIGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBjb25udHJhY2sgZW50cnkgc2V0dXAgYW5kIGNyZWF0aW9uIHByb2Nlc3MuIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbi4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoZSBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgaW5mb3JtYXRpb24gcGFyc2VkIGJ5IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBwYXNzZWQgdG8gb3IgdXNlZCBieSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIyOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQ0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2Olx0XHRcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cdTAwM2VuZXQsIFx1MDAyNnpvbmUsIGNkYSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVx0XHRcdFx0XHRcdFx0XHUwMDI2b3R1cGxlLCBcdTAwMjZydHVwbGUsIHUzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjExNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgRW50cnkgUG9pbnRzIGluIHRoZSBDb25udHJhY2sgTmV0bGluayBNb2R1bGUqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhlIHR3byBjb3JlIGZ1bmN0aW9ucyB3ZSYjMzk7cmUgZm9jdXNpbmcgb24sIHRoZSBlbnRyeSBwb2ludHMsIGFyZSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFuZCBgY3RuZXRsaW5rX3NldHVwX25hdGAuIEJvdGggb2YgdGhlc2Ugc2VlbSB0byBiZSBzdGF0aWMgd2l0aGluIHRoZSBtb2R1bGUsIG1lYW5pbmcgdGhleSBhcmVuJiMzOTt0IGV4cG9zZWQgZXh0ZXJuYWxseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCwgbGV0JiMzOTtzIGRpdmUgaW50byBgY3RuZXRsaW5rX3NldHVwX25hdGAgZmlyc3QuIEkgd2FudCB0byBzZWUgaG93IE5BVCBpcyBoYW5kbGVkIHdpdGhpbiB0aGlzIG5ldGxpbmsgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgTkFUIHNldHVwIHdpbGwgcHJvdmlkZSBjcml0aWNhbCBpbnNpZ2h0IHRvIGhvdyB0aGUgQ29ubnRyYWNrIG1vZHVsZSBoYW5kbGVzIHRoZSB1bmRlcmx5aW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19zZXR1cF9uYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE5MTI6Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTEzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMxMzpcdGVyciA9IGN0bmV0bGlua19zZXR1cF9uYXQoY3QsIGNkYSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBDb25udHJhY2sgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBgY3RuZXRsaW5rX3NldHVwX25hdGAuLi4gdGhhdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCB0b28sIGp1c3QgbGlrZSBzb21lIG90aGVyIGNydWNpYWwgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gSXQgcmVpbmZvcmNlcyB0aGUgaWRlYSB0aGF0IGl0JiMzOTtzIG1lYW50IHRvIGJlIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIGV4dGVybmFsIGNhbGxlcnMsIHdoaWNoIGlzIGEgY29tbW9uIHByYWN0aWNlIGZvciBnb29kIG1vZHVsYXIgZGVzaWduLCBvZiBjb3Vyc2UuIEtlZXBzIHRoaW5ncyB0aWR5LiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbmV3IGNvbm50cmFjayBlbnRyaWVzIGFwcGVhcnMgdG8gYmUgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgdGhhdCBpcyB3aGVyZSB0aGUgd2hvbGUgcHJvY2VzcyBnZXRzIGtpY2tlZCBvZmYuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgaGFwcGVucyBhdCB0aGF0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0MDEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjQwMjpzdGF0aWMgaW50IGN0bmV0bGlua19uZXdfY29ubnRyYWNrKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQwMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfY2JbSVBDVE5MX01TR19NQVhdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXHRbSVBDVE5MX01TR19DVF9ORVddXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzc3Olx0XHQuY2FsbFx0XHQ9IGN0bmV0bGlua19uZXdfY29ubnRyYWNrLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzgtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2MAoJCQkJCQkJb3V0cHV0OiA2OAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4cGxvcmluZyBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBCdXQgd2FpdCwgaXQmIzM5O3MgcmVnaXN0ZXJlZCBpbiBgY3RubF9jYmAuIFRoYXQmIzM5O3MgYW4gaW50ZXJlc3RpbmcgZGV0YWlsLiBOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBhcmUgdGhlcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2U/IEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0aGF0IEkgY2FuIHVzZSBoZXJlLgoKTGV0JiMzOTtzIGRpdmUgaW50byBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBodW50IGZvciB1c2FibGUsIGV4dGVybmFsbHktYWNjZXNzaWJsZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjb25udHJhY2sgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZSB0aGF0IEkgY2FuIGNhbGwgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qXFwoW2EtekEtWjAtOV8gLCpdKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjkyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTM6Y3RuZXRsaW5rX2R1bXBfYWNjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIGludCB0eXBlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI5NC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA5OmN0bmV0bGlua19kdW1wX3RpbWVzdGFtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzEwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzg2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODc6Y3RuZXRsaW5rX2R1bXBfZXZlbnRfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz00MTM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQxNDpjdG5ldGxpbmtfZHVtcF9sYWJlbHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTQxNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQ1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NDU2OmR1bXBfY3Rfc2VxX2FkaihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY3Rfc2VxYWRqICpzZXEsIGludCB0eXBlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTQ1Ny17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTc0Mz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NzQ0OmN0bmV0bGlua19jb25udHJhY2tfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2N0X2V2ZW50ICppdGVtKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTc0NS17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTEyMTA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjEyMTE6Y3RuZXRsaW5rX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTEyMTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzY5PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzcwOmN0bmV0bGlua19kdW1wX3VuY29uZmlybWVkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzcxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTc3NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc3NjpjdG5ldGxpbmtfZHVtcF9keWluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc3Ny17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI1Mzk9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI1NDA6Y3RuZXRsaW5rX2N0X3N0YXRfY3B1X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI1NDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjU0PXN0YXRpYyBzaXplX3Rcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjU1OmN0bmV0bGlua19nbHVlX2J1aWxkX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI2NTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODQyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODQzOmN0bmV0bGlua19nbHVlX3BhcnNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODQ0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzEwOD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEwOTpjdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzExMC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNjg9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMxNjk6Y3RuZXRsaW5rX2V4cF9kdW1wX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTcwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzIxNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzIxNjpjdG5ldGxpbmtfZXhwX2N0X2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzI4PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzI5OmN0bmV0bGlua19leHBfc3RhdF9jcHVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzczMC17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NTc9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX2Nvbm50cmFja19uZXRsaW5rXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU4Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTkspO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTk6TU9EVUxFX0FMSUFTX05GTkxfU1VCU1lTKE5GTkxfU1VCU1lTX0NUTkVUTElOS19FWFApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NjAtXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM5MTg9c3RhdGljIHZvaWQgX19leGl0IGN0bmV0bGlua19leGl0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM5MjgtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzkyOTptb2R1bGVfaW5pdChjdG5ldGxpbmtfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzkzMDptb2R1bGVfZXhpdChjdG5ldGxpbmtfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgYmFjayBpbnRvIHRoaXMgY29ubnRyYWNrIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHN0YXRpYyBzY29waW5nLCBhbmQgaG93IHRoZXkgbWlnaHQgYWZmZWN0IGludGVyYWN0aW9uIGJldHdlZW4gZGlmZmVyZW50IG1vZHVsZXMgb3IgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLgoKKipSZS1FeGFtaW5pbmcgQ29ubnRyYWNrIEZ1bmN0aW9ucyoqCgpNeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIGluIHRoZSBjb2RlYmFzZSB0aGF0IGhhcyBhIGNyaXRpY2FsIGltcGFjdCBvbiB0aGUgY29ubnRyYWNrIGZ1bmN0aW9uYWxpdHkuIFRvIHRoYXQgZW5kLCBJJiMzOTtsbCBzY3J1dGluaXplIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBvciwgbW9yZSBnZW5lcmFsbHksIGZ1bmN0aW9ucyB0aGF0IGFyZW4mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQsIGFuZCB0aGF0IHdvdWxkIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gaW52b2tlIG5ldGxpbmssIG9yIG1vZGlmeSBjb25udHJhY2sgYmVoYXZpb3IgaW4gbm9uLW9idmlvdXMgd2F5cy4gSSYjMzk7bSBmb2N1c2luZyBvbiBzY29wZSwgYW5kIGVuc3VyaW5nIHRoZSByaWdodCBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGluIHRoZSByaWdodCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgY3RuZXRsaW5rXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBuZl9jb25udHJhY2tfbmV0bGluay5jKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVnZXIgcmVsYXRlZCBvcGVyYXRpb25zLiBNeSBtZW50YWwgbWFwIGlzIGFscmVhZHkgZm9ybWluZyAtIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoYXQgYF5pbnQgYCBiaXQuIFRoYXQmIzM5O3MgZ290IHRvIGJlIGtleS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gVGltZSB0byB0cmFjZSB0aGlzIHRocm91Z2ggYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWxsIGFib3V0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgaW50ZWdlcnMgYXJlIGhhbmRsZWQgaGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGl2aW5nIGludG8gYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoZXJlIGV4YWN0bHkgYEVYUE9SVF9TWU1CT0xgIGlzIHV0aWxpemVkIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYC4gSSYjMzk7dmUgZ290IGEgaHVuY2ggdGhlcmUmIzM5O3Mgc29tZXRoaW5nIHNwZWNpZmljIEkgbmVlZCB0byB2ZXJpZnkgcmVnYXJkaW5nIGl0cyB1c2FnZSBpbiB0aGF0IGZpbGUuIEl0JiMzOTtzIHRpbWUgdG8gZHJpbGwgZG93biBhbmQgcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRob3NlIHN5bWJvbHMgYXJlIG1hZGUgYXZhaWxhYmxlIOKAkyBsaWtlbHkgcmVsYXRlZCB0byBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZSBvciBtYXliZSBhbm90aGVyIGtlcm5lbCBtb2R1bGUuIEl0IGNvdWxkIGJlIGFib3V0IHN5bWJvbCB2aXNpYmlsaXR5IG9yIHBlcmhhcHMgc29tZSBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgSSBuZWVkIHRvIGNsYXJpZnkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gdGhpcyBmaWxlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gU2luY2UgdGhlcmUgYXJlIG5vIGV4cG9ydGVkIHN5bWJvbHMgYW5kIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBJIGNhbiBqdXN0IHplcm8gaW4gb24gYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIOKAkyB0aGV5JiMzOTtyZSB0aGUgaW50ZXJlc3Rpbmcgc3RhdGljIGZ1bmN0aW9ucyBoZXJlLiBBbHRlcm5hdGl2ZWx5LCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFdhaXQgYSBtaW51dGXigKYgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyByZWdpc3RlcmVkIGluc2lkZSBgY3RubF9jYmAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgaXMgcGFydCBvZiBgbmZuZXRsaW5rYC4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgY2hlY2sgaG93IGBjdG5sX2NiYCBpcyByZWdpc3RlcmVkLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gbGlrZWx5IGJlZ2lucy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhhdCByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmxfY2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3Njk9c3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNzc0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM3NzU6c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGN0bmxfY2JbSVBDVE5MX01TR19NQVhdID0ge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXHRbSVBDVE5MX01TR19DVF9ORVddXHQ9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzg0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmV0bGlua19zdWJzeXN0ZW0gY3RubF9zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDYtXHQuY2JfY291bnRcdFx0XHQ9IElQQ1ROTF9NU0dfTUFYLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NDc6XHQuY2JcdFx0XHRcdD0gY3RubF9jYixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODQ4LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25udHJhY2sgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgVGFyZ2V0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBJIHNlZSBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBsb29rIHByb21pc2luZzogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYC4gRXZlbiBpZiB0aGV5JiMzOTtyZSBkZWNsYXJlZCBzdGF0aWMsIGl0IGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGJsb2NrIFN5emthbGxlcjsgaWYgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHRoZXkgc2hvdWxkIGJlIGFjY2Vzc2libGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBpZiBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGlzIGlubGluZWQuIEl0JiMzOTtzIGEgZmFpcmx5IHN1YnN0YW50aWFsIGNodW5rIG9mIGNvZGUsIHNvIG15IGd1dCBzYXlzICYjMzQ7bm8sJiMzNDsgYnV0IGJldHRlciB0byBjb25maXJtLiBJJiMzOTtsbCBhbHNvIGhhdmUgYSBsb29rIGF0IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCB3aGlsZSBJJiMzOTttIGF0IGl0IOKAkyBpdCBsb29rcyBzaW1pbGFybHkgY29tcGxleC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBDbGVhcmx5LCBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGEgbXVzdC4gQW5kLCBhaCwgbG9va3MgbGlrZSBgQ09ORklHX01PRFVMRVNgIGlzIGFsc28gbmVlZGVkIHRvIGFjdGl2YXRlIHRoYXQgYHRyeV9tb2R1bGVfZ2V0YCBjb2RlIHBhdGgsIHdoaWNoIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJIHdvbmRlciBpZiB0aGF0JiMzOTtzIGEgY29tbW9uIG9wdGlvbj8gWWVwLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RhbmRhcmQgb25lLgoKV2FpdCBhIHNlY29uZOKApiBgQ09ORklHX05GX05BVGAgaXMgYWxzbyBsaXN0ZWQgYXMgYSByZXF1aXJlbWVudC4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGF0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzk4PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MDc6Y29uZmlnIE5GX05BVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDIxOmNvbmZpZyBORl9OQVRfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDIyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDM2OmNvbmZpZyBORl9OQVRfVEZUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Mi1cdGJvb2xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ0OmNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0NS1cdGJvb2xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ3OmNvbmZpZyBORl9OQVRfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY1OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBNb2R1bGUgUGF0Y2ggZm9yIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBgTkZfQ1RfTkVUTElOS2AgYW5kIGBORl9OQVRgIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgYWN0aXZlIGFuZCBjYW4gYmUgdGVzdGVkIHByb3Blcmx5LiBCdXQgdGhlbiBJIHJlbWVtYmVyLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBkZWFscyB3aXRoIGB0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSlgIGFuZCBgbW9kdWxlX3B1dChUSElTX01PRFVMRSlgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCB1bmxvYWQgZHVyaW5nIGEgYHJlcXVlc3RfbW9kdWxlYCBjYWxsLgoKR2l2ZW4gaXRzIGZ1bmN0aW9uYWwgbmF0dXJlIGFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIHRoZSBjb3JlIG5ldGZpbHRlciBuZXRsaW5rIGNvZGUsIGZ1enppbmcgaXQgc2VlbXMgd29ydGh3aGlsZS4gTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgc3ltYm9scyBmb3IgZnV6emluZy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgYWJvdXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCBidXQgaG9sZCBvbi4uLiBJIHJlbWVtYmVyIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBhY3R1YWxseSBzdGF0aWMuIFNvLCBsZXQgbWUgcmUtZXZhbHVhdGU7IHBlcmhhcHMgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBhIGJldHRlciB0YXJnZXQuIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgYWltIGZvciBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFuZCBgY3RuZXRsaW5rX3NldHVwX25hdGAuIFdhaXQsIHNjcmF0Y2ggdGhhdCwgYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIGFsc28gc3RhdGljISBUaGUgYmVzdCBjaG9pY2UgaXMgZGVmaW5pdGVseSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24uIEFscmlnaHQsIEkmIzM5O3ZlIGdvdCBpdC4gYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHBhcmVudCBtb2R1bGUsIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgbW9kdWxlIGF0IGhhbmQgYW5kIGBORl9OQVRgIGlzIHRoZSBvbmUgYmVpbmcgcmVxdWVzdGVkLiBTbyBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAgYXJlIHRoZSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgdG8gbWFrZSBzdXJlIGFsbCBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgdGVzdGVkIHRob3JvdWdobHkuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFyZSBub3QgaW5saW5lZCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xODQ5PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxODUwOmN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXHRcdFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xOTEyPWN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyMDpcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyMS1cdFx0XHRcdFx0Y2RhW0NUQV9OQVRfRFNUXSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjQtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcdHJldHVybiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKGN0LCBORl9OQVRfTUFOSVBfU1JDLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjYtXHRcdFx0XHRcdCBjZGFbQ1RBX05BVF9TUkNdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgdGhlIENvbnRleHQgb2YgYGN0bmV0bGlua19zZXR1cF9uYXRgKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgYGN0bmV0bGlua19zZXR1cF9uYXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZS4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIEl0ICpjb3VsZCogYmUgaW5saW5lZCDigJMgdGhhdCB3b3VsZCBiZSBhIHJlYXNvbmFibGUgZXhwbGFuYXRpb24gZm9yIHRoZSBkdXBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgc2VsZi1jb250YWluZWQgYml0IG9mIGZ1bmN0aW9uYWxpdHkuIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGl0cyAmIzM0O2xhcmdlbmVzcyYjMzQ7IHN1Z2dlc3RzIGl0JiMzOTtzIHN1YnN0YW50aWFsLCBhbmQgaW5saW5pbmcgYSBiaWcgZnVuY3Rpb24gaXMgdXN1YWxseSBzb21ldGhpbmcgSSYjMzk7ZCB0cnkgdG8gYXZvaWQgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29tcGVsbGluZyBwZXJmb3JtYW5jZSByZWFzb24gb3Igc2lnbmlmaWNhbnQgc2ltcGxpZmljYXRpb24gb2YgdGhlIGNhbGxpbmcgY29kZS4KClRoZXJlZm9yZSwgc2luY2UgdGhlIGNvZGUgaXMgbGFyZ2UsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBzaW5jZSB0aGlzIGNvdWxkIGJlIHdoZXJlIHRoZSAmIzM0O3NldHVwJiMzNDsgaXMgYmVpbmcgY2FsbGVkLiBQZXJoYXBzIG9uZSBvZiB0aGUgY2FsbHMgY291bGQgYmUgb3B0aW1pemVkIGZvciBhIGRpcmVjdCBlbnRyeS4gSSBuZWVkIHRvIGRpdmUgaW50byBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFuZCB0cmFjZSBob3cgYW5kIHdoZW4gdGhhdCBjYWxsIGlzIGJlaW5nIG1hZGUuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmluZyBpZiB0aGVzZSBjYWxscyBhcmUgcmVkdW5kYW50IG9yIGlmIHRoZXkgcGVyZm9ybSBkaXN0aW5jdCwgbmVjZXNzYXJ5IHJvbGVzLiBNeSBleHBlcnQgaW50dWl0aW9uIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIHJlZmFjdG9yaW5nLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgJiMzNDtzZXR1cCYjMzQ7IGlzIGFjdHVhbGx5IHV0aWxpemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIyOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjQ0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2Olx0XHRcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cdTAwM2VuZXQsIFx1MDAyNnpvbmUsIGNkYSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVx0XHRcdFx0XHRcdFx0XHUwMDI2b3R1cGxlLCBcdTAwMjZydHVwbGUsIHUzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ29ubnRyYWNrIE5ldGxpbmsgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZS4gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50LCBjYWxsZWQgb25seSBvbmNlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGlubGluZWQ/IElmIGl0ICppcyogaW5saW5lZCwgdGhlbiBzeXprYWxsZXIgbWlnaHQgbWlzcyBpdCBhcyBhIGRpc3RpbmN0IHN5bWJvbC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhcyBhIGZvY3VzIHN5bWJvbC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGluIGEgc3RydWN0IGFuZCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBtYWtlcyBtZSB0aGluayBpdCBjYW4mIzM5O3QgYmUgY29tcGxldGVseSBpbmxpbmVkIGFueXdheS4KCkp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBJJiMzOTtsbCBhbHNvIGluY2x1ZGUgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGluIHRoZSBsaXN0LCBqdXN0IGluIGNhc2UgdGhleSAqYXJlbiYjMzk7dCogaW5saW5lZCwgb3IgaWYgdGhlcmUmIzM5O3MgYW55IG9kZG5lc3MgaW4gdGhlIGNvbXBpbGVyJiMzOTtzIG9wdGltaXphdGlvbi4KCk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4uLiB5ZXAsIGl0JiMzOTtzIGBzdGF0aWMgaW50IGN0bmV0bGlua19uZXdfY29ubnRyYWNrKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlgLiBTZWVtcyByaWdodC4KCkFscmlnaHQsIGxldCYjMzk7cyBsb29rIGZvciBvdGhlciBlbnRyeSBwb2ludHMganVzdCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4gT2theSwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyAqb25seSogY2FsbGVkIGZyb20gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4gQW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgZnJvbSBib3RoIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfY2hhbmdlX2Nvbm50cmFja2AuIEdvdCBpdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19zZXR1cF9uYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE5MTI6Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTEzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjIzMD1jdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjMxMzpcdGVyciA9IGN0bmV0bGlua19zZXR1cF9uYXQoY3QsIGNkYSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDA3CgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDM2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgTW9kdWxlIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGguIEl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIG9ubHkgY2FsbGVkIGZyb20gYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGVudHJ5IHBvaW50IGludG8gdGhpcyBtb2RpZmllZCBjb2RlIGlzIGxpa2VseSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0LiBZZXAsIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgKmlzKiBjYWxsZWQgYnkgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgYW5kIHRoZW4gYGN0bmV0bGlua19zZXR1cF9uYXRgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGFuZCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgZ2V0cyBjYWxsZWQgYnkgYGN0bmV0bGlua19zZXR1cF9uYXRgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIGRlZmluaXRlbHkgdGhlIHByaW1lIGVudHJ5IHBvaW50IGhlcmUuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2UgYSBub3RlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciB0aGlzOiBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUYCwgYW5kIGBNT0RVTEVTYC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGFkZCB0aG9zZSB0byBteSBFbmFibGVDb25maWdzLgoKTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaXNzdWUgaXMgdGhpczogdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0gd2l0aGluIGBuZl9jb25udHJhY2tfbmV0bGlua2AuIFRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IHVubG9hZCB0aGUgbW9kdWxlIHdoaWxlIGByZXF1ZXN0X21vZHVsZWAgd2FzIGluIHVzZS4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYHRyeV9tb2R1bGVfZ2V0YCBhbmQgYG1vZHVsZV9wdXRgIGFyb3VuZCB0aG9zZSBgcmVxdWVzdF9tb2R1bGVgIGNhbGxzIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBzb3VuZCBhcHByb2FjaC4gVGhpcyBtZWFucyB0aGUgZml4IGlzIGFkZHJlc3NpbmcgY29yZSBuZXRmaWx0ZXIgY29kZS4gQmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvZGUsIGl0IGlzIGFic29sdXRlbHkgZnV6emFibGUuCgpHaXZlbiB0aGF0LCBJIHdhbnQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGFuZCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAuCgpBbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7LAogICAgJiMzNDtNT0RVTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3RuZXRsaW5rX25ld19jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2smIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDozOC41NTYwNjk5MTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDE1MDk2NDA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiLFxuICAgIFwiTU9EVUxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0bmV0bGlua19uZXdfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja1wiLFxuICAgIFwiY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBpbiBuZl9jb25udHJhY2tfbmV0bGluayB3aGVyZSB0aGUgbW9kdWxlIGNvdWxkIGJlIHVubG9hZGVkIHdoaWxlIHJlcXVlc3RfbW9kdWxlIGlzIGNhbGxlZC4gSXQgYWRkcyB0cnlfbW9kdWxlX2dldCBhbmQgbW9kdWxlX3B1dCBhcm91bmQgcmVxdWVzdF9tb2R1bGUgY2FsbHMgaW4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cCBhbmQgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6MzguNTU2MDc3OTk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NTAwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkM2FhZDEzOTYxNTEzYzQ4ZDcyZDQwZDUzNTA4NTY4OTU2MDI0YjcwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTc6NTA6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXFxuaW5kZXggMzFjYmIxYjU1YjllNi4uNDNmOGU2NGEyZWIxOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5AQCAtMTg1OSwxMyArMTg1OSwxNyBAQCBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwKHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0aWYgKCFuYXRfaG9vaykge1xcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuIFxcdFxcdGlmIChyZXF1ZXN0X21vZHVsZShcXFwibmYtbmF0XFxcIikgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbitcXHRcXHRcXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdFxcdG5hdF9ob29rID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9ob29rKTtcXG4gXFx0XFx0aWYgKG5hdF9ob29rKVxcbkBAIC0xODc4LDEzICsxODgyLDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRpZiAoZXJyID09IC1FQUdBSU4pIHtcXG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbiBcXHRcXHRpZiAocmVxdWVzdF9tb2R1bGUoXFxcIm5mLW5hdC0ldVxcXCIsIG5mX2N0X2wzbnVtKGN0KSkgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbitcXHRcXHRcXHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdFxcdH1cXG4gXFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuICNlbHNlXFxuIFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbkBAIC0yMjUzLDEwICsyMjYxLDE5IEBAIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0aWYgKGhlbHBlciA9PSBOVUxMKSB7XFxuIFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiAjaWZkZWYgQ09ORklHX01PRFVMRVNcXG4rXFx0XFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbiBcXHRcXHRcXHRpZiAocmVxdWVzdF9tb2R1bGUoXFxcIm5mY3QtaGVscGVyLSVzXFxcIiwgaGVscG5hbWUpIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRcXHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcXG4rXFx0XFx0XFx0XFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XFxuIFxcdFxcdFxcdFxcdGVyciA9IC1FT1BOT1RTVVBQO1xcbiBcXHRcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XFxuK1xcdFxcdFxcdG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpO1xcbiBcXG4gXFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRcXHRoZWxwZXIgPSBfX25mX2Nvbm50cmFja19oZWxwZXJfZmluZChoZWxwbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6MzkuMTA5NDYyMzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODk1OTc1NjIyNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCIsXG4gICAgXCJORl9OQVRcIixcbiAgICBcIk1PRFVMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdG5ldGxpbmtfbmV3X2Nvbm50cmFja1wiLFxuICAgIFwiY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gbmZfY29ubnRyYWNrX25ldGxpbmsgd2hlcmUgdGhlIG1vZHVsZSBjb3VsZCBiZSB1bmxvYWRlZCB3aGlsZSByZXF1ZXN0X21vZHVsZSBpcyBjYWxsZWQuIEl0IGFkZHMgdHJ5X21vZHVsZV9nZXQgYW5kIG1vZHVsZV9wdXQgYXJvdW5kIHJlcXVlc3RfbW9kdWxlIGNhbGxzIGluIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAgYW5kIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzYWFkMTM5NjE1MTNjNDhkNzJkNDBkNTM1MDg1Njg5NTYwMjRiNzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE3OjUwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCAzMWNiYjFiNTViOWU2Li40M2Y4ZTY0YTJlYjE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0xODU5LDEzICsxODU5LDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKCFuYXRfaG9vaykge1xuICNpZmRlZiBDT05GSUdfTU9EVUxFU1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpXG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuIFx0XHRpZiAocmVxdWVzdF9tb2R1bGUoXCJuZi1uYXRcIikgXHUwMDNjIDApIHtcbiBcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR9XG4gXHRcdG5mbmxfbG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuK1x0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRuYXRfaG9vayA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaG9vayk7XG4gXHRcdGlmIChuYXRfaG9vaylcbkBAIC0xODc4LDEzICsxODgyLDE3IEBAIGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSlcbitcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdG5mbmxfdW5sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4gXHRcdGlmIChyZXF1ZXN0X21vZHVsZShcIm5mLW5hdC0ldVwiLCBuZl9jdF9sM251bShjdCkpIFx1MDAzYyAwKSB7XG4gXHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4rXHRcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcdFx0fVxuIFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0bW9kdWxlX3B1dChUSElTX01PRFVMRSk7XG4gXHRcdHJjdV9yZWFkX2xvY2soKTtcbiAjZWxzZVxuIFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbkBAIC0yMjUzLDEwICsyMjYxLDE5IEBAIGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0aWYgKGhlbHBlciA9PSBOVUxMKSB7XG4gXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gI2lmZGVmIENPTkZJR19NT0RVTEVTXG4rXHRcdFx0aWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpIHtcbitcdFx0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0XHRcdFx0Z290byBlcnIxO1xuK1x0XHRcdH1cbitcdFx0XHRuZm5sX3VubG9jayhORk5MX1NVQlNZU19DVE5FVExJTkspO1xuIFx0XHRcdGlmIChyZXF1ZXN0X21vZHVsZShcIm5mY3QtaGVscGVyLSVzXCIsIGhlbHBuYW1lKSBcdTAwM2MgMCkge1xuK1x0XHRcdFx0bmZubF9sb2NrKE5GTkxfU1VCU1lTX0NUTkVUTElOSyk7XG4rXHRcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcdFx0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuIFx0XHRcdFx0Z290byBlcnIxO1xuIFx0XHRcdH1cbitcdFx0XHRuZm5sX2xvY2soTkZOTF9TVUJTWVNfQ1RORVRMSU5LKTtcbitcdFx0XHRtb2R1bGVfcHV0KFRISVNfTU9EVUxFKTtcbiBcbiBcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdFx0aGVscGVyID0gX19uZl9jb25udHJhY2tfaGVscGVyX2ZpbmQoaGVscG5hbWUsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDozOS4xMDk0NjM2NjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzYyMzU2MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIE5ldGxpbmsgTW9kdWxlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGFuZCBpdCdzIG1ha2luZyBtZSB0aGluayBhYm91dCBtb2R1bGUgdW5sb2FkaW5nLiBJdCBzZWVtcyB0aGV5J3ZlIHdyYXBwZWQgdGhlIGByZXF1ZXN0X21vZHVsZSgpYCBjYWxscyBpbiBgdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpYCBhbmQgYG1vZHVsZV9wdXQoVEhJU19NT0RVTEUpYCB3aXRoaW4gYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGJlaW5nIGRvbmUgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uLCB3aGVyZSB0aGUgbW9kdWxlIG1pZ2h0IHVubG9hZCB3aGlsZSBhIGByZXF1ZXN0X21vZHVsZWAgY2FsbCBpcyBpbiBwcm9ncmVzcy4gVGhlIGltcG9ydGFudCBkZXRhaWwgaGVyZSBpcyB0aGUgcG90ZW50aWFsIGRyb3Agb2YgYG5mbmxfbG9ja2AuIFRoaXMgaXMgY2xldmVyLCBoYW5kbGluZyB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSB0aGUgbW9kdWxlIHN0YXlzIGxvYWRlZCBsb25nIGVub3VnaC5cblxuTm93LCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgYHJlcXVlc3RfbW9kdWxlKClgIGNhbGwgaW1wbGllcyBzb21lIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGJlaW5nIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gc2F5cyBhYm91dCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBNYWtlZmlsZSBlbnRyeSBmb3IgYW55IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBuZWVkIGZvciB0aGlzIHBhdGNoIG9yIGhvdyBpdCBtaWdodCBmdW5jdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCBmaWxlIGlzIGJlaW5nIGJ1aWx0IGFuZCB3aGV0aGVyIGl0IGhhcyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlrZWx5IGxvYWRlZCBkeW5hbWljYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUwOjQzLjg3MTgyOTM0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxNDM0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX25ldGxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM0PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICs9IG5mX2Nvbm50cmFjay5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM2LSMgbmV0bGluayBpbnRlcmZhY2UgZm9yIG5mX2Nvbm50cmFja1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICs9IG5mX2Nvbm50cmFja19uZXRsaW5rLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICs9IG5mbmV0bGlua19jdHRpbWVvdXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo0My45OTA5ODE0MjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwNTYxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgbmV0d29ya2luZzpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gYE5GX0NUX05FVExJTktgKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIE15IGZpcnN0IHJlZmxleCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSwgc28gaXQgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5GX0NUX05FVExJTktgIGFjdHVhbGx5ICpkb2VzKiwgaG93IGl0J3MgZGVmaW5lZCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBpcyB0aGlzIG1vZHVsZSBmb3IsIHdoYXQgb3B0aW9ucyBkbyBJIGhhdmUgc3Vycm91bmRpbmcgaXQ/IEhvcGVmdWxseSB0aGUgS2NvbmZpZyBlbnRyeSBpcyB3ZWxsLWRvY3VtZW50ZWQsIGV4cGxhaW5pbmcgdGhlIGZlYXR1cmVzIGVuYWJsZWQsIGFuZCB3aGVuIHRvIGluY2x1ZGUgaXQgd2l0aGluIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NDcuMzkxNTQ0NDcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDY4MTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM1NT1jb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM2Njpjb25maWcgTkZfQ1RfTkVUTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNzM6Y29uZmlnIE5GX0NUX05FVExJTktfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzg1OmNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXFx0dHJpc3RhdGUgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo0Ny41MDIyMzM2MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcyNjI4NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgTkZfQ1RfTkVUTElOSyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgb2YgYE5GX0NUX05FVExJTktgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBvdGhlciBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgcGVyaGFwcyBzb21lIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW1zLiBXaGF0IG1vZHVsZXMgb3IgZmVhdHVyZXMgYXJlIGNhbGxpbmcgaW50byB0aGlzPyBXaGF0IGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBkb2VzIGl0IHJlbHkgb24/XG5cbkkgd2FudCB0byBrbm93IGlmIGl0J3MgdGlnaHRseSBjb3VwbGVkIG9yIHJlbGF0aXZlbHkgbW9kdWxhci4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgY2hhbmdlcyBvciB1cGdyYWRlcz8gQXJlIHdlIGxpa2VseSB0byBmaW5kIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBpZiB3ZSBtb2RpZnkgb3IgZGlzYWJsZSBvdGhlciBuZXRmaWx0ZXIgcGFydHM/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTkZfQ1RfTkVUTElOS2AgaXMgY3JpdGljYWwgdG8gbWFuYWdpbmcgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB2aWEgbmV0bGluaywgc28gSeKAmW0gZXhwZWN0aW5nIGl0IHdpbGwgaGF2ZSBkZWVwIGludm9sdmVtZW50IHdpdGggY29ubnRyYWNrIGl0c2VsZiwgb2YgY291cnNlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHZhcmlvdXMgY29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzLCB0b28uIEtub3dpbmcgdGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2hhbmdlcyB0byBgTkZfQ1RfTkVUTElOS2AgaXRzZWxmLCBvciBhbnkgb2YgdGhlIHN1cnJvdW5kaW5nIHBpZWNlcy4gSSBhbHNvIG5lZWQgdG8gYmUgY2VydGFpbiB0aGF0IEkgY29uc2lkZXIgYW55IGNoYW5nZXMgdG8gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NTEuMjc0ODY1MjIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNjY6XFx0Y29uZmlnIE5GX0NUX05FVExJTktcXG4gMzY3OlxcdFxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJ1xcbiAzNjg6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDM2OTpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gMzcwOlxcdFxcdGhlbHBcXG4gMzcxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG5ldGxpbmstYmFzZWQgdXNlcnNwYWNlIGludGVyZmFjZVxcbiAzNzI6XFx0XFxuIDM3MzpcXHRjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZSAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsnXFxuIDM3NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTA6NTEuMjc1MDI0MjAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NDQyOTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBvZiBORl9DVF9ORVRMSU5LKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBORl9DVF9ORVRMSU5LYCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY3kgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIHBhcmVudCBjb25maWcgb3B0aW9uLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHRoYXQgaXQgcmVsaWVzIG9uIGBORl9DT05OVFJBQ0tgLiBCdXQsIEkgYWx3YXlzIGxpa2UgdG8gY29uZmlybSB0aGVzZSB0aGluZ3MgZGlyZWN0bHkuIFNvLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE5GX0NPTk5UUkFDS2AgaXMgaW5kZWVkIHRoZSBwYXJlbnQgbWVudSBvciBcImlmXCIgc3RhdGVtZW50LlxuXG5JJ2xsIGp1bXAgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMzY2LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9uIG9mIGBORl9DVF9ORVRMSU5LYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBhIGRlZmluaXRpdmUgYW5zd2VyIGFuZCBob3BlZnVsbHksIGNvbmZpcm0gd2hhdCBJIGFscmVhZHkgc3VzcGVjdC4gVGhpcyBzb3J0IG9mIGNoZWNrIGlzIHByZXR0eSByb3V0aW5lLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgYXZvaWQgYXNzdW1wdGlvbnMsIGVzcGVjaWFsbHkgaW4gYSBzeXN0ZW0gYXMgY29tcGxleCBhcyB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo1NS42NTk0NTcyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNzY4ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTk4PWNvbmZpZyBORl9MT0dfU1lTTE9HXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTA6aWYgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMS1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MDo1NS43NTEyMzQzNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5OTk3MTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29ubnRyYWNrIE5ldGxpbmsgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIGNsZWFyIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBUaGUgYE5GX0NPTk5UUkFDS2Aga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGEgZ2l2ZW4g4oCTIGl0J3MgZnVuZGFtZW50YWwuIEFuZCwgYXMgZXhwZWN0ZWQsIGBORVRGSUxURVJfTkVUTElOS2AgaXMgaW1wbGljaXRseSBzZWxlY3RlZCBkdWUgdG8gYE5GX0NUX05FVExJTktgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBzaGlmdHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciByZWFjaGFiaWxpdHkuIE5vIHN1cnByaXNlcyBoZXJlOyB0aGV5J3JlIGludGVncmFsIHBhcnRzIG9mIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgY29ubnRyYWNrLiBTcGVjaWZpY2FsbHksIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgaXMgY2FsbGVkIHdoZW4gdXNlcnNwYWNlIGlzIGNyZWF0aW5nIGEgbmV3IGNvbm50cmFjayBlbnRyeSB2aWEgbmV0bGluay4gVGhhdCdzIGEga2V5IGludGVyYWN0aW9uIHBvaW50LiAgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNsZWFybHkgaW52b2x2ZWQgaW4gc2V0dGluZyB1cCBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gdGhyb3VnaCBuZXRsaW5rIOKAkyBzbyBhbnkgTkFUIHJlbGF0ZWQgaW50ZXJhY3Rpb25zIGFyZSBoYW5kbGVkIHRoZXJlLlxuXG5Ob3csIEkgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCBJJ20gY2hlY2tpbmcgdG8gc2VlIGlmIHRoZXkgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byBnbyBmdXJ0aGVyIGFuZCBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb25zIG1vcmUgY2xvc2VseSB0byBzZWUgaG93IHRoZXkncmUgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDAuNjUxMjEwMDQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1MTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTg0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXFx0XFx0XFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTE5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlxcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjEtXFx0XFx0XFx0XFx0XFx0Y2RhW0NUQV9OQVRfRFNUXSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcXHRyZXR1cm4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX1NSQyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cXHRcXHRcXHRcXHRcXHQgY2RhW0NUQV9OQVRfU1JDXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjAwLjcxNDM2NTkxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0MzY3NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzbmlwcGV0cywgZ2VhcmVkIHRvd2FyZHMgc29tZW9uZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipBbmFseXppbmcgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGFuZCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrLiBHaXZlbiB0aGF0IGl0J3Mgc3RhdGljLCBpdCdzIHNjb3BlZCB3aXRoaW4gYSBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBNeSBuZXh0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGhvdyBhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGFzIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgaXMgY3J1Y2lhbC4gQ29uc2lkZXJpbmcgdGhlIG5hbWUsIGl0J3MgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBOQVQgY29uZmlndXJhdGlvbiB2aWEgbmV0bGluay4gTm93LCBsZXQncyB6b29tIGluIG9uIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgY29udHJvbCBmbG93IGhlcmUuIFBlcmhhcHMgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGhhbmRsZXMgcGFyc2luZyB0aGUgTkFUIHNldHRpbmdzLCBhbmQgdGhlbiBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGdldHMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGNvbm50cmFjayBlbnRyeSBzZXR1cCBhbmQgY3JlYXRpb24gcHJvY2Vzcy4gVGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGlzIHdoYXQgSSdtIGZvY3VzZWQgb24uIEknbGwgbWVudGFsbHkgbWFwIHRoZSBkYXRhIGZsb3cgYW5kIGhvdyB0aGUgaW5mb3JtYXRpb24gcGFyc2VkIGJ5IGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBpcyBwYXNzZWQgdG8gb3IgdXNlZCBieSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDQuMzk4NzM1ODU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5OTAyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yMjI5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIyMzA6Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yMjMxLVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSAqem9uZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNDAyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNDQ2OlxcdFxcdFxcdGN0ID0gY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soaW5mby1cXHUwMDNlbmV0LCBcXHUwMDI2em9uZSwgY2RhLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDQ3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZvdHVwbGUsIFxcdTAwMjZydHVwbGUsIHUzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDQuNTAzNzMxMDI3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQ5NDc1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBFbnRyeSBQb2ludHMgaW4gdGhlIENvbm50cmFjayBOZXRsaW5rIE1vZHVsZSoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCdzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgdGhlIHR3byBjb3JlIGZ1bmN0aW9ucyB3ZSdyZSBmb2N1c2luZyBvbiwgdGhlIGVudHJ5IHBvaW50cywgYXJlIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gQm90aCBvZiB0aGVzZSBzZWVtIHRvIGJlIHN0YXRpYyB3aXRoaW4gdGhlIG1vZHVsZSwgbWVhbmluZyB0aGV5IGFyZW4ndCBleHBvc2VkIGV4dGVybmFsbHkuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCwgbGV0J3MgZGl2ZSBpbnRvIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBmaXJzdC4gSSB3YW50IHRvIHNlZSBob3cgTkFUIGlzIGhhbmRsZWQgd2l0aGluIHRoaXMgbmV0bGluayBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHRoZSBOQVQgc2V0dXAgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluc2lnaHQgdG8gaG93IHRoZSBDb25udHJhY2sgbW9kdWxlIGhhbmRsZXMgdGhlIHVuZGVybHlpbmcgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjExNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjA3Ljk0ODY4MTQ2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQxNzMyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX3NldHVwX25hdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTEyOmN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIzMTM6XFx0ZXJyID0gY3RuZXRsaW5rX3NldHVwX25hdChjdCwgY2RhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MDguMDEyODU5NDg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NzM0OTYxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIENvbm50cmFjayBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBgY3RuZXRsaW5rX3NldHVwX25hdGAuLi4gdGhhdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgIHRvbywganVzdCBsaWtlIHNvbWUgb3RoZXIgY3J1Y2lhbCBmdW5jdGlvbnMuIEludGVyZXN0aW5nLiBJdCByZWluZm9yY2VzIHRoZSBpZGVhIHRoYXQgaXQncyBtZWFudCB0byBiZSBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBub3QgZGlyZWN0bHkgZXhwb3NlZCB0byBleHRlcm5hbCBjYWxsZXJzLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZSBmb3IgZ29vZCBtb2R1bGFyIGRlc2lnbiwgb2YgY291cnNlLiBLZWVwcyB0aGluZ3MgdGlkeS4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG5ldyBjb25udHJhY2sgZW50cmllcyBhcHBlYXJzIHRvIGJlIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIHRoYXQgaXMgd2hlcmUgdGhlIHdob2xlIHByb2Nlc3MgZ2V0cyBraWNrZWQgb2ZmLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3cgSSBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgaGFwcGVucyBhdCB0aGF0IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTIuNDg2MzU3OTc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk3OTI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfbmV3X2Nvbm50cmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0MDEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI0MDI6c3RhdGljIGludCBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNDAzLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc3NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgY3RubF9jYltJUENUTkxfTVNHX01BWF0gPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXFx0W0lQQ1ROTF9NU0dfQ1RfTkVXXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzc3OlxcdFxcdC5jYWxsXFx0XFx0PSBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc3OC1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTIuNTU4MzQzNDY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDA1MTQwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhwbG9yaW5nIENvbm50cmFjayBOZXRsaW5rIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gQnV0IHdhaXQsIGl0J3MgcmVnaXN0ZXJlZCBpbiBgY3RubF9jYmAuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBkZXRhaWwuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IHdlIGNhbiBsZXZlcmFnZT8gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgSSBjYW4gdXNlIGhlcmUuXG5cbkxldCdzIGRpdmUgaW50byBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBodW50IGZvciB1c2FibGUsIGV4dGVybmFsbHktYWNjZXNzaWJsZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjb25udHJhY2sgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0J3MgYXZhaWxhYmxlIHRoYXQgSSBjYW4gY2FsbCBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE2MCwiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjE2Ljk1ODg2MDQxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1MTgzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChbYS16QS1aMC05XyAsKl0qXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yOTI9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTM6Y3RuZXRsaW5rX2R1bXBfYWNjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIGludCB0eXBlKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yOTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwOD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjMwOTpjdG5ldGxpbmtfZHVtcF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4Nj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NzpjdG5ldGxpbmtfZHVtcF9ldmVudF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODgte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQxMz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQxNDpjdG5ldGxpbmtfZHVtcF9sYWJlbHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy00MTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTQ1NT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjQ1NjpkdW1wX2N0X3NlcV9hZGooc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2N0X3NlcWFkaiAqc2VxLCBpbnQgdHlwZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNDU3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz03NDM9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo3NDQ6Y3RuZXRsaW5rX2Nvbm50cmFja19ldmVudCh1bnNpZ25lZCBpbnQgZXZlbnRzLCBjb25zdCBzdHJ1Y3QgbmZfY3RfZXZlbnQgKml0ZW0pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTc0NS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTIxMD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjEyMTE6Y3RuZXRsaW5rX2R1bXBfdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xMjEyLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzY5PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc3MDpjdG5ldGxpbmtfZHVtcF91bmNvbmZpcm1lZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3NzEte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE3NzU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzc2OmN0bmV0bGlua19kdW1wX2R5aW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc3Ny17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MjUzOT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI1NDA6Y3RuZXRsaW5rX2N0X3N0YXRfY3B1X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNTQxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjU0PXN0YXRpYyBzaXplX3RcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjY1NTpjdG5ldGxpbmtfZ2x1ZV9idWlsZF9zaXplKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjY1Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg0Mj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4NDM6Y3RuZXRsaW5rX2dsdWVfcGFyc2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODQ0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMTA4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzEwOTpjdG5ldGxpbmtfZXhwZWN0X2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9leHBfZXZlbnQgKml0ZW0pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMxNjg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMTY5OmN0bmV0bGlua19leHBfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMxNzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMyMTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMjE2OmN0bmV0bGlua19leHBfY3RfZHVtcF90YWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMyMTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM3Mjg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzI5OmN0bmV0bGlua19leHBfc3RhdF9jcHVfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3MzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NTc9TU9EVUxFX0FMSUFTKFxcXCJpcF9jb25udHJhY2tfbmV0bGlua1xcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU4Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTkspO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODU5Ok1PRFVMRV9BTElBU19ORk5MX1NVQlNZUyhORk5MX1NVQlNZU19DVE5FVExJTktfRVhQKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zOTE4PXN0YXRpYyB2b2lkIF9fZXhpdCBjdG5ldGxpbmtfZXhpdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM5MjgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM5Mjk6bW9kdWxlX2luaXQoY3RuZXRsaW5rX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozOTMwOm1vZHVsZV9leGl0KGN0bmV0bGlua19leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MTcuNTA0MDUwNzE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTE0MTMxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgY29ubnRyYWNrIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIHBpbnBvaW50IGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggc3RhdGljIHNjb3BpbmcsIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgaW50ZXJhY3Rpb24gYmV0d2VlbiBkaWZmZXJlbnQgbW9kdWxlcyBvciB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbioqUmUtRXhhbWluaW5nIENvbm50cmFjayBGdW5jdGlvbnMqKlxuXG5NeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIGluIHRoZSBjb2RlYmFzZSB0aGF0IGhhcyBhIGNyaXRpY2FsIGltcGFjdCBvbiB0aGUgY29ubnRyYWNrIGZ1bmN0aW9uYWxpdHkuIFRvIHRoYXQgZW5kLCBJJ2xsIHNjcnV0aW5pemUgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgZXhwb3J0ZWQgZnVuY3Rpb25zIG9yLCBtb3JlIGdlbmVyYWxseSwgZnVuY3Rpb25zIHRoYXQgYXJlbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIGFjY2Vzc2VkIGZyb20gb3V0c2lkZSB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0LCBhbmQgdGhhdCB3b3VsZCBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGludm9rZSBuZXRsaW5rLCBvciBtb2RpZnkgY29ubnRyYWNrIGJlaGF2aW9yIGluIG5vbi1vYnZpb3VzIHdheXMuIEknbSBmb2N1c2luZyBvbiBzY29wZSwgYW5kIGVuc3VyaW5nIHRoZSByaWdodCBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUsIGluIHRoZSByaWdodCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MjEuOTk1NDY2MjY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk4MDI0MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgY3RuZXRsaW5rX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjIyLjEwNTI3ODA3NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwOTQ2MzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBuZl9jb25udHJhY2tfbmV0bGluay5jKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlZ2VyIHJlbGF0ZWQgb3BlcmF0aW9ucy4gTXkgbWVudGFsIG1hcCBpcyBhbHJlYWR5IGZvcm1pbmcgLSBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoYXQgYF5pbnQgYCBiaXQuIFRoYXQncyBnb3QgdG8gYmUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIFRpbWUgdG8gdHJhY2UgdGhpcyB0aHJvdWdoIGFuZCBzZWUgd2hhdCB0aGF0J3MgYWxsIGFib3V0LiBMZXQncyBzZWUgaG93IHRoZSBpbnRlZ2VycyBhcmUgaGFuZGxlZCBoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MToyNS45MDYyMjYzNDlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyOTU1OTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjI1Ljk4OTE4OTE1N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjExNTQzMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpdmluZyBpbnRvIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCoqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hlcmUgZXhhY3RseSBgRVhQT1JUX1NZTUJPTGAgaXMgdXRpbGl6ZWQgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBJJ3ZlIGdvdCBhIGh1bmNoIHRoZXJlJ3Mgc29tZXRoaW5nIHNwZWNpZmljIEkgbmVlZCB0byB2ZXJpZnkgcmVnYXJkaW5nIGl0cyB1c2FnZSBpbiB0aGF0IGZpbGUuIEl0J3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhvc2Ugc3ltYm9scyBhcmUgbWFkZSBhdmFpbGFibGUg4oCTIGxpa2VseSByZWxhdGVkIHRvIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlIG9yIG1heWJlIGFub3RoZXIga2VybmVsIG1vZHVsZS4gSXQgY291bGQgYmUgYWJvdXQgc3ltYm9sIHZpc2liaWxpdHkgb3IgcGVyaGFwcyBzb21lIGRlcGVuZGVuY3kgdHJhY2tpbmcgdGhhdCBJIG5lZWQgdG8gY2xhcmlmeS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzg3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MjkuNjAwNzM0NDczWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDE3NTEyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjI5LjY4MDkxNjk4MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA1NDY4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIENvbm50cmFjayBOZXRsaW5rIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgZmlsZSBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFNpbmNlIHRoZXJlIGFyZSBubyBleHBvcnRlZCBzeW1ib2xzIGFuZCBldmVyeXRoaW5nIGlzIHN0YXRpYywgSSBjYW4ganVzdCB6ZXJvIGluIG9uIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCDigJMgdGhleSdyZSB0aGUgaW50ZXJlc3Rpbmcgc3RhdGljIGZ1bmN0aW9ucyBoZXJlLiBBbHRlcm5hdGl2ZWx5LCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFdhaXQgYSBtaW51dGXigKYgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyByZWdpc3RlcmVkIGluc2lkZSBgY3RubF9jYmAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgaXMgcGFydCBvZiBgbmZuZXRsaW5rYC4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgY2hlY2sgaG93IGBjdG5sX2NiYCBpcyByZWdpc3RlcmVkLCB0aGF0J3Mgd2hlcmUgdGhlIGFjdGlvbiBsaWtlbHkgYmVnaW5zLiBMZXQncyBkZWx2ZSBpbnRvIHRoYXQgcmVnaXN0cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTozMy45ODYzODgzMjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTMxNzAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5sX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc2OT1zdGF0aWMgc3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyIGN0bmxfbm90aWZpZXIgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc3NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzc3NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgY3RubF9jYltJUENUTkxfTVNHX01BWF0gPSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NzYtXFx0W0lQQ1ROTF9NU0dfQ1RfTkVXXVxcdD0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIGN0bmxfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDYtXFx0LmNiX2NvdW50XFx0XFx0XFx0PSBJUENUTkxfTVNHX01BWCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzg0NzpcXHQuY2JcXHRcXHRcXHRcXHQ9IGN0bmxfY2IsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NDgtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MzQuMDkxNzEwNTg0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NDgyNzY1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENvbm50cmFjayBGdW5jdGlvbnMgZm9yIFN5emthbGxlciBUYXJnZXRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gcGxheSBuaWNlbHkgd2l0aCB0aGUgY29ubnRyYWNrIG5ldGxpbmsgaW50ZXJmYWNlLiBJIHNlZSBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBsb29rIHByb21pc2luZzogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYC4gRXZlbiBpZiB0aGV5J3JlIGRlY2xhcmVkIHN0YXRpYywgaXQgZG9lc24ndCBuZWNlc3NhcmlseSBibG9jayBTeXprYWxsZXI7IGlmIHRoZXkncmUgbm90IGlubGluZWQsIHRoZXkgc2hvdWxkIGJlIGFjY2Vzc2libGUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyBpbmxpbmVkLiBJdCdzIGEgZmFpcmx5IHN1YnN0YW50aWFsIGNodW5rIG9mIGNvZGUsIHNvIG15IGd1dCBzYXlzIFwibm8sXCIgYnV0IGJldHRlciB0byBjb25maXJtLiBJJ2xsIGFsc28gaGF2ZSBhIGxvb2sgYXQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIHdoaWxlIEknbSBhdCBpdCDigJMgaXQgbG9va3Mgc2ltaWxhcmx5IGNvbXBsZXguXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBDbGVhcmx5LCBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGEgbXVzdC4gQW5kLCBhaCwgbG9va3MgbGlrZSBgQ09ORklHX01PRFVMRVNgIGlzIGFsc28gbmVlZGVkIHRvIGFjdGl2YXRlIHRoYXQgYHRyeV9tb2R1bGVfZ2V0YCBjb2RlIHBhdGgsIHdoaWNoIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJIHdvbmRlciBpZiB0aGF0J3MgYSBjb21tb24gb3B0aW9uPyBZZXAsIGl0IGxvb2tzIGxpa2UgaXQncyBhIHN0YW5kYXJkIG9uZS5cblxuV2FpdCBhIHNlY29uZOKApiBgQ09ORklHX05GX05BVGAgaXMgYWxzbyBsaXN0ZWQgYXMgYSByZXF1aXJlbWVudC4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6MzkuODM5OTkwMDgyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc4NjkzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzk4PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MDc6Y29uZmlnIE5GX05BVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDE2OmNvbmZpZyBORl9OQVRfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDIxOmNvbmZpZyBORl9OQVRfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDM2OmNvbmZpZyBORl9OQVRfVEZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Mi1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDQ0OmNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDUtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0Nzpjb25maWcgTkZfTkFUX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTozOS45MTM3ODI3NzFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4MjMyMjcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBNb2R1bGUgUGF0Y2ggZm9yIFRlc3RhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZW5hYmxlIGBORl9DVF9ORVRMSU5LYCBhbmQgYE5GX05BVGAgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUgYW5kIGNhbiBiZSB0ZXN0ZWQgcHJvcGVybHkuIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGRlYWxzIHdpdGggYHRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKWAgYW5kIGBtb2R1bGVfcHV0KFRISVNfTU9EVUxFKWAuIEl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyB0aGUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgdW5sb2FkIGR1cmluZyBhIGByZXF1ZXN0X21vZHVsZWAgY2FsbC5cblxuR2l2ZW4gaXRzIGZ1bmN0aW9uYWwgbmF0dXJlIGFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIG5ldGxpbmsgY29kZSwgZnV6emluZyBpdCBzZWVtcyB3b3J0aHdoaWxlLiBOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY3J1Y2lhbCBzeW1ib2xzIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIGJ1dCBob2xkIG9uLi4uIEkgcmVtZW1iZXIgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGFjdHVhbGx5IHN0YXRpYy4gU28sIGxldCBtZSByZS1ldmFsdWF0ZTsgcGVyaGFwcyBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIGEgYmV0dGVyIHRhcmdldC4gSSdsbCBzd2l0Y2ggZ2VhcnMgYW5kIGFpbSBmb3IgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBhbmQgYGN0bmV0bGlua19zZXR1cF9uYXRgLiBXYWl0LCBzY3JhdGNoIHRoYXQsIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBpcyBhbHNvIHN0YXRpYyEgVGhlIGJlc3QgY2hvaWNlIGlzIGRlZmluaXRlbHkgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBpdC4gYE5GX0NPTk5UUkFDS2AgaXMgdGhlIHBhcmVudCBtb2R1bGUsIGBORl9DVF9ORVRMSU5LYCBpcyB0aGUgbW9kdWxlIGF0IGhhbmQgYW5kIGBORl9OQVRgIGlzIHRoZSBvbmUgYmVpbmcgcmVxdWVzdGVkLiBTbyBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAgYXJlIHRoZSBjb25maWdzIEkgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgdG8gbWFrZSBzdXJlIGFsbCBjb2RlIHBhdGhzIGFyZSBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgdGVzdGVkIHRob3JvdWdobHkuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYXJlIG5vdCBpbmxpbmVkLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjU5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjQ3LjI5NjEwNzg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzk0MzQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTg0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE4NTA6Y3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE4NTEtXFx0XFx0XFx0ICBlbnVtIG5mX25hdF9tYW5pcF90eXBlIG1hbmlwLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTI9Y3RuZXRsaW5rX3NldHVwX25hdChzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xOTE5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTIwOlxcdHJldCA9IGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXAoY3QsIE5GX05BVF9NQU5JUF9EU1QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MjEtXFx0XFx0XFx0XFx0XFx0Y2RhW0NUQV9OQVRfRFNUXSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTkyNTpcXHRyZXR1cm4gY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cChjdCwgTkZfTkFUX01BTklQX1NSQyxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTkyNi1cXHRcXHRcXHRcXHRcXHQgY2RhW0NUQV9OQVRfU1JDXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjQ3LjM4NDA1NzMyOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU3NjA0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIENvbnRleHQgb2YgYGN0bmV0bGlua19zZXR1cF9uYXRgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBgY3RuZXRsaW5rX3NldHVwX25hdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS4gSXQgKmNvdWxkKiBiZSBpbmxpbmVkIOKAkyB0aGF0IHdvdWxkIGJlIGEgcmVhc29uYWJsZSBleHBsYW5hdGlvbiBmb3IgdGhlIGR1cGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3MgYSByZWxhdGl2ZWx5IHNlbGYtY29udGFpbmVkIGJpdCBvZiBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCB0aGUgbWVudGlvbiBvZiBpdHMgXCJsYXJnZW5lc3NcIiBzdWdnZXN0cyBpdCdzIHN1YnN0YW50aWFsLCBhbmQgaW5saW5pbmcgYSBiaWcgZnVuY3Rpb24gaXMgdXN1YWxseSBzb21ldGhpbmcgSSdkIHRyeSB0byBhdm9pZCB1bmxlc3MgdGhlcmUncyBhIGNvbXBlbGxpbmcgcGVyZm9ybWFuY2UgcmVhc29uIG9yIHNpZ25pZmljYW50IHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBjYWxsaW5nIGNvZGUuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIGNvZGUgaXMgbGFyZ2UsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBzaW5jZSB0aGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBcInNldHVwXCIgaXMgYmVpbmcgY2FsbGVkLiBQZXJoYXBzIG9uZSBvZiB0aGUgY2FsbHMgY291bGQgYmUgb3B0aW1pemVkIGZvciBhIGRpcmVjdCBlbnRyeS4gSSBuZWVkIHRvIGRpdmUgaW50byBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgIGFuZCB0cmFjZSBob3cgYW5kIHdoZW4gdGhhdCBjYWxsIGlzIGJlaW5nIG1hZGUuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBkZXRlcm1pbmluZyBpZiB0aGVzZSBjYWxscyBhcmUgcmVkdW5kYW50IG9yIGlmIHRoZXkgcGVyZm9ybSBkaXN0aW5jdCwgbmVjZXNzYXJ5IHJvbGVzLiBNeSBleHBlcnQgaW50dWl0aW9uIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIHJlZmFjdG9yaW5nLCBkZXBlbmRpbmcgb24gaG93IHRoaXMgXCJzZXR1cFwiIGlzIGFjdHVhbGx5IHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE3OjUxOjUyLjM0MTY2NDk2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTU0MzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMjk9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MjIzMDpjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIyMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI0MDI9c3RhdGljIGludCBjdG5ldGxpbmtfbmV3X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0NDUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI0NDY6XFx0XFx0XFx0Y3QgPSBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjayhpbmZvLVxcdTAwM2VuZXQsIFxcdTAwMjZ6b25lLCBjZGEsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI0NDctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm90dXBsZSwgXFx1MDAyNnJ0dXBsZSwgdTMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MTo1Mi40MDcyMTUwMjlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI4NDcxODkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBDb25udHJhY2sgTmV0bGluayBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29ubnRyYWNrIG5ldGxpbmsgY29kZS4gSSBzZWUgdGhhdCBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGlzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50LCBjYWxsZWQgb25seSBvbmNlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGlubGluZWQ/IElmIGl0ICppcyogaW5saW5lZCwgdGhlbiBzeXprYWxsZXIgbWlnaHQgbWlzcyBpdCBhcyBhIGRpc3RpbmN0IHN5bWJvbC4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCBJJ20gZ29pbmcgdG8gaW5jbHVkZSBgY3RuZXRsaW5rX25ld19jb25udHJhY2tgIGFzIGEgZm9jdXMgc3ltYm9sLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVnaXN0ZXJlZCBpbiBhIHN0cnVjdCBhbmQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gbWFrZXMgbWUgdGhpbmsgaXQgY2FuJ3QgYmUgY29tcGxldGVseSBpbmxpbmVkIGFueXdheS5cblxuSnVzdCB0byBjb3ZlciBhbGwgYmFzZXMsIEknbGwgYWxzbyBpbmNsdWRlIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYCBhbmQgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpbiB0aGUgbGlzdCwganVzdCBpbiBjYXNlIHRoZXkgKmFyZW4ndCogaW5saW5lZCwgb3IgaWYgdGhlcmUncyBhbnkgb2RkbmVzcyBpbiB0aGUgY29tcGlsZXIncyBvcHRpbWl6YXRpb24uXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBzaWduYXR1cmUgb2YgYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4uLiB5ZXAsIGl0J3MgYHN0YXRpYyBpbnQgY3RuZXRsaW5rX25ld19jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdKWAuIFNlZW1zIHJpZ2h0LlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGZvciBvdGhlciBlbnRyeSBwb2ludHMganVzdCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4gT2theSwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCBpcyAqb25seSogY2FsbGVkIGZyb20gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYC4gQW5kIGl0IGxvb2tzIGxpa2UgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGlzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCwgd2hpY2ggaXMgaW4gdHVybiBjYWxsZWQgZnJvbSBib3RoIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AgYW5kIGBjdG5ldGxpbmtfY2hhbmdlX2Nvbm50cmFja2AuIEdvdCBpdC4gVGhhdCdzIGdvb2QgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6NTkuNjkxOTM2MDMxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIyNTA5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3RuZXRsaW5rX3NldHVwX25hdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE5MTE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxOTEyOmN0bmV0bGlua19zZXR1cF9uYXQoc3RydWN0IG5mX2Nvbm4gKmN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10pXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE5MTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTIyMzA9Y3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTIzMTItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjIzMTM6XFx0ZXJyID0gY3RuZXRsaW5rX3NldHVwX25hdChjdCwgY2RhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjMxNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTc6NTE6NTkuODA0MTkyNjA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ3OTUyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIE1vZHVsZSBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gSXQgbG9va3MgbGlrZSBgY3RuZXRsaW5rX3NldHVwX25hdGAgaXMgb25seSBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGUgZW50cnkgcG9pbnQgaW50byB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgbGlrZWx5IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AuIExldCdzIGNvbmZpcm0gdGhhdC4gWWVwLCBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgICppcyogY2FsbGVkIGJ5IGBjdG5ldGxpbmtfbmV3X2Nvbm50cmFja2AsIGFuZCB0aGVuIGBjdG5ldGxpbmtfc2V0dXBfbmF0YCBpcyBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2NyZWF0ZV9jb25udHJhY2tgLCBhbmQgYGN0bmV0bGlua19wYXJzZV9uYXRfc2V0dXBgIGdldHMgY2FsbGVkIGJ5IGBjdG5ldGxpbmtfc2V0dXBfbmF0YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCBpcyBkZWZpbml0ZWx5IHRoZSBwcmltZSBlbnRyeSBwb2ludCBoZXJlLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBhIG5vdGUgb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgZm9yIHRoaXM6IGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfTkVUTElOS2AsIGBORl9OQVRgLCBhbmQgYE1PRFVMRVNgLiBJJ2xsIG1ha2Ugc3VyZSB0byBhZGQgdGhvc2UgdG8gbXkgRW5hYmxlQ29uZmlncy5cblxuTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaXNzdWUgaXMgdGhpczogdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0gd2l0aGluIGBuZl9jb25udHJhY2tfbmV0bGlua2AuIFRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IHVubG9hZCB0aGUgbW9kdWxlIHdoaWxlIGByZXF1ZXN0X21vZHVsZWAgd2FzIGluIHVzZS4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYHRyeV9tb2R1bGVfZ2V0YCBhbmQgYG1vZHVsZV9wdXRgIGFyb3VuZCB0aG9zZSBgcmVxdWVzdF9tb2R1bGVgIGNhbGxzIHdpdGhpbiBgY3RuZXRsaW5rX3BhcnNlX25hdF9zZXR1cGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFja2AsIHdoaWNoIHNlZW1zIGxpa2UgYSBzb3VuZCBhcHByb2FjaC4gVGhpcyBtZWFucyB0aGUgZml4IGlzIGFkZHJlc3NpbmcgY29yZSBuZXRmaWx0ZXIgY29kZS4gQmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvZGUsIGl0IGlzIGFic29sdXRlbHkgZnV6emFibGUuXG5cbkdpdmVuIHRoYXQsIEkgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYGN0bmV0bGlua19uZXdfY29ubnRyYWNrYCwgYGN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrYCwgYW5kIGBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwYC5cblxuQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDA3LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNzo1MjowOC41Nzg5OTIxMzNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJNT0RVTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX25ld19jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCIsXG4gICAgXCJNT0RVTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3RuZXRsaW5rX25ld19jb25udHJhY2tcIixcbiAgICBcImN0bmV0bGlua19jcmVhdGVfY29ubnRyYWNrXCIsXG4gICAgXCJjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGluIG5mX2Nvbm50cmFja19uZXRsaW5rIHdoZXJlIHRoZSBtb2R1bGUgY291bGQgYmUgdW5sb2FkZWQgd2hpbGUgcmVxdWVzdF9tb2R1bGUgaXMgY2FsbGVkLiBJdCBhZGRzIHRyeV9tb2R1bGVfZ2V0IGFuZCBtb2R1bGVfcHV0IGFyb3VuZCByZXF1ZXN0X21vZHVsZSBjYWxscyBpbiBjdG5ldGxpbmtfcGFyc2VfbmF0X3NldHVwIGFuZCBjdG5ldGxpbmtfY3JlYXRlX2Nvbm50cmFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmrxcr[1] Phase: Succeeded StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 17:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 17:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2] Phase: Succeeded StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 17:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 17:52:20 +0000 UTC FinishedAt: 2026-08-05 17:52:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowmrxcr/series-workflowmrxcr-convert-artifact-968703475/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 17:52:30 +0000 UTC FinishedAt: 2026-08-05 18:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 17:52:30 +0000 UTC FinishedAt: 2026-08-05 18:14:03 +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:*1f96d85c-6940-494e-ae2c-28a422c3bcd0,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-workflowmrxcr/series-workflowmrxcr-convert-artifact-968703475/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": "1b3fcf11-4298-4a94-bbc3-1eb225f000ea", "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-workflowmrxcr/series-workflowmrxcr-build-action-1884790945/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 17:52:30 +0000 UTC FinishedAt: 2026-08-05 18:13:53 +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:*1f96d85c-6940-494e-ae2c-28a422c3bcd0,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-workflowmrxcr/series-workflowmrxcr-convert-artifact-968703475/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": "1b3fcf11-4298-4a94-bbc3-1eb225f000ea", "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-workflowmrxcr/series-workflowmrxcr-build-action-1884790945/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 18:14:03 +0000 UTC FinishedAt: 2026-08-05 18:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 18:14:03 +0000 UTC FinishedAt: 2026-08-05 18:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 18:14:03 +0000 UTC FinishedAt: 2026-08-05 18:14:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 18:14:03 +0000 UTC FinishedAt: 2026-08-05 18:14:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowmrxcr/series-workflowmrxcr-convert-artifact-470918122/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 18:14:14 +0000 UTC FinishedAt: 2026-08-05 18:16:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 18:14:14 +0000 UTC FinishedAt: 2026-08-05 18:16:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1b3fcf11-4298-4a94-bbc3-1eb225f000ea,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-workflowmrxcr/series-workflowmrxcr-build-action-1884790945/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-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 18:16:31 +0000 UTC FinishedAt: 2026-08-05 18:16:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 18:16:31 +0000 UTC FinishedAt: 2026-08-05 18:16:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 18:16:31 +0000 UTC FinishedAt: 2026-08-05 18:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 18:16:31 +0000 UTC FinishedAt: 2026-08-05 18:32:49 +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:*1f96d85c-6940-494e-ae2c-28a422c3bcd0,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-workflowmrxcr/series-workflowmrxcr-convert-artifact-470918122/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": "8c83d063-c707-4312-b409-91e9e19774b8", "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-workflowmrxcr/series-workflowmrxcr-build-action-2392444942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 18:16:31 +0000 UTC FinishedAt: 2026-08-05 18:32:39 +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:*1f96d85c-6940-494e-ae2c-28a422c3bcd0,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-workflowmrxcr/series-workflowmrxcr-convert-artifact-470918122/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": "8c83d063-c707-4312-b409-91e9e19774b8", "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-workflowmrxcr/series-workflowmrxcr-build-action-2392444942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 18:32:49 +0000 UTC FinishedAt: 2026-08-05 18:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 18:32:49 +0000 UTC FinishedAt: 2026-08-05 18:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 18:32:49 +0000 UTC FinishedAt: 2026-08-05 18:34:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 18:32:49 +0000 UTC FinishedAt: 2026-08-05 18:34:32 +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:*8c83d063-c707-4312-b409-91e9e19774b8,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-workflowmrxcr/series-workflowmrxcr-build-action-2392444942/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-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"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:*1b3fcf11-4298-4a94-bbc3-1eb225f000ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c83d063-c707-4312-b409-91e9e19774b8,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-workflowmrxcr/series-workflowmrxcr-build-action-1884790945/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-workflowmrxcr/series-workflowmrxcr-build-action-2392444942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 18:34:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 18:34:47 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"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-workflowmrxcr/series-workflowmrxcr-convert-artifact-746255999/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 18:34:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 18:34:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 18:34:42 +0000 UTC FinishedAt: 2026-08-05 18:34:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 18:34:52 +0000 UTC FinishedAt: 2026-08-05 21:42:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrxcr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["ctnetlink_new_conntrack","ctnetlink_create_conntrack","ctnetlink_parse_nat_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_NAT","MODULES"],"series_id":"503e0a1d-eaf0-42ac-a904-68c55f6bf47b","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 18:34:52 +0000 UTC FinishedAt: 2026-08-05 21:42:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1b3fcf11-4298-4a94-bbc3-1eb225f000ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c83d063-c707-4312-b409-91e9e19774b8,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-workflowmrxcr/series-workflowmrxcr-build-action-1884790945/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-workflowmrxcr/series-workflowmrxcr-build-action-2392444942/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-workflowmrxcr/series-workflowmrxcr-convert-artifact-746255999/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,}