Name: series-workflow9t5jr Phase: Succeeded StartedAt: 2026-08-01 22:04:53 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[0] Phase: Succeeded StartedAt: 2026-08-01 22:04:53 +0000 UTC FinishedAt: 2026-08-01 22:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 22:04:53 +0000 UTC FinishedAt: 2026-08-01 22:19:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_SCTP", "IP_VS_DH", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_LC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_SCTP", "IP_VS_DH", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_LC" ], "series_id": "5696de25-5fc9-4dc6-99c3-a686b5c0f066" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dest_update_overload", "ip_vs_conn_new", "ip_vs_try_bind_dest", "ip_vs_check_template", "ip_vs_expire_nodest_conn_flush", "ip_vs_nat_xmit", "ip_vs_tunnel_xmit", "ip_vs_dr_xmit", "ip_vs_icmp_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXG5pbmRleCBlNmNhOTMwYTM1MDdiLi4wMmRiMDc2N2VmZmYyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTM4LDYgJiM0MzszOCwxMiBAQFxuICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0VcdDFcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXHRcdDJcbiBcbiYjNDM7LyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXG4mIzQzOyNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbiYjNDM7XG4mIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cbiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRVx0MHgwMDAxXHRcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cbiYjNDM7XG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc4LDYgJiM0Mzs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4mIzQzO1x0dW5zaWduZWQgbG9uZ1x0XHRjZmxhZ3M7XHRcdC8qIGNvbmZpZyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0bGFzdF93ZWlnaHQ7XHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xuIFx0X191MTZcdFx0XHR0dW5fdHlwZTtcdC8qIHR1bm5lbCB0eXBlICovXG4gXHRfX2JlMTZcdFx0XHR0dW5fcG9ydDtcdC8qIHR1bm5lbCBwb3J0ICovXG5AQCAtOTg5LDEwICYjNDM7OTk2LDExIEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcbiBcdC8qIGNvbm5lY3Rpb24gY291bnRlcnMgYW5kIHRocmVzaG9sZHMgKi9cbiBcdGF0b21pY190XHRcdGFjdGl2ZWNvbm5zO1x0LyogYWN0aXZlIGNvbm5lY3Rpb25zICovXG4tXHRhdG9taWNfdFx0XHRpbmFjdGNvbm5zO1x0LyogaW5hY3RpdmUgY29ubmVjdGlvbnMgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHR0b3RhbGNvbm5zO1x0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cbiBcdGF0b21pY190XHRcdHBlcnNpc3Rjb25ucztcdC8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi9cbiBcdF9fdTMyXHRcdFx0dV90aHJlc2hvbGQ7XHQvKiB1cHBlciB0aHJlc2hvbGQgKi9cbiBcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGQ7XHQvKiBsb3dlciB0aHJlc2hvbGQgKi9cbiYjNDM7XHRfX3UzMlx0XHRcdGxfdGhyZXNob2xkX3ZhbDsvKiB1c2VkIGxvd2VyIHRocmVzaG9sZCAqL1xuIFxuIFx0LyogZm9yIGRlc3RpbmF0aW9uIGNhY2hlICovXG4gXHRzcGlubG9ja190XHRcdGRzdF9sb2NrO1x0LyogbG9jayBvZiBkc3RfY2FjaGUgKi9cbkBAIC0xOTA5LDYgJiM0MzsxOTE3LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKTtcbiYjNDM7XG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxuICAqL1xuQEAgLTIyMjksMTQgJiM0MzsyMjM5LDIxIEBAIHZvaWQgaXBfdnNfdW5yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKTtcbiBzdGF0aWMgaW5saW5lIGludFxuIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4tXHQvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2XG4mIzQzO1x0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1N1xuIFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xuLVx0ICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4mIzQzO1x0ICogMjU3IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4gXHQgKiB1c2UgdGhlIGZvbGxvd2luZyBmb3JtdWxhIHRvIGVzdGltYXRlIHRoZSBvdmVyaGVhZCBub3c6XG4tXHQgKlx0XHQgIGRlc3QtXHUwMDNlYWN0aXZlY29ubnMqMjU2ICYjNDM7IGRlc3QtXHUwMDNlaW5hY3Rjb25uc1xuJiM0MztcdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC1cdTAwM2V0b3RhbGNvbm5zXG4gXHQgKi9cbiBcdHJldHVybiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykgXHUwMDNjXHUwMDNjIDgpICYjNDM7XG4tXHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludFxuJiM0MztpcF92c19kZXN0X2luYWN0Y29ubnMoY29uc3Qgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWF4KGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucykgLVxuJiM0MztcdFx0ICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyksIDApO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX0lQX1ZTX1BST1RPX1RDUFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbmluZGV4IDFlZDIzNGU3ZjI1MTMuLjJjMzdjNmFjNzUyNWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbkBAIC0yOCwxMiAmIzQzOzI4LDYgQEBcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXHRJUF9WU19TVkNfRl9TQ0hFRDEgLyogU0ggZmFsbGJhY2sgKi9cbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX1BPUlRcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xuIFxuLS8qXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3Ncbi0gKi9cbi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcdDB4MDAwMVx0XHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcdDB4MDAwMlx0XHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xuLVxuIC8qXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xuICAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXG5pbmRleCAzNmM1Y2JhMDNmNWJjLi42ZmEzZTFkYzUzNGMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwODEsMTIgJiM0MzsxMDgxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gI2VuZGlmXG4gXG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLXtcbi1cdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKVxuLVx0XHQmIzQzOyBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLX1cbi1cbiAvKlxuICAqXHRCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uXG4gICpcdENhbGxlZCBqdXN0IGFmdGVyIGEgbmV3IGNvbm5lY3Rpb24gZW50cnkgaXMgY3JlYXRlZC5cbkBAIC0xMTQ3LDIzICYjNDM7MTE0MSwyMiBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xuIFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcbiYjNDM7XHRcdGludCB0YztcbiYjNDM7XG4gXHRcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnNcbiBcdFx0ICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhblxuIFx0XHQgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2VcbiBcdFx0ICovXG4gXHRcdGlmICghKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpKVxuIFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHR0YyA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucyk7XG4mIzQzO1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKVxuJiM0MztcdFx0XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAxKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIEl0IGlzIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uL3RlbXBsYXRlLCBzbyBpbmNyZWFzZVxuIFx0XHQgICB0aGUgcGVyc2lzdGVudCBjb25uZWN0aW9uIGNvdW50ZXIgKi9cbiBcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHR9XG4tXG4tXHRpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2U9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiBcbkBAIC0xMjQ0LDMwICYjNDM7MTIzNywyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuIFxuIFx0LyogVXBkYXRlIHRoZSBjb25uZWN0aW9uIGNvdW50ZXJzICovXG4gXHRpZiAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xuLVx0XHQvKiBJdCBpcyBhIG5vcm1hbCBjb25uZWN0aW9uLCBzbyBkZWNyZWFzZSB0aGUgaW5hY3Rjb25uc1xuLVx0XHQgICBvciBhY3RpdmVjb25ucyBjb3VudGVyICovXG4tXHRcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSB7XG4tXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHR9IGVsc2Uge1xuJiM0MztcdFx0aW50IHRjO1xuJiM0MztcbiYjNDM7XHRcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBjb3VudGVycyAqL1xuJiM0MztcdFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0fVxuJiM0MztcdFx0dGMgPSBhdG9taWNfZmV0Y2hfZGVjKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucyk7XG4mIzQzO1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGRfdmFsKSlcbiYjNDM7XHRcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgLTEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4tXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHR9XG4tXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG4gXG5AQCAtMTI5Niw3ICYjNDM7MTI3OSw3IEBAIGludCBpcF92c19jaGVja190ZW1wbGF0ZShzdHJ1Y3QgaXBfdnNfY29ubiAqY3QsIHN0cnVjdCBpcF92c19kZXN0ICpjZGVzdClcbiBcdCAqIENoZWNraW5nIHRoZSBkZXN0IHNlcnZlciBzdGF0dXMuXG4gXHQgKi9cbiBcdGlmICgoZGVzdCA9PSBOVUxMKSB8fFxuLVx0ICAgICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcbiYjNDM7XHQgICAgIShkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTIwMzcsNyAmIzQzOzIwMjAsNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlbl9jb250cm9sKSlcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggNmI3OWUwYzRkOWUyOC4uMWE5MjI2NDhjOTE3ZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMjIwOSw3ICYjNDM7MjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0LyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovXG4gXHRcdGlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7XG4gXHRcdFx0Ym9vbCBvbGRfY3QgPSBpcF92c19jb25uX3VzZXNfb2xkX2Nvbm50cmFjayhjcCwgc2tiKTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbmluZGV4IGJjZjQwYjhjNDFjZjIuLjhmOWE4ZTQ5MWFkNmIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzMDQsNiAmIzQzOzEzMDQsNDAgQEAgdm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4gXHR9XG4gfVxuIFxuJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcbiYjNDM7ICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxuJiM0MzsgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY29ubnM7XG4mIzQzO1x0dTMyIGwsIHU7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRpZiAoIXUpXG4mIzQzO1x0XHRnb3RvIHVuc2V0O1xuJiM0MztcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwpO1xuJiM0MztcdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V0b3RhbGNvbm5zKTtcbiYjNDM7XHRpZiAoY29ubnMgXHUwMDNlPSAobW9kZSBcdTAwM2UgMCA/IGwgOiB1KSkge1xuJiM0MztcdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcdGlmIChjb25ucyBcdTAwM2U9IChtb2RlIFx1MDAzYyAwID8gdSA6IGwpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7dW5zZXQ6XG4mIzQzO1x0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuJiM0MztcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgbW9kZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKlx0VXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2VcbiAgKi9cbkBAIC0xMzY4LDEyICYjNDM7MTQwMiwyMSBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxuIFx0fVxuIFxuIFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xuLVx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuJiM0MztcdGRlc3QtXHUwMDNlY2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xuIFxuLVx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuJiM0MztcdGlmIChSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkgIT0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgfHxcbiYjNDM7XHQgICAgUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuJiM0MztcdFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXG4mIzQzO1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGRfdmFsLFxuJiM0MztcdFx0XHQgICB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA/IDpcbiYjNDM7XHRcdFx0ICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIC1cbiYjNDM7XHRcdFx0ICAgICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2VcdTAwM2UgMikpKTtcbiYjNDM7XHRcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgMCk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiYjNDM7XHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ0NSw3ICYjNDM7MTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRkZXN0LVx1MDAzZXBvcnQgPSB1ZGVzdC1cdTAwM2Vwb3J0O1xuIFxuIFx0YXRvbWljX3NldChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zLCAwKTtcbi1cdGF0b21pY19zZXQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zLCAwKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucywgMCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zLCAwKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCwgMSk7XG4gXG5AQCAtMTQ4Niw2ICYjNDM7MTUyOSw5IEBAIGlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgJiM0MzsxNjA1LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNjEzLDcgJiM0MzsxNjYyLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0NGX0FWQUlMQUJMRTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuQEAgLTMwMzEsNyAmIzQzOzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbiYjNDM7XHRcdFx0XHRcdCAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSk7XG4gXHRcdFx0ZWxzZVxuICNlbmRpZlxuIFx0XHRcdFx0c2VxX3ByaW50ZihzZXEsXG5AQCAtMzA0Miw3ICYjNDM7MzA5MSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbiBcdFx0XHRcdFx0ICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2Vjb25uX2ZsYWdzKSksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSxcbiBcdFx0XHRcdFx0ICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyksXG4tXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucykpO1xuJiM0MztcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcbiBcdFx0fVxuIFx0fVxuQEAgLTM2NjcsMTAgJiM0MzszNzE2LDEwIEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqXG4gXHRcdFx0ZW50cnkucG9ydCA9IGRlc3QtXHUwMDNlcG9ydDtcbiBcdFx0XHRlbnRyeS5jb25uX2ZsYWdzID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2Vjb25uX2ZsYWdzKTtcbiBcdFx0XHRlbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4tXHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiYjNDM7XHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCk7XG4mIzQzO1x0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuIFx0XHRcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHRcdGVudHJ5LmluYWN0Y29ubnMgPSBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCk7XG4gXHRcdFx0ZW50cnkucGVyc2lzdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0XHRcdGlwX3ZzX2NvcHlfc3RhdHMoXHUwMDI2a3N0YXRzLCBcdTAwMjZkZXN0LVx1MDAzZXN0YXRzKTtcbiBcdFx0XHRpcF92c19leHBvcnRfc3RhdHNfdXNlcihcdTAwMjZlbnRyeS5zdGF0cywgXHUwMDI2a3N0YXRzKTtcbkBAIC00Mjc3LDEyICYjNDM7NDMyNiwxNCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRcdCBkZXN0LVx1MDAzZXR1bl9wb3J0KSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxuIFx0XHRcdGRlc3QtXHUwMDNldHVuX2ZsYWdzKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbi1cdFx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKSB8fFxuJiM0MztcdFx0XHRpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9QRVJTSVNUX0NPTk5TLFxuIFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKSkgfHxcbiBcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LVx1MDAzZWFmKSlcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxLi40M2FiZWQ3YTI2YTZhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5AQCAtMjE5LDggJiM0MzsyMTksOCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVx1MDAzZXNjaGVkX2RhdGE7XG4gXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cdTAwM2VhZiwgcywgXHUwMDI2aXBoLVx1MDAzZWRhZGRyKTtcbi1cdGlmICghZGVzdFxuLVx0ICAgIHx8ICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRpZiAoIWRlc3QgfHxcbiYjNDM7XHQgICAgIShkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjQuLjY5M2JjYzgyY2NiNzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdCAqL1xuIFxuIFx0XHRkZXN0ID0gZW4tXHUwMDNlZGVzdDtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICgoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Li5mNTNmMDVjZWVhMzZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMTY5LDggJiM0MzsxNjksOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAobGVhc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuIFx0XHRcdGdvdG8gbmV4dHN0YWdlO1xuIFx0XHR9XG5AQCAtMTg2LDggJiM0MzsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuLVx0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gZG9oO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZC4uMThiOTc2YTdjNGQyMCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTMwLDcgJiM0MzszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHQvKlxuIFx0ICogU2ltcGx5IHNlbGVjdCB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZlxuLVx0ICogICAgICAgIChhY3RpdmVjb25uc1x1MDAzY1x1MDAzYzUpICYjNDM7IGluYWN0Y29ubnNcbiYjNDM7XHQgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgJiM0MzsgdG90YWxjb25uc1xuIFx0ICogRXhjZXB0IHdob3NlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLlxuIFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcbiBcdCAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXRcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGxlYXN0LVx1MDAzZWFmLCBcdTAwMjZsZWFzdC1cdTAwM2VhZGRyKSxcbiBcdFx0XHQgICAgICBudG9ocyhsZWFzdC1cdTAwM2Vwb3J0KSxcbiBcdFx0XHQgICAgICBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VhY3RpdmVjb25ucyksXG4tXHRcdFx0ICAgICAgYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNlaW5hY3Rjb25ucykpO1xuJiM0MztcdFx0XHQgICAgICBpcF92c19kZXN0X2luYWN0Y29ubnMobGVhc3QpKTtcbiBcbiBcdHJldHVybiBsZWFzdDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmNcbmluZGV4IDNkYmQzMDk2ZTE2MzcuLjlkYjEyNzNlNWJhNDIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG5AQCAtNDQ2LDEyICYjNDM7NDQ2LDEwIEBAIHNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIChuZXh0X3N0YXRlID09IElQX1ZTX1NDVFBfU19FU1RBQkxJU0hFRCkpIHtcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gXHRcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG5pbmRleCA5OWEyODZmZGM5MGM2Li5mZWMwZThiNDdiNzE2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmNcbkBAIC01MjYsMTIgJiM0Mzs1MjYsMTAgQEAgc2V0X3RjcF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbiBcdFx0XHRpZiAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgIXRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIHRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkge1xuIFx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuaW5kZXggOTMwMzhhYmJmNWUwNC4uZWE1ZmRkNGY0Y2U3NiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcbkBAIC04NzgsMTMgJiM0Mzs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFcbiBcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNwLVx1MDAzZWxvY2spO1xuIFx0XHRpZiAoKGNwLVx1MDAzZWZsYWdzIF4gZmxhZ3MpIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpIFx1MDAyNlx1MDAyNiBkZXN0KSB7XG4tXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIHtcbiYjNDM7XHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVsc2VcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4tXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGZsYWdzIFx1MDAyNj0gSVBfVlNfQ09OTl9GX0JBQ0tVUF9VUERfTUFTSztcbiBcdFx0ZmxhZ3MgfD0gY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5pbmRleCAwYjBjNTMwNDk5M2E5Li4xYjM2ZmVkOGFiZTI5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgMCk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgY29va2llKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggZTZjYTkzMGEzNTA3Yi4uMDJkYjA3NjdlZmZmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC0zOCw2ICYjNDM7MzgsMTIgQEAKICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0UJMQogI2RlZmluZSBJUF9WU19IRFJfSUNNUAkJMgogCiYjNDM7LyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovCiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQJMHgwMDAyCQkvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqLwomIzQzOwomIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi8KJiM0MzsjZGVmaW5lIElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFCTB4MDAwMQkJLyogc2VydmVyIGlzIGF2YWlsYWJsZSAqLwomIzQzOwogLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi8KICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMJOAogI2lmIEJJVFNfUEVSX0xPTkcgJmd0OyAzMgpAQCAtOTc4LDYgJiM0Mzs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KJiM0MzsJdW5zaWduZWQgbG9uZwkJY2ZsYWdzOwkJLyogY29uZmlnIGZsYWdzICovCiAJYXRvbWljX3QJCWxhc3Rfd2VpZ2h0OwkvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqLwogCV9fdTE2CQkJdHVuX3R5cGU7CS8qIHR1bm5lbCB0eXBlICovCiAJX19iZTE2CQkJdHVuX3BvcnQ7CS8qIHR1bm5lbCBwb3J0ICovCkBAIC05ODksMTAgJiM0Mzs5OTYsMTEgQEAgc3RydWN0IGlwX3ZzX2Rlc3QgewogCiAJLyogY29ubmVjdGlvbiBjb3VudGVycyBhbmQgdGhyZXNob2xkcyAqLwogCWF0b21pY190CQlhY3RpdmVjb25uczsJLyogYWN0aXZlIGNvbm5lY3Rpb25zICovCi0JYXRvbWljX3QJCWluYWN0Y29ubnM7CS8qIGluYWN0aXZlIGNvbm5lY3Rpb25zICovCiYjNDM7CWF0b21pY190CQl0b3RhbGNvbm5zOwkvKiB0b3RhbCBjb25uZWN0aW9ucyAqLwogCWF0b21pY190CQlwZXJzaXN0Y29ubnM7CS8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi8KIAlfX3UzMgkJCXVfdGhyZXNob2xkOwkvKiB1cHBlciB0aHJlc2hvbGQgKi8KIAlfX3UzMgkJCWxfdGhyZXNob2xkOwkvKiBsb3dlciB0aHJlc2hvbGQgKi8KJiM0MzsJX191MzIJCQlsX3RocmVzaG9sZF92YWw7LyogdXNlZCBsb3dlciB0aHJlc2hvbGQgKi8KIAogCS8qIGZvciBkZXN0aW5hdGlvbiBjYWNoZSAqLwogCXNwaW5sb2NrX3QJCWRzdF9sb2NrOwkvKiBsb2NrIG9mIGRzdF9jYWNoZSAqLwpAQCAtMTkwOSw2ICYjNDM7MTkxNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAkJa2ZyZWUoZGVzdCk7CiB9CiAKJiM0Mzt2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSk7CiYjNDM7CiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqIChmcm9tIGlwX3ZzX3N5bmMuYykKICAqLwpAQCAtMjIyOSwxNCAmIzQzOzIyMzksMjEgQEAgdm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpOwogc3RhdGljIGlubGluZSBpbnQKIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQkvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2CiYjNDM7CS8qIFdlIHRoaW5rIHRoZSBvdmVyaGVhZCBvZiBwcm9jZXNzaW5nIGFjdGl2ZSBjb25uZWN0aW9ucyBpcyAyNTcKIAkgKiB0aW1lcyBoaWdoZXIgdGhhbiB0aGF0IG9mIGluYWN0aXZlIGNvbm5lY3Rpb25zIGluIGF2ZXJhZ2UuIChUaGlzCi0JICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlCiYjNDM7CSAqIDI1NyB0aW1lcyBtaWdodCBub3QgYmUgYWNjdXJhdGUsIHdlIHdpbGwgY2hhbmdlIGl0IGxhdGVyKSBXZQogCSAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzoKLQkgKgkJICBkZXN0LSZndDthY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC0mZ3Q7aW5hY3Rjb25ucwomIzQzOwkgKgkJICBkZXN0LSZndDthY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC0mZ3Q7dG90YWxjb25ucwogCSAqLwogCXJldHVybiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmx0OyZsdDsgOCkgJiM0MzsKLQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKJiM0MzsJCWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7dG90YWxjb25ucyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50CiYjNDM7aXBfdnNfZGVzdF9pbmFjdGNvbm5zKGNvbnN0IHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQomIzQzO3sKJiM0MzsJcmV0dXJuIG1heChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3RvdGFsY29ubnMpIC0KJiM0MzsJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpLCAwKTsKIH0KIAogI2lmZGVmIENPTkZJR19JUF9WU19QUk9UT19UQ1AKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKaW5kZXggMWVkMjM0ZTdmMjUxMy4uMmMzN2M2YWM3NTI1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKQEAgLTI4LDEyICYjNDM7MjgsNiBAQAogI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDSwlJUF9WU19TVkNfRl9TQ0hFRDEgLyogU0ggZmFsbGJhY2sgKi8KICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVAlJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi8KIAotLyoKLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzCi0gKi8KLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRQkweDAwMDEJCS8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi8KLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FECTB4MDAwMgkJLyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi8KLQogLyoKICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXMKICAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggMzZjNWNiYTAzZjViYy4uNmZhM2UxZGM1MzRjMyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xMDgxLDEyICYjNDM7MTA4MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXRfdjYoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKQogI2VuZGlmCiAKIAotc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQotewotCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKQotCQkmIzQzOyBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwotfQotCiAvKgogICoJQmluZCBhIGNvbm5lY3Rpb24gZW50cnkgd2l0aCBhIHZpcnR1YWwgc2VydmljZSBkZXN0aW5hdGlvbgogICoJQ2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLgpAQCAtMTE0NywyMyAmIzQzOzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAKIAkvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi8KIAlpZiAoIShmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7CiYjNDM7CQlpbnQgdGM7CiYjNDM7CiAJCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnMKIAkJICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhbgogCQkgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2UKIAkJICovCiAJCWlmICghKGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpCiAJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQllbHNlCi0JCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7CiYjNDM7CQl0YyA9IGF0b21pY19pbmNfcmV0dXJuKCZhbXA7ZGVzdC0mZ3Q7dG90YWxjb25ucyk7CiYjNDM7CQlpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtJmd0O3VfdGhyZXNob2xkKSkKJiM0MzsJCQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAxKTsKIAl9IGVsc2UgewogCQkvKiBJdCBpcyBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbi90ZW1wbGF0ZSwgc28gaW5jcmVhc2UKIAkJICAgdGhlIHBlcnNpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovCiAJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpOwogCX0KLQotCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKLQkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIApAQCAtMTI0NCwzMCAmIzQzOzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCkKIAogCS8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqLwogCWlmICghKGNwLSZndDtmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7Ci0JCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBpbmFjdGNvbm5zCi0JCSAgIG9yIGFjdGl2ZWNvbm5zIGNvdW50ZXIgKi8KLQkJaWYgKGNwLSZndDtmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIHsKLQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKLQkJfSBlbHNlIHsKJiM0MzsJCWludCB0YzsKJiM0MzsKJiM0MzsJCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBjb3VudGVycyAqLwomIzQzOwkJaWYgKCEoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpCiAJCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQl9CiYjNDM7CQl0YyA9IGF0b21pY19mZXRjaF9kZWMoJmFtcDtkZXN0LSZndDt0b3RhbGNvbm5zKTsKJiM0MzsJCWlmICh0YyA9PSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsKSkKJiM0MzsJCQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAtMSk7CiAJfSBlbHNlIHsKIAkJLyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlCiAJCSAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqLwogCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zKTsKIAl9CiAKLQlpZiAoZGVzdC0mZ3Q7bF90aHJlc2hvbGQgIT0gMCkgewotCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZsdDsgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQl9IGVsc2UgaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDApIHsKLQkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgJmx0OyBkZXN0LSZndDt1X3RocmVzaG9sZCAqIDMpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQl9IGVsc2UgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfQotCiAJaXBfdnNfZGVzdF9wdXQoZGVzdCk7CiB9CiAKQEAgLTEyOTYsNyAmIzQzOzEyNzksNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpCiAJICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy4KIAkgKi8KIAlpZiAoKGRlc3QgPT0gTlVMTCkgfHwKLQkgICAgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgIShkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8CiAJICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHwKIAkgICAgKGNkZXN0ICZhbXA7JmFtcDsgKGRlc3QgIT0gY2Rlc3QpKSkgewogCQlJUF9WU19EQkdfQlVGKDksICYjMzQ7Y2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgJiMzNDsKQEAgLTIwMzcsNyAmIzQzOzIwMjAsNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJCWNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pOwogCQkJcmVzY2hlZF9zY29yZSYjNDM7JiM0Mzs7CiAJCQlkZXN0ID0gY3AtJmd0O2Rlc3Q7Ci0JCQlpZiAoIWRlc3QgfHwgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQomIzQzOwkJCWlmICghZGVzdCB8fCAoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKGF0b21pY19yZWFkKCZhbXA7Y3AtJmd0O25fY29udHJvbCkpCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwppbmRleCA2Yjc5ZTBjNGQ5ZTI4Li4xYTkyMjY0OGM5MTdkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMzM4LDcgJiM0MzszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMjIwOSw3ICYjNDM7MjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlCiAJfQogCiAJLyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi8KLQlpZiAoY3AgJmFtcDsmYW1wOyBjcC0mZ3Q7ZGVzdCAmYW1wOyZhbXA7ICEoY3AtJmd0O2Rlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShjcC0mZ3Q7ZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkgewogCQkvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi8KIAkJaWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHsKIAkJCWJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMi4uOGY5YThlNDkxYWQ2YiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwpAQCAtMTMwNCw2ICYjNDM7MTMwNCw0MCBAQCB2b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cykKIAl9CiB9CiAKJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXIKJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6CiYjNDM7ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWcKJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZwomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKQomIzQzO3sKJiM0MzsJaW50IGNvbm5zOwomIzQzOwl1MzIgbCwgdTsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2Rlc3QtJmd0O2RzdF9sb2NrKTsKJiM0MzsJdSA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CWlmICghdSkKJiM0MzsJCWdvdG8gdW5zZXQ7CiYjNDM7CWwgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsKTsKJiM0MzsJY29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3RvdGFsY29ubnMpOwomIzQzOwlpZiAoY29ubnMgJmd0Oz0gKG1vZGUgJmd0OyAwID8gbCA6IHUpKSB7CiYjNDM7CQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJaWYgKGNvbm5zICZndDs9IChtb2RlICZsdDsgMCA/IHUgOiBsKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0Mzt1bnNldDoKJiM0MzsJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKQomIzQzO3sKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwlfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIG1vZGUpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2Rlc3QtJmd0O2RzdF9sb2NrKTsKJiM0Mzt9CiYjNDM7CiAvKgogICoJVXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2UKICAqLwpAQCAtMTM2OCwxMiAmIzQzOzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAl9CiAKIAkvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovCi0JZGVzdC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJZGVzdC0mZ3Q7Y2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFOwogCi0JaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKLQlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJaWYgKFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkgIT0gdWRlc3QtJmd0O3VfdGhyZXNob2xkIHx8CiYjNDM7CSAgICBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpICE9IHVkZXN0LSZndDtsX3RocmVzaG9sZCkgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwkJV1JJVEVfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCwgdWRlc3QtJmd0O3VfdGhyZXNob2xkKTsKJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQsIHVkZXN0LSZndDtsX3RocmVzaG9sZCk7CiYjNDM7CQkvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi8KJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsLAomIzQzOwkJCSAgIHVkZXN0LSZndDtsX3RocmVzaG9sZCA/IDoKJiM0MzsJCQkgICAodWRlc3QtJmd0O3VfdGhyZXNob2xkIC0KJiM0MzsJCQkgICAgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7Jmd0OyAyKSkpOwomIzQzOwkJX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAwKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwl9CiAKIAlkZXN0LSZndDthZiA9IHVkZXN0LSZndDthZjsKIApAQCAtMTQ0NSw3ICYjNDM7MTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpCiAJZGVzdC0mZ3Q7cG9ydCA9IHVkZXN0LSZndDtwb3J0OwogCiAJYXRvbWljX3NldCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zLCAwKTsKLQlhdG9taWNfc2V0KCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucywgMCk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDtkZXN0LSZndDt0b3RhbGNvbm5zLCAwKTsKIAlhdG9taWNfc2V0KCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zLCAwKTsKIAlyZWZjb3VudF9zZXQoJmFtcDtkZXN0LSZndDtyZWZjbnQsIDEpOwogCkBAIC0xNDg2LDYgJiM0MzsxNTI5LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdCkKIAkJcmV0dXJuIC1FUkFOR0U7CiAJfQogCiYjNDM7CWlmICh1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQgJmd0OyBJTlRfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHVkZXN0LSZndDt0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7CiAJCWlmICh1ZGVzdC0mZ3Q7dHVuX3BvcnQgPT0gMCkgewogCQkJcHJfZXJyKCYjMzQ7JXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xuJiMzNDssIF9fZnVuY19fKTsKQEAgLTE1NTksNiAmIzQzOzE2MDUsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdCkKIAkJcmV0dXJuIC1FUkFOR0U7CiAJfQogCiYjNDM7CWlmICh1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQgJmd0OyBJTlRfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHVkZXN0LSZndDt0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7CiAJCWlmICh1ZGVzdC0mZ3Q7dHVuX3BvcnQgPT0gMCkgewogCQkJcHJfZXJyKCYjMzQ7JXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xuJiMzNDssIF9fZnVuY19fKTsKQEAgLTE2MTMsNyAmIzQzOzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAJCQkJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsCiAJCQkJaW50IHN2Y3VwZCkKIHsKLQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7CiYjNDM7CWRlc3QtJmd0O2NmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwogCV9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpOwpAQCAtMzAzMSw3ICYjNDM7MzA4MCw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAkJCQkJICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtjb25uX2ZsYWdzKSksCiAJCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSwKIAkJCQkJICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyksCi0JCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCQkJICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTsKIAkJCWVsc2UKICNlbmRpZgogCQkJCXNlcV9wcmludGYoc2VxLApAQCAtMzA0Miw3ICYjNDM7MzA5MSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAkJCQkJICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtjb25uX2ZsYWdzKSksCiAJCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSwKIAkJCQkJICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyksCi0JCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCQkJICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTsKIAogCQl9CiAJfQpAQCAtMzY2NywxMCAmIzQzOzM3MTYsMTAgQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICoKIAkJCWVudHJ5LnBvcnQgPSBkZXN0LSZndDtwb3J0OwogCQkJZW50cnkuY29ubl9mbGFncyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7Y29ubl9mbGFncyk7CiAJCQllbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7Ci0JCQllbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtJmd0O3VfdGhyZXNob2xkOwotCQkJZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJCQllbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CQkJZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpOwogCQkJZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKTsKLQkJCWVudHJ5LmluYWN0Y29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwomIzQzOwkJCWVudHJ5LmluYWN0Y29ubnMgPSBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCk7CiAJCQllbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3BlcnNpc3Rjb25ucyk7CiAJCQlpcF92c19jb3B5X3N0YXRzKCZhbXA7a3N0YXRzLCAmYW1wO2Rlc3QtJmd0O3N0YXRzKTsKIAkJCWlwX3ZzX2V4cG9ydF9zdGF0c191c2VyKCZhbXA7ZW50cnkuc3RhdHMsICZhbXA7a3N0YXRzKTsKQEAgLTQyNzcsMTIgJiM0Mzs0MzI2LDE0IEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCQkgZGVzdC0mZ3Q7dHVuX3BvcnQpIHx8CiAJICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLAogCQkJZGVzdC0mZ3Q7dHVuX2ZsYWdzKSB8fAotCSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LSZndDt1X3RocmVzaG9sZCkgfHwKLQkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpIHx8CiYjNDM7CSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILAomIzQzOwkJCVJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkpIHx8CiYjNDM7CSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILAomIzQzOwkJCVJFQURfT05DRShkZXN0LSZndDtsX3RocmVzaG9sZCkpIHx8CiAJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfQUNUSVZFX0NPTk5TLAogCQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykpIHx8CiAJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsCi0JCQlhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpKSB8fAomIzQzOwkJCWlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9QRVJTSVNUX0NPTk5TLAogCQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpKSB8fAogCSAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LSZndDthZikpCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCmluZGV4IGUxZjYyZjZiMjVlMjEuLjQzYWJlZDdhMjZhNmEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCkBAIC0yMTksOCAmIzQzOzIxOSw4IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAKIAlzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtJmd0O3NjaGVkX2RhdGE7CiAJZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtJmd0O2FmLCBzLCAmYW1wO2lwaC0mZ3Q7ZGFkZHIpOwotCWlmICghZGVzdAotCSAgICB8fCAhKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CWlmICghZGVzdCB8fAomIzQzOwkgICAgIShkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpCiAJICAgIHx8IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmbHQ7PSAwCiAJICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHsKIAkJaXBfdnNfc2NoZWR1bGVyX2VycihzdmMsICYjMzQ7bm8gZGVzdGluYXRpb24gYXZhaWxhYmxlJiMzNDspOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNC4uNjkzYmNjODJjY2I3NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICovCiAKIAkJZGVzdCA9IGVuLSZndDtkZXN0OwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKJiM0MzsJCWlmICgoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwICZhbXA7JmFtcDsgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggYzkwZWE4OTdjM2Y3NS4uZjUzZjA1Y2VlYTM2ZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTE2OSw4ICYjNDM7MTY5LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KQogCQlpZiAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApCi0JCSAgICAmYW1wOyZhbXA7IChsZWFzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApICZhbXA7JmFtcDsKJiM0MzsJCSAgICAobGVhc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJCWxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7CiAJCQlnb3RvIG5leHRzdGFnZTsKIAkJfQpAQCAtMTg2LDggJiM0MzsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwogCQlpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwotCQkgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpKQotCQkgICAgJmFtcDsmYW1wOyAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJCSAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gZG9oOwogCQl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCkBAIC0zMCw3ICYjNDM7MzAsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJLyoKIAkgKiBTaW1wbHkgc2VsZWN0IHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mCi0JICogICAgICAgIChhY3RpdmVjb25ucyZsdDsmbHQ7NSkgJiM0MzsgaW5hY3Rjb25ucwomIzQzOwkgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgJiM0MzsgdG90YWxjb25ucwogCSAqIEV4Y2VwdCB3aG9zZSB3ZWlnaHQgaXMgZXF1YWwgdG8gemVyby4KIAkgKiBJZiB0aGUgd2VpZ2h0IGlzIGVxdWFsIHRvIHplcm8sIGl0IG1lYW5zIHRoYXQgdGhlIHNlcnZlciBpcwogCSAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXQKQEAgLTU2LDcgJiM0Mzs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICBJUF9WU19EQkdfQUREUihsZWFzdC0mZ3Q7YWYsICZhbXA7bGVhc3QtJmd0O2FkZHIpLAogCQkJICAgICAgbnRvaHMobGVhc3QtJmd0O3BvcnQpLAogCQkJICAgICAgYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7YWN0aXZlY29ubnMpLAotCQkJICAgICAgYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCSAgICAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhsZWFzdCkpOwogCiAJcmV0dXJuIGxlYXN0OwogfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMKaW5kZXggM2RiZDMwOTZlMTYzNy4uOWRiMTI3M2U1YmE0MiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jCkBAIC00NDYsMTIgJiM0Mzs0NDYsMTAgQEAgc2V0X3NjdHBfc3RhdGUoc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsCiAJCQlpZiAoIShjcC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSAmYW1wOyZhbXA7CiAJCQkJKG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkgewogCQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2luYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyB8PSBJUF9WU19DT05OX0ZfSU5BQ1RJVkU7CiAJCQl9IGVsc2UgaWYgKChjcC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSAmYW1wOyZhbXA7CiAJCQkJICAgKG5leHRfc3RhdGUgPT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkgewogCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jCmluZGV4IDk5YTI4NmZkYzkwYzYuLmZlYzBlOGI0N2I3MTYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMKQEAgLTUyNiwxMiAmIzQzOzUyNiwxMCBAQCBzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLAogCQkJaWYgKCEoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgJmFtcDsmYW1wOwogCQkJICAgICF0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHsKIAkJCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKIAkJCQljcC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfQ09OTl9GX0lOQUNUSVZFOwogCQkJfSBlbHNlIGlmICgoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgJmFtcDsmYW1wOwogCQkJCSAgIHRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkgewogCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMKaW5kZXggOTMwMzhhYmJmNWUwNC4uZWE1ZmRkNGY0Y2U3NiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jCkBAIC04NzgsMTMgJiM0Mzs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGEKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7Y3AtJmd0O2xvY2spOwogCQlpZiAoKGNwLSZndDtmbGFncyBeIGZsYWdzKSAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUgJmFtcDsmYW1wOwogCQkgICAgIShmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpICZhbXA7JmFtcDsgZGVzdCkgewotCQkJaWYgKGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgewomIzQzOwkJCWlmIChmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpCiAJCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKTsKLQkJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7Ci0JCQl9IGVsc2UgewomIzQzOwkJCWVsc2UKIAkJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKLQkJCX0KIAkJfQogCQlmbGFncyAmYW1wOz0gSVBfVlNfQ09OTl9GX0JBQ0tVUF9VUERfTUFTSzsKIAkJZmxhZ3MgfD0gY3AtJmd0O2ZsYWdzICZhbXA7IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggMGIwYzUzMDQ5OTNhOS4uMWIzNmZlZDhhYmUyOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLgogCQkJICovCiAJCQlpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KCZhbXA7cnQtJmd0O2RzdCkpICZhbXA7JmFtcDsKLQkJCSAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQomIzQzOwkJCSAgICBkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkKIAkJCQlfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsICZhbXA7cnQtJmd0O2RzdCwgY29va2llKTsKIAkJCWVsc2UKIAkJCQlub3JlZiA9IDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIElQVlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyBJUFZTIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIHJlYWxtLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBpdCBtb2RpZmllcyBob3cgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb25zIGFyZSB0cmFja2VkLCBzcGVjaWZpY2FsbHkgbW92aW5nIGZyb20gYGluYWN0Y29ubnNgIHRvIGB0b3RhbGNvbm5zYCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkmIzM5O3JlIGFsc28gYWRkaW5nIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MgYW5kIHNoaWZ0aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBvdmVyIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAgd2l0aGluIHRob3NlIGBjZmxhZ3NgLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gaGFuZGxlIG92ZXJsb2FkIGZsYWcgdXBkYXRlcyBiYXNlZCBvbiBgdG90YWxjb25uc2AgYW5kIHRocmVzaG9sZHMgaXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcHByb2FjaC4KCkZpcnN0IHRoaW5ncyBmaXJzdDogaXMgdGhpcyB0aGluZyBldmVuIHJlYWNoYWJsZSBhbmQgZnV6emFibGU/IFllYWgsIElQVlMgaXMgY29yZSBuZXR3b3JraW5nLCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBsb29raW5nIGF0IHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBoZXJlLCBsaWtlbHkgYWNjZXNzaWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIG9yIGBzZXRzb2Nrb3B0YC4gVGhlIHBhdGNoIHRvdWNoZXMgcXVpdGUgYSBmZXcgZmlsZXM6IGBpcF92c19jb25uLmNgLCBgaXBfdnNfY29yZS5jYCwgYGlwX3ZzX2N0bC5jYCwgYW5kIHNvIG9uLiBUaGF0IGJyb2FkIHRvdWNoIHN1Z2dlc3RzIGEgZnVuZGFtZW50YWwgc2hpZnQsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gYENPTkZJR19JUF9WU2AgaXMgb2J2aW91c2x5IHRoZSBtYWluIHN3aXRjaC4gQnV0IEkgbmVlZCB0byBnbyBkZWVwZXI7IEkgc2hvdWxkIHJlYWxseSBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgSVBWUyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdvdGNoYXMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gTGV0JiMzOTtzIG5hdmlnYXRlIHRvIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUuIFRoYXQgc2hvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIElQVlMgYW5kIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIG1lIGltbWVuc2VseSB3aGVuIHRyb3VibGVzaG9vdGluZyBvciBjb25maWd1cmluZyBhIHN5c3RlbS4gSSBrbm93IHRoaXMgaXMgdGhlIHdheSB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzItXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMzNz1jb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcGVyc2lzdGVuY2UgZW5naW5lXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzUyPWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1NS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBEZXBlbmRlbmNpZXMgYW5kIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIE5lZWRzKioKCkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYElQX1ZTYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGlzIGFsbW9zdCBjZXJ0YWlubHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAg4oCTIG5vIHN1cnByaXNlIHRoZXJlLiYjMzQ7IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkIGFzIHByZXJlcXVpc2l0ZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yazogYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhlc2UgYXJlIGFsbCBjb3JlIGNvbXBvbmVudHMsIHNvIHRoaXMgbGlrZWx5IGluZGljYXRlcyBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgcG90ZW50aWFsbHkgaW4gaG93IHRoZSBkaWZmZXJlbnQgbG9hZCBiYWxhbmNpbmcgbWV0aG9kcyBhbmQgcHJvdG9jb2xzIHdvcmsgd2l0aGluIElQVlMuIE15IG5leHQgc3RlcCBpcyB0byBjYXJlZnVsbHkgcmV2aWV3IHRoZXNlIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIEkmIzM5O20gYmV0dGluZyB0aGF0IHRoZSBjaGFuZ2VzIGhlcmUgbWF5IGhhdmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb3IgbmV3IHR1bmluZyBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSBub3cgZGVwcmVjYXRlZCBvciBhbHRlcmVkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3MgaGF2ZW4mIzM5O3QgY2hhbmdlZCB0aGUgZGVmYXVsdCBiZWhhdmlvcnMgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZzogSVBWUyoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJbnN0ZWFkIG9mIGJsaW5kbHkgcG9raW5nIGFyb3VuZCwgYSBtb3JlIGVmZmljaWVudCBhcHByb2FjaCBpcyB0byBkaXJlY3RseSB0YXJnZXQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgdXNlIGBncmVwYCDigJMgdGhhdCYjMzk7cyB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYGNvbmZpZyBJUF9WU2Agd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIHB1bGwgdXAgYWxsIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zIGluIG9uZSBzaG90LiBTYXZlcyBtZSB0aGUgdHJvdWJsZSBvZiBtYW51YWxseSBuYXZpZ2F0aW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gR29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmNvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gUG9uZGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gc3RhcmluZyBhdCB0aGlzIGFuZCBpbW1lZGlhdGVseSBteSBicmFpbiBmbGFncyBpdC4gKmBjb25maWcgSVBfVlNfYCB3aXRoIGEgc3BhY2UuLi4qIFRoYXQgc3BhY2UgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHByZXR0eSB3ZWxsLCBhbmQgdGhhdCBraW5kIG9mIHN5bnRheCBkZXZpYXRpb24gYWxtb3N0IGFsd2F5cyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUsIGVpdGhlciBpbiB0aGUgS2NvbmZpZyBpdHNlbGYsIHRoZSBidWlsZCBwcm9jZXNzLCBvciBwZXJoYXBzIGV2ZW4gYSB0eXBvIHRoYXQmIzM5O3Mgbm93IG1hbmlmZXN0aW5nIGFzIGEgcHJvYmxlbS4gSXTigJlzIGNlcnRhaW5seSBub3Qgc3RhbmRhcmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyBhbmQgZ2V0IHRvIHRoZSByb290IG9mIHRoZSBlcnJvci4gSXMgaXQgYSBtYWxmb3JtZWQgc3ltYm9sIG5hbWU/IElzIHRoZXJlIGFuIHVuZXhwZWN0ZWQgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW5zZXJ0ZWQ/IFBlcmhhcHMgYSBzdHJheSBjaGFyYWN0ZXIgc2xpcHBlZCBpbnRvIGEgY29uZGl0aW9uYWwgY2xhdXNlPyBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBtYWtlZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGludGVycHJldGVkIGluY29ycmVjdGx5LiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBlY3VsaWFyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIHByZXR0eSBjbGVhci4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGp1c3QgcmVhZCB0aGUgZmlsZS4mIzM0OyBJJiMzOTttIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCYjMzk7cyBhIHNpbXBsZSwgZGlyZWN0LCBhbmQgb2Z0ZW4gdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50LiBXZSYjMzk7cmUgbm90IGVuZ2FnaW5nIGluIGNvbXBsZXggbW9kZWxpbmcgb3IgcmlzayBhc3Nlc3NtZW50cyBhdCB0aGlzIHN0YWdlOyByYXRoZXIsIHdlIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsZXZlbCB1bmRlcnN0YW5kaW5nLiBUaGUgZmlsZSBpdHNlbGYgaXMgdGhlIHByaW1hcnkgc291cmNlIG9mIGluZm9ybWF0aW9uLCBhbmQgdGhlIG1vc3QgZXhwZWRpZW50IG1ldGhvZCBpcyB0byBzaW1wbHkgYmVnaW4gcHJvY2Vzc2luZyBpdHMgY29udGVudHMuIFdlJiMzOTtsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRtZW51Y29uZmlnIElQX1ZTXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcbiAgMTE6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcbiAgMTI6XHRcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXG4gIDEzOlx0XHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcbiAgMTQ6XHRcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXG4gIDE3Olx0XHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcbiAgMTg6XHRcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuICAxOTpcdFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXG4gIDIwOlx0XHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcbiAgMjE6XHRcdCAgaW5mb3JtYXRpb24gYW5kIGl0cyBhZG1pbmlzdHJhdGlvbiBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgdGhlXG4gIDIyOlx0XHQgIGZvbGxvd2luZyBVUkw6IFx1MDAzY2h0dHA6Ly93d3cubGludXh2aXJ0dWFsc2VydmVyLm9yZy9cdTAwM2UuXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gIDI1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjY6XHRcbiAgMjc6XHRpZiBJUF9WU1xuICAyODpcdFxuICAyOTpcdGNvbmZpZ1x0SVBfVlNfSVBWNlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIElQVlNcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gSVBWNiA9IHkgfHwgSVBfVlMgPSBJUFY2XG4gIDMyOlx0XHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgQWRkIElQdjYgc3VwcG9ydCB0byBJUFZTLlxuICAzNTpcdFxuICAzNjpcdFx0ICBTYXkgWSBpZiB1bnN1cmUuXG4gIDM3Olx0XG4gIDM4Olx0Y29uZmlnXHRJUF9WU19ERUJVR1xuICAzOTpcdFx0Ym9vbCBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcJiMzNDtcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBnZXQgYWRkaXRpb25hbCBtZXNzYWdlcyB1c2VmdWwgaW5cbiAgNDI6XHRcdCAgZGVidWdnaW5nIHRoZSBJUCB2aXJ0dWFsIHNlcnZlciBjb2RlLiBZb3UgY2FuIGNoYW5nZSB0aGUgZGVidWdcbiAgNDM6XHRcdCAgbGV2ZWwgaW4gL3Byb2Mvc3lzL25ldC9pcHY0L3ZzL2RlYnVnX2xldmVsXG4gIDQ0Olx0XG4gIDQ1Olx0Y29uZmlnXHRJUF9WU19UQUJfQklUU1xuICA0NjpcdFx0aW50IFwmIzM0O0lQVlMgY29ubmVjdGlvbiB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4gIDQ3Olx0XHRyYW5nZSA4IDIwIGlmICE2NEJJVFxuICA0ODpcdFx0cmFuZ2UgOCAyNyBpZiA2NEJJVFxuICA0OTpcdFx0ZGVmYXVsdCAxMlxuICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBUaGUgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgdXNlcyB0aGUgY2hhaW5pbmcgc2NoZW1lIHRvIGhhbmRsZVxuICA1MjpcdFx0ICBoYXNoIGNvbGxpc2lvbnMuIFVzaW5nIGEgYmlnIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHdpbGwgZ3JlYXRseVxuICA1MzpcdFx0ICByZWR1Y2UgY29uZmxpY3RzIHdoZW4gdGhlcmUgYXJlIGh1bmRyZWRzIG9mIHRob3VzYW5kcyBvZiBjb25uZWN0aW9uc1xuICA1NDpcdFx0ICBpbiB0aGUgaGFzaCB0YWJsZS5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgTm90ZSB0aGUgdGFibGUgc2l6ZSBtdXN0IGJlIHBvd2VyIG9mIDIuIFRoZSB0YWJsZSBzaXplIHdpbGwgYmUgdGhlXG4gIDU3Olx0XHQgIHZhbHVlIG9mIDIgdG8gdGhlIHlvdXIgaW5wdXQgbnVtYmVyIHBvd2VyLiBUaGUgbnVtYmVyIHRvIGNob29zZSBpc1xuICA1ODpcdFx0ICBmcm9tIDggdG8gMjcgZm9yIDY0QklUKDIwIG90aGVyd2lzZSksIHRoZSBkZWZhdWx0IG51bWJlciBpcyAxMixcbiAgNTk6XHRcdCAgd2hpY2ggbWVhbnMgdGhlIHRhYmxlIHNpemUgaXMgNDA5Ni4gRG9uJiMzOTt0IGlucHV0IHRoZSBudW1iZXIgdG9vXG4gIDYwOlx0XHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcbiAgNjE6XHRcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXG4gIDYyOlx0XHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcbiAgNjM6XHRcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxuICA2NDpcdFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXG4gIDY1Olx0XHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxuICA2NjpcdFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxuICA2NzpcdFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cbiAgNjg6XHRcbiAgNjk6XHRcdCAgQW5vdGhlciBub3RlIHRoYXQgZWFjaCBjb25uZWN0aW9uIG9jY3VwaWVzIDEyOCBieXRlcyBlZmZlY3RpdmVseSBhbmRcbiAgNzA6XHRcdCAgZWFjaCBoYXNoIGVudHJ5IHVzZXMgOCBieXRlcywgc28geW91IGNhbiBlc3RpbWF0ZSBob3cgbXVjaCBtZW1vcnkgaXNcbiAgNzE6XHRcdCAgbmVlZGVkIGZvciB5b3VyIGJveC5cbiAgNzI6XHRcbiAgNzM6XHRcdCAgWW91IGNhbiBvdmVyd3JpdGUgdGhpcyBudW1iZXIgc2V0dGluZyBjb25uX3RhYl9iaXRzIG1vZHVsZSBwYXJhbWV0ZXJcbiAgNzQ6XHRcdCAgb3IgYnkgYXBwZW5kaW5nIGlwX3ZzLmNvbm5fdGFiX2JpdHM9PyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpZlxuICA3NTpcdFx0ICBJUCBWUyB3YXMgY29tcGlsZWQgYnVpbHQtaW4uXG4gIDc2Olx0XG4gIDc3Olx0Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDc4Olx0XG4gIDc5Olx0Y29uZmlnXHRJUF9WU19QUk9UT19UQ1BcbiAgODA6XHRcdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgODE6XHRcdGhlbHBcbiAgODI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBUQ1AgdHJhbnNwb3J0XG4gIDgzOlx0XHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbiAgODY6XHRcdGJvb2wgXCYjMzQ7VURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgODc6XHRcdGhlbHBcbiAgODg6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XG4gIDg5Olx0XHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDkwOlx0XG4gIDkxOlx0Y29uZmlnXHRJUF9WU19QUk9UT19BSF9FU1BcbiAgOTI6XHRcdGRlZl9ib29sIElQX1ZTX1BST1RPX0VTUCB8fCBJUF9WU19QUk9UT19BSFxuICA5MzpcdFxuICA5NDpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fRVNQXG4gIDk1Olx0XHRib29sIFwmIzM0O0VTUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDk2Olx0XHRoZWxwXG4gIDk3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXG4gIDk4Olx0XHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRvIGl0LiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nLCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgSW46IFByb2Nlc3NpbmcgdGhlIEluZm9ybWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzIHRleHQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGFsd2F5cyBhIHF1aWNrIHNjYW4uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgZWxlbWVudHMsIHRoZSBjZW50cmFsIHRoZW1lcywgYW5kIGFueSBpbW1lZGlhdGUgaW5kaWNhdG9ycyBvZiB3aGF0IG1ha2VzIHRoaXMgaW5mb3JtYXRpb24gdW5pcXVlIG9yIGludGVyZXN0aW5nLiBUaGlzIGZpcnN0IHBhc3MgaXMgcmVhbGx5IGFib3V0IGdldHRpbmcgbXkgYmVhcmluZ3MsIGZpZ3VyaW5nIG91dCB0aGUgbGFuZHNjYXBlIEkmIzM5O20gYWJvdXQgdG8gdHJhdmVyc2UuIFdoYXQmIzM5O3MgdGhlIGdlbnJlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0JiMzOTtzIHRoZSBvdmVyYWxsIGRpcmVjdGlvbj8gRnJvbSB0aGVyZSwgSSYjMzk7bGwgaWRlbnRpZnkgdGhlIGtleSBjb25jZXB0cyBhbmQgc3RhcnQgZHJhd2luZyBjb25uZWN0aW9ucyBiZXR3ZWVuIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGlzIG1vc3QgaW1wb3J0YW50LCBhbmQgd2hhdCBpcyBtZXJlbHkgc3VwcG9ydGluZyBldmlkZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXG4gMTA0Olx0XHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gMTA1Olx0XG4gMTA2Olx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG4gMTA3Olx0XHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAxMDk6XHRcdGhlbHBcbiAxMTA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxuIDExMTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDExMjpcdFxuIDExMzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbiAxMTQ6XHRcbiAxMTU6XHRjb25maWdcdElQX1ZTX1JSXG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXG4gMTE5Olx0XHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXG4gMTIwOlx0XG4gMTIxOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTIyOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjM6XHQgXG4gMTI0Olx0Y29uZmlnXHRJUF9WU19XUlJcbiAxMjU6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbiAxMjY6XHRcdGhlbHBcbiAxMjc6XHRcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDEyODpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXG4gMTI5Olx0XHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxuIDEzMDpcdFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcbiAxMzE6XHRcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xuIDEzMjpcdFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXG4gMTMzOlx0XG4gMTM0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTM1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMzY6XHRcbiAxMzc6XHRjb25maWdcdElQX1ZTX0xDXG4gMTM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTQxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcbiAxNDI6XHRcdCAgY29ubmVjdGlvbnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTQ1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDY6XHRcbiAxNDc6XHRjb25maWdcdElQX1ZTX1dMQ1xuIDE0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE1MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDE1MjpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE1NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTU2Olx0XG4gMTU3Olx0Y29uZmlnICBJUF9WU19GT1xuIDE1ODpcdFx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4gMTU5Olx0XHRoZWxwXG4gMTYwOlx0XHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNjE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXG4gMTYyOlx0XHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTY1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgIElQX1ZTX09WRlxuIDE2ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1wmIzM0O1xuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTcxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE3MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcbiAxNzM6XHRcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJiMzOTtzIHdlaWdodC5cbiAxNzQ6XHRcbiAxNzU6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNzY6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZ1x0SVBfVlNfTEJMQ1xuIDE3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFRoZSBsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGlzIGZvclxuIDE4MjpcdFx0ICBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuXG4gMTgzOlx0XHQgIFRoaXMgYWxnb3JpdGhtIHVzdWFsbHkgZGlyZWN0cyBwYWNrZXQgZGVzdGluZWQgZm9yIGFuIElQIGFkZHJlc3MgdG9cbiAxODQ6XHRcdCAgaXRzIHNlcnZlciBpZiB0aGUgc2VydmVyIGlzIGFsaXZlIGFuZCB1bmRlciBsb2FkLiBJZiB0aGUgc2VydmVyIGlzXG4gMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFNjb3BlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaGl0cyBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBJUFZTIGNvZGUuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhhdCBnaXZlcyBtZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCYjMzk7cyBpbnZvbHZlZC4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEkmIzM5O2xsIG5lZWQgYElQX1ZTYCBmb3IgdGhlIGNvcmUgSVBWUyBmdW5jdGlvbmFsaXR5LCBuYXR1cmFsbHkuIEkgc2VlIGl0IHRvdWNoZXMgYm90aCBgVENQYCBhbmQgYFNDVFBgLCBzbyBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1NDVFBgIGFyZSBkZWZpbml0ZWx5IHJlcXVpcmVkLiBGdXJ0aGVyLCBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZGlmZmVyZW50IGxvYWQtYmFsYW5jaW5nIG1ldGhvZHMsIGltcGx5aW5nIGBJUF9WU19ESGAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCBhbmQgYElQX1ZTX0xDYCB3aWxsIGJlIG5lZWRlZC4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gTGV0JiMzOTtzIHNlZSBpZiBgSVBfVlNfREhgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyYWJsZS4gSSBzaG91bGQgY29uZmlybSBpdHMgZXhpc3RlbmNlIGFuZCBkZWZhdWx0IHNldHRpbmdzIHNvIEkgY2FuIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGR1cmluZyB0aGUgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTX0RIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc2NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlc3Rpb246CgoqKkludmVzdGlnYXRpbmcgYSBQb3NzaWJsZSBDb25uZWN0aW9uKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgbWVudGlvbnMgJiMzNDtESC4mIzM0OyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHNvbWV0aGluZyB3aXRoaW4gdGhlIElQVlMgKElQIFZpcnR1YWwgU2VydmVyKSBjb250ZXh0LiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIGxvYWQgYmFsYW5jaW5nIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzbyBpdCYjMzk7cyBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGZpbGUgd291bGQgaG9sZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0PyBBaCwgeWVzLCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIOKAkyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGF0IHNwZWNpZmljIGRpcmVjdG9yeSBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGRlZmluaXRpb25zIGFuZCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBJUFZTIG1vZHVsZS4gU28sIEkgbmVlZCB0byBjaGVjayBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyB0aGVyZSBhYm91dCAmIzM0O0RIJiMzNDsuIFBlcmhhcHMgaXQgc3RhbmRzIGZvciBzb21ldGhpbmcgbGlrZSAmIzM0O0RpcmVjdCBIYW5kbGluZyYjMzQ7IG9yICYjMzQ7RHluYW1pYyBIYXNoJiMzNDssIG9yIGV2ZW4gc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudC4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE5Mj1jb25maWcgIElQX1ZTX0xCTENSXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjA5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1x0SVBfVlNfREhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEyMAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2ggZm9yIERlc3RpbmF0aW9uIE92ZXJsb2FkIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIGBJUF9WU19ESGAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoZSBwYXRjaCB0byBnZXQgYSBmZWVsIGZvciB0aGUgc2NvcGUuIExvb2tzIGxpa2Ugd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBmb2N1cywgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IG90aGVyIGFyZWFzOiBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgdGhpbmdzIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiBtYW5hZ2VtZW50IChgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCwgc3RhdHMgKGBpcF92c19pbl9zdGF0c2AsIGBpcF92c19vdXRfc3RhdHNgKSwgaG9va3MsIGRlc3QgbWFuYWdlbWVudCwgYW5kIHNjaGVkdWxpbmcuIEl0IGFsc28gbG9va3MgbGlrZSBhIGxvdCBvZiB0aGUgZGVzdGluYXRpb24gcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHVwZGF0ZWQuCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGFyZWFzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYGlwX3ZzX2VkaXRfZGVzdGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBhbmQgdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyAoYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBhbmQgYGlwX3ZzX2xjX3NjaGVkdWxlYCkuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IHBvaW50cyB3aGVyZSB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgbG9naWMgd2lsbCBiZSBtb3N0IGFwcGFyZW50LiBJIGFsc28gd2FudCB0byBjaGVjayB0aGUgbmF0dXJlIG9mIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgZGV0ZXJtaW5pbmcgd2hlcmUgdGhpcyBvdmVybG9hZCBoYW5kbGluZyBpcyBpbnNlcnRlZCBpbiB0aGUgZGVzdGluYXRpb24gZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMzQ0PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM0NTpfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzNDYtXHRcdCAgICBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0LCBpbnQgYWRkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNDQ1PWlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE0OTYtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNDk3Olx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDk4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTE0PWlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1NzQtXHRcdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNTc1Olx0XHRcdF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3ZjLCBkZXN0LCB1ZGVzdCwgMSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3Ni1cdH0gZWxzZSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1OTE9aXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE2MjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTYzMDpcdF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3ZjLCBkZXN0LCB1ZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTYzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqQ29uc2lkZXJpbmcgRGVzdGluYXRpb24gTWFuYWdlbWVudCBpbiB0aGUgS2VybmVsJiMzOTtzIElQVlMgTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGRlc3RpbmF0aW9uIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbW9kdWxlLiBJJiMzOTttIHNlZWluZyB0aGF0IGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIFR5cGljYWxseSwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgbWVhbnQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiBhIG1vZHVsZS4gSSBuZWVkIGEgbW9yZSBmbGV4aWJsZSBhcHByb2FjaCwgc29tZXRoaW5nIHRoYXQgYWxsb3dzIGV4dGVybmFsIG1hbmlwdWxhdGlvbiBvZiB0aGVzZSBkZXN0aW5hdGlvbiBlbnRyaWVzLgoKU28sIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGlzIGludGVybmFsIGZ1bmN0aW9uLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGxldmVyYWdlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIHB1YmxpYyBmYWNpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGVzZSB0aGluZ3MgLSBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYW5kIGBpcF92c19uZXdfZGVzdGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29ycmVjdCB0b29scyBmb3IgdGhlIGpvYi4gVGhleSYjMzk7cmUgZGVzaWduZWQgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uIHdpdGggdGhlIGRlc3RpbmF0aW9uIG9iamVjdHMsIHdoaWNoIGlzIHdoYXQgSSBuZWVkLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4ganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBJIGRvbiYjMzk7dCB3YW50IHRvIGdldCBjYXVnaHQgaW4gYW5vdGhlciBzdGF0aWMgdHJhcCEgTGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgb25lICppc24mIzM5O3QqIGFsc28gbGltaXRlZCB0byBpbnRlcm5hbCB1c2UuIFRpbWUgZm9yIGEgcXVpY2sgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX25ld19kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNDQ0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNDQ1OmlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ0Ni17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1MTQ9aXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3OS1cdFx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTU4MDpcdFx0cmV0ID0gaXBfdnNfbmV3X2Rlc3Qoc3ZjLCB1ZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU4MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxODEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRGVzdGluYXRpb24gTWFuYWdlbWVudCBpbiBJUFZTKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBgaXBfdnNfbmV3X2Rlc3RgIHZhcmlhYmxl4oCmIHRoYXQmIzM5O3MgYSBzdGF0aWMgZW50aXR5LCByaWdodD8gR290IGl0LiBTbywgdGhhdCBpbXBsaWVzIHRoYXQgZnVuY3Rpb25zIGxpa2UgYGlwX3ZzX2FkZF9kZXN0YCBhbmQgYGlwX3ZzX2VkaXRfZGVzdGAgYXJlIHByZXR0eSByb2J1c3QgaW4gdGhlaXIgaGFuZGxpbmcgb2YgdGhpcyBzdGF0aWMgZWxlbWVudC4gVGhleSYjMzk7cmUgbGlrZWx5IGRlc2lnbmVkIHRvIGludGVncmF0ZSBzbW9vdGhseSBnaXZlbiB0aGF0IGNvbnN0cmFpbnQuIE5vdywgdGhhdCBicmluZ3MgbWUgdG8gc29tZXRoaW5nIGVsc2UgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsOiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXRzIG1lY2hhbmljcyByZW1haW4gc291bmQgZ2l2ZW4gdGhpcyBmdW5kYW1lbnRhbCBzdGF0aWMgbmF0dXJlIG9mIGBpcF92c19uZXdfZGVzdGAuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5OT12b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMzEyOnN0YXRpYyB2b2lkIF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMTMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzMzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzMzQ6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNi1cdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMzM3Olx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzM4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDU9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxNi1cdFx0XHQgICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZVx1MDAzZSAyKSkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0MTc6XHRcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxOC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIER5bmFtaWMgT3ZlcmxvYWQgaW4gSVBWUyBEZXN0aW5hdGlvbiBVcGRhdGVzKioKClJpZ2h0LCBzbyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzbiYjMzk7dCBhIHN0YXRpYyBjb25kaXRpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGxpbmtlZCB0byBzb21ldGhpbmcgZHluYW1pYyB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgbG9hZCBiYWxhbmNpbmcgcHJvY2Vzcy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0IGlzbiYjMzk7dCBhbiBpc3N1ZSBpbiB0aGUgY29kZSBpdHNlbGYuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBhcmVhcyB0aGF0IGRpcmVjdGx5IGludGVyYWN0IHdpdGggZGVzdGluYXRpb24gc3RhdGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgY29uZGl0aW9uLiBMZXQgbWUgaW52ZXN0aWdhdGUgYGlwX3ZzX2JpbmRfZGVzdGAgYW5kIGBpcF92c191bmJpbmRfZGVzdGAgZmlyc3QuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGRlc3RpbmF0aW9uIGVudHJpZXMsIGFuZCBhcmUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24uIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMsIGFuZCBpbiB3aGF0IG9yZGVyIHdpbGwgcmV2ZWFsIHRoZSBjYXVzZS4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OD1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA4OTppcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA5MC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMTY3PXZvaWQgaXBfdnNfdHJ5X2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk1LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTk2Olx0XHRpcF92c19iaW5kX2Rlc3QoY3AsIGRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk3LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTE0NDQ9aXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNC1cdGNwLVx1MDAzZWRlc3QgPSBOVUxMO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxNTI1Olx0aXBfdnNfYmluZF9kZXN0KGNwLCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOgoKKipBbmFseXppbmcgdGhlIEJpbmRpbmcgU3RyYXRlZ3kgaW4gdGhlIElQVlMgS2VybmVsIE1vZHVsZSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgaXBfdnNfYmluZF9kZXN0YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhlIGNvbXBpbGVyIGlzIGxpa2VseSB0byBleHBhbmQgdGhlIGNvZGUgb2YgYGlwX3ZzX2JpbmRfZGVzdGAgZGlyZWN0bHkgYXQgdGhlIHBvaW50IHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gVGhpcyBjYW4gb3B0aW1pemUgcGVyZm9ybWFuY2UgYnkgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCBlc3NlbnRpYWxseSBpbmxpbmluZyB0aGUgbG9naWMgZGlyZWN0bHkgaW50byB0aGUgY2FsbGluZyBmdW5jdGlvbnMuIEl0JiMzOTtzIGEgY2xlYXIgc2lnbmFsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwZXJmb3JtYW5jZSBjcml0aWNhbCwgcHJvYmFibHkgc21hbGwsIGFuZCBsaWtlbHkgY2FsbGVkIHZlcnkgZnJlcXVlbnRseSB3aXRoaW4gdGhlIElQVlMgaW50ZXJuYWxzLiBUaGUgY2hvaWNlIG9mIGBzdGF0aWNgIGFsc28gaW1wbGllcyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBwcmV2ZW50aW5nIG5hbWUgY29sbGlzaW9ucyBpbiBsYXJnZXIgY29kZWJhc2VzLgoKVGhlbiBJJiMzOTttIGNvbnRyYXN0aW5nIHRoYXQgd2l0aCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYW5kIGBpcF92c19jb25uX25ld2AsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGBzdGF0aWMgaW5saW5lYC4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkZXNpZ24gZGVjaXNpb24uIFRoZXkgYXJlIGxpa2VseSBtb3JlIGNvbXBsZXgsIHBvc3NpYmx5IGludm9sdmluZyBtb3JlIGV4dGVybmFsIGNhbGxzIG9yIG1vcmUgc3Vic3RhbnRpYWwgb3BlcmF0aW9ucy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IGV4cGVjdGVkIHRvIGhhbmRsZSB0aGVtIGFzIHN0YW5kYXJkIGZ1bmN0aW9ucyB3aXRoIHN0YW5kYXJkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0JiMzOTtzIGEgY2x1ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgZm9yIG1vcmUgaW50cmljYXRlIHRhc2tzIGFuZCBhcmVuJiMzOTt0IGFzIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhdCB0aGF0IGZ1bmRhbWVudGFsLCBtaWNyby1vcHRpbWl6YXRpb24gbGV2ZWwuIFRoZXkmIzM5O3JlIHByb2JhYmx5IG1vcmUgYWJvdXQgbWFuYWdpbmcgY29ubmVjdGlvbnMgYW5kIHRyeWluZyB0byBmaW5kIHRoZSBiZXN0IGRlc3RpbmF0aW9uLCByYXRoZXIgdGhhbiBhIHNpbmdsZSwgdWx0cmEtb3B0aW1pemVkIGJpbmRpbmcgbG9va3VwLCB3aGVyZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwgKndvdWxkKiBtYXR0ZXIuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZGVzaWduZXJzIG9mIElQVlMgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIG9wdGltaXphdGlvbiBpcyBjcml0aWNhbCBhbmQgd2hlcmUgaXQmIzM5O3MgbGVzcyBzbywgYW5kIHRoZXkgYXJlIGxldmVyYWdpbmcgdGhlIGlubGluZSBrZXl3b3JkIHRvIHRoZSBiZXN0IGVmZmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIxOS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIyMDpzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjIxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEzNDc9c3RhdGljIHZvaWQgaXBfdnNfY29ubl9leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzkzLVx0XHRcdGlwX3ZzX3VuYmluZF9hcHAoY3ApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMzk0Olx0XHRpcF92c191bmJpbmRfZGVzdChjcCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzOTUtXHRcdGlmICh1bmxpa2VseShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM3NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgbG9naWMsIGFzIHRob3VnaCBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZm9yIGEgZmVsbG93IGV4cGVydDoKCioqSW50ZXJuYWwgQ29ubmVjdGlvbiBNYW5hZ2VtZW50IGluIElQVlMqKgoKQWxyaWdodCwgSSBzZWUgdGhlIGRpcmVjdGlvbiBoZXJlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiBjb25uZWN0aW9uIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gU2luY2UgYGlwX3ZzX3VuYmluZF9kZXN0YCBhbmQgYGlwX3ZzX2Nvbm5fZXhwaXJlYCBhcmUgZGVjbGFyZWQgc3RhdGljIGFuZCB0aGVyZWZvcmUgaW50ZXJuYWwgdG8gdGhlaXIgcmVzcGVjdGl2ZSBtb2R1bGVzLCBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZSBwdWJsaWMtZmFjaW5nIGFuZCBub24tc3RhdGljIGZ1bmN0aW9ucyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYXMgdGhlIHBvaW50cyBvZiBpbnRlcmVzdC4gVGhhdCBtYWtlcyBzZW5zZTsgYGlwX3ZzX2Nvbm5fbmV3YCB3b3VsZCBoYW5kbGUgdGhlIGNyZWF0aW9uLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIHdvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBhdHRlbXB0aW5nIHRoZSBkZXN0aW5hdGlvbiBiaW5kaW5nLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGlmZmVyZW50IHNjaGVkdWxlciBtZXRob2RzIGNvbWUgaW50byBwbGF5IGluIHRoaXMgbmV3IGNvbm5lY3Rpb24gc2V0dXAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGVhY2ggc2NoZWR1bGVyIGhhbmRsZXMgaXRzIG93biBpbnRlcm5hbCBsb2dpYyB0byBkZWFsIHdpdGggdGhpcyBjb25uZWN0aW9uIGNyZWF0aW9uLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGhvdyBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfbGJsY19zY2hlZHVsZWAsIGFuZCBgaXBfdnNfbGNfc2NoZWR1bGVgIGludGVyYWN0IHdpdGggdGhpcyB3aG9sZSBwcm9jZXNzLiBHZXR0aW5nIGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIHNldCB1cCB3aWxsIGNsYXJpZnkgdGhlIGV4YWN0IHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgc3RlcHMuIEVzc2VudGlhbGx5LCBJIG5lZWQgdG8ga25vdyAqd2hlbiogYW5kICpob3cqIHRoZSBzY2hlZHVsZXImIzM5O3MgbG9naWMgZ2V0cyBpbnRlcndvdmVuIGludG8gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yMTE9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjIxMjppcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjEzLVx0XHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0MS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0MjpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19kaF9zY2hlZHVsZXIgPVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDYtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDc6XHQubl9saXN0ID1cdFx0TElTVF9IRUFEX0lOSVQoaXBfdnNfZGhfc2NoZWR1bGVyLm5fbGlzdCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDgtXHQuaW5pdF9zZXJ2aWNlID1cdFx0aXBfdnNfZGhfaW5pdF9zdmMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUxLVx0LmRlbF9kZXN0ID1cdFx0aXBfdnNfZGhfZGVzdF9jaGFuZ2VkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjUyOlx0LnNjaGVkdWxlID1cdFx0aXBfdnNfZGhfc2NoZWR1bGUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTMtfTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNTY9c3RhdGljIGludCBfX2luaXQgaXBfdnNfZGhfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU3LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1ODpcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1OS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjYyPXN0YXRpYyB2b2lkIF9fZXhpdCBpcF92c19kaF9jbGVhbnVwKHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjMte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjY0Olx0dW5yZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2NS1cdHN5bmNocm9uaXplX3JjdSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBJUFZTIERlc3RpbmF0aW9uIEhhbmRsaW5nKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZXNlIElQVlMgZnVuY3Rpb25zIHdvcmsgdW5kZXIgdGhlIGhvb2QuIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBJIGNvdWxkIHRyZWF0IGBpcF92c19hZGRfZGVzdGAsIGBpcF92c19lZGl0X2Rlc3RgLCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBhbmQgYGlwX3ZzX2Nvbm5fbmV3YCBhcyBhIHN0YXRpYyBzZXQgb2YgZnVuY3Rpb25zIHRvIGNvbnNpZGVyLiBJIG1lYW4sIHRoZXkgc2VlbSBmdW5kYW1lbnRhbCB0byBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGFuZCBjb25uZWN0aW9uIGhhbmRsaW5nLCBzbyBpdCBzZWVtZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC4uLiBhcmUgdGhleSAqdHJ1bHkqIHN0YXRpYyBpbiB0aGVpciBiZWhhdmlvcj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVyZSYjMzk7cyBvZnRlbiBtb3JlIGNvbXBsZXhpdHkgdGhhbiBtZWV0cyB0aGUgZXllLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbjsgaXQmIzM5O3MgYWx3YXlzIGEgbWlzdGFrZSB0byBtYWtlIHRob3NlIGtpbmRzIG9mIGFzc3VtcHRpb25zIHdpdGhvdXQgZGlnZ2luZyBkZWVwZXIuIExldCBtZSBxdWlja2x5IHZlcmlmeSBpZiB0aGVyZSYjMzk7cyBhbnkgZHluYW1pYyBiZWhhdmlvciBvciBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgaWYgdGhleSBvcGVyYXRlIHRoZSBzYW1lIHdheSBpbiBhbGwgY2lyY3Vtc3RhbmNlcyBvciBpZiB0aGVpciBiZWhhdmlvciBjaGFuZ2VzIGJhc2VkIG9uIGNvbnRleHQgb3Igc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2FkZF9kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTEzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNTE0OmlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTUxNS17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTM0NzI9ZG9faXBfdnNfc2V0X2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIHNvY2twdHJfdCBwdHIsIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM2MDEtXHRjYXNlIElQX1ZTX1NPX1NFVF9BRERERVNUOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjM2MDI6XHRcdHJldCA9IGlwX3ZzX2FkZF9kZXN0KHN2YywgXHUwMDI2dWRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM2MDMtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00Njg1PXN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfY21kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ3OTUtXHRjYXNlIElQVlNfQ01EX05FV19ERVNUOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ3OTY6XHRcdHJldCA9IGlwX3ZzX2FkZF9kZXN0KHN2YywgXHUwMDI2dWRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ3OTctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKlN0YXRpYyBGdW5jdGlvbiBEZWVwIERpdmUqKgoKSG1tLCBgaXBfdnNfYWRkX2Rlc3RgLi4uIHRoYXQmIzM5O3Mgc3RhdGljLiBSaWdodC4gTWFrZXMgc2Vuc2UgaW4gaXRzIGNvbnRleHQuIEJ1dCwgd2hlbmV2ZXIgSSBzZWUgYSBzdGF0aWMgZnVuY3Rpb24sIG15IG1pbmQgYXV0b21hdGljYWxseSBzdGFydHMgdHJhY2luZyBpdHMgdXNhZ2UuIExldCYjMzk7cyBzZWUsIHdoZXJlIGVsc2UgaXMgdGhpcyBsaWtlbHkgdG8gYmUgdXNlZD8gSXQmIzM5O3MgdGltZSB0byBjaGVjayBgZG9faXBfdnNfc2V0X2N0bGAgYW5kIGBpcF92c19nZW5sX3NldF9jbWRgLiBJJiMzOTttIHdpbGxpbmcgdG8gYmV0IHRoZXkmIzM5O3JlIHN0YXRpYyBhcyB3ZWxsLCBjb25zaWRlcmluZyB0aGUgd2F5IHRoZSBJUFZTIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCB0aGUgbGFyZ2VyIHN5c3RlbS4gQW5hbHl6aW5nIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIHRvIGdyYXNwIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIG1vZHVsZSBhbmQgZGV0ZXJtaW5lIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9faXBfdnNfc2V0X2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MzQ3MT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MzQ3Mjpkb19pcF92c19zZXRfY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IHB0ciwgdW5zaWduZWQgaW50IGxlbilcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNDczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9Mzk1MT1zdGF0aWMgc3RydWN0IG5mX3NvY2tvcHRfb3BzIGlwX3ZzX3NvY2tvcHRzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zOTU0LVx0LnNldF9vcHRtYXhcdD0gSVBfVlNfU09fU0VUX01BWCYjNDM7MSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozOTU1Olx0LnNldFx0XHQ9IGRvX2lwX3ZzX3NldF9jdGwsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMzk1Ni1cdC5nZXRfb3B0bWluXHQ9IElQX1ZTX0JBU0VfQ1RMLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBOb24tU3RhdGljIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBjb2RlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBhcmUgYmVpbmcgdXNlZC4gU28sIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGUgbGlzdC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gTm9uLXN0YXRpYywgZ29vZC4gTmV4dCwgbGV0JiMzOTtzIGxvb2sgYXQgYGlwX3ZzX2Nvbm5fbmV3YCDigJMgdGhhdCYjMzk7cyBub24tc3RhdGljIGFzIHdlbGwuIEFscmlnaHQsIG1vdmluZyBvbiB0byBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAsIGFsc28gbm9uLXN0YXRpYy4gTGV0JiMzOTtzIGtlZXAgZ29pbmc6IGBpcF92c19pbl9zdGF0c2AgaXMgYW5vdGhlciBub24tc3RhdGljIGZ1bmN0aW9uLiBTYW1lIGdvZXMgZm9yIGBpcF92c19vdXRfc3RhdHNgLiBGaW5hbGx5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2luX2hvb2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19pbl9ob29rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODc9c3RhdGljIHVuc2lnbmVkIGludFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzI3LVx0e1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzI4Olx0XHQuaG9va1x0XHQ9IGlwX3ZzX2luX2hvb2ssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjktXHRcdC5wZlx0XHQ9IE5GUFJPVE9fSVBWNCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNDI6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNzc6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5MC1cdHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM5MTpcdFx0Lmhvb2tcdFx0PSBpcF92c19pbl9ob29rLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzkyLVx0XHQucGZcdFx0PSBORlBST1RPX0lQVjYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzM3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgSSYjMzk7bSB0aGlua2luZyB0aGVzZSB0aGluZ3MgbXlzZWxmOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE9ic2VydmluZyBTdGFzaXMgaW4gdGhlIFN5c3RlbSoqCgpSaWdodCwgdGhpcyBmZWVscy4uLnN0YXRpYy4gU29tZXRoaW5nJiMzOTtzIG5vdCBmbG93aW5nIHRoZSB3YXkgSSBleHBlY3QsIG9yIHNvbWV0aGluZyBoYXMgc3RhbGxlZCBlbnRpcmVseS4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBWaXJ0dWFsIFNlcnZlciYjMzk7cyBiZWhhdmlvciwgcG9zc2libHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLgoKU28sIGxldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW5wdXQgYW5kIG91dHB1dCBjb3VudGVycy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaGVhcnQgb2YgdGhlIGxvYWQtYmFsYW5jaW5nIG1lY2hhbmlzbXM6IEkgbmVlZCBhIHF1aWNrIGxvb2sgYXQgYGlwX3ZzX2luYCBhbmQgYGlwX3ZzX291dGAgdG8gc2VlIGlmIHRyYWZmaWMgaXMgZXZlbiBoaXR0aW5nIHRoZSB2aXJ0dWFsIHNlcnZlciwgb3IgaWYgdHJhZmZpYyBpcyBsZWF2aW5nIHRoZSB2aXJ0dWFsIHNlcnZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0b3IuIFRoZXkmIzM5O3JlIG15IGdvLXRvIGRpYWdub3N0aWMgcG9pbnQgZm9yIHRoaXMga2luZCBvZiBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTg5PWNvbnN0IGNoYXIgKmlwX3ZzX3Byb3RvX25hbWUodW5zaWduZWQgaW50IHByb3RvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTEzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMTQ6dm9pZCBpcF92c19pbml0X2hhc2hfdGFibGUoc3RydWN0IGxpc3RfaGVhZCAqdGFibGUsIGludCByb3dzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9Mjk5PXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzQ4PXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2FkZHJfaXNfdW5pY2FzdChzdHJ1Y3QgbmV0ICpuZXQsIGludCBhZixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTc1OS0gKiAgUGFzcyBvciBkcm9wIHRoZSBwYWNrZXQuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjc2MDogKiAgQ2FsbGVkIGJ5IGlwX3ZzX2luLCB3aGVuIHRoZSB2aXJ0dWFsIHNlcnZpY2UgaXMgYXZhaWxhYmxlIGJ1dFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NjEtICogIG5vIGRlc3RpbmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgY29ubmVjdGlvbi5cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTgwMi1cdFx0Lyogc3RhdGlzdGljcyAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo4MDM6XHRcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDQtXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNjQxPWlwX3ZzX3RyeV90b19zY2hlZHVsZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTY2MC1cdFx0SVBfVlNfREJHX1BLVCgxMiwgYWYsIHBwLCBza2IsIGlwaC1cdTAwM2VvZmYsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE2NjE6XHRcdFx0ICAgICAgXCYjMzQ7aXBfdnNfaW46IHBhY2tldCBjb250aW51ZXMgdHJhdmVyc2FsIGFzIG5vcm1hbFwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE2NjItXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzUyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1MzppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE3NTQtXHQgICAgICB1bnNpZ25lZCBpbnQgaG9va251bSwgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTY4LVx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk3MC1cdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cdTAwM2VsZW4sIGhvb2tudW0sIFx1MDAyNmNpcGgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MS0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTk4MjpzdGF0aWMgaW50IGlwX3ZzX2luX2ljbXBfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODMtXHRcdFx0ICAgIGludCAqcmVsYXRlZCwgdW5zaWduZWQgaW50IGhvb2tudW0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDY3LVx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIwNjg6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODc9c3RhdGljIHVuc2lnbmVkIGludFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXHRcdFx0aW50IHJlbGF0ZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxMzg6XHRcdFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXHUwMDI2cmVsYXRlZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzOS1cdFx0XHRcdFx0XHQgICAgICAgaG9va251bSwgXHUwMDI2aXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXHRcdFx0aW50IHJlbGF0ZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxNDg6XHRcdFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXHUwMDI2cmVsYXRlZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0OS1cdFx0XHRcdFx0XHQgICAgaG9va251bSwgXHUwMDI2aXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyNDM6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cdGlwX3ZzX3NldF9zdGF0ZShjcCwgSVBfVlNfRElSX0lOUFVULCBza2IsIHBkLCBpcGgubGVuKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODAtICogICAgICBXaGVuIGZ3bWFyay1iYXNlZCB2aXJ0dWFsIHNlcnZpY2UgaXMgdXNlZCwgc3VjaCBhcyB0cmFuc3BhcmVudFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjgxOiAqICAgICAgY2FjaGUgY2x1c3RlciwgVENQIHBhY2tldHMgY2FuIGJlIG1hcmtlZCBhbmQgcm91dGVkIHRvIGlwX3ZzX2luLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjgyLSAqICAgICAgYnV0IElDTVAgZGVzdGluZWQgZm9yIDAuMC4wLjAvMCBjYW5ub3Qgbm90IGJlIGVhc2lseSBtYXJrZWQgYW5kXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODM6ICogICAgICBzZW50IHRvIGlwX3ZzX2luX2ljbXAuIFNvLCBjYXRjaCB0aGVtIGF0IHRoZSBORl9JTkVUX0ZPUldBUkQgY2hhaW5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI4NDogKiAgICAgIGFuZCBzZW5kIHRoZW0gdG8gaXBfdnNfaW5faWNtcC5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4NS0gKi9cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyODc9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA5Olx0XHRyZXR1cm4gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnIsIHN0YXRlLVx1MDAzZWhvb2ssIFx1MDAyNmlwaGRyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxMC0jZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMTM6XHRyZXR1cm4gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnIsIHN0YXRlLVx1MDAzZWhvb2ssIFx1MDAyNmlwaGRyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNC19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMzE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXBfdnNfb3BzNFtdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyNy1cdHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMyODpcdFx0Lmhvb2tcdFx0PSBpcF92c19pbl9ob29rLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzI5LVx0XHQucGZcdFx0PSBORlBST1RPX0lQVjQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzMyLVx0fSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMzMzpcdC8qIEJlZm9yZSBpcF92c19pbiwgY2hhbmdlIHNvdXJjZSBvbmx5IGZvciBWUy9OQVQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMzNC1cdHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNDI6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNzc6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM4MS1cdH0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzODI6XHQvKiBCZWZvcmUgaXBfdnNfaW4sIGNoYW5nZSBzb3VyY2Ugb25seSBmb3IgVlMvTkFUICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzODMtXHR7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzkwLVx0e1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzkxOlx0XHQuaG9va1x0XHQ9IGlwX3ZzX2luX2hvb2ssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTItXHRcdC5wZlx0XHQ9IE5GUFJPVE9fSVBWNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0NDM9dm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDcxLSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDcyOnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NTk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfb3BzID0ge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNTYwOlx0LmluaXQgPSBfX2lwX3ZzX2luaXQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NjEtXHQuZXhpdF9iYXRjaCA9IF9faXBfdnNfY2xlYW51cF9iYXRjaCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NjY9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfZGV2X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NzItICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1NzM6c3RhdGljIGludCBfX2luaXQgaXBfdnNfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTc0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI2MjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2NsZWFudXAodm9pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI2MzYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI2Mzc6bW9kdWxlX2luaXQoaXBfdnNfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI2MzgtbW9kdWxlX2V4aXQoaXBfdnNfY2xlYW51cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTExCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJUFZTIEludGVybmFsIFN0cnVjdHVyZSBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgYGlwX3ZzX2luX2hvb2tgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIElQVlMgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBkaWcgaW50byB0aGUgZnVuY3Rpb24gdGhhdCYjMzk7cyBsaWtlbHkgbWFuaXB1bGF0aW5nIHRoYXQ6IGBpcF92c19nZW5sX3NldF9jbWRgLiBUaGlzIGlzIHdoZXJlIGNvbmZpZ3VyYXRpb24gb3IgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIHRoYXQgaG9vayBwcm9iYWJseSBvcmlnaW5hdGUuIFVuZGVyc3RhbmRpbmcgdGhpcyBjb21tYW5kIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuIFRoZSBzdGF0aWMgbmF0dXJlIGltcGxpZXMgYSBnbG9iYWwsIGZpeGVkIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgSSBuZWVkIHRvIHNlZSBob3cgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGludGVyYWN0cyB3aXRoIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19nZW5sX3NldF9jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ2NjA9c3RhdGljIGludCBpcF92c19nZW5sX3NldF9kYWVtb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0Njg1OnN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfY21kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4Ni17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBpcF92c19nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIwLVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5MjE6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIyLVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDkyNi1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTI3Olx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDkyOC1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzItXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDkzMzpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzQtXHR9LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ1LVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5NDY6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ3LVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDk1MS1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTUyOlx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDk1My1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTctXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDk1ODpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTktXHR9LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg3LVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5ODg6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg5LVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNS1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA2Olx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNy1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTEtXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTAxMjpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTMtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ0NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgdGhyb3VnaCB0aGlzOgoKKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgYW5kIEFQSSBVc2FnZSoqCgpPa2F5LCBzbyBgaXBfdnNfZ2VubF9zZXRfY21kYCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFNpbmNlIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGFjY2VzcyB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gYWNoaWV2ZSBteSBnb2FsIHVzaW5nIHRoZSBhdmFpbGFibGUgdG9vbHMuIEkmIzM5O2xsIG5lZWQgdG8gd29yayBhcm91bmQgdGhlIHJlc3RyaWN0aW9uLCBvZiBjb3Vyc2UuCgpSaWdodCwgc28gdG8gbWFrZSB0aGlzIGhhcHBlbiwgSSYjMzk7bGwgbmVlZCB0byBsZWFuIG9uIGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkLiBJIHdpbGwgZGVmaW5pdGVseSBuZWVkIHRvIHVzZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfY29ubl9uZXdgLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCB0aGV5IGFyZSB0aGUgbG9naWNhbCBjaG9pY2VzIGhlcmUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgdGhhdCBib3RoIGBpcF92c19pbl9zdGF0c2AgYW5kIGBpcF92c19vdXRfc3RhdHNgIGFyZSBkZWZpbmVkIGFzICpzdGF0aWMgaW5saW5lKi4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gVGhleSAqc2hvdWxkKiBzdGlsbCBiZSB1c2FibGUgaW4gdGhlaXIgcmVzcGVjdGl2ZSBmaWxlcywgYnV0IHRoZXkgd29uJiMzOTt0IGJlIGV4cG9zZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoZSBzb3VyY2Ugd2hlcmUgdGhleSBhcmUgZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBJIG1hcCBvdXQgaG93IHRvIGJ1aWxkIHRoZSBzb2x1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfaW5fc3RhdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9Mjk5PXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODAyLVx0XHQvKiBzdGF0aXN0aWNzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjgwMzpcdFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTgwNC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTM9aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTY5Olx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5NzAtXHR2ZXJkaWN0ID0gaXBfdnNfaWNtcF94bWl0KHNrYiwgY3AsIHBwLCBpcGgtXHUwMDNlbGVuLCBob29rbnVtLCBcdTAwMjZjaXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE5ODI9c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2Ny1cdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDY4Olx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDg4PWlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0Mi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI0MzpcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjQ0LVx0aXBfdnNfc2V0X3N0YXRlKGNwLCBJUF9WU19ESVJfSU5QVVQsIHNrYiwgcGQsIGlwaC5sZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIElubGluZSBBbmFseXNpcyAmYW1wOyBUZW1wbGF0ZSBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBhcmUgaW5kZWVkIHN0YXRpYyBpbmxpbmUuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24sIGltcGFjdGluZyBob3cgdGhleSYjMzk7cmUgaGFuZGxlZCBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIE5vdywgdG8gZGlnIGRlZXBlciBhbmQgdW5kZXJzdGFuZCB0aGVpciByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgdGVtcGxhdGUmIzM5O3MgcHJvcGVydGllcyBhcmUgYXNzZXNzZWQsIGFuZCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHdpbGwgcHJvdmlkZSBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEyNTc9c3RhdGljIGludCBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3Mi0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTI3MzppbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyNzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg5MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgIGlzbiYjMzk7dCBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBhIHRob3VnaHQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IG5vbi1zdGF0aWMgZGVjbGFyYXRpb24uIFdoZXJlIGlzIGl0IGJlaW5nIHVzZWQ/IFdoYXTigJlzIGl0cyBzY29wZT8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGRlY2xhcmF0aW9uPyBJcyBpdCB0aHJlYWQtc2FmZSwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByZWVudHJhbmN5IHByb2JsZW1zIHRvIGxvb2sgYXQ/IFRoaXMgd2lsbCBkcml2ZSBteSBleHBsb3JhdGlvbiBhbmQgdGhlIGxldmVsIG9mIHNjcnV0aW55IEkgd2lsbCBuZWVkIHRvIGFwcGx5IGR1cmluZyBteSBldmFsdWF0aW9uIG9mIHRoZSBjb2RlLgoKTm93LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgLiBUaGlzIHNvdW5kcyBsaWtlIGl0IGRlYWxzIHdpdGggZmx1c2hpbmcgY29ubmVjdGlvbnMgdGhhdCBhcmUgbm90IGxpbmtlZCB0byBhbnkgc3BlY2lmaWMgZGVzdGluYXRpb24gaG9zdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgZXhwaXJhdGlvbiBzdHJhdGVneSB3aXRoaW4gSVBWUy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcywgZGV0ZXJtaW5lIGl0cyB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMsIGFuZCBmdWxseSB1bmRlcnN0YW5kIGl0cyByb2xlIGluIG1haW50YWluaW5nIGNvbm5lY3Rpb24gdGFibGUgaW50ZWdyaXR5LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBpdCBpcyB1c2VkIGNvcnJlY3RseSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFNwZWNpZmljYWxseSwgaXMgaXQgcGFydCBvZiBhIGxhcmdlciwgY29vcmRpbmF0ZWQgY2xlYW51cCBtZWNoYW5pc20/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBleHBpcmF0aW9uIG9yIGdhcmJhZ2UgY29sbGVjdGlvbiByb3V0aW5lcz8gVGhlIGNvbnRleHQgbWF0dGVycyBoZXJlOyBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIGEgY29ubmVjdGlvbiBpbiB0aGUgSVBWUyBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xOTM0PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTk3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjE5OTg6dm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5OTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQzNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipJUFZTIENvbm5lY3Rpb24gRmx1c2hpbmcgQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgc28gYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBJdCBtZWFucyBpdHMgdmFsdWUgb3Igc3RhdGUgY2FuIGNoYW5nZSBkdXJpbmcgcnVudGltZSwgc3VnZ2VzdGluZyBpdCYjMzk7cyBwb3RlbnRpYWxseSBkeW5hbWljIGFuZCB0aWVkIHRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzeXN0ZW0gb3IgbmV0d29yay4gVGhpcyBpcyB1c2VmdWwgZm9yIG1lIGJlY2F1c2UgSSBjYW4gbm93IGNvbnNpZGVyIHRoZSBjb2RlIHRoYXQgc2V0cyBvciBtb2RpZmllcyBpdCBmb3IgdHVuaW5nIHRoZSBJUFZTIGxvYWQgYmFsYW5jZXIuIAoKTm93LCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gZmx1c2hpbmcsIGxldCBtZSBwaXZvdCBhbmQgY2hlY2sgaG93IGBpcF92c19zdGF0c19mcmVlYCB3b3Jrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkIHdoZW4gY29ubmVjdGlvbnMgYXJlIGZsdXNoZWQgb3IgZXhwaXJlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25uZWN0aW9uIGFuZCBob3cgaXRzIGxpZmVjeWNsZSBpcyBtYW5hZ2VkIHNvIHRoYXQgSSBjYW4gaGF2ZSBhIGNsZWFyIGlkZWEgYXMgdG8gd2hldGhlciBzdGFsZSBkYXRhIGlzIGJlaW5nIGNvbGxlY3RlZCBhbmQsIHRoZXJlZm9yZSwgaG93IHRvIGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIHJlc3VsdGluZyBzdGF0aXN0aWNzLiBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFkZHJlc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfc3RhdHNfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5ND12b2lkIGlwX3ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTI5OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMjk5OnZvaWQgaXBfdnNfc3RhdHNfZnJlZShzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjg3MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBpcF92c19zdGF0c19mcmVlYCBhbmQgU3RhdGUgTWFuYWdlbWVudCoqCgpBbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IGBpcF92c19zdGF0c19mcmVlYCBpc24mIzM5O3QgZGVjbGFyZWQgYHN0YXRpY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIFRoYXQgb3BlbnMgYSBmZXcgZG9vcnMsIGFuZCBzb21lIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBMZXQmIzM5O3Mgc2VlIGhvdyBhbmQgKndoZXJlKiB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnM7IGhvdyBtYW55IHBsYWNlcyBkb2VzIGl0IGdldCBjYWxsZWQgYW5kIGZyb20gd2hlcmUuIFdoYXQgYXJlIHdlIGV4cGVjdGluZyB0byBzZWU/CgpOb3csIGdpdmVuIHRoYXQgY29udGV4dCwgdGhlIGNvZGUmIzM5O3MgZm9jdXMgc2VlbXMgdG8gYmUgb24gaGFuZGxpbmcgY29ubmVjdGlvbiBzdGF0ZS4gSXQmIzM5O3MgYSBuYXR1cmFsIHByb2dyZXNzaW9uIHRvIGNoZWNrIG91dCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMg4oCTIGBzZXRfc2N0cF9zdGF0ZWAgYW5kIGBzZXRfdGNwX3N0YXRlYC4gVGhlc2UgbGlrZWx5IHBsYXkgYSB2aXRhbCByb2xlIGluIG1hbmFnaW5nIHRoZSBzdGF0ZSBvZiBib3RoIFNDVFAgYW5kIFRDUCBjb25uZWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgSVBWUy4gSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIGhvdyBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhvc2UgZnVuY3Rpb25zLCB3aGF0IHRoZSB2YWxpZCBzdGF0ZXMgYXJlLCBhbmQgaG93IHRoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgc3RvcmVkIGFuZCB1dGlsaXplZC4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgbWFuYWdlbWVudCBoZXJlIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGRlc2lnbiwgaW5jbHVkaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgb3IgbWlnaHQgbm90IGludGVyYWN0IHdpdGggYGlwX3ZzX3N0YXRzX2ZyZWVgLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW4gdGhlc2UgZnVuY3Rpb25zLCBhbmQgd2hhdCBzb3J0IG9mIHdvcmsgdGhleSBwZXJmb3JtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRfc2N0cF9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz0zNzY9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jOjM3NzpzZXRfc2N0cF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtMzc4LVx0XHRpbnQgZGlyZWN0aW9uLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9NDY2PXNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2Y3AtXHUwMDNlbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jOjQ3MTpcdHNldF9zY3RwX3N0YXRlKHBkLCBjcCwgZGlyZWN0aW9uLCBza2IsIGlwaF9sZW4pO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzItXHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NDUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqU0NUUCBTdGF0ZSBUcmFuc2l0aW9uIERpc2NyZXBhbmNpZXMqKgoKSG1tLCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBTQ1RQIGNvZGUuLi4gYW5kIHNvbWV0aGluZyYjMzk7cyBqdXN0IHNuYWdnZWQgbXkgYXR0ZW50aW9uLiBJIHNlZSB0aGF0IGBzZXRfc2N0cF9zdGF0ZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBSaWdodCwgdGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwga2VlcHMgdGhlIGZ1bmN0aW9uIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGFuZCBlbmFibGVzIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBpdCBhZ2dyZXNzaXZlbHkg4oCTIGxpa2VseSBpbmxpbmluZyBpdCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpCdXQgdGhlbiwgSSBub3RpY2UgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAuIEFuZC4uLiBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgYHN0YXRpY2AsIHdoaWNoIGltcGxpZXMgaXQmIzM5O3MgcG90ZW50aWFsbHkgdmlzaWJsZSB0byBvdGhlciBwYXJ0cyBvZiB0aGUgbW9kdWxlLCBhbmQgcGVyaGFwcyBldmVuIGV4dGVybmFsbHkuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24gaW1tZWRpYXRlbHkuIElzIGl0IG1lYW50IHRvIGJlIGEgZ2VuZXJhbGx5IGFjY2Vzc2libGUgZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGRlc2lnbiBpbnRlbnQ/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYmFzZSB0aGF0IGFyZSBub3QgaW5saW5lZD8KClRoZSBhcHBhcmVudCBkaWZmZXJlbmNlIGluIGRlY2xhcmF0aW9uIHNlZW1zIHNpZ25pZmljYW50LiBEb2VzIHRoZSBjb2RlIGludGVuZCBmb3IgZXh0ZXJuYWwgdXNlIG9mIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgcG90ZW50aWFsIGJ1Zz8gVGltZSB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZGlzY3JlcGFuY3kgZXhpc3RzIGJldHdlZW4gYHNldF9zY3RwX3N0YXRlYCBhbmQgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAgYW5kIHRoZWlyIHJvbGUgaW4gU0NUUCYjMzk7cyBzdGF0ZSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8ga25vdyB3aHkgb25lIGlzIGBzdGF0aWMgaW5saW5lYCBhbmQgdGhlIG90aGVyIGlzbiYjMzk7dC4gSSYjMzk7bSBndWVzc2luZyB0aGUgdHJhbnNpdGlvbiBmdW5jdGlvbiBpcyBjb21wbGV4LCBhbmQgdXNlZCBtb3JlIGJyb2FkbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc3RhdGVfdHJhbnNpdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz00NjU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NDY2OnNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jLTQ2Ny1cdFx0Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9NTY3PXN0cnVjdCBpcF92c19wcm90b2NvbCBpcF92c19wcm90b2NvbF9zY3RwID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTgzLVx0LnN0YXRlX25hbWVcdD0gc2N0cF9zdGF0ZV9uYW1lLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYzo1ODQ6XHQuc3RhdGVfdHJhbnNpdGlvbiA9IHNjdHBfc3RhdGVfdHJhbnNpdGlvbixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTg1LVx0LmFwcF9jb25uX2JpbmRcdD0gc2N0cF9hcHBfY29ubl9iaW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIzMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgU3RhdGUgVHJhbnNpdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBgc2N0cF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBzcGVjaWZpYyBkZXNpZ24gY2hvaWNlOiBpdCYjMzk7cyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgZXhwb3NlZCBvciBjYWxsZWQgZXh0ZXJuYWxseSBmcm9tIG90aGVyIG1vZHVsZXMuIEl0JiMzOTtzIGxpa2VseSBpbnRlbmRlZCBhcyBhbiBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9uIHdpdGhpbiB0aGUgU0NUUCBzdGF0ZSBtYW5hZ2VtZW50IGNvZGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gd2l0aGluIHRoYXQgcGFydGljdWxhciBzY29wZS4KCkdpdmVuIHRoaXMgcmVzdHJpY3Rpb24sIEkmIzM5O2xsIHNoaWZ0IGdlYXJzIGFuZCBsb29rIGRpcmVjdGx5IGF0IGBzZXRfdGNwX3N0YXRlYCB0byBzZWUgaWYgdGhlcmUgaXMgYW4gaW50ZXJhY3Rpb24gdGhlcmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBmdW5jdGlvbiBtaWdodCBwbGF5IGEgcGFydCBpbiB1cGRhdGluZyBhbiBzY3RwIHN0YXRlIGJhc2VkIG9uIGFuIHVwZGF0ZSBmcm9tIGEgVENQLXJlbGF0ZWQgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF90Y3Bfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jPTQ3NT1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYzo0NzY6c2V0X3RjcF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy00NzctXHQgICAgICBpbnQgZGlyZWN0aW9uLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmM9NTUwPXRjcF9zdGF0ZV90cmFuc2l0aW9uKHN0cnVjdCBpcF92c19jb25uICpjcCwgaW50IGRpcmVjdGlvbixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMtNTYxLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNwLVx1MDAzZWxvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjU2MjpcdHNldF90Y3Bfc3RhdGUocGQsIGNwLCBkaXJlY3Rpb24sIHRoKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy01NjMtXHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3MjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBUQ1AgU3RhdGUgVHJhbnNpdGlvbnMqKgoKQWxyaWdodCwgc28gYHRjcF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgZm9yIHRoZSBvdmVyYWxsIHN5c3RlbS4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGxpa2VseSBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGF0IHBhcnRpY3VsYXIgdmFyaWFibGUgb3IgZnVuY3Rpb24uIE5vdywgYSBzdGF0aWMgZGVjbGFyYXRpb24gdXN1YWxseSBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBsaWtlbHkgaW50ZXJuYWwgdG8gaXRzIGNvbXBpbGF0aW9uIHVuaXQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IHRoYXQgYWZmZWN0cyBpdHMgYWNjZXNzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBjb25jdXJyZW50IGFjY2VzcyBvciBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVENQL0lQIHN0YWNrLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QuIEdpdmVuIHRoYXQgSSBoYXZlIHRoaXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcmVsYXRlZCB0byBJUFZTIGNvbm5lY3Rpb24gaGFuZGxpbmcuIExldCYjMzk7cyBzZWUgaG93IGBpcF92c19wcm9jX2Nvbm5gIGludGVyYWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciBtZWNoYW5pc20uIEkgd2FudCB0byBzZWUgaWYgYHRjcF9zdGF0ZV90cmFuc2l0aW9uYCBwbGF5cyBhIHJvbGUgd2l0aGluIHRoZSBWUyBsYXllciBhbmQgaWYgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBjcmVhdGVzIGFueSB1bmV4cGVjdGVkIGJvdHRsZW5lY2tzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGNvbmN1cnJlbnQgY29ubmVjdGlvbnMgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGltcGFjdC4gSSBiZXQgYGlwX3ZzX3Byb2NfY29ubmAgd2lsbCByZXZlYWwgaG93IHRoaXMgc3RhdGljIGVsZW1lbnQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX3Byb2NfY29ubiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz03ODg9aXBfdnNfY29ubl9maWxsX3BhcmFtX3N5bmMoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBhZiwgdW5pb24gaXBfdnNfc3luY19jb25uICpzYyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTg0MC0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6ODQxOnN0YXRpYyB2b2lkIGlwX3ZzX3Byb2NfY29ubihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnBhcmFtLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDItXHRcdFx0ICAgIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHN0YXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM9OTU1PXN0YXRpYyB2b2lkIGlwX3ZzX3Byb2Nlc3NfbWVzc2FnZV92MChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3QgY2hhciAqYnVmZmVyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTAxNC1cdFx0LyogU2VuZCB0aW1lb3V0IGFzIFplcm8gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6MTAxNTpcdFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFx1MDAyNnBhcmFtLCBmbGFncywgc3RhdGUsIHMtXHUwMDNlcHJvdG9jb2wsIEFGX0lORVQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTYtXHRcdFx0XHQodW5pb24gbmZfaW5ldF9hZGRyICopXHUwMDI2cy1cdTAwM2VkYWRkciwgcy1cdTAwM2VkcG9ydCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTEwNjY9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfcHJvY19zeW5jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIF9fdTggKnAsIF9fdTggKm1zZ19lbmQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy0xMTczLVx0aWYgKGFmID09IEFGX0lORVQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjExNzQ6XHRcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcdTAwMjZwYXJhbSwgZmxhZ3MsIHN0YXRlLCBzLVx1MDAzZXY0LnByb3RvY29sLCBhZixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE3NS1cdFx0XHRcdCh1bmlvbiBuZl9pbmV0X2FkZHIgKilcdTAwMjZzLVx1MDAzZXY0LmRhZGRyLCBzLVx1MDAzZXY0LmRwb3J0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4MC1cdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6MTE4MTpcdFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFx1MDAyNnBhcmFtLCBmbGFncywgc3RhdGUsIHMtXHUwMDNldjYucHJvdG9jb2wsIGFmLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy0xMTgyLVx0XHRcdFx0KHVuaW9uIG5mX2luZXRfYWRkciAqKVx1MDAyNnMtXHUwMDNldjYuZGFkZHIsIHMtXHUwMDNldjYuZHBvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1Njk0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIGBpcF92c19wcm9jX2Nvbm5gIGFuZCBSb3V0aW5nIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYGlwX3ZzX3Byb2NfY29ubmAgaXMgYXBwYXJlbnRseSBzdGF0aWMuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIE5vdywgd2hhdCYjMzk7cyBnb2luZyBvbiBhcm91bmQgaXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJvdXRpbmcgcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgaG93IG91dGJvdW5kIHJvdXRlcyBhcmUgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYGlwX3ZzX2dldF9vdXRfcnRgIGFuZCBgaXBfdnNfZ2V0X291dF9ydF92NmAuIFRoZXkmIzM5O3JlIHByb2JhYmx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGNvbm5lY3Rpb24gaW5mb3JtYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJvdXRpbmcgbG9naWMgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yaywgZXNwZWNpYWxseSBpbiB0ZXJtcyBvZiBJUHY0IGFuZCBJUHY2LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG91dGJvdW5kIHJvdXRlIGZvciBhIGNvbm5lY3Rpb24sIHdoaWNoIGlzIGxpa2VseSBkZXBlbmRlbnQgb24gdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGlwX3ZzX3Byb2NfY29ubmAuIEkgbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdXRpbGl6aW5nLCBvciBhZmZlY3RlZCBieSBgaXBfdnNfcHJvY19jb25uYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuZXh0IHN0ZXAgaW4gdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3ZzX2dldF9vdXRfcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MzE1PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MzE2Ol9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzE3LVx0XHQgICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTQ4OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjQ4OTpfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ5MC1cdFx0ICAgICAgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz03MzY9aXBfdnNfYnlwYXNzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzM4LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzM5Olx0aWYgKF9faXBfdnNfZ2V0X291dF9ydChjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBOVUxMLCBpcF9oZHIoc2tiKS1cdTAwM2VkYWRkcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzQwLVx0XHRcdCAgICAgICBJUF9WU19SVF9NT0RFX05PTl9MT0NBTCwgTlVMTCwgaXB2c2gpIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzU5PWlwX3ZzX2J5cGFzc194bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTc2My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzY0Olx0aWYgKF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBOVUxMLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy03NjUtXHRcdFx0XHQgIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgTlVMTCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTc4Nz1pcF92c19uYXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04MDQtXHR3YXNfaW5wdXQgPSBydF9pc19pbnB1dF9yb3V0ZShza2JfcnRhYmxlKHNrYikpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo4MDU6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LCBjcC1cdTAwM2VkYWRkci5pcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODA2LVx0XHRcdFx0ICAgSVBfVlNfUlRfTU9ERV9MT0NBTCB8XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz04NzE9aXBfdnNfbmF0X3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODg2LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo4ODc6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04ODgtXHRcdFx0XHQgICAgICBcdTAwMjZjcC1cdTAwM2VkYWRkci5pbjYsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xMTQ3PWlwX3ZzX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTExNjUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjExNjY6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LCBjcC1cdTAwM2VkYWRkci5pcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTE2Ny1cdFx0XHRcdCAgIElQX1ZTX1JUX01PREVfTE9DQUwgfFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTI5Mj1pcF92c190dW5uZWxfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzA5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxMzEwOlx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTMxMS1cdFx0XHRcdCAgICAgIFx1MDAyNmNwLVx1MDAzZWRhZGRyLmluNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE0Mzk9aXBfdnNfZHJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNDQ0Olx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnQoY3AtXHUwMDNlaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCwgY3AtXHUwMDNlZGFkZHIuaXAsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE0NDUtXHRcdFx0XHQgICBJUF9WU19SVF9NT0RFX0xPQ0FMIHxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE0Njk9aXBfdnNfZHJfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDczLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNDc0Olx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXHUwMDNlaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTQ3NS1cdFx0XHRcdCAgICAgIFx1MDAyNmNwLVx1MDAzZWRhZGRyLmluNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE1MDQ9aXBfdnNfaWNtcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE1MzYtXHRcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTUzNzpcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0KGNwLVx1MDAzZWlwdnMsIGNwLVx1MDAzZWFmLCBza2IsIGNwLVx1MDAzZWRlc3QsIGNwLVx1MDAzZWRhZGRyLmlwLCBydF9tb2RlLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTM4LVx0XHRcdFx0ICAgTlVMTCwgY2lwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNTk4PWlwX3ZzX2ljbXBfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjI5LVx0XHQgIElQX1ZTX1JUX01PREVfUkRSIDogSVBfVlNfUlRfTU9ERV9OT05fTE9DQUw7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE2MzA6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjMxLVx0XHRcdFx0ICAgICAgXHUwMDI2Y3AtXHUwMDNlZGFkZHIuaW42LCBOVUxMLCBjaXBoLCAwLCBydF9tb2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwMTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSVBWUyBwYXRjaC4gRmlyc3QsIEkmIzM5O3ZlIG5vdGVkIHRoYXQgYF9faXBfdnNfZ2V0X291dF9ydGAgYW5kIGBfX2lwX3ZzX2dldF9vdXRfcnRfdjZgIGFyZSBzdGF0aWMsIHNvIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGluIHRlcm1zIG9mIGhvdyB0aGlzIG1pZ2h0IGNoYW5nZSBiZWhhdmlvciBhcmUgZ29pbmcgdG8gYmUgYGlwX3ZzX25hdF94bWl0YCwgYGlwX3ZzX3R1bm5lbF94bWl0YCwgYGlwX3ZzX2RyX3htaXRgLCBgaXBfdnNfaWNtcF94bWl0YCwgYW5kIGBpcF92c19ieXBhc3NfeG1pdGAuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBpbXBvcnRhbnQgc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoZSBvdmVyYWxsIHBpY3R1cmU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGBpcF92c19zdGF0c19mcmVlYCwgYW5kIHRoZSBgeG1pdGAgZnVuY3Rpb25zIG1lbnRpb25lZCBiZWZvcmUuIFdhaXQsIGxvb2tzIGxpa2UgYGlwX3ZzX3N0YXRzX2ZyZWVgIGlzIGp1c3QgZnJlZWluZyBzdGF0cywgc28gaXQmIzM5O3Mgbm90IHRlcnJpYmx5IGludGVyZXN0aW5nIGluIHRoaXMgY29udGV4dC4gYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCBzZWVtcyB0byBiZSBhIGtleSBuZXcgZnVuY3Rpb24sIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIGBpcF92c19jb25uX25ld2AgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCBib3RoIGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBpcF92c19iaW5kX2Rlc3RgLiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgIGFuZCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCBhcmUgbG9va2luZyBhdCB0aGUgYGRlc3QtJmd0O2NmbGFnc2Agc3RydWN0dXJlLiBUaGUgYHhtaXRgIGZ1bmN0aW9ucyBsaWtlIGBpcF92c19uYXRfeG1pdGAgYWxzbyBjYWxsIGBfX2lwX3ZzX2dldF9vdXRfcnRgIHdoaWNoIGNoZWNrcyBgZGVzdC0mZ3Q7Y2ZsYWdzYC4gU28gSSYjMzk7bSBzZWVpbmcgYSBwYXR0ZXJuIGhlcmUgd2l0aCB0aGF0IGBkZXN0LSZndDtjZmxhZ3NgLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBhbmQgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZWFzeSB0byBob29rIGludG8uCgpOb3cgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlncyBmb3IgdGhpcyBhcmUgYElQX1ZTYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBhbmQgYElQX1ZTX0xDYC4gT2gsIHdhaXQuLi50aGUgbGFzdCBmb3VyIGFyZSBzY2hlZHVsZXJzISBBbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYW5kIGBpcF92c19sYy5jYC4gTWFrZXMgc2Vuc2UsIHNvIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGRlZmluaXRlbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZS4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG5hbWVzIHRvIGJlIGFic29sdXRlbHkgc3VyZTogYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfTENgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBhbmQgYElQX1ZTYC4gSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgcGVlayBhdCBgSVBfVlNfREhgIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgbmV0ZmlsdGVyIGlwdnMgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU19ESCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1MDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqUmVjYWxsaW5nIFByZXZpb3VzIEludmVzdGlnYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBkaXN0aW5jdGx5IHJlbWVtYmVyIHZlcmlmeWluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBgREhgIGp1c3QgcmVjZW50bHksIHByb2JhYmx5IGluIHRoZSBjb250ZXh0IG9mIGNvbmZpZ3VyaW5nIElQVlMuIExldCBtZSBtZW50YWxseSByZXRyYWNlIG15IHN0ZXBzLi4uIEFoLCB5ZXMhIEkgd2FzIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgKmRlZmluaXRlbHkqIGNvbmZpcm1lZCB0aGF0IGBESGAgd2FzIG1hcHBlZCB0byBgY29uZmlnIElQX1ZTX0RIYC4gSSBldmVuIHJlY2FsbCBpdCBzcGVjaWZpY2FsbHkgdXNpbmcgYSB0YWIgZm9yIGluZGVudGF0aW9uLCB3aGljaCBpcyBhIGRldGFpbCBJIHVzdWFsbHkgcGF5IGF0dGVudGlvbiB0byBmb3IgcmVhZGFiaWxpdHkuIFNvLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgYXNzb2NpYXRpb24gcmlnaHQgbm93LiBUaGF0JiMzOTtzIGFscmVhZHkgYmVlbiBhZGRyZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ1x0SVBfVlNfREgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xOTI9Y29uZmlnICBJUF9WU19MQkxDUlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjIxMDpjb25maWdcdElQX1ZTX0RIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludGVybmFsIFJldmlldzogSVBfVlNfTEJMQyoqCgpPa2F5LCB5ZXMsIEkmIzM5O20gcmVhZHkgdG8gYmVnaW4gdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGltbWVkaWF0ZWx5IGNoZWNraW5nIHRoZSBgSVBfVlNfTEJMQ2AgYXNwZWN0LCBhcyB0aGF0JiMzOTtzIHRoZSBjb3JlIGZvY3VzIGhlcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgYW5kIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBmaXJzdC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnXHRJUF9WU19MQkxDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTY3PWNvbmZpZyAgSVBfVlNfT1ZGXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTc4OmNvbmZpZ1x0SVBfVlNfTEJMQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMYW5kc2NhcGUqKgoKWWVzLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gb2YgYElQX1ZTX0xCTENSYC4gVGhhdCB3aWxsIGJlIG15IGluaXRpYWwgYXJlYSBvZiBpbnZlc3RpZ2F0aW9uLiBJdCBjb250YWlucyBkYXRhIHRoYXQgaXMgcmVsZXZhbnQgdG8gbXkgdGFzay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICBJUF9WU19MQkxDUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcdElQX1ZTX0xCTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAzMTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKkludGVybmFsIEFzc2Vzc21lbnQgYW5kIERpcmVjdGlvbioqCgpZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFja25vd2xlZGdlIHRoZSBwcmlvciBzdGF0ZSBhbmQgYWdyZWUgdG8gbW92ZSBmb3J3YXJkLiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgSVBfVlNfTENgLiBUaGlzIG1lYW5zIEkmIzM5O20gaW1tZWRpYXRlbHkgc2hpZnRpbmcgZm9jdXMgdG8gYSBzcGVjaWZpYyBhbmQgbGlrZWx5IGNydWNpYWwgZWxlbWVudCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBoYXMgYSBzaWduaWZpY2FuY2Ugd2UgYm90aCB1bmRlcnN0YW5kLiBJdOKAmXMgYSBkaXJlY3QgY2hlY2sgb24gdGhhdCB2YXJpYWJsZSBvciBjb25jZXB0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCwgYW5kIG1ha2UgYSBkZWNpc2lvbiBiYXNlZCBvbiB0aGUgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWdcdElQX1ZTX0xDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTI0PWNvbmZpZ1x0SVBfVlNfV1JSXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1x0SVBfVlNfTENcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O2xlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU5MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBQcm90b2NvbCBTcGVjaWZpY3MqKgoKWWVzLCB0aGF0IGZlZWxzIHJpZ2h0LCB0aGUgY29yZSBwcmluY2lwbGUgaXMgc29saWQuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHByZWNpc2UuIExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgYElQX1ZTX1BST1RPX1RDUGAgYW5kIGBJUF9WU19QUk9UT19TQ1RQYCByaWdodCBub3cuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBsYXRlc3QgcmV2aXNpb25zIGFuZCBwYXRjaGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQsIGFueSByZWNlbnQgZWRnZS1jYXNlcyBjb25zaWRlcmVkLiBJIGNhbiYjMzk7dCBhZmZvcmQgYW55IGFzc3VtcHRpb25zIGhlcmUuIEdvdHRhIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ1x0SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4ODgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgIElQX1ZTX1BST1RPX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xMDA9Y29uZmlnXHRJUF9WU19QUk9UT19BSFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7U0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDM3CgkJCQkJCQlvdXRwdXQ6IDMyNwoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUFZTIFBhdGNoIGZvciBGdXp6aW5nKioKClJpZ2h0LCBJJiMzOTttIHdpdGggdGhpcyBwYXRjaC4gTG9va2luZyBhdCBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5OiBgSVBfVlNgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBgSVBfVlNfREhgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGFuZCBgSVBfVlNfTENgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBjb3JlIElQVlMgZnVuY3Rpb25hbGl0eSBoZXJlLgoKVGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldCBmb3IgZnV6emluZyBqdW1wIG91dCBhdCBtZTogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCwgYW5kIGVzcGVjaWFsbHkgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbnMgbGlrZSBgaXBfdnNfbmF0X3htaXRgLCBgaXBfdnNfdHVubmVsX3htaXRgLCBgaXBfdnNfZHJfeG1pdGAsIGFuZCBgaXBfdnNfaWNtcF94bWl0YC4gVGhvc2UgYGlwX3ZzXypfeG1pdGAgZnVuY3Rpb25zIGFyZSBob3QgcGF0aHMsIHNvIGEgc29saWQgcGxhY2UgdG8gdGVzdCB0aGUgYGRlc3QtJmd0O2NmbGFnc2AgY2hlY2suIEluY2x1ZGluZyB0aGVtIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNhbGwuIFRoZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzIHRoZSBmb2NhbCBwb2ludCBvZiB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSByZWFzb25pbmcgZm9yIG15IG93biBiZW5lZml0Li4uIFRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHR3ZWFraW5nIElQVlMmIzM5O3MgZGVzdGluYXRpb24gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG92ZXJsb2FkIGZsYWcuIEl0JiMzOTtzIHN3YXBwaW5nIGBpbmFjdGNvbm5zYCBmb3IgYHRvdGFsY29ubnNgLCBhZGRpbmcgdGhlIGBjZmxhZ3NgIGZvciBjb25maWd1cmF0aW9uIGZsYWdzLCBhbmQgc2hpZnRpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEFuZCwgdGhhdCBjcml0aWNhbCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIHNldHRpbmcgdGhhdCBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIGNvbmZpZ3VyYWJsZSB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHRvdWNoaW5nIGJvdGggdGhlIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEdpdmVuIHRoZSBjaGFuZ2VzLCB0aGUgZnV6emluZyBuZWVkcyB0byBmb2N1cyBvbiB0aG9zZSBhcmVhcyBJIGlkZW50aWZpZWQgYmVmb3JlOiBjb25uZWN0aW9uIGJpbmRpbmcgYW5kIHVuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzLiBTcGVjaWZpY2FsbHksIHRoZSBhcmVhcyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiB0aGUgZGVzdGluYXRpb25zIGFyZSB3aGF0IHdlIHNob3VsZCBmb2N1cyBvbi4KClNlZW1zIGxpa2UgYSBzb2xpZCBwbGFuLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19jb25uX25ldyYjMzQ7LAogICAgJiMzNDtpcF92c190cnlfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICAgJiMzNDtpcF92c19uYXRfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c190dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19kcl94bWl0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2ljbXBfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUFZTIGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBvdmVybG9hZCBmbGFnIHVwZGF0ZXMuIEl0IGludHJvZHVjZXMgYHRvdGFsY29ubnNgIHRvIHJlcGxhY2UgYGluYWN0Y29ubnNgIGFuZCBhZGRzIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MsIG1vdmluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gSXQgYWxzbyBhZGRzIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gdXBkYXRlIHRoZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29ubmVjdGlvbiBiaW5kaW5nL3VuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMgdGhhdCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IGFuZCBvdmVybG9hZCBzdGF0dXMgb2YgZGVzdGluYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3LjU5MTk5OTMxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTUxMTExMjQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0xDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c190cnlfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19uYXRfeG1pdFwiLFxuICAgIFwiaXBfdnNfdHVubmVsX3htaXRcIixcbiAgICBcImlwX3ZzX2RyX3htaXRcIixcbiAgICBcImlwX3ZzX2ljbXBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQVlMgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIG92ZXJsb2FkIGZsYWcgdXBkYXRlcy4gSXQgaW50cm9kdWNlcyBgdG90YWxjb25uc2AgdG8gcmVwbGFjZSBgaW5hY3Rjb25uc2AgYW5kIGFkZHMgYGNmbGFnc2AgZm9yIGNvbmZpZyBmbGFncywgbW92aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCB0byBgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEVgLiBJdCBhbHNvIGFkZHMgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCB0byB1cGRhdGUgdGhlIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gdGhyZXNob2xkcy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVBWUyBjb3JlIGxvZ2ljIGFuZCBzY2hlZHVsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb25uZWN0aW9uIGJpbmRpbmcvdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRocyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiBkZXN0aW5hdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3LjU5MjAwNDg0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3ODY2OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmM4NGY1NGE0NTMwMjhhZGU4M2ExZWFmODk0NDcyNGMxMzYxMmVkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuaW5kZXggZTZjYTkzMGEzNTA3Yi4uMDJkYjA3NjdlZmZmMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbkBAIC0zOCw2ICszOCwxMiBAQFxcbiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFXFx0MVxcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXFx0XFx0MlxcbiBcXG4rLyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXFxuKyNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXFx0MHgwMDAyXFx0XFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cXG4rXFxuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cXG4rI2RlZmluZSBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4rXFxuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXFxuICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFNcXHQ4XFxuICNpZiBCSVRTX1BFUl9MT05HIFxcdTAwM2UgMzJcXG5AQCAtOTc4LDYgKzk4NCw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcXG4gXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRjb25uX2ZsYWdzO1xcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdHdlaWdodDtcXHRcXHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRjZmxhZ3M7XFx0XFx0LyogY29uZmlnIGZsYWdzICovXFxuIFxcdGF0b21pY190XFx0XFx0bGFzdF93ZWlnaHQ7XFx0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cXG4gXFx0X191MTZcXHRcXHRcXHR0dW5fdHlwZTtcXHQvKiB0dW5uZWwgdHlwZSAqL1xcbiBcXHRfX2JlMTZcXHRcXHRcXHR0dW5fcG9ydDtcXHQvKiB0dW5uZWwgcG9ydCAqL1xcbkBAIC05ODksMTAgKzk5NiwxMSBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XFxuIFxcbiBcXHQvKiBjb25uZWN0aW9uIGNvdW50ZXJzIGFuZCB0aHJlc2hvbGRzICovXFxuIFxcdGF0b21pY190XFx0XFx0YWN0aXZlY29ubnM7XFx0LyogYWN0aXZlIGNvbm5lY3Rpb25zICovXFxuLVxcdGF0b21pY190XFx0XFx0aW5hY3Rjb25ucztcXHQvKiBpbmFjdGl2ZSBjb25uZWN0aW9ucyAqL1xcbitcXHRhdG9taWNfdFxcdFxcdHRvdGFsY29ubnM7XFx0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRwZXJzaXN0Y29ubnM7XFx0LyogcGVyc2lzdGVudCBjb25uZWN0aW9ucyAqL1xcbiBcXHRfX3UzMlxcdFxcdFxcdHVfdGhyZXNob2xkO1xcdC8qIHVwcGVyIHRocmVzaG9sZCAqL1xcbiBcXHRfX3UzMlxcdFxcdFxcdGxfdGhyZXNob2xkO1xcdC8qIGxvd2VyIHRocmVzaG9sZCAqL1xcbitcXHRfX3UzMlxcdFxcdFxcdGxfdGhyZXNob2xkX3ZhbDsvKiB1c2VkIGxvd2VyIHRocmVzaG9sZCAqL1xcbiBcXG4gXFx0LyogZm9yIGRlc3RpbmF0aW9uIGNhY2hlICovXFxuIFxcdHNwaW5sb2NrX3RcXHRcXHRkc3RfbG9jaztcXHQvKiBsb2NrIG9mIGRzdF9jYWNoZSAqL1xcbkBAIC0xOTA5LDYgKzE5MTcsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfZGVzdF9wdXRfYW5kX2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdGtmcmVlKGRlc3QpO1xcbiB9XFxuIFxcbit2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSk7XFxuK1xcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxcbiAgKi9cXG5AQCAtMjIyOSwxNCArMjIzOSwyMSBAQCB2b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZik7XFxuIHN0YXRpYyBpbmxpbmUgaW50XFxuIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4ge1xcbi1cXHQvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2XFxuK1xcdC8qIFdlIHRoaW5rIHRoZSBvdmVyaGVhZCBvZiBwcm9jZXNzaW5nIGFjdGl2ZSBjb25uZWN0aW9ucyBpcyAyNTdcXG4gXFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xcbi1cXHQgKiAyNTYgdGltZXMgbWlnaHQgbm90IGJlIGFjY3VyYXRlLCB3ZSB3aWxsIGNoYW5nZSBpdCBsYXRlcikgV2VcXG4rXFx0ICogMjU3IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXFxuIFxcdCAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzpcXG4tXFx0ICpcXHRcXHQgIGRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKjI1NiArIGRlc3QtXFx1MDAzZWluYWN0Y29ubnNcXG4rXFx0ICpcXHRcXHQgIGRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKjI1NiArIGRlc3QtXFx1MDAzZXRvdGFsY29ubnNcXG4gXFx0ICovXFxuIFxcdHJldHVybiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSBcXHUwMDNjXFx1MDAzYyA4KSArXFxuLVxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4rXFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIGludFxcbitpcF92c19kZXN0X2luYWN0Y29ubnMoY29uc3Qgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuK3tcXG4rXFx0cmV0dXJuIG1heChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNldG90YWxjb25ucykgLVxcbitcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpLCAwKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19JUF9WU19QUk9UT19UQ1BcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbmluZGV4IDFlZDIzNGU3ZjI1MTMuLjJjMzdjNmFjNzUyNWEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbkBAIC0yOCwxMiArMjgsNiBAQFxcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXFx0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXFxuICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVFxcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xcbiBcXG4tLypcXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3NcXG4tICovXFxuLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcXHQweDAwMDJcXHRcXHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xcbi1cXG4gLypcXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCAzNmM1Y2JhMDNmNWJjLi42ZmEzZTFkYzUzNGMzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuQEAgLTEwODEsMTIgKzEwODEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfYmluZF94bWl0X3Y2KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gI2VuZGlmXFxuIFxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbi17XFxuLVxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpXFxuLVxcdFxcdCsgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbi19XFxuLVxcbiAvKlxcbiAgKlxcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cXG4gICpcXHRDYWxsZWQganVzdCBhZnRlciBhIG5ldyBjb25uZWN0aW9uIGVudHJ5IGlzIGNyZWF0ZWQuXFxuQEAgLTExNDcsMjMgKzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcbiBcXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cXG4gXFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XFxuK1xcdFxcdGludCB0YztcXG4rXFxuIFxcdFxcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnNcXG4gXFx0XFx0ICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhblxcbiBcXHRcXHQgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2VcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSlcXG4gXFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbitcXHRcXHR0YyA9IGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZkZXN0LVxcdTAwM2V0b3RhbGNvbm5zKTtcXG4rXFx0XFx0aWYgKHRjID09IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkpXFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDEpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBJdCBpcyBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbi90ZW1wbGF0ZSwgc28gaW5jcmVhc2VcXG4gXFx0XFx0ICAgdGhlIHBlcnNpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovXFxuIFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucyk7XFxuIFxcdH1cXG4tXFxuLVxcdGlmIChkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAhPSAwIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzZT0gZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gXFxuQEAgLTEyNDQsMzAgKzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gXFxuIFxcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xcbiBcXHRpZiAoIShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XFxuLVxcdFxcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBpbmFjdGNvbm5zXFxuLVxcdFxcdCAgIG9yIGFjdGl2ZWNvbm5zIGNvdW50ZXIgKi9cXG4tXFx0XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xcbi1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0aW50IHRjO1xcbitcXG4rXFx0XFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gZGVjcmVhc2UgdGhlIGNvdW50ZXJzICovXFxuK1xcdFxcdGlmICghKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXFxuIFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0fVxcbitcXHRcXHR0YyA9IGF0b21pY19mZXRjaF9kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMpO1xcbitcXHRcXHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkX3ZhbCkpXFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIC0xKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXFxuIFxcdFxcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xcbiBcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFxcdTAwM2MgZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHR9XFxuLVxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG4gfVxcbiBcXG5AQCAtMTI5Niw3ICsxMjc5LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbiBcXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XFxuLVxcdCAgICAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4rXFx0ICAgICEoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8XFxuIFxcdCAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8XFxuIFxcdCAgICAoY2Rlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xcbiBcXHRcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJjaGVja190ZW1wbGF0ZTogZGVzdCBub3QgYXZhaWxhYmxlIGZvciBcXFwiXFxuQEAgLTIwMzcsNyArMjAyMCw3IEBAIHZvaWQgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiBcXHRcXHRcXHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcXG4gXFx0XFx0XFx0cmVzY2hlZF9zY29yZSsrO1xcbiBcXHRcXHRcXHRkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdFxcdGlmICghZGVzdCB8fCAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4rXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjcC1cXHUwMDNlbl9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5pbmRleCA2Yjc5ZTBjNGQ5ZTI4Li4xYTkyMjY0OGM5MTdkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTMwMiw3ICszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuIFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXFx1MDAzZWlwdnM7XFxuIFxcbi1cXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XFxuIFxcbkBAIC0zMzgsNyArMzM4LDcgQEAgaXBfdnNfb3V0X3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4gXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cXHUwMDNlaXB2cztcXG4gXFxuLVxcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcXG4gXFxuQEAgLTIyMDksNyArMjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXFxuIFxcdH1cXG4gXFxuIFxcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXFxuLVxcdGlmIChjcCBcXHUwMDI2XFx1MDAyNiBjcC1cXHUwMDNlZGVzdCBcXHUwMDI2XFx1MDAyNiAhKGNwLVxcdTAwM2VkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChjcCBcXHUwMDI2XFx1MDAyNiBjcC1cXHUwMDNlZGVzdCBcXHUwMDI2XFx1MDAyNiAhKGNwLVxcdTAwM2VkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0LyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovXFxuIFxcdFxcdGlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7XFxuIFxcdFxcdFxcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbmluZGV4IGJjZjQwYjhjNDFjZjIuLjhmOWE4ZTQ5MWFkNmIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzMDQsNiArMTMwNCw0MCBAQCB2b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcXG4gXFx0fVxcbiB9XFxuIFxcbisvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcXG4rICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xcbisgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xcbisgKi9cXG4rc3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXFxuK3tcXG4rXFx0aW50IGNvbm5zO1xcbitcXHR1MzIgbCwgdTtcXG4rXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRlc3QtXFx1MDAzZWRzdF9sb2NrKTtcXG4rXFx0dSA9IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCk7XFxuK1xcdGlmICghdSlcXG4rXFx0XFx0Z290byB1bnNldDtcXG4rXFx0bCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZF92YWwpO1xcbitcXHRjb25ucyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V0b3RhbGNvbm5zKTtcXG4rXFx0aWYgKGNvbm5zIFxcdTAwM2U9IChtb2RlIFxcdTAwM2UgMCA/IGwgOiB1KSkge1xcbitcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXHRpZiAoY29ubnMgXFx1MDAzZT0gKG1vZGUgXFx1MDAzYyAwID8gdSA6IGwpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbit1bnNldDpcXG4rXFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rfVxcbitcXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuK1xcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgbW9kZSk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuK31cXG4rXFxuIC8qXFxuICAqXFx0VXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2VcXG4gICovXFxuQEAgLTEzNjgsMTIgKzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0fVxcbiBcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRkZXN0LVxcdTAwM2VjZmxhZ3MgfD0gSVBfVlNfREVTVF9DRl9BVkFJTEFCTEU7XFxuIFxcbi1cXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkO1xcbi1cXHRkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZDtcXG4rXFx0aWYgKFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkgIT0gdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIHx8XFxuK1xcdCAgICBSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkge1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRlc3QtXFx1MDAzZWRzdF9sb2NrKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4rXFx0XFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXFxuK1xcdFxcdFdSSVRFX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGRfdmFsLFxcbitcXHRcXHRcXHQgICB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPyA6XFxuK1xcdFxcdFxcdCAgICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgLVxcbitcXHRcXHRcXHQgICAgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlXFx1MDAzZSAyKSkpO1xcbitcXHRcXHRfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDApO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbitcXHR9XFxuIFxcbiBcXHRkZXN0LVxcdTAwM2VhZiA9IHVkZXN0LVxcdTAwM2VhZjtcXG4gXFxuQEAgLTE0NDUsNyArMTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuIFxcdGRlc3QtXFx1MDAzZXBvcnQgPSB1ZGVzdC1cXHUwMDNlcG9ydDtcXG4gXFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zLCAwKTtcXG4tXFx0YXRvbWljX3NldChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucywgMCk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMsIDApO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMsIDApO1xcbiBcXHRyZWZjb3VudF9zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcbkBAIC0xNDg2LDYgKzE1MjksOSBAQCBpcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIElOVF9NQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XFxuIFxcdFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3BvcnQgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9lcnIoXFxcIiVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5AQCAtMTU1OSw2ICsxNjA1LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuIFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgSU5UX01BWClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRpZiAodWRlc3QtXFx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcXG4gXFx0XFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fcG9ydCA9PSAwKSB7XFxuIFxcdFxcdFxcdHByX2VycihcXFwiJXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xcXFxuXFxcIiwgX19mdW5jX18pO1xcbkBAIC0xNjEzLDcgKzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbiBcXHRcXHRcXHRcXHRpbnQgc3ZjdXBkKVxcbiB7XFxuLVxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuIFxcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xcbkBAIC0zMDMxLDcgKzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2Vjb25uX2ZsYWdzKSksXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucykpO1xcbitcXHRcXHRcXHRcXHRcXHQgICBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCkpO1xcbiBcXHRcXHRcXHRlbHNlXFxuICNlbmRpZlxcbiBcXHRcXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG5AQCAtMzA0Miw3ICszMDkxLDcgQEAgc3RhdGljIGludCBpcF92c19pbmZvX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbiBcXHRcXHRcXHRcXHRcXHQgICBpcF92c19md2RfbmFtZShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlY29ubl9mbGFncykpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcXG4gXFxuIFxcdFxcdH1cXG4gXFx0fVxcbkBAIC0zNjY3LDEwICszNzE2LDEwIEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqXFxuIFxcdFxcdFxcdGVudHJ5LnBvcnQgPSBkZXN0LVxcdTAwM2Vwb3J0O1xcbiBcXHRcXHRcXHRlbnRyeS5jb25uX2ZsYWdzID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWNvbm5fZmxhZ3MpO1xcbiBcXHRcXHRcXHRlbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4tXFx0XFx0XFx0ZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4tXFx0XFx0XFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZDtcXG4rXFx0XFx0XFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbitcXHRcXHRcXHRlbnRyeS5sX3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCk7XFxuIFxcdFxcdFxcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4rXFx0XFx0XFx0ZW50cnkuaW5hY3Rjb25ucyA9IGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KTtcXG4gXFx0XFx0XFx0ZW50cnkucGVyc2lzdGNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucyk7XFxuIFxcdFxcdFxcdGlwX3ZzX2NvcHlfc3RhdHMoXFx1MDAyNmtzdGF0cywgXFx1MDAyNmRlc3QtXFx1MDAzZXN0YXRzKTtcXG4gXFx0XFx0XFx0aXBfdnNfZXhwb3J0X3N0YXRzX3VzZXIoXFx1MDAyNmVudHJ5LnN0YXRzLCBcXHUwMDI2a3N0YXRzKTtcXG5AQCAtNDI3NywxMiArNDMyNiwxNCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiBcXHRcXHRcXHQgZGVzdC1cXHUwMDNldHVuX3BvcnQpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX1RVTl9GTEFHUyxcXG4gXFx0XFx0XFx0ZGVzdC1cXHUwMDNldHVuX2ZsYWdzKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCwgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpIHx8XFxuLVxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsXFxuK1xcdFxcdFxcdFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkpIHx8XFxuK1xcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxcbitcXHRcXHRcXHRSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpKSB8fFxcbiBcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXFxuIFxcdFxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucykpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0lOQUNUX0NPTk5TLFxcbi1cXHRcXHRcXHRhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucykpIHx8XFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfUEVSU0lTVF9DT05OUyxcXG4gXFx0XFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucykpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LVxcdTAwM2VhZikpXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5pbmRleCBlMWY2MmY2YjI1ZTIxLi40M2FiZWQ3YTI2YTZhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5AQCAtMjE5LDggKzIxOSw4IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtXFx1MDAzZXNjaGVkX2RhdGE7XFxuIFxcdGRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLVxcdTAwM2VhZiwgcywgXFx1MDAyNmlwaC1cXHUwMDNlZGFkZHIpO1xcbi1cXHRpZiAoIWRlc3RcXG4tXFx0ICAgIHx8ICEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbitcXHRpZiAoIWRlc3QgfHxcXG4rXFx0ICAgICEoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXFxuIFxcdCAgICB8fCBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwXFxuIFxcdCAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7XFxuIFxcdFxcdGlwX3ZzX3NjaGVkdWxlcl9lcnIoc3ZjLCBcXFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuaW5kZXggMTVjY2IyYjJmYTFmNC4uNjkzYmNjODJjY2I3NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC01MDIsNyArNTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHQgKi9cXG4gXFxuIFxcdFxcdGRlc3QgPSBlbi1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICgoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbmluZGV4IGM5MGVhODk3YzNmNzUuLmY1M2YwNWNlZWEzNmYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbkBAIC0xNjksOCArMTY5LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHRcXHRpZiAobGVhc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAobGVhc3QtXFx1MDAzZWNmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRzdGFnZTtcXG4gXFx0XFx0fVxcbkBAIC0xODYsOCArMTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlXFxuLVxcdFxcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSlcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdFxcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBkb2g7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zMCw3ICszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBTaW1wbHkgc2VsZWN0IHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mXFxuLVxcdCAqICAgICAgICAoYWN0aXZlY29ubnNcXHUwMDNjXFx1MDAzYzUpICsgaW5hY3Rjb25uc1xcbitcXHQgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgKyB0b3RhbGNvbm5zXFxuIFxcdCAqIEV4Y2VwdCB3aG9zZSB3ZWlnaHQgaXMgZXF1YWwgdG8gemVyby5cXG4gXFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcXG4gXFx0ICogcXVpZXNjZWQsIHRoZSBleGlzdGluZyBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHN0aWxsIGdldFxcbkBAIC01Niw3ICs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGxlYXN0LVxcdTAwM2VhZiwgXFx1MDAyNmxlYXN0LVxcdTAwM2VhZGRyKSxcXG4gXFx0XFx0XFx0ICAgICAgbnRvaHMobGVhc3QtXFx1MDAzZXBvcnQpLFxcbiBcXHRcXHRcXHQgICAgICBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSxcXG4tXFx0XFx0XFx0ICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2VpbmFjdGNvbm5zKSk7XFxuK1xcdFxcdFxcdCAgICAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhsZWFzdCkpO1xcbiBcXG4gXFx0cmV0dXJuIGxlYXN0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXFxuaW5kZXggM2RiZDMwOTZlMTYzNy4uOWRiMTI3M2U1YmE0MiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xcbkBAIC00NDYsMTIgKzQ0NiwxMCBAQCBzZXRfc2N0cF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4gXFx0XFx0XFx0aWYgKCEoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQobmV4dF9zdGF0ZSAhPSBJUF9WU19TQ1RQX1NfRVNUQUJMSVNIRUQpKSB7XFxuIFxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuIFxcdFxcdFxcdFxcdGNwLVxcdTAwM2VmbGFncyB8PSBJUF9WU19DT05OX0ZfSU5BQ1RJVkU7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgKG5leHRfc3RhdGUgPT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xcbiBcXHRcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucyk7XFxuLVxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiBcXHRcXHRcXHRcXHRjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuY1xcbmluZGV4IDk5YTI4NmZkYzkwYzYuLmZlYzBlOGI0N2I3MTYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXFxuQEAgLTUyNiwxMiArNTI2LDEwIEBAIHNldF90Y3Bfc3RhdGUoc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXFxuIFxcdFxcdFxcdGlmICghKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgICF0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4gXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmICgoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgICB0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4gXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xcbmluZGV4IDkzMDM4YWJiZjVlMDQuLmVhNWZkZDRmNGNlNzYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcXG5AQCAtODc4LDEzICs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFcXG4gXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdGlmICgoY3AtXFx1MDAzZWZsYWdzIF4gZmxhZ3MpIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSBcXHUwMDI2XFx1MDAyNiBkZXN0KSB7XFxuLVxcdFxcdFxcdGlmIChmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xcbitcXHRcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXFxuIFxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuLVxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4tXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGZsYWdzIFxcdTAwMjY9IElQX1ZTX0NPTk5fRl9CQUNLVVBfVVBEX01BU0s7XFxuIFxcdFxcdGZsYWdzIHw9IGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbmluZGV4IDBiMGM1MzA0OTkzYTkuLjFiMzZmZWQ4YWJlMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWNmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCAwKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcXHUwMDI2cnQtXFx1MDAzZWRzdCkpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSlcXG4gXFx0XFx0XFx0XFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCwgY29va2llKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3Ljk0MDUyMzMyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NTE2MjU3MDk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0xDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c190cnlfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19uYXRfeG1pdFwiLFxuICAgIFwiaXBfdnNfdHVubmVsX3htaXRcIixcbiAgICBcImlwX3ZzX2RyX3htaXRcIixcbiAgICBcImlwX3ZzX2ljbXBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQVlMgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIG92ZXJsb2FkIGZsYWcgdXBkYXRlcy4gSXQgaW50cm9kdWNlcyBgdG90YWxjb25uc2AgdG8gcmVwbGFjZSBgaW5hY3Rjb25uc2AgYW5kIGFkZHMgYGNmbGFnc2AgZm9yIGNvbmZpZyBmbGFncywgbW92aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCB0byBgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEVgLiBJdCBhbHNvIGFkZHMgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCB0byB1cGRhdGUgdGhlIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gdGhyZXNob2xkcy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVBWUyBjb3JlIGxvZ2ljIGFuZCBzY2hlZHVsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb25uZWN0aW9uIGJpbmRpbmcvdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRocyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiBkZXN0aW5hdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IGU2Y2E5MzBhMzUwN2IuLjAyZGIwNzY3ZWZmZjIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL25ldC9pcF92cy5oXG5AQCAtMzgsNiArMzgsMTIgQEBcbiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFXHQxXG4gI2RlZmluZSBJUF9WU19IRFJfSUNNUFx0XHQyXG4gXG4rLyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXG4rI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcdDB4MDAwMlx0XHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xuK1xuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cbisjZGVmaW5lIElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuK1xuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXG4gI2RlZmluZSBJUF9WU19DT05OX1RBQl9NSU5fQklUU1x0OFxuICNpZiBCSVRTX1BFUl9MT05HIFx1MDAzZSAzMlxuQEAgLTk3OCw2ICs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4rXHR1bnNpZ25lZCBsb25nXHRcdGNmbGFncztcdFx0LyogY29uZmlnIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRsYXN0X3dlaWdodDtcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXG4gXHRfX3UxNlx0XHRcdHR1bl90eXBlO1x0LyogdHVubmVsIHR5cGUgKi9cbiBcdF9fYmUxNlx0XHRcdHR1bl9wb3J0O1x0LyogdHVubmVsIHBvcnQgKi9cbkBAIC05ODksMTAgKzk5NiwxMSBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXG4gXHQvKiBjb25uZWN0aW9uIGNvdW50ZXJzIGFuZCB0aHJlc2hvbGRzICovXG4gXHRhdG9taWNfdFx0XHRhY3RpdmVjb25ucztcdC8qIGFjdGl2ZSBjb25uZWN0aW9ucyAqL1xuLVx0YXRvbWljX3RcdFx0aW5hY3Rjb25ucztcdC8qIGluYWN0aXZlIGNvbm5lY3Rpb25zICovXG4rXHRhdG9taWNfdFx0XHR0b3RhbGNvbm5zO1x0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cbiBcdGF0b21pY190XHRcdHBlcnNpc3Rjb25ucztcdC8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi9cbiBcdF9fdTMyXHRcdFx0dV90aHJlc2hvbGQ7XHQvKiB1cHBlciB0aHJlc2hvbGQgKi9cbiBcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGQ7XHQvKiBsb3dlciB0aHJlc2hvbGQgKi9cbitcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGRfdmFsOy8qIHVzZWQgbG93ZXIgdGhyZXNob2xkICovXG4gXG4gXHQvKiBmb3IgZGVzdGluYXRpb24gY2FjaGUgKi9cbiBcdHNwaW5sb2NrX3RcdFx0ZHN0X2xvY2s7XHQvKiBsb2NrIG9mIGRzdF9jYWNoZSAqL1xuQEAgLTE5MDksNiArMTkxNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0a2ZyZWUoZGVzdCk7XG4gfVxuIFxuK3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKTtcbitcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcbiAgKiAoZnJvbSBpcF92c19zeW5jLmMpXG4gICovXG5AQCAtMjIyOSwxNCArMjIzOSwyMSBAQCB2b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZik7XG4gc3RhdGljIGlubGluZSBpbnRcbiBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuLVx0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1NlxuK1x0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1N1xuIFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xuLVx0ICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4rXHQgKiAyNTcgdGltZXMgbWlnaHQgbm90IGJlIGFjY3VyYXRlLCB3ZSB3aWxsIGNoYW5nZSBpdCBsYXRlcikgV2VcbiBcdCAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzpcbi1cdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgKyBkZXN0LVx1MDAzZWluYWN0Y29ubnNcbitcdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgKyBkZXN0LVx1MDAzZXRvdGFsY29ubnNcbiBcdCAqL1xuIFx0cmV0dXJuIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2NcdTAwM2MgOCkgK1xuLVx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuK1x0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGludFxuK2lwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhjb25zdCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbit7XG4rXHRyZXR1cm4gbWF4KGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucykgLVxuK1x0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSwgMCk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfSVBfVlNfUFJPVE9fVENQXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuaW5kZXggMWVkMjM0ZTdmMjUxMy4uMmMzN2M2YWM3NTI1YSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuQEAgLTI4LDEyICsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggMzZjNWNiYTAzZjViYy4uNmZhM2UxZGM1MzRjMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xMDgxLDEyICsxMDgxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gI2VuZGlmXG4gXG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLXtcbi1cdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKVxuLVx0XHQrIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4tfVxuLVxuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTExNDcsMjMgKzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4gXG4gXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cbiBcdGlmICghKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XG4rXHRcdGludCB0YztcbitcbiBcdFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gbW9kaWZ5IHRoZSBjb3VudGVyc1xuIFx0XHQgKiBhY2NvcmRpbmcgdG8gdGhlIGZsYWdzLCBsYXRlciB0aGUgcHJvdG9jb2wgY2FuXG4gXHRcdCAqIHVwZGF0ZSB0aGVtIG9uIHN0YXRlIGNoYW5nZVxuIFx0XHQgKi9cbiBcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbitcdFx0dGMgPSBhdG9taWNfaW5jX3JldHVybihcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKVxuK1x0XHRcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGluY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbi1cbi1cdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4tXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTEyNDQsMzAgKzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xuIFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcbi1cdFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gZGVjcmVhc2UgdGhlIGluYWN0Y29ubnNcbi1cdFx0ICAgb3IgYWN0aXZlY29ubnMgY291bnRlciAqL1xuLVx0XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xuLVx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbi1cdFx0fSBlbHNlIHtcbitcdFx0aW50IHRjO1xuK1xuK1x0XHQvKiBJdCBpcyBhIG5vcm1hbCBjb25uZWN0aW9uLCBzbyBkZWNyZWFzZSB0aGUgY291bnRlcnMgKi9cbitcdFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0fVxuK1x0XHR0YyA9IGF0b21pY19mZXRjaF9kZWMoXHUwMDI2ZGVzdC1cdTAwM2V0b3RhbGNvbm5zKTtcbitcdFx0aWYgKHRjID09IFJFQURfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkX3ZhbCkpXG4rXHRcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgLTEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4tXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHR9XG4tXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG4gXG5AQCAtMTI5Niw3ICsxMjc5LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSB8fFxuIFx0ICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHxcbiBcdCAgICAoY2Rlc3QgXHUwMDI2XHUwMDI2IChkZXN0ICE9IGNkZXN0KSkpIHtcbiBcdFx0SVBfVlNfREJHX0JVRig5LCBcImNoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwiXG5AQCAtMjAzNyw3ICsyMDIwLDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4gXHRcdFx0Y3AgPSBpcF92c19objBfdG9fY29ubihobik7XG4gXHRcdFx0cmVzY2hlZF9zY29yZSsrO1xuIFx0XHRcdGRlc3QgPSBjcC1cdTAwM2VkZXN0O1xuLVx0XHRcdGlmICghZGVzdCB8fCAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpXG4rXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNwLVx1MDAzZW5fY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IDZiNzllMGM0ZDllMjguLjFhOTIyNjQ4YzkxN2QgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTMzOCw3ICszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cdTAwM2VkZXN0O1xuIFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cdTAwM2VpcHZzO1xuIFxuLVx0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMjIwOSw3ICsyMjA5LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChjcCBcdTAwMjZcdTAwMjYgY3AtXHUwMDNlZGVzdCBcdTAwMjZcdTAwMjYgIShjcC1cdTAwM2VkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyLi44ZjlhOGU0OTFhZDZiIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMzA0LDYgKzEzMDQsNDAgQEAgdm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4gXHR9XG4gfVxuIFxuKy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuKyAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuKyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4rICovXG4rc3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4re1xuK1x0aW50IGNvbm5zO1xuK1x0dTMyIGwsIHU7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbitcdGlmICghdSlcbitcdFx0Z290byB1bnNldDtcbitcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwpO1xuK1x0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK1x0aWYgKGNvbm5zIFx1MDAzZT0gKG1vZGUgXHUwMDNlIDAgPyBsIDogdSkpIHtcbitcdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRcdHJldHVybjtcbitcdH1cbitcdGlmIChjb25ucyBcdTAwM2U9IChtb2RlIFx1MDAzYyAwID8gdSA6IGwpKVxuK1x0XHRyZXR1cm47XG4rXG4rdW5zZXQ6XG4rXHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbit9XG4rXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK1x0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK31cbitcbiAvKlxuICAqXHRVcGRhdGUgYSBkZXN0aW5hdGlvbiBpbiB0aGUgZ2l2ZW4gc2VydmljZVxuICAqL1xuQEAgLTEzNjgsMTIgKzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGRlc3QtXHUwMDNlY2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xuIFxuLVx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuK1x0aWYgKFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCB8fFxuK1x0ICAgIFJFQURfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkge1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKTtcbitcdFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwsXG4rXHRcdFx0ICAgdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPyA6XG4rXHRcdFx0ICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIC1cbitcdFx0XHQgICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZVx1MDAzZSAyKSkpO1xuK1x0XHRfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDApO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbitcdH1cbiBcbiBcdGRlc3QtXHUwMDNlYWYgPSB1ZGVzdC1cdTAwM2VhZjtcbiBcbkBAIC0xNDQ1LDcgKzE0ODgsNyBAQCBpcF92c19uZXdfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxuIFx0ZGVzdC1cdTAwM2Vwb3J0ID0gdWRlc3QtXHUwMDNlcG9ydDtcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucywgMCk7XG4tXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucywgMCk7XG4rXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucywgMCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zLCAwKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCwgMSk7XG4gXG5AQCAtMTQ4Niw2ICsxNTI5LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgKzE2MDUsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNjEzLDcgKzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0ZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9DRl9BVkFJTEFCTEU7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbkBAIC0zMDMxLDcgKzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbitcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcdFx0XHRlbHNlXG4gI2VuZGlmXG4gXHRcdFx0XHRzZXFfcHJpbnRmKHNlcSxcbkBAIC0zMDQyLDcgKzMwOTEsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbitcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcbiBcdFx0fVxuIFx0fVxuQEAgLTM2NjcsMTAgKzM3MTYsMTAgQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcbiBcdFx0XHRlbnRyeS5wb3J0ID0gZGVzdC1cdTAwM2Vwb3J0O1xuIFx0XHRcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWNvbm5fZmxhZ3MpO1xuIFx0XHRcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuK1x0XHRcdGVudHJ5LnVfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuIFx0XHRcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4rXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHRcdFx0aXBfdnNfY29weV9zdGF0cyhcdTAwMjZrc3RhdHMsIFx1MDAyNmRlc3QtXHUwMDNlc3RhdHMpO1xuIFx0XHRcdGlwX3ZzX2V4cG9ydF9zdGF0c191c2VyKFx1MDAyNmVudHJ5LnN0YXRzLCBcdTAwMjZrc3RhdHMpO1xuQEAgLTQyNzcsMTIgKzQzMjYsMTQgQEAgc3RhdGljIGludCBpcF92c19nZW5sX2ZpbGxfZGVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0XHQgZGVzdC1cdTAwM2V0dW5fcG9ydCkgfHxcbiBcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX1RVTl9GTEFHUyxcbiBcdFx0XHRkZXN0LVx1MDAzZXR1bl9mbGFncykgfHxcbi1cdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsIGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpIHx8XG4rXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbitcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkpIHx8XG4rXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCxcbitcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbi1cdFx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKSB8fFxuK1x0XHRcdGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHxcbiBcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1BFUlNJU1RfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfQUREUl9GQU1JTFksIGRlc3QtXHUwMDNlYWYpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjEuLjQzYWJlZDdhMjZhNmEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMTksOCArMjE5LDggQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4tXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRpZiAoIWRlc3QgfHxcbitcdCAgICAhKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSlcbiBcdCAgICB8fCBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwXG4gXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xuIFx0XHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXCJubyBkZXN0aW5hdGlvbiBhdmFpbGFibGVcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjQuLjY5M2JjYzgyY2NiNzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNTAyLDcgKzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpXG4gXHRcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggYzkwZWE4OTdjM2Y3NS4uZjUzZjA1Y2VlYTM2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2OSw4ICsxNjksOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKGxlYXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4Niw4ICsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuLVx0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbkBAIC0zMCw3ICszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHQvKlxuIFx0ICogU2ltcGx5IHNlbGVjdCB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZlxuLVx0ICogICAgICAgIChhY3RpdmVjb25uc1x1MDAzY1x1MDAzYzUpICsgaW5hY3Rjb25uc1xuK1x0ICogICAgICAgIChhY3RpdmVjb25ucyoyNTYpICsgdG90YWxjb25uc1xuIFx0ICogRXhjZXB0IHdob3NlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLlxuIFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcbiBcdCAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXRcbkBAIC01Niw3ICs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICAgSVBfVlNfREJHX0FERFIobGVhc3QtXHUwMDNlYWYsIFx1MDAyNmxlYXN0LVx1MDAzZWFkZHIpLFxuIFx0XHRcdCAgICAgIG50b2hzKGxlYXN0LVx1MDAzZXBvcnQpLFxuIFx0XHRcdCAgICAgIGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSxcbi1cdFx0XHQgICAgICBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VpbmFjdGNvbm5zKSk7XG4rXHRcdFx0ICAgICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGxlYXN0KSk7XG4gXG4gXHRyZXR1cm4gbGVhc3Q7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG5pbmRleCAzZGJkMzA5NmUxNjM3Li45ZGIxMjczZTViYTQyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xuQEAgLTQ0NiwxMiArNDQ2LDEwIEBAIHNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIChuZXh0X3N0YXRlID09IElQX1ZTX1NDVFBfU19FU1RBQkxJU0hFRCkpIHtcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gXHRcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG5pbmRleCA5OWEyODZmZGM5MGM2Li5mZWMwZThiNDdiNzE2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmNcbkBAIC01MjYsMTIgKzUyNiwxMCBAQCBzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhdGNwX3N0YXRlX2FjdGl2ZShuZXdfc3RhdGUpKSB7XG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuIFx0XHRcdFx0Y3AtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xuIFx0XHRcdH0gZWxzZSBpZiAoKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgdGNwX3N0YXRlX2FjdGl2ZShuZXdfc3RhdGUpKSB7XG4gXHRcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuIFx0XHRcdFx0Y3AtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jXG5pbmRleCA5MzAzOGFiYmY1ZTA0Li5lYTVmZGQ0ZjRjZTc2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuQEAgLTg3OCwxMyArODc4LDEwIEBAIHN0YXRpYyB2b2lkIGlwX3ZzX3Byb2NfY29ubihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnBhXG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiBcdFx0aWYgKChjcC1cdTAwM2VmbGFncyBeIGZsYWdzKSBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSBcdTAwMjZcdTAwMjYgZGVzdCkge1xuLVx0XHRcdGlmIChmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSB7XG4rXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHRcdH0gZWxzZSB7XG4rXHRcdFx0ZWxzZVxuIFx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbi1cdFx0XHR9XG4gXHRcdH1cbiBcdFx0ZmxhZ3MgXHUwMDI2PSBJUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xuIFx0XHRmbGFncyB8PSBjcC1cdTAwM2VmbGFncyBcdTAwMjYgfklQX1ZTX0NPTk5fRl9CQUNLVVBfVVBEX01BU0s7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IDBiMGM1MzA0OTkzYTkuLjFiMzZmZWQ4YWJlMjkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuK1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgMCk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbitcdFx0XHQgICAgZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDU6NTcuOTQwNTI0NjQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0NjUyMjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBJUFZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgSVBWUyB3aXRoaW4gdGhlIG5ldGZpbHRlciByZWFsbS4gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgaXQgbW9kaWZpZXMgaG93IGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9ucyBhcmUgdHJhY2tlZCwgc3BlY2lmaWNhbGx5IG1vdmluZyBmcm9tIGBpbmFjdGNvbm5zYCB0byBgdG90YWxjb25uc2Agd2l0aGluIHRoZSBgc3RydWN0IGlwX3ZzX2Rlc3RgLiBUaGV5J3JlIGFsc28gYWRkaW5nIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MgYW5kIHNoaWZ0aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBvdmVyIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAgd2l0aGluIHRob3NlIGBjZmxhZ3NgLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gaGFuZGxlIG92ZXJsb2FkIGZsYWcgdXBkYXRlcyBiYXNlZCBvbiBgdG90YWxjb25uc2AgYW5kIHRocmVzaG9sZHMgaXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcHByb2FjaC5cblxuRmlyc3QgdGhpbmdzIGZpcnN0OiBpcyB0aGlzIHRoaW5nIGV2ZW4gcmVhY2hhYmxlIGFuZCBmdXp6YWJsZT8gWWVhaCwgSVBWUyBpcyBjb3JlIG5ldHdvcmtpbmcsIHNvIHdlJ3JlIGRlZmluaXRlbHkgbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaGVyZSwgbGlrZWx5IGFjY2Vzc2libGUgdmlhIG5ldGxpbmsgc29ja2V0cyBvciBgc2V0c29ja29wdGAuIFRoZSBwYXRjaCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaXBfdnNfY29ubi5jYCwgYGlwX3ZzX2NvcmUuY2AsIGBpcF92c19jdGwuY2AsIGFuZCBzbyBvbi4gVGhhdCBicm9hZCB0b3VjaCBzdWdnZXN0cyBhIGZ1bmRhbWVudGFsIHNoaWZ0LCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gYENPTkZJR19JUF9WU2AgaXMgb2J2aW91c2x5IHRoZSBtYWluIHN3aXRjaC4gQnV0IEkgbmVlZCB0byBnbyBkZWVwZXI7IEkgc2hvdWxkIHJlYWxseSBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgSVBWUyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdvdGNoYXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDMuNzg3MDQ5MjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY4MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjowNjowMy44Mjg5MjI1NzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYxNjcxNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSVBWUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEEgZ29vZCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIGBLY29uZmlnYCBmaWxlLiBMZXQncyBuYXZpZ2F0ZSB0byBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGFuZCBzZWUgd2hhdCdzIGRlZmluZWQgdGhlcmUuIFRoYXQgc2hvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIElQVlMgYW5kIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IHdoZW4gdHJvdWJsZXNob290aW5nIG9yIGNvbmZpZ3VyaW5nIGEgc3lzdGVtLiBJIGtub3cgdGhpcyBpcyB0aGUgd2F5IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDcyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDYuNzkwNTk3NDI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzI5MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9NT1tZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1xcdElQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMi1cXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMzc9Y29uZmlnXFx0SVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ5LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDYuODMzOTMzMDk0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMTAyNzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElQVlMgRGVwZW5kZW5jaWVzIGFuZCBQb3RlbnRpYWwgQ29uZmlndXJhdGlvbiBOZWVkcyoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYElQX1ZTYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJPa2F5LCB0aGlzIGFsbW9zdCBjZXJ0YWlubHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAg4oCTIG5vIHN1cnByaXNlIHRoZXJlLlwiIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aG9zZSBhcmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQgYXMgcHJlcmVxdWlzaXRlcy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcms6IGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfcHJvdG9fc2N0cC5jYCwgYW5kIGBpcF92c19wcm90b190Y3AuY2AuIFRoZXNlIGFyZSBhbGwgY29yZSBjb21wb25lbnRzLCBzbyB0aGlzIGxpa2VseSBpbmRpY2F0ZXMgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHBvdGVudGlhbGx5IGluIGhvdyB0aGUgZGlmZmVyZW50IGxvYWQgYmFsYW5jaW5nIG1ldGhvZHMgYW5kIHByb3RvY29scyB3b3JrIHdpdGhpbiBJUFZTLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGVzZSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSBJJ20gYmV0dGluZyB0aGF0IHRoZSBjaGFuZ2VzIGhlcmUgbWF5IGhhdmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb3IgbmV3IHR1bmluZyBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSBub3cgZGVwcmVjYXRlZCBvciBhbHRlcmVkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3MgaGF2ZW4ndCBjaGFuZ2VkIHRoZSBkZWZhdWx0IGJlaGF2aW9ycyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA2OjEwLjc2NDk2MzU4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg1NTIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MTAuODA3ODIzMjIyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MzI2Njg0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZzogSVBWUyoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVBWUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluc3RlYWQgb2YgYmxpbmRseSBwb2tpbmcgYXJvdW5kLCBhIG1vcmUgZWZmaWNpZW50IGFwcHJvYWNoIGlzIHRvIGRpcmVjdGx5IHRhcmdldCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBUaGF0IG1lYW5zIEkgc2hvdWxkIHJlYWxseSB1c2UgYGdyZXBgIOKAkyB0aGF0J3MgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LiBJJ2xsIHNlYXJjaCBmb3IgYGNvbmZpZyBJUF9WU2Agd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIHB1bGwgdXAgYWxsIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zIGluIG9uZSBzaG90LiBTYXZlcyBtZSB0aGUgdHJvdWJsZSBvZiBtYW51YWxseSBuYXZpZ2F0aW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gR29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTozNS4xMzQ1MDk4NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzkxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTozNS4xNzc5MDYyNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjE4NTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBQb25kZXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gc3RhcmluZyBhdCB0aGlzIGFuZCBpbW1lZGlhdGVseSBteSBicmFpbiBmbGFncyBpdC4gKmBjb25maWcgSVBfVlNfYCB3aXRoIGEgc3BhY2UuLi4qIFRoYXQgc3BhY2UgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHByZXR0eSB3ZWxsLCBhbmQgdGhhdCBraW5kIG9mIHN5bnRheCBkZXZpYXRpb24gYWxtb3N0IGFsd2F5cyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUsIGVpdGhlciBpbiB0aGUgS2NvbmZpZyBpdHNlbGYsIHRoZSBidWlsZCBwcm9jZXNzLCBvciBwZXJoYXBzIGV2ZW4gYSB0eXBvIHRoYXQncyBub3cgbWFuaWZlc3RpbmcgYXMgYSBwcm9ibGVtLiBJdOKAmXMgY2VydGFpbmx5IG5vdCBzdGFuZGFyZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgYW5kIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgZXJyb3IuIElzIGl0IGEgbWFsZm9ybWVkIHN5bWJvbCBuYW1lPyBJcyB0aGVyZSBhbiB1bmV4cGVjdGVkIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGluc2VydGVkPyBQZXJoYXBzIGEgc3RyYXkgY2hhcmFjdGVyIHNsaXBwZWQgaW50byBhIGNvbmRpdGlvbmFsIGNsYXVzZT8gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBtYWtlZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGludGVycHJldGVkIGluY29ycmVjdGx5LiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBlY3VsaWFyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMzMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjM4LjYxNDA5NDA5N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODIyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjM4LjY1NjE4MjI3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDIxNjczMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBObyBuZWVkIHRvIG92ZXJ0aGluayB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBqdXN0IHJlYWQgdGhlIGZpbGUuXCIgSSdtIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCdzIGEgc2ltcGxlLCBkaXJlY3QsIGFuZCBvZnRlbiB0aGUgbW9zdCBlZmZpY2llbnQgc3RhcnRpbmcgcG9pbnQuIFdlJ3JlIG5vdCBlbmdhZ2luZyBpbiBjb21wbGV4IG1vZGVsaW5nIG9yIHJpc2sgYXNzZXNzbWVudHMgYXQgdGhpcyBzdGFnZTsgcmF0aGVyLCB3ZSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGV2ZWwgdW5kZXJzdGFuZGluZy4gVGhlIGZpbGUgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IHNvdXJjZSBvZiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBtb3N0IGV4cGVkaWVudCBtZXRob2QgaXMgdG8gc2ltcGx5IGJlZ2luIHByb2Nlc3NpbmcgaXRzIGNvbnRlbnRzLiBXZSdsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0MS42Nzc4NTk0ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRtZW51Y29uZmlnIElQX1ZTXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXFxuICAxMTpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXFxuICAxMjpcXHRcXHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xcbiAgMTM6XFx0XFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXFxuICAxNDpcXHRcXHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXFxuICAxNzpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcXG4gIDE4OlxcdFxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcbiAgMTk6XFx0XFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXFxuICAyMDpcXHRcXHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcXG4gIDIxOlxcdFxcdCAgaW5mb3JtYXRpb24gYW5kIGl0cyBhZG1pbmlzdHJhdGlvbiBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgdGhlXFxuICAyMjpcXHRcXHQgIGZvbGxvd2luZyBVUkw6IFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4dmlydHVhbHNlcnZlci5vcmcvXFx1MDAzZS5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAgMjU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNjpcXHRcXG4gIDI3OlxcdGlmIElQX1ZTXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZ1xcdElQX1ZTX0lQVjZcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIklQdjYgc3VwcG9ydCBmb3IgSVBWU1xcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gSVBWNiA9IHkgfHwgSVBfVlMgPSBJUFY2XFxuICAzMjpcXHRcXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkIElQdjYgc3VwcG9ydCB0byBJUFZTLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIFNheSBZIGlmIHVuc3VyZS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnXFx0SVBfVlNfREVCVUdcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIklQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1xcXCJcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBnZXQgYWRkaXRpb25hbCBtZXNzYWdlcyB1c2VmdWwgaW5cXG4gIDQyOlxcdFxcdCAgZGVidWdnaW5nIHRoZSBJUCB2aXJ0dWFsIHNlcnZlciBjb2RlLiBZb3UgY2FuIGNoYW5nZSB0aGUgZGVidWdcXG4gIDQzOlxcdFxcdCAgbGV2ZWwgaW4gL3Byb2Mvc3lzL25ldC9pcHY0L3ZzL2RlYnVnX2xldmVsXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZ1xcdElQX1ZTX1RBQl9CSVRTXFxuICA0NjpcXHRcXHRpbnQgXFxcIklQVlMgY29ubmVjdGlvbiB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbiAgNDc6XFx0XFx0cmFuZ2UgOCAyMCBpZiAhNjRCSVRcXG4gIDQ4OlxcdFxcdHJhbmdlIDggMjcgaWYgNjRCSVRcXG4gIDQ5OlxcdFxcdGRlZmF1bHQgMTJcXG4gIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgVGhlIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHVzZXMgdGhlIGNoYWluaW5nIHNjaGVtZSB0byBoYW5kbGVcXG4gIDUyOlxcdFxcdCAgaGFzaCBjb2xsaXNpb25zLiBVc2luZyBhIGJpZyBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB3aWxsIGdyZWF0bHlcXG4gIDUzOlxcdFxcdCAgcmVkdWNlIGNvbmZsaWN0cyB3aGVuIHRoZXJlIGFyZSBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgY29ubmVjdGlvbnNcXG4gIDU0OlxcdFxcdCAgaW4gdGhlIGhhc2ggdGFibGUuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgTm90ZSB0aGUgdGFibGUgc2l6ZSBtdXN0IGJlIHBvd2VyIG9mIDIuIFRoZSB0YWJsZSBzaXplIHdpbGwgYmUgdGhlXFxuICA1NzpcXHRcXHQgIHZhbHVlIG9mIDIgdG8gdGhlIHlvdXIgaW5wdXQgbnVtYmVyIHBvd2VyLiBUaGUgbnVtYmVyIHRvIGNob29zZSBpc1xcbiAgNTg6XFx0XFx0ICBmcm9tIDggdG8gMjcgZm9yIDY0QklUKDIwIG90aGVyd2lzZSksIHRoZSBkZWZhdWx0IG51bWJlciBpcyAxMixcXG4gIDU5OlxcdFxcdCAgd2hpY2ggbWVhbnMgdGhlIHRhYmxlIHNpemUgaXMgNDA5Ni4gRG9uJ3QgaW5wdXQgdGhlIG51bWJlciB0b29cXG4gIDYwOlxcdFxcdCAgc21hbGwsIG90aGVyd2lzZSB5b3Ugd2lsbCBsb3NlIHBlcmZvcm1hbmNlIG9uIGl0LiBZb3UgY2FuIGFkYXB0IHRoZVxcbiAgNjE6XFx0XFx0ICB0YWJsZSBzaXplIHlvdXJzZWxmLCBhY2NvcmRpbmcgdG8geW91ciB2aXJ0dWFsIHNlcnZlciBhcHBsaWNhdGlvbi5cXG4gIDYyOlxcdFxcdCAgSXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgbm90IGZhciBsZXNzIHRoYW4gdGhlIG51bWJlciBvZlxcbiAgNjM6XFx0XFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kIG11bHRpcGx5aW5nIGF2ZXJhZ2UgbGFzdGluZyB0aW1lIG9mXFxuICA2NDpcXHRcXHQgIGNvbm5lY3Rpb24gaW4gdGhlIHRhYmxlLiAgRm9yIGV4YW1wbGUsIHlvdXIgdmlydHVhbCBzZXJ2ZXIgZ2V0cyAyMDBcXG4gIDY1OlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCwgdGhlIGNvbm5lY3Rpb24gbGFzdHMgZm9yIDIwMCBzZWNvbmRzIGluXFxuICA2NjpcXHRcXHQgIGF2ZXJhZ2UgaW4gdGhlIGNvbm5lY3Rpb24gdGFibGUsIHRoZSB0YWJsZSBzaXplIHNob3VsZCBiZSBub3QgZmFyXFxuICA2NzpcXHRcXHQgIGxlc3MgdGhhbiAyMDB4MjAwLCBpdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSAzMjc2OCAoMioqMTUpLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIEFub3RoZXIgbm90ZSB0aGF0IGVhY2ggY29ubmVjdGlvbiBvY2N1cGllcyAxMjggYnl0ZXMgZWZmZWN0aXZlbHkgYW5kXFxuICA3MDpcXHRcXHQgIGVhY2ggaGFzaCBlbnRyeSB1c2VzIDggYnl0ZXMsIHNvIHlvdSBjYW4gZXN0aW1hdGUgaG93IG11Y2ggbWVtb3J5IGlzXFxuICA3MTpcXHRcXHQgIG5lZWRlZCBmb3IgeW91ciBib3guXFxuICA3MjpcXHRcXG4gIDczOlxcdFxcdCAgWW91IGNhbiBvdmVyd3JpdGUgdGhpcyBudW1iZXIgc2V0dGluZyBjb25uX3RhYl9iaXRzIG1vZHVsZSBwYXJhbWV0ZXJcXG4gIDc0OlxcdFxcdCAgb3IgYnkgYXBwZW5kaW5nIGlwX3ZzLmNvbm5fdGFiX2JpdHM9PyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpZlxcbiAgNzU6XFx0XFx0ICBJUCBWUyB3YXMgY29tcGlsZWQgYnVpbHQtaW4uXFxuICA3NjpcXHRcXG4gIDc3OlxcdGNvbW1lbnQgXFxcIklQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbiAgODA6XFx0XFx0Ym9vbCBcXFwiVENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXHRoZWxwXFxuICA4MjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVENQIHRyYW5zcG9ydFxcbiAgODM6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgODQ6XFx0XFxuICA4NTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19VRFBcXG4gIDg2OlxcdFxcdGJvb2wgXFxcIlVEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODc6XFx0XFx0aGVscFxcbiAgODg6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFVEUCB0cmFuc3BvcnRcXG4gIDg5OlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDkwOlxcdFxcbiAgOTE6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fQUhfRVNQXFxuICA5MjpcXHRcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG4gIDkzOlxcdFxcbiAgOTQ6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fRVNQXFxuICA5NTpcXHRcXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDk2OlxcdFxcdGhlbHBcXG4gIDk3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBFU1AgKEVuY2Fwc3VsYXRpb25cXG4gIDk4OlxcdFxcdCAgU2VjdXJpdHkgUGF5bG9hZCkgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjQxLjY3Nzk2NDc0OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzgwOTE5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIExldCdzIGdldCB0byBpdC4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIEluOiBQcm9jZXNzaW5nIHRoZSBJbmZvcm1hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgdGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYWx3YXlzIGEgcXVpY2sgc2Nhbi4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGVsZW1lbnRzLCB0aGUgY2VudHJhbCB0aGVtZXMsIGFuZCBhbnkgaW1tZWRpYXRlIGluZGljYXRvcnMgb2Ygd2hhdCBtYWtlcyB0aGlzIGluZm9ybWF0aW9uIHVuaXF1ZSBvciBpbnRlcmVzdGluZy4gVGhpcyBmaXJzdCBwYXNzIGlzIHJlYWxseSBhYm91dCBnZXR0aW5nIG15IGJlYXJpbmdzLCBmaWd1cmluZyBvdXQgdGhlIGxhbmRzY2FwZSBJJ20gYWJvdXQgdG8gdHJhdmVyc2UuIFdoYXQncyB0aGUgZ2VucmU/IFdoYXQncyB0aGUgY29udGV4dD8gV2hhdCdzIHRoZSBvdmVyYWxsIGRpcmVjdGlvbj8gRnJvbSB0aGVyZSwgSSdsbCBpZGVudGlmeSB0aGUga2V5IGNvbmNlcHRzIGFuZCBzdGFydCBkcmF3aW5nIGNvbm5lY3Rpb25zIGJldHdlZW4gdGhlbS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBtb3N0IGltcG9ydGFudCwgYW5kIHdoYXQgaXMgbWVyZWx5IHN1cHBvcnRpbmcgZXZpZGVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTE1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjQ0LjQ1ODg4NzY2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdGJvb2wgXFxcIkFIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXFxuIDEwNDpcXHRcXHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbiAxMDc6XFx0XFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gMTA5OlxcdFxcdGhlbHBcXG4gMTEwOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxcbiAxMTE6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAxMTI6XFx0XFxuIDExMzpcXHRjb21tZW50IFxcXCJJUFZTIHNjaGVkdWxlclxcXCJcXG4gMTE0OlxcdFxcbiAxMTU6XFx0Y29uZmlnXFx0SVBfVlNfUlJcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXFxcIlxcbiAxMTc6XFx0XFx0aGVscFxcbiAxMTg6XFx0XFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xcbiAxMTk6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEyMjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTIzOlxcdCBcXG4gMTI0OlxcdGNvbmZpZ1xcdElQX1ZTX1dSUlxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDEyNjpcXHRcXHRoZWxwXFxuIDEyNzpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTI4OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xcbiAxMjk6XFx0XFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcXG4gMTMwOlxcdFxcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXFxuIDEzMTpcXHRcXHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcXG4gMTMyOlxcdFxcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEzNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnXFx0SVBfVlNfTENcXG4gMTM4OlxcdFxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNDE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXFxuIDE0MjpcXHRcXHQgIGNvbm5lY3Rpb25zLlxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE0NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ2OlxcdFxcbiAxNDc6XFx0Y29uZmlnXFx0SVBfVlNfV0xDXFxuIDE0ODpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxNDk6XFx0XFx0aGVscFxcbiAxNTA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTUxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcXG4gMTUyOlxcdFxcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxNTU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyAgSVBfVlNfRk9cXG4gMTU4OlxcdFxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbiAxNTk6XFx0XFx0aGVscFxcbiAxNjA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE2MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNjI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE2NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnICBJUF9WU19PVkZcXG4gMTY4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXFxcIlxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE3MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNzI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcXG4gMTczOlxcdFxcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJ3Mgd2VpZ2h0LlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE3NjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbiAxNzk6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gaXMgZm9yXFxuIDE4MjpcXHRcXHQgIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyB1c3VhbGx5IHVzZWQgaW4gY2FjaGUgY2x1c3Rlci5cXG4gMTgzOlxcdFxcdCAgVGhpcyBhbGdvcml0aG0gdXN1YWxseSBkaXJlY3RzIHBhY2tldCBkZXN0aW5lZCBmb3IgYW4gSVAgYWRkcmVzcyB0b1xcbiAxODQ6XFx0XFx0ICBpdHMgc2VydmVyIGlmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUgYW5kIHVuZGVyIGxvYWQuIElmIHRoZSBzZXJ2ZXIgaXNcXG4gMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0NC40NTg5ODc4MjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMzkwNjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgU2NvcGUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBmZXcga2V5IGFyZWFzIHdpdGhpbiB0aGUgSVBWUyBjb2RlLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhhdCBnaXZlcyBtZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCdzIGludm9sdmVkLlxuXG5HaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCBgSVBfVlNgIGZvciB0aGUgY29yZSBJUFZTIGZ1bmN0aW9uYWxpdHksIG5hdHVyYWxseS4gSSBzZWUgaXQgdG91Y2hlcyBib3RoIGBUQ1BgIGFuZCBgU0NUUGAsIHNvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fU0NUUGAgYXJlIGRlZmluaXRlbHkgcmVxdWlyZWQuIEZ1cnRoZXIsIGl0IGludGVyYWN0cyB3aXRoIHRoZSBkaWZmZXJlbnQgbG9hZC1iYWxhbmNpbmcgbWV0aG9kcywgaW1wbHlpbmcgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgIGFuZCBgSVBfVlNfTENgIHdpbGwgYmUgbmVlZGVkLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcuIExldCdzIHNlZSBpZiBgSVBfVlNfREhgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyYWJsZS4gSSBzaG91bGQgY29uZmlybSBpdHMgZXhpc3RlbmNlIGFuZCBkZWZhdWx0IHNldHRpbmdzIHNvIEkgY2FuIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgZHVyaW5nIHRoZSBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0OC41NzI4OTY4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNzkzMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU19ESFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTE6NDguNjE1MTg0ODQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTgzMjI1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3NzaWJsZSBDb25uZWN0aW9uKipcblxuT2theSwgc28gdGhlIHByb21wdCBtZW50aW9ucyBcIkRILlwiIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGNvbnRleHQuIEl0J3MgYSBrZXkgcGFydCBvZiBsb2FkIGJhbGFuY2luZyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc28gaXQncyBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gTGV0J3Mgc2VlLi4uIHdoYXQgZmlsZSB3b3VsZCBob2xkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQ/IEFoLCB5ZXMsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2Ag4oCTIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgc3BlY2lmaWMgZGlyZWN0b3J5IGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBkZWZpbml0aW9ucyBhbmQgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgSVBWUyBtb2R1bGUuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaW4gYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGVyZSBhYm91dCBcIkRIXCIuIFBlcmhhcHMgaXQgc3RhbmRzIGZvciBzb21ldGhpbmcgbGlrZSBcIkRpcmVjdCBIYW5kbGluZ1wiIG9yIFwiRHluYW1pYyBIYXNoXCIsIG9yIGV2ZW4gc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudC4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzc2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjUyLjMzMzUxMDM3MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MDI2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTkyPWNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTE6NTIuMzc3MzE2NDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk2Mjc4ODM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2ggZm9yIERlc3RpbmF0aW9uIE92ZXJsb2FkIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gYElQX1ZTX0RIYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoZSBwYXRjaCB0byBnZXQgYSBmZWVsIGZvciB0aGUgc2NvcGUuIExvb2tzIGxpa2Ugd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBmb2N1cywgYW5kIGl0J3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgb3RoZXIgYXJlYXM6IGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCB0aGluZ3MgcmVsYXRlZCB0byBjb25uZWN0aW9uIG1hbmFnZW1lbnQgKGBpcF92c19jaGVja190ZW1wbGF0ZWAsIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgLCBzdGF0cyAoYGlwX3ZzX2luX3N0YXRzYCwgYGlwX3ZzX291dF9zdGF0c2ApLCBob29rcywgZGVzdCBtYW5hZ2VtZW50LCBhbmQgc2NoZWR1bGluZy4gSXQgYWxzbyBsb29rcyBsaWtlIGEgbG90IG9mIHRoZSBkZXN0aW5hdGlvbiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgdXBkYXRlZC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBhcmVhcy4gSSdsbCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYGlwX3ZzX2VkaXRfZGVzdGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBhbmQgdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyAoYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBhbmQgYGlwX3ZzX2xjX3NjaGVkdWxlYCkuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IHBvaW50cyB3aGVyZSB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgbG9naWMgd2lsbCBiZSBtb3N0IGFwcGFyZW50LiBJIGFsc28gd2FudCB0byBjaGVjayB0aGUgbmF0dXJlIG9mIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgZGV0ZXJtaW5pbmcgd2hlcmUgdGhpcyBvdmVybG9hZCBoYW5kbGluZyBpcyBpbnNlcnRlZCBpbiB0aGUgZGVzdGluYXRpb24gZGF0YSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEyMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo1OS4zNDAxMDc1OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0NTc5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDQ9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM0NTpfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzQ2LVxcdFxcdCAgICBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0LCBpbnQgYWRkKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE0NDU9aXBfdnNfbmV3X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDk2LVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0OTc6XFx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ5OC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTE0PWlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3NC1cXHRcXHRlbHNlXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1NzU6XFx0XFx0XFx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3Ni1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1OTE9aXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTYyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTYzMDpcXHRfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN2YywgZGVzdCwgdWRlc3QsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNjMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo1OS4zODM1NzM5NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTQxMTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkNvbnNpZGVyaW5nIERlc3RpbmF0aW9uIE1hbmFnZW1lbnQgaW4gdGhlIEtlcm5lbCdzIElQVlMgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG1vZHVsZS4gSSdtIHNlZWluZyB0aGF0IGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLiBUaGF0J3MgYSByZWQgZmxhZy4gVHlwaWNhbGx5LCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBtZWFudCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIGEgbW9kdWxlLiBJIG5lZWQgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoLCBzb21ldGhpbmcgdGhhdCBhbGxvd3MgZXh0ZXJuYWwgbWFuaXB1bGF0aW9uIG9mIHRoZXNlIGRlc3RpbmF0aW9uIGVudHJpZXMuXG5cblNvLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhpcyBpbnRlcm5hbCBmdW5jdGlvbiwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxldmVyYWdlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIHB1YmxpYyBmYWNpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGVzZSB0aGluZ3MgLSBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYW5kIGBpcF92c19uZXdfZGVzdGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29ycmVjdCB0b29scyBmb3IgdGhlIGpvYi4gVGhleSdyZSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZGVzdGluYXRpb24gb2JqZWN0cywgd2hpY2ggaXMgd2hhdCBJIG5lZWQuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGNhdWdodCBpbiBhbm90aGVyIHN0YXRpYyB0cmFwISBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGF0IG9uZSAqaXNuJ3QqIGFsc28gbGltaXRlZCB0byBpbnRlcm5hbCB1c2UuIFRpbWUgZm9yIGEgcXVpY2sgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTQ3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MDMuMTI4OTg5NzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODM3NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX25ld19kZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTQ0ND1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0NDU6aXBfdnNfbmV3X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ0Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTUxND1pcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1NzktXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1ODA6XFx0XFx0cmV0ID0gaXBfdnNfbmV3X2Rlc3Qoc3ZjLCB1ZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1ODEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjowMy4xNzI4MzIzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDUxMjY5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEZXN0aW5hdGlvbiBNYW5hZ2VtZW50IGluIElQVlMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgaXBfdnNfbmV3X2Rlc3RgIHZhcmlhYmxl4oCmIHRoYXQncyBhIHN0YXRpYyBlbnRpdHksIHJpZ2h0PyBHb3QgaXQuIFNvLCB0aGF0IGltcGxpZXMgdGhhdCBmdW5jdGlvbnMgbGlrZSBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YCBhcmUgcHJldHR5IHJvYnVzdCBpbiB0aGVpciBoYW5kbGluZyBvZiB0aGlzIHN0YXRpYyBlbGVtZW50LiBUaGV5J3JlIGxpa2VseSBkZXNpZ25lZCB0byBpbnRlZ3JhdGUgc21vb3RobHkgZ2l2ZW4gdGhhdCBjb25zdHJhaW50LiBOb3csIHRoYXQgYnJpbmdzIG1lIHRvIHNvbWV0aGluZyBlbHNlIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBtb3JlIGRldGFpbDogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGl0cyBtZWNoYW5pY3MgcmVtYWluIHNvdW5kIGdpdmVuIHRoaXMgZnVuZGFtZW50YWwgc3RhdGljIG5hdHVyZSBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBMZXQncyBzZWUgaG93IHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjA2Ljk3Nzk2MTY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg5OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEyOTk9dm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTMxMjpzdGF0aWMgdm9pZCBfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzMy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTMzNDp2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNS17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMzYtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzMzc6XFx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzOC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDU9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDE2LVxcdFxcdFxcdCAgICAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2VcXHUwMDNlIDIpKSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0MTc6XFx0XFx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxOC1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjowNy4wMTk4NjQ4NjlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4Njc3Mjc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIER5bmFtaWMgT3ZlcmxvYWQgaW4gSVBWUyBEZXN0aW5hdGlvbiBVcGRhdGVzKipcblxuUmlnaHQsIHNvIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgaXNuJ3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGxpbmtlZCB0byBzb21ldGhpbmcgZHluYW1pYyB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgbG9hZCBiYWxhbmNpbmcgcHJvY2Vzcy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0IGlzbid0IGFuIGlzc3VlIGluIHRoZSBjb2RlIGl0c2VsZi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgYXJlYXMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGRlc3RpbmF0aW9uIHN0YXRlIGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGNvbmRpdGlvbi4gTGV0IG1lIGludmVzdGlnYXRlIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIGZpcnN0LiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBkZXN0aW5hdGlvbiBlbnRyaWVzLCBhbmQgYXJlIG9idmlvdXMgcG9pbnRzIG9mIGludGVyYWN0aW9uLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCwgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLCBhbmQgaW4gd2hhdCBvcmRlciB3aWxsIHJldmVhbCB0aGUgY2F1c2UuIEtub3dpbmcgdGhpcywgSSBjYW4gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoxMC43MDY2NDQxOTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzk3NTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OD1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODk6aXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDkwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE5NjpcXHRcXHRpcF92c19iaW5kX2Rlc3QoY3AsIGRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTE5Ny1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xNDQ0PWlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNC1cXHRjcC1cXHUwMDNlZGVzdCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxNTI1OlxcdGlwX3ZzX2JpbmRfZGVzdChjcCwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xNTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoxMC43NDk0NTA2NloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgzNzA5MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgdGhlIEJpbmRpbmcgU3RyYXRlZ3kgaW4gdGhlIElQVlMgS2VybmVsIE1vZHVsZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGlwX3ZzX2JpbmRfZGVzdGAgZnVuY3Rpb24sIGFuZCBpdCdzIGRlZmluZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhlIGNvbXBpbGVyIGlzIGxpa2VseSB0byBleHBhbmQgdGhlIGNvZGUgb2YgYGlwX3ZzX2JpbmRfZGVzdGAgZGlyZWN0bHkgYXQgdGhlIHBvaW50IHdoZXJlIGl0J3MgY2FsbGVkLiBUaGlzIGNhbiBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBieSBhdm9pZGluZyBhIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGVzc2VudGlhbGx5IGlubGluaW5nIHRoZSBsb2dpYyBkaXJlY3RseSBpbnRvIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucy4gSXQncyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwsIHByb2JhYmx5IHNtYWxsLCBhbmQgbGlrZWx5IGNhbGxlZCB2ZXJ5IGZyZXF1ZW50bHkgd2l0aGluIHRoZSBJUFZTIGludGVybmFscy4gVGhlIGNob2ljZSBvZiBgc3RhdGljYCBhbHNvIGltcGxpZXMgdGhlIGZ1bmN0aW9uJ3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBwcmV2ZW50aW5nIG5hbWUgY29sbGlzaW9ucyBpbiBsYXJnZXIgY29kZWJhc2VzLlxuXG5UaGVuIEknbSBjb250cmFzdGluZyB0aGF0IHdpdGggYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfY29ubl9uZXdgLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBgc3RhdGljIGlubGluZWAuIFRoYXQncyBhIGRpZmZlcmVudCBkZXNpZ24gZGVjaXNpb24uIFRoZXkgYXJlIGxpa2VseSBtb3JlIGNvbXBsZXgsIHBvc3NpYmx5IGludm9sdmluZyBtb3JlIGV4dGVybmFsIGNhbGxzIG9yIG1vcmUgc3Vic3RhbnRpYWwgb3BlcmF0aW9ucy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IGV4cGVjdGVkIHRvIGhhbmRsZSB0aGVtIGFzIHN0YW5kYXJkIGZ1bmN0aW9ucyB3aXRoIHN0YW5kYXJkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0J3MgYSBjbHVlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBmb3IgbW9yZSBpbnRyaWNhdGUgdGFza3MgYW5kIGFyZW4ndCBhcyBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXQgdGhhdCBmdW5kYW1lbnRhbCwgbWljcm8tb3B0aW1pemF0aW9uIGxldmVsLiBUaGV5J3JlIHByb2JhYmx5IG1vcmUgYWJvdXQgbWFuYWdpbmcgY29ubmVjdGlvbnMgYW5kIHRyeWluZyB0byBmaW5kIHRoZSBiZXN0IGRlc3RpbmF0aW9uLCByYXRoZXIgdGhhbiBhIHNpbmdsZSwgdWx0cmEtb3B0aW1pemVkIGJpbmRpbmcgbG9va3VwLCB3aGVyZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwgKndvdWxkKiBtYXR0ZXIuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZGVzaWduZXJzIG9mIElQVlMgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIG9wdGltaXphdGlvbiBpcyBjcml0aWNhbCBhbmQgd2hlcmUgaXQncyBsZXNzIHNvLCBhbmQgdGhleSBhcmUgbGV2ZXJhZ2luZyB0aGUgaW5saW5lIGtleXdvcmQgdG8gdGhlIGJlc3QgZWZmZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjE0LjkzMzE2MjM4NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNjg3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTExNjc9dm9pZCBpcF92c190cnlfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIxOS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMjA6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMjEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMzQ3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzkzLVxcdFxcdFxcdGlwX3ZzX3VuYmluZF9hcHAoY3ApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTM5NDpcXHRcXHRpcF92c191bmJpbmRfZGVzdChjcCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzk1LVxcdFxcdGlmICh1bmxpa2VseShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjE0Ljk3NzQzOTA4M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE3NjMxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBsb2dpYywgYXMgdGhvdWdoIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmb3IgYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludGVybmFsIENvbm5lY3Rpb24gTWFuYWdlbWVudCBpbiBJUFZTKipcblxuQWxyaWdodCwgSSBzZWUgdGhlIGRpcmVjdGlvbiBoZXJlLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIGludGVybmFsIHdvcmtpbmdzIG9mIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBTaW5jZSBgaXBfdnNfdW5iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfY29ubl9leHBpcmVgIGFyZSBkZWNsYXJlZCBzdGF0aWMgYW5kIHRoZXJlZm9yZSBpbnRlcm5hbCB0byB0aGVpciByZXNwZWN0aXZlIG1vZHVsZXMsIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGUgcHVibGljLWZhY2luZyBhbmQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCBvdXRjb21lLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGlwX3ZzX2Nvbm5fbmV3YCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIGFzIHRoZSBwb2ludHMgb2YgaW50ZXJlc3QuIFRoYXQgbWFrZXMgc2Vuc2U7IGBpcF92c19jb25uX25ld2Agd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiwgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCB3b3VsZCBiZSByZXNwb25zaWJsZSBmb3IgYXR0ZW1wdGluZyB0aGUgZGVzdGluYXRpb24gYmluZGluZy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGlmZmVyZW50IHNjaGVkdWxlciBtZXRob2RzIGNvbWUgaW50byBwbGF5IGluIHRoaXMgbmV3IGNvbm5lY3Rpb24gc2V0dXAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGVhY2ggc2NoZWR1bGVyIGhhbmRsZXMgaXRzIG93biBpbnRlcm5hbCBsb2dpYyB0byBkZWFsIHdpdGggdGhpcyBjb25uZWN0aW9uIGNyZWF0aW9uLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgaG93IGBpcF92c19kaF9zY2hlZHVsZWAsIGBpcF92c19sYmxjX3NjaGVkdWxlYCwgYW5kIGBpcF92c19sY19zY2hlZHVsZWAgaW50ZXJhY3Qgd2l0aCB0aGlzIHdob2xlIHByb2Nlc3MuIEdldHRpbmcgYSBoYW5kbGUgb24gaG93IHRoZXNlIHNjaGVkdWxlcyBhcmUgc2V0IHVwIHdpbGwgY2xhcmlmeSB0aGUgZXhhY3QgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBpcF92c19jb25uX25ld2AgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCBzdGVwcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICp3aGVuKiBhbmQgKmhvdyogdGhlIHNjaGVkdWxlcidzIGxvZ2ljIGdldHMgaW50ZXJ3b3ZlbiBpbnRvIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzc0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MTkuMTk1MDcyNDM3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzMDI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yMTE9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyMTI6aXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yMTMtXFx0XFx0ICBzdHJ1Y3QgaXBfdnNfaXBoZHIgKmlwaClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0MS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDI6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfZGhfc2NoZWR1bGVyID1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQ2LVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0NzpcXHQubl9saXN0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19kaF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDgtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfZGhfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTEtXFx0LmRlbF9kZXN0ID1cXHRcXHRpcF92c19kaF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjUyOlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfZGhfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUzLX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNTY9c3RhdGljIGludCBfX2luaXQgaXBfdnNfZGhfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1Ny17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjU4OlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX2RoX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU5LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTI2Mj1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfZGhfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2My17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjY0OlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2NS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MTkuMjQyNDExMTg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODM1NzQzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBJUFZTIERlc3RpbmF0aW9uIEhhbmRsaW5nKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGVzZSBJUFZTIGZ1bmN0aW9ucyB3b3JrIHVuZGVyIHRoZSBob29kLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gd2FzIHRoYXQgSSBjb3VsZCB0cmVhdCBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYW5kIGBpcF92c19jb25uX25ld2AgYXMgYSBzdGF0aWMgc2V0IG9mIGZ1bmN0aW9ucyB0byBjb25zaWRlci4gSSBtZWFuLCB0aGV5IHNlZW0gZnVuZGFtZW50YWwgdG8gZGVzdGluYXRpb24gbWFuYWdlbWVudCBhbmQgY29ubmVjdGlvbiBoYW5kbGluZywgc28gaXQgc2VlbWVkIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC4uLiBhcmUgdGhleSAqdHJ1bHkqIHN0YXRpYyBpbiB0aGVpciBiZWhhdmlvcj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVyZSdzIG9mdGVuIG1vcmUgY29tcGxleGl0eSB0aGFuIG1lZXRzIHRoZSBleWUuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uOyBpdCdzIGFsd2F5cyBhIG1pc3Rha2UgdG8gbWFrZSB0aG9zZSBraW5kcyBvZiBhc3N1bXB0aW9ucyB3aXRob3V0IGRpZ2dpbmcgZGVlcGVyLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgZHluYW1pYyBiZWhhdmlvciBvciBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiB0aGV5IG9wZXJhdGUgdGhlIHNhbWUgd2F5IGluIGFsbCBjaXJjdW1zdGFuY2VzIG9yIGlmIHRoZWlyIGJlaGF2aW9yIGNoYW5nZXMgYmFzZWQgb24gY29udGV4dCBvciBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyMy4xMjU5ODkyMjVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDUxNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2FkZF9kZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTUxMz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1MTQ6aXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTUxNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MzQ3Mj1kb19pcF92c19zZXRfY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IHB0ciwgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNjAxLVxcdGNhc2UgSVBfVlNfU09fU0VUX0FERERFU1Q6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjM2MDI6XFx0XFx0cmV0ID0gaXBfdnNfYWRkX2Rlc3Qoc3ZjLCBcXHUwMDI2dWRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNjAzLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ2ODU9c3RhdGljIGludCBpcF92c19nZW5sX3NldF9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Nzk1LVxcdGNhc2UgSVBWU19DTURfTkVXX0RFU1Q6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ3OTY6XFx0XFx0cmV0ID0gaXBfdnNfYWRkX2Rlc3Qoc3ZjLCBcXHUwMDI2dWRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Nzk3LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyMy4xNjk0NjAxMDRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MzIyMjg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqU3RhdGljIEZ1bmN0aW9uIERlZXAgRGl2ZSoqXG5cbkhtbSwgYGlwX3ZzX2FkZF9kZXN0YC4uLiB0aGF0J3Mgc3RhdGljLiBSaWdodC4gTWFrZXMgc2Vuc2UgaW4gaXRzIGNvbnRleHQuIEJ1dCwgd2hlbmV2ZXIgSSBzZWUgYSBzdGF0aWMgZnVuY3Rpb24sIG15IG1pbmQgYXV0b21hdGljYWxseSBzdGFydHMgdHJhY2luZyBpdHMgdXNhZ2UuIExldCdzIHNlZSwgd2hlcmUgZWxzZSBpcyB0aGlzIGxpa2VseSB0byBiZSB1c2VkPyBJdCdzIHRpbWUgdG8gY2hlY2sgYGRvX2lwX3ZzX3NldF9jdGxgIGFuZCBgaXBfdnNfZ2VubF9zZXRfY21kYC4gSSdtIHdpbGxpbmcgdG8gYmV0IHRoZXkncmUgc3RhdGljIGFzIHdlbGwsIGNvbnNpZGVyaW5nIHRoZSB3YXkgdGhlIElQVlMgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQuIEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoZSBsYXJnZXIgc3lzdGVtLiBBbmFseXppbmcgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBpcyBlc3NlbnRpYWwgdG8gZ3Jhc3AgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoaXMgbW9kdWxlIGFuZCBkZXRlcm1pbmUgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjI2LjQ1MjY4NTk2MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNTE5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9faXBfdnNfc2V0X2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTM0NzE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozNDcyOmRvX2lwX3ZzX3NldF9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3QgcHRyLCB1bnNpZ25lZCBpbnQgbGVuKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNDczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0zOTUxPXN0YXRpYyBzdHJ1Y3QgbmZfc29ja29wdF9vcHMgaXBfdnNfc29ja29wdHMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMzk1NC1cXHQuc2V0X29wdG1heFxcdD0gSVBfVlNfU09fU0VUX01BWCsxLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozOTU1OlxcdC5zZXRcXHRcXHQ9IGRvX2lwX3ZzX3NldF9jdGwsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM5NTYtXFx0LmdldF9vcHRtaW5cXHQ9IElQX1ZTX0JBU0VfQ1RMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyNi40OTU5NDIwMzJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4OTgzNjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBOb24tU3RhdGljIEZ1bmN0aW9uIFVzYWdlKipcblxuT2theSwgSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgYXJlIGJlaW5nIHVzZWQuIFNvLCBJJ20gZ29pbmcgdGhyb3VnaCB0aGUgbGlzdC4gTGV0J3Mgc3RhcnQgd2l0aCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBOb24tc3RhdGljLCBnb29kLiBOZXh0LCBsZXQncyBsb29rIGF0IGBpcF92c19jb25uX25ld2Ag4oCTIHRoYXQncyBub24tc3RhdGljIGFzIHdlbGwuIEFscmlnaHQsIG1vdmluZyBvbiB0byBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAsIGFsc28gbm9uLXN0YXRpYy4gTGV0J3Mga2VlcCBnb2luZzogYGlwX3ZzX2luX3N0YXRzYCBpcyBhbm90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFNhbWUgZ29lcyBmb3IgYGlwX3ZzX291dF9zdGF0c2AuIEZpbmFsbHksIGxldCdzIHRha2UgYSBsb29rIGF0IGBpcF92c19pbl9ob29rYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzAuNjg1NzgxNjA2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA0MzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19pbl9ob29rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDg3PXN0YXRpYyB1bnNpZ25lZCBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIwODg6aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjMxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczRbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyNy1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzI4OlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyOS1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0MS1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzQyOlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3Ni1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzc3OlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5MC1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzkxOlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5Mi1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzAuNzMzODI5NDk1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTE5NDM5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJ20gdGhpbmtpbmcgdGhlc2UgdGhpbmdzIG15c2VsZjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE9ic2VydmluZyBTdGFzaXMgaW4gdGhlIFN5c3RlbSoqXG5cblJpZ2h0LCB0aGlzIGZlZWxzLi4uc3RhdGljLiBTb21ldGhpbmcncyBub3QgZmxvd2luZyB0aGUgd2F5IEkgZXhwZWN0LCBvciBzb21ldGhpbmcgaGFzIHN0YWxsZWQgZW50aXJlbHkuIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgVmlydHVhbCBTZXJ2ZXIncyBiZWhhdmlvciwgcG9zc2libHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuXG5TbywgbGV0J3MgZ2V0IHJpZ2h0IHRvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGlucHV0IGFuZCBvdXRwdXQgY291bnRlcnMuIEknbSBmb2N1c2luZyBvbiB0aGUgaGVhcnQgb2YgdGhlIGxvYWQtYmFsYW5jaW5nIG1lY2hhbmlzbXM6IEkgbmVlZCBhIHF1aWNrIGxvb2sgYXQgYGlwX3ZzX2luYCBhbmQgYGlwX3ZzX291dGAgdG8gc2VlIGlmIHRyYWZmaWMgaXMgZXZlbiBoaXR0aW5nIHRoZSB2aXJ0dWFsIHNlcnZlciwgb3IgaWYgdHJhZmZpYyBpcyBsZWF2aW5nIHRoZSB2aXJ0dWFsIHNlcnZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0b3IuIFRoZXkncmUgbXkgZ28tdG8gZGlhZ25vc3RpYyBwb2ludCBmb3IgdGhpcyBraW5kIG9mIHNpdHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjozMy44ODU3NzYyNjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzQ1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz04OT1jb25zdCBjaGFyICppcF92c19wcm90b19uYW1lKHVuc2lnbmVkIGludCBwcm90bylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTEzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTE0OnZvaWQgaXBfdnNfaW5pdF9oYXNoX3RhYmxlKHN0cnVjdCBsaXN0X2hlYWQgKnRhYmxlLCBpbnQgcm93cylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTExNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI5OT1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjMwMDppcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz03NDg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfYWRkcl9pc191bmljYXN0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGFmLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NTktICogIFBhc3Mgb3IgZHJvcCB0aGUgcGFja2V0Llxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NzYwOiAqICBDYWxsZWQgYnkgaXBfdnNfaW4sIHdoZW4gdGhlIHZpcnR1YWwgc2VydmljZSBpcyBhdmFpbGFibGUgYnV0XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NjEtICogIG5vIGRlc3RpbmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgY29ubmVjdGlvbi5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDItXFx0XFx0Lyogc3RhdGlzdGljcyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6ODAzOlxcdFxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODA0LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNjQxPWlwX3ZzX3RyeV90b19zY2hlZHVsZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNjYwLVxcdFxcdElQX1ZTX0RCR19QS1QoMTIsIGFmLCBwcCwgc2tiLCBpcGgtXFx1MDAzZW9mZixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE2NjE6XFx0XFx0XFx0ICAgICAgXFxcImlwX3ZzX2luOiBwYWNrZXQgY29udGludWVzIHRyYXZlcnNhbCBhcyBub3JtYWxcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE2NjItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTI9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1MzppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU0LVxcdCAgICAgIHVuc2lnbmVkIGludCBob29rbnVtLCBzdHJ1Y3QgaXBfdnNfaXBoZHIgKmlwaClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cXHQvKiBkbyB0aGUgc3RhdGlzdGljcyBhbmQgcHV0IGl0IGJhY2sgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTcwLVxcdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cXHUwMDNlbGVuLCBob29rbnVtLCBcXHUwMDI2Y2lwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODEtI2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTgyOnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODMtXFx0XFx0XFx0ICAgIGludCAqcmVsYXRlZCwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjctXFx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDY4OlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjA4Nz1zdGF0aWMgdW5zaWduZWQgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA4OS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXFx0XFx0XFx0aW50IHJlbGF0ZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTM4OlxcdFxcdFxcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFxcdTAwMjZyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaG9va251bSwgXFx1MDAyNmlwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXFx0XFx0XFx0aW50IHJlbGF0ZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ4OlxcdFxcdFxcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFxcdTAwMjZyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0OS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaG9va251bSwgXFx1MDAyNmlwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjQzOlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cXHRpcF92c19zZXRfc3RhdGUoY3AsIElQX1ZTX0RJUl9JTlBVVCwgc2tiLCBwZCwgaXBoLmxlbik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODAtICogICAgICBXaGVuIGZ3bWFyay1iYXNlZCB2aXJ0dWFsIHNlcnZpY2UgaXMgdXNlZCwgc3VjaCBhcyB0cmFuc3BhcmVudFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI4MTogKiAgICAgIGNhY2hlIGNsdXN0ZXIsIFRDUCBwYWNrZXRzIGNhbiBiZSBtYXJrZWQgYW5kIHJvdXRlZCB0byBpcF92c19pbixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODItICogICAgICBidXQgSUNNUCBkZXN0aW5lZCBmb3IgMC4wLjAuMC8wIGNhbm5vdCBub3QgYmUgZWFzaWx5IG1hcmtlZCBhbmRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODM6ICogICAgICBzZW50IHRvIGlwX3ZzX2luX2ljbXAuIFNvLCBjYXRjaCB0aGVtIGF0IHRoZSBORl9JTkVUX0ZPUldBUkQgY2hhaW5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODQ6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjg1LSAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjg3PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMwOTpcXHRcXHRyZXR1cm4gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFxcdTAwMjZyLCBzdGF0ZS1cXHUwMDNlaG9vaywgXFx1MDAyNmlwaGRyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTAtI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzEzOlxcdHJldHVybiBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXFx1MDAyNnIsIHN0YXRlLVxcdTAwM2Vob29rLCBcXHUwMDI2aXBoZHIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNC19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjctXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMyODpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjktXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMzItXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMzM6XFx0LyogQmVmb3JlIGlwX3ZzX2luLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMzNC1cXHR7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM0MjpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDMtXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM2W10gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM3NzpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzgtXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzODEtXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzODI6XFx0LyogQmVmb3JlIGlwX3ZzX2luLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM4My1cXHR7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTAtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM5MTpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTItXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0NDM9dm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0NzEtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDcyOnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQ3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NTk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfb3BzID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjU2MDpcXHQuaW5pdCA9IF9faXBfdnNfaW5pdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NjEtXFx0LmV4aXRfYmF0Y2ggPSBfX2lwX3ZzX2NsZWFudXBfYmF0Y2gsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NjY9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU3Mi0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1NzM6c3RhdGljIGludCBfX2luaXQgaXBfdnNfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU3NC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI2MjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2NsZWFudXAodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjYzNi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI2Mzc6bW9kdWxlX2luaXQoaXBfdnNfaW5pdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNjM4LW1vZHVsZV9leGl0KGlwX3ZzX2NsZWFudXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjozMy45Mjc1Mjc1MTVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNDEyNjEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJUFZTIEludGVybmFsIFN0cnVjdHVyZSBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBgaXBfdnNfaW5faG9va2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBvYnNlcnZhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBJUFZTIGltcGxlbWVudGF0aW9uLiBMZXQncyBkaWcgaW50byB0aGUgZnVuY3Rpb24gdGhhdCdzIGxpa2VseSBtYW5pcHVsYXRpbmcgdGhhdDogYGlwX3ZzX2dlbmxfc2V0X2NtZGAuIFRoaXMgaXMgd2hlcmUgY29uZmlndXJhdGlvbiBvciBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhhdCBob29rIHByb2JhYmx5IG9yaWdpbmF0ZS4gVW5kZXJzdGFuZGluZyB0aGlzIGNvbW1hbmQgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gVGhlIHN0YXRpYyBuYXR1cmUgaW1wbGllcyBhIGdsb2JhbCwgZml4ZWQgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW50ZXJhY3RzIHdpdGggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTExLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzcuMjYxNjU2NDAyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA3MTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19nZW5sX3NldF9jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00NjYwPXN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfZGFlbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDY4NTpzdGF0aWMgaW50IGlwX3ZzX2dlbmxfc2V0X2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Njg2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00OTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaXBfdnNfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIwLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTIxOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MjItXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTI2LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTI3OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MjgtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTMyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTMzOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzQtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ1LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTQ2OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NDctXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTUxLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTUyOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTMtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTU3LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTU4OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTktXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg3LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTg4OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5ODktXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDA1LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA2OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDctXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDExLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDEyOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTMtXFx0fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzcuMzA0NzMxNDMxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mjg5MzgwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgYW5kIEFQSSBVc2FnZSoqXG5cbk9rYXksIHNvIGBpcF92c19nZW5sX3NldF9jbWRgIGlzIHN0YXRpYy4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBTaW5jZSBJIGNhbid0IGRpcmVjdGx5IGFjY2VzcyB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gYWNoaWV2ZSBteSBnb2FsIHVzaW5nIHRoZSBhdmFpbGFibGUgdG9vbHMuIEknbGwgbmVlZCB0byB3b3JrIGFyb3VuZCB0aGUgcmVzdHJpY3Rpb24sIG9mIGNvdXJzZS5cblxuUmlnaHQsIHNvIHRvIG1ha2UgdGhpcyBoYXBwZW4sIEknbGwgbmVlZCB0byBsZWFuIG9uIGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkLiBJIHdpbGwgZGVmaW5pdGVseSBuZWVkIHRvIHVzZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfY29ubl9uZXdgLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCB0aGV5IGFyZSB0aGUgbG9naWNhbCBjaG9pY2VzIGhlcmUuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSB0aGF0IGJvdGggYGlwX3ZzX2luX3N0YXRzYCBhbmQgYGlwX3ZzX291dF9zdGF0c2AgYXJlIGRlZmluZWQgYXMgKnN0YXRpYyBpbmxpbmUqLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBUaGV5ICpzaG91bGQqIHN0aWxsIGJlIHVzYWJsZSBpbiB0aGVpciByZXNwZWN0aXZlIGZpbGVzLCBidXQgdGhleSB3b24ndCBiZSBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiB0aGUgc291cmNlIHdoZXJlIHRoZXkgYXJlIGRlZmluZWQuIEknbGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBJIG1hcCBvdXQgaG93IHRvIGJ1aWxkIHRoZSBzb2x1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0MS4xMzM2NzIwMDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTE0MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luX3N0YXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yOTk9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMzAxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDItXFx0XFx0Lyogc3RhdGlzdGljcyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6ODAzOlxcdFxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODA0LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzUzPWlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cXHQvKiBkbyB0aGUgc3RhdGlzdGljcyBhbmQgcHV0IGl0IGJhY2sgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTcwLVxcdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cXHUwMDNlbGVuLCBob29rbnVtLCBcXHUwMDI2Y2lwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE5ODI9c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDY3LVxcdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjA2ODpcXHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODg9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjQzOlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cXHRpcF92c19zZXRfc3RhdGUoY3AsIElQX1ZTX0RJUl9JTlBVVCwgc2tiLCBwZCwgaXBoLmxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjQxLjE4MTE5MDE2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQ4OTk4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqU3RhdGljIElubGluZSBBbmFseXNpcyBcdTAwMjYgVGVtcGxhdGUgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBpbmRlZWQgc3RhdGljIGlubGluZS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLCBpbXBhY3RpbmcgaG93IHRoZXkncmUgaGFuZGxlZCBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIE5vdywgdG8gZGlnIGRlZXBlciBhbmQgdW5kZXJzdGFuZCB0aGVpciByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgdGVtcGxhdGUncyBwcm9wZXJ0aWVzIGFyZSBhc3Nlc3NlZCwgYW5kIHRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgd2lsbCBwcm92aWRlIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1NTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0NC4yNzYwOTI3NDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzc4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMjU3PXN0YXRpYyBpbnQgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3Mi0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyNzM6aW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjQ0LjMxOTQ3NjAyMVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM1NTI0MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVBWUyBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBpcF92c19jaGVja190ZW1wbGF0ZWAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3MgYSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBub24tc3RhdGljIGRlY2xhcmF0aW9uLiBXaGVyZSBpcyBpdCBiZWluZyB1c2VkPyBXaGF04oCZcyBpdHMgc2NvcGU/IFdoYXQncyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGRlY2xhcmF0aW9uPyBJcyBpdCB0aHJlYWQtc2FmZSwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByZWVudHJhbmN5IHByb2JsZW1zIHRvIGxvb2sgYXQ/IFRoaXMgd2lsbCBkcml2ZSBteSBleHBsb3JhdGlvbiBhbmQgdGhlIGxldmVsIG9mIHNjcnV0aW55IEkgd2lsbCBuZWVkIHRvIGFwcGx5IGR1cmluZyBteSBldmFsdWF0aW9uIG9mIHRoZSBjb2RlLlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYC4gVGhpcyBzb3VuZHMgbGlrZSBpdCBkZWFscyB3aXRoIGZsdXNoaW5nIGNvbm5lY3Rpb25zIHRoYXQgYXJlIG5vdCBsaW5rZWQgdG8gYW55IHNwZWNpZmljIGRlc3RpbmF0aW9uIGhvc3QuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgZXhwaXJhdGlvbiBzdHJhdGVneSB3aXRoaW4gSVBWUy4gSSdsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLCBkZXRlcm1pbmUgaXRzIHRyaWdnZXJpbmcgY29uZGl0aW9ucywgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gbWFpbnRhaW5pbmcgY29ubmVjdGlvbiB0YWJsZSBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBzZWUgaWYgaXQgaXMgdXNlZCBjb3JyZWN0bHksIGFuZCBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkLiBTcGVjaWZpY2FsbHksIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIGNsZWFudXAgbWVjaGFuaXNtPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3RoZXIgZXhwaXJhdGlvbiBvciBnYXJiYWdlIGNvbGxlY3Rpb24gcm91dGluZXM/IFRoZSBjb250ZXh0IG1hdHRlcnMgaGVyZTsgSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIGEgY29ubmVjdGlvbiBpbiB0aGUgSVBWUyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODkxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NDguMDU1MDAzMDcyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMwNzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTE5MzQ9c3RhdGljIHZvaWQgaXBfdnNfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTk5Ny0jaWZkZWYgQ09ORklHX1NZU0NUTFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTk5ODp2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5OTkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0OC4wOTkzMTQ5MjFaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MjEzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKklQVlMgQ29ubmVjdGlvbiBGbHVzaGluZyBDb25zaWRlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBJdCBtZWFucyBpdHMgdmFsdWUgb3Igc3RhdGUgY2FuIGNoYW5nZSBkdXJpbmcgcnVudGltZSwgc3VnZ2VzdGluZyBpdCdzIHBvdGVudGlhbGx5IGR5bmFtaWMgYW5kIHRpZWQgdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN5c3RlbSBvciBuZXR3b3JrLiBUaGlzIGlzIHVzZWZ1bCBmb3IgbWUgYmVjYXVzZSBJIGNhbiBub3cgY29uc2lkZXIgdGhlIGNvZGUgdGhhdCBzZXRzIG9yIG1vZGlmaWVzIGl0IGZvciB0dW5pbmcgdGhlIElQVlMgbG9hZCBiYWxhbmNlci4gXG5cbk5vdywgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gZmx1c2hpbmcsIGxldCBtZSBwaXZvdCBhbmQgY2hlY2sgaG93IGBpcF92c19zdGF0c19mcmVlYCB3b3Jrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkIHdoZW4gY29ubmVjdGlvbnMgYXJlIGZsdXNoZWQgb3IgZXhwaXJlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbm5lY3Rpb24gYW5kIGhvdyBpdHMgbGlmZWN5Y2xlIGlzIG1hbmFnZWQgc28gdGhhdCBJIGNhbiBoYXZlIGEgY2xlYXIgaWRlYSBhcyB0byB3aGV0aGVyIHN0YWxlIGRhdGEgaXMgYmVpbmcgY29sbGVjdGVkIGFuZCwgdGhlcmVmb3JlLCBob3cgdG8gY29ycmVjdGx5IGludGVycHJldCB0aGUgcmVzdWx0aW5nIHN0YXRpc3RpY3MuIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgcGFydHMgb2YgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDM1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NTEuNTUxNDU3NTc3WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1MDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19zdGF0c19mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5ND12b2lkIGlwX3ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMjk4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMjk5OnZvaWQgaXBfdnNfc3RhdHNfZnJlZShzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzAwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NTEuNTkzNTEyMjA2WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzgyNDY1ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgaXBfdnNfc3RhdHNfZnJlZWAgYW5kIFN0YXRlIE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IGBpcF92c19zdGF0c19mcmVlYCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhhdCBvcGVucyBhIGZldyBkb29ycywgYW5kIHNvbWUgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4uIExldCdzIHNlZSBob3cgYW5kICp3aGVyZSogdGhhdCBmdW5jdGlvbiBpcyB1c2VkIOKAkyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnM7IGhvdyBtYW55IHBsYWNlcyBkb2VzIGl0IGdldCBjYWxsZWQgYW5kIGZyb20gd2hlcmUuIFdoYXQgYXJlIHdlIGV4cGVjdGluZyB0byBzZWU/XG5cbk5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCB0aGUgY29kZSdzIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGhhbmRsaW5nIGNvbm5lY3Rpb24gc3RhdGUuIEl0J3MgYSBuYXR1cmFsIHByb2dyZXNzaW9uIHRvIGNoZWNrIG91dCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMg4oCTIGBzZXRfc2N0cF9zdGF0ZWAgYW5kIGBzZXRfdGNwX3N0YXRlYC4gVGhlc2UgbGlrZWx5IHBsYXkgYSB2aXRhbCByb2xlIGluIG1hbmFnaW5nIHRoZSBzdGF0ZSBvZiBib3RoIFNDVFAgYW5kIFRDUCBjb25uZWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgSVBWUy4gSSdsbCBuZWVkIHRvIGFuYWx5emUgaG93IHN0YXRlIHRyYW5zaXRpb25zIGFyZSBpbXBsZW1lbnRlZCBpbiB0aG9zZSBmdW5jdGlvbnMsIHdoYXQgdGhlIHZhbGlkIHN0YXRlcyBhcmUsIGFuZCBob3cgdGhhdCBpbmZvcm1hdGlvbiBpcyBiZWluZyBzdG9yZWQgYW5kIHV0aWxpemVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGVzaWduLCBpbmNsdWRpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBtaWdodCBvciBtaWdodCBub3QgaW50ZXJhY3Qgd2l0aCBgaXBfdnNfc3RhdHNfZnJlZWAuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHdoYXQgc29ydCBvZiB3b3JrIHRoZXkgcGVyZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODowOS40MTgxNzM2NDVaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Njk5OTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfc2N0cF9zdGF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9Mzc2PXN0YXRpYyBpbmxpbmUgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6Mzc3OnNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtMzc4LVxcdFxcdGludCBkaXJlY3Rpb24sIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jPTQ2Nj1zY3RwX3N0YXRlX3RyYW5zaXRpb24oc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBpbnQgZGlyZWN0aW9uLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYzo0NzE6XFx0c2V0X3NjdHBfc3RhdGUocGQsIGNwLCBkaXJlY3Rpb24sIHNrYiwgaXBoX2xlbik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNwLVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MDkuODA1MTc3NjA5WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzg1OTkxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlNDVFAgU3RhdGUgVHJhbnNpdGlvbiBEaXNjcmVwYW5jaWVzKipcblxuSG1tLCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNDVFAgY29kZS4uLiBhbmQgc29tZXRoaW5nJ3MganVzdCBzbmFnZ2VkIG15IGF0dGVudGlvbi4gSSBzZWUgdGhhdCBgc2V0X3NjdHBfc3RhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWMgaW5saW5lYC4gUmlnaHQsIHRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwga2VlcHMgdGhlIGZ1bmN0aW9uIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGFuZCBlbmFibGVzIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBpdCBhZ2dyZXNzaXZlbHkg4oCTIGxpa2VseSBpbmxpbmluZyBpdCB3aGVyZSBpdCdzIGNhbGxlZCwgcmVkdWNpbmcgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZC4gTWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuQnV0IHRoZW4sIEkgbm90aWNlIGBzY3RwX3N0YXRlX3RyYW5zaXRpb25gLiBBbmQuLi4gaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgYHN0YXRpY2AsIHdoaWNoIGltcGxpZXMgaXQncyBwb3RlbnRpYWxseSB2aXNpYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBtb2R1bGUsIGFuZCBwZXJoYXBzIGV2ZW4gZXh0ZXJuYWxseS4gVGhhdCByYWlzZXMgYSBxdWVzdGlvbiBpbW1lZGlhdGVseS4gSXMgaXQgbWVhbnQgdG8gYmUgYSBnZW5lcmFsbHkgYWNjZXNzaWJsZSBmdW5jdGlvbj8gV2hhdCdzIHRoZSBkZXNpZ24gaW50ZW50PyBJcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGJhc2UgdGhhdCBhcmUgbm90IGlubGluZWQ/XG5cblRoZSBhcHBhcmVudCBkaWZmZXJlbmNlIGluIGRlY2xhcmF0aW9uIHNlZW1zIHNpZ25pZmljYW50LiBEb2VzIHRoZSBjb2RlIGludGVuZCBmb3IgZXh0ZXJuYWwgdXNlIG9mIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgcG90ZW50aWFsIGJ1Zz8gVGltZSB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZGlzY3JlcGFuY3kgZXhpc3RzIGJldHdlZW4gYHNldF9zY3RwX3N0YXRlYCBhbmQgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAgYW5kIHRoZWlyIHJvbGUgaW4gU0NUUCdzIHN0YXRlIG1hbmFnZW1lbnQuIEkgbmVlZCB0byBrbm93IHdoeSBvbmUgaXMgYHN0YXRpYyBpbmxpbmVgIGFuZCB0aGUgb3RoZXIgaXNuJ3QuIEknbSBndWVzc2luZyB0aGUgdHJhbnNpdGlvbiBmdW5jdGlvbiBpcyBjb21wbGV4LCBhbmQgdXNlZCBtb3JlIGJyb2FkbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MTMuODQzNzgwNzA1WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzc5MTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3N0YXRlX3RyYW5zaXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jPTQ2NT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NDY2OnNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NjctXFx0XFx0Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz01Njc9c3RydWN0IGlwX3ZzX3Byb3RvY29sIGlwX3ZzX3Byb3RvY29sX3NjdHAgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jLTU4My1cXHQuc3RhdGVfbmFtZVxcdD0gc2N0cF9zdGF0ZV9uYW1lLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NTg0OlxcdC5zdGF0ZV90cmFuc2l0aW9uID0gc2N0cF9zdGF0ZV90cmFuc2l0aW9uLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTg1LVxcdC5hcHBfY29ubl9iaW5kXFx0PSBzY3RwX2FwcF9jb25uX2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjEzLjkwNzU3OTExNVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkwMTcxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFN0YXRlIFRyYW5zaXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBgc2N0cF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBzcGVjaWZpYyBkZXNpZ24gY2hvaWNlOiBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBleHBvc2VkIG9yIGNhbGxlZCBleHRlcm5hbGx5IGZyb20gb3RoZXIgbW9kdWxlcy4gSXQncyBsaWtlbHkgaW50ZW5kZWQgYXMgYW4gaW50ZXJuYWwgdXRpbGl0eSBmdW5jdGlvbiB3aXRoaW4gdGhlIFNDVFAgc3RhdGUgbWFuYWdlbWVudCBjb2RlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc2NvcGUuXG5cbkdpdmVuIHRoaXMgcmVzdHJpY3Rpb24sIEknbGwgc2hpZnQgZ2VhcnMgYW5kIGxvb2sgZGlyZWN0bHkgYXQgYHNldF90Y3Bfc3RhdGVgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBpbnRlcmFjdGlvbiB0aGVyZS4gSSdtIGFzc3VtaW5nIHRoYXQgZnVuY3Rpb24gbWlnaHQgcGxheSBhIHBhcnQgaW4gdXBkYXRpbmcgYW4gc2N0cCBzdGF0ZSBiYXNlZCBvbiBhbiB1cGRhdGUgZnJvbSBhIFRDUC1yZWxhdGVkIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDIzMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjE3LjA5Nzc1MzY2NFoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MTE3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldF90Y3Bfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYz00NzU9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjQ3NjpzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy00NzctXFx0ICAgICAgaW50IGRpcmVjdGlvbiwgc3RydWN0IHRjcGhkciAqdGgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmM9NTUwPXRjcF9zdGF0ZV90cmFuc2l0aW9uKHN0cnVjdCBpcF92c19jb25uICpjcCwgaW50IGRpcmVjdGlvbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy01NjEtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjU2MjpcXHRzZXRfdGNwX3N0YXRlKHBkLCBjcCwgZGlyZWN0aW9uLCB0aCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jLTU2My1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODoxNy4yMDU4NzU2MzJaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2ODEyNTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBUQ1AgU3RhdGUgVHJhbnNpdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBgdGNwX3N0YXRlX3RyYW5zaXRpb25gIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBmb3IgdGhlIG92ZXJhbGwgc3lzdGVtLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGlrZWx5IHNjb3BlIGFuZCBwdXJwb3NlIG9mIHRoYXQgcGFydGljdWxhciB2YXJpYWJsZSBvciBmdW5jdGlvbi4gTm93LCBhIHN0YXRpYyBkZWNsYXJhdGlvbiB1c3VhbGx5IG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyB0aGF0IGFmZmVjdHMgaXRzIGFjY2Vzc2liaWxpdHkgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFRDUC9JUCBzdGFjay5cblxuTm93LCBsZXQncyBwaXZvdC4gR2l2ZW4gdGhhdCBJIGhhdmUgdGhpcyBpbiBmcm9udCBvZiBtZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIElQVlMgY29ubmVjdGlvbiBoYW5kbGluZy4gTGV0J3Mgc2VlIGhvdyBgaXBfdnNfcHJvY19jb25uYCBpbnRlcmFjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgbWVjaGFuaXNtLiBJIHdhbnQgdG8gc2VlIGlmIGB0Y3Bfc3RhdGVfdHJhbnNpdGlvbmAgcGxheXMgYSByb2xlIHdpdGhpbiB0aGUgVlMgbGF5ZXIgYW5kIGlmIHRoZSBzdGF0aWMgZGVjbGFyYXRpb24gY3JlYXRlcyBhbnkgdW5leHBlY3RlZCBib3R0bGVuZWNrcy4gSSdtIHRoaW5raW5nIGFib3V0IGNvbmN1cnJlbnQgY29ubmVjdGlvbnMgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGltcGFjdC4gSSBiZXQgYGlwX3ZzX3Byb2NfY29ubmAgd2lsbCByZXZlYWwgaG93IHRoaXMgc3RhdGljIGVsZW1lbnQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzIzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjEuMzc0MDA0ODQ3WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzEyNjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19wcm9jX2Nvbm5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTc4OD1pcF92c19jb25uX2ZpbGxfcGFyYW1fc3luYyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCB1bmlvbiBpcF92c19zeW5jX2Nvbm4gKnNjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDAtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzo4NDE6c3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFyYW0sXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDItXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHN0YXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz05NTU9c3RhdGljIHZvaWQgaXBfdnNfcHJvY2Vzc19tZXNzYWdlX3YwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBjaGFyICpidWZmZXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTQtXFx0XFx0LyogU2VuZCB0aW1lb3V0IGFzIFplcm8gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjEwMTU6XFx0XFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFxcdTAwMjZwYXJhbSwgZmxhZ3MsIHN0YXRlLCBzLVxcdTAwM2Vwcm90b2NvbCwgQUZfSU5FVCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTYtXFx0XFx0XFx0XFx0KHVuaW9uIG5mX2luZXRfYWRkciAqKVxcdTAwMjZzLVxcdTAwM2VkYWRkciwgcy1cXHUwMDNlZHBvcnQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTEwNjY9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfcHJvY19zeW5jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIF9fdTggKnAsIF9fdTggKm1zZ19lbmQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTExNzMtXFx0aWYgKGFmID09IEFGX0lORVQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzoxMTc0OlxcdFxcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcXHUwMDI2cGFyYW0sIGZsYWdzLCBzdGF0ZSwgcy1cXHUwMDNldjQucHJvdG9jb2wsIGFmLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE3NS1cXHRcXHRcXHRcXHQodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNnMtXFx1MDAzZXY0LmRhZGRyLCBzLVxcdTAwM2V2NC5kcG9ydCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4MC1cXHRlbHNlXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzoxMTgxOlxcdFxcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcXHUwMDI2cGFyYW0sIGZsYWdzLCBzdGF0ZSwgcy1cXHUwMDNldjYucHJvdG9jb2wsIGFmLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4Mi1cXHRcXHRcXHRcXHQodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNnMtXFx1MDAzZXY2LmRhZGRyLCBzLVxcdTAwM2V2Ni5kcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjEuNDI3MTM2NTU2WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMyNTIyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyBgaXBfdnNfcHJvY19jb25uYCBhbmQgUm91dGluZyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gYGlwX3ZzX3Byb2NfY29ubmAgaXMgYXBwYXJlbnRseSBzdGF0aWMuIFRoYXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gTm93LCB3aGF0J3MgZ29pbmcgb24gYXJvdW5kIGl0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByb3V0aW5nIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGhvdyBvdXRib3VuZCByb3V0ZXMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYGlwX3ZzX2dldF9vdXRfcnRgIGFuZCBgaXBfdnNfZ2V0X291dF9ydF92NmAuIFRoZXkncmUgcHJvYmFibHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyBsb2dpYyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIElQdjQgYW5kIElQdjYuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBkZXRlcm1pbmUgdGhlIGNvcnJlY3Qgb3V0Ym91bmQgcm91dGUgZm9yIGEgY29ubmVjdGlvbiwgd2hpY2ggaXMgbGlrZWx5IGRlcGVuZGVudCBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgaXBfdnNfcHJvY19jb25uYC4gSSBuZWVkIHRvIGFzc2VzcyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB1dGlsaXppbmcsIG9yIGFmZmVjdGVkIGJ5IGBpcF92c19wcm9jX2Nvbm5gLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIG5leHQgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1Njk0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjQuODgwMzkyMDkxWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjYwNzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwX3ZzX2dldF9vdXRfcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzozMTY6X19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzE3LVxcdFxcdCAgIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz00ODg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NDg5Ol9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ5MC1cXHRcXHQgICAgICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzM2PWlwX3ZzX2J5cGFzc194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzM4LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjczOTpcXHRpZiAoX19pcF92c19nZXRfb3V0X3J0KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgTlVMTCwgaXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzQwLVxcdFxcdFxcdCAgICAgICBJUF9WU19SVF9NT0RFX05PTl9MT0NBTCwgTlVMTCwgaXB2c2gpIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzU5PWlwX3ZzX2J5cGFzc194bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzYzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzY0OlxcdGlmIChfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBOVUxMLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzY1LVxcdFxcdFxcdFxcdCAgXFx1MDAyNmlwaC1cXHUwMDNlZGFkZHIsIE5VTEwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTc4Nz1pcF92c19uYXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTgwNC1cXHR3YXNfaW5wdXQgPSBydF9pc19pbnB1dF9yb3V0ZShza2JfcnRhYmxlKHNrYikpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6ODA1OlxcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsIGNwLVxcdTAwM2VkYWRkci5pcCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTgwNi1cXHRcXHRcXHRcXHQgICBJUF9WU19SVF9NT0RFX0xPQ0FMIHxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9ODcxPWlwX3ZzX25hdF94bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODg2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6ODg3OlxcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0X3Y2KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04ODgtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmNwLVxcdTAwM2VkYWRkci5pbjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTExNDc9aXBfdnNfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMTY1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTE2NjpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsIGNwLVxcdTAwM2VkYWRkci5pcCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTExNjctXFx0XFx0XFx0XFx0ICAgSVBfVlNfUlRfTU9ERV9MT0NBTCB8XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTEyOTI9aXBfdnNfdHVubmVsX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzA5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTMxMDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzExLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZjcC1cXHUwMDNlZGFkZHIuaW42LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDM5PWlwX3ZzX2RyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTQ0NDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChjcC1cXHUwMDNlaXB2cywgY3AtXFx1MDAzZWFmLCBza2IsIGNwLVxcdTAwM2VkZXN0LCBjcC1cXHUwMDNlZGFkZHIuaXAsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQ1LVxcdFxcdFxcdFxcdCAgIElQX1ZTX1JUX01PREVfTE9DQUwgfFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDY5PWlwX3ZzX2RyX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDczLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTQ3NDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cXHUwMDNlaXB2cywgY3AtXFx1MDAzZWFmLCBza2IsIGNwLVxcdTAwM2VkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTQ3NS1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2Y3AtXFx1MDAzZWRhZGRyLmluNixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTUwND1pcF92c19pY21wX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTM2LVxcdFxcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE1Mzc6XFx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnQoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBjcC1cXHUwMDNlZGVzdCwgY3AtXFx1MDAzZWRhZGRyLmlwLCBydF9tb2RlLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUzOC1cXHRcXHRcXHRcXHQgICBOVUxMLCBjaXBoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTU5OD1pcF92c19pY21wX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjI5LVxcdFxcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE2MzA6XFx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBjcC1cXHUwMDNlZGVzdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE2MzEtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmNwLVxcdTAwM2VkYWRkci5pbjYsIE5VTEwsIGNpcGgsIDAsIHJ0X21vZGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODoyNC45NjcwMDQzMloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA5MjI3NjE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgSVBWUyBwYXRjaC4gRmlyc3QsIEkndmUgbm90ZWQgdGhhdCBgX19pcF92c19nZXRfb3V0X3J0YCBhbmQgYF9faXBfdnNfZ2V0X291dF9ydF92NmAgYXJlIHN0YXRpYywgc28gdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW4gdGVybXMgb2YgaG93IHRoaXMgbWlnaHQgY2hhbmdlIGJlaGF2aW9yIGFyZSBnb2luZyB0byBiZSBgaXBfdnNfbmF0X3htaXRgLCBgaXBfdnNfdHVubmVsX3htaXRgLCBgaXBfdnNfZHJfeG1pdGAsIGBpcF92c19pY21wX3htaXRgLCBhbmQgYGlwX3ZzX2J5cGFzc194bWl0YC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBpbXBvcnRhbnQgc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoZSBvdmVyYWxsIHBpY3R1cmU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGBpcF92c19zdGF0c19mcmVlYCwgYW5kIHRoZSBgeG1pdGAgZnVuY3Rpb25zIG1lbnRpb25lZCBiZWZvcmUuIFdhaXQsIGxvb2tzIGxpa2UgYGlwX3ZzX3N0YXRzX2ZyZWVgIGlzIGp1c3QgZnJlZWluZyBzdGF0cywgc28gaXQncyBub3QgdGVycmlibHkgaW50ZXJlc3RpbmcgaW4gdGhpcyBjb250ZXh0LiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHNlZW1zIHRvIGJlIGEga2V5IG5ldyBmdW5jdGlvbiwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYm90aCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgaXBfdnNfYmluZF9kZXN0YC4gYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCBhbmQgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgYXJlIGxvb2tpbmcgYXQgdGhlIGBkZXN0LVx1MDAzZWNmbGFnc2Agc3RydWN0dXJlLiBUaGUgYHhtaXRgIGZ1bmN0aW9ucyBsaWtlIGBpcF92c19uYXRfeG1pdGAgYWxzbyBjYWxsIGBfX2lwX3ZzX2dldF9vdXRfcnRgIHdoaWNoIGNoZWNrcyBgZGVzdC1cdTAwM2VjZmxhZ3NgLiBTbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlIHdpdGggdGhhdCBgZGVzdC1cdTAwM2VjZmxhZ3NgLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYW5kIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgIGFyZSBhbGwgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGVhc3kgdG8gaG9vayBpbnRvLlxuXG5Ob3cgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlncyBmb3IgdGhpcyBhcmUgYElQX1ZTYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBhbmQgYElQX1ZTX0xDYC4gT2gsIHdhaXQuLi50aGUgbGFzdCBmb3VyIGFyZSBzY2hlZHVsZXJzISBBbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYW5kIGBpcF92c19sYy5jYC4gTWFrZXMgc2Vuc2UsIHNvIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGRlZmluaXRlbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZS5cblxuTGV0J3MgZG91YmxlIGNoZWNrIHRob3NlIGNvbmZpZyBuYW1lcyB0byBiZSBhYnNvbHV0ZWx5IHN1cmU6IGBJUF9WU19ESGAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYW5kIGBJUF9WU2AuIEp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgcGVlayBhdCBgSVBfVlNfREhgIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgbmV0ZmlsdGVyIGlwdnMgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODAxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODozNS4wNTkyODQxNDFaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzUyMDA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfREhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjM1LjExMjA0MjAyWiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTYyODk5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipSZWNhbGxpbmcgUHJldmlvdXMgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgZGlzdGluY3RseSByZW1lbWJlciB2ZXJpZnlpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYERIYCBqdXN0IHJlY2VudGx5LCBwcm9iYWJseSBpbiB0aGUgY29udGV4dCBvZiBjb25maWd1cmluZyBJUFZTLiBMZXQgbWUgbWVudGFsbHkgcmV0cmFjZSBteSBzdGVwcy4uLiBBaCwgeWVzISBJIHdhcyBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kICpkZWZpbml0ZWx5KiBjb25maXJtZWQgdGhhdCBgREhgIHdhcyBtYXBwZWQgdG8gYGNvbmZpZyBJUF9WU19ESGAuIEkgZXZlbiByZWNhbGwgaXQgc3BlY2lmaWNhbGx5IHVzaW5nIGEgdGFiIGZvciBpbmRlbnRhdGlvbiwgd2hpY2ggaXMgYSBkZXRhaWwgSSB1c3VhbGx5IHBheSBhdHRlbnRpb24gdG8gZm9yIHJlYWRhYmlsaXR5LiBTbywgSSBkb24ndCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgYXNzb2NpYXRpb24gcmlnaHQgbm93LiBUaGF0J3MgYWxyZWFkeSBiZWVuIGFkZHJlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODozOS42MDgzMzM3ODlaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MzU5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ1xcdElQX1ZTX0RIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE5Mj1jb25maWcgIElQX1ZTX0xCTENSXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMDktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1xcdElQX1ZTX0RIXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjM5LjcwNDcwMDEyOFoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIyNTgxOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludGVybmFsIFJldmlldzogSVBfVlNfTEJMQyoqXG5cbk9rYXksIHllcywgSSdtIHJlYWR5IHRvIGJlZ2luIHRoaXMuIExldCdzIHN0YXJ0IGJ5IGltbWVkaWF0ZWx5IGNoZWNraW5nIHRoZSBgSVBfVlNfTEJMQ2AgYXNwZWN0LCBhcyB0aGF0J3MgdGhlIGNvcmUgZm9jdXMgaGVyZS4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSBhbmQgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIGZpcnN0LiBUaGlzIGlzIHdoZXJlIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODAzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDIuOTI3Mjg1Nzc3WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQ0NjU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWdcXHRJUF9WU19MQkxDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE2Nz1jb25maWcgIElQX1ZTX09WRlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3ODpjb25maWdcXHRJUF9WU19MQkxDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjQzLjAwNDczNzEyNloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ4MDQ4MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIExhbmRzY2FwZSoqXG5cblllcywgdGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBleGFtaW5hdGlvbiBvZiBgSVBfVlNfTEJMQ1JgLiBUaGF0IHdpbGwgYmUgbXkgaW5pdGlhbCBhcmVhIG9mIGludmVzdGlnYXRpb24uIEl0IGNvbnRhaW5zIGRhdGEgdGhhdCBpcyByZWxldmFudCB0byBteSB0YXNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDA2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjQ1Ljg1Mjc4ODM3MVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MjY3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnICBJUF9WU19MQkxDUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDUuOTA4MjE5M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcxODkxNTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqSW50ZXJuYWwgQXNzZXNzbWVudCBhbmQgRGlyZWN0aW9uKipcblxuWWVzLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFja25vd2xlZGdlIHRoZSBwcmlvciBzdGF0ZSBhbmQgYWdyZWUgdG8gbW92ZSBmb3J3YXJkLiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgSVBfVlNfTENgLiBUaGlzIG1lYW5zIEknbSBpbW1lZGlhdGVseSBzaGlmdGluZyBmb2N1cyB0byBhIHNwZWNpZmljIGFuZCBsaWtlbHkgY3J1Y2lhbCBlbGVtZW50LCB3aGljaCBJJ20gYXNzdW1pbmcgaGFzIGEgc2lnbmlmaWNhbmNlIHdlIGJvdGggdW5kZXJzdGFuZC4gSXTigJlzIGEgZGlyZWN0IGNoZWNrIG9uIHRoYXQgdmFyaWFibGUgb3IgY29uY2VwdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAsIGFuZCBtYWtlIGEgZGVjaXNpb24gYmFzZWQgb24gdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAzMTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODo0OC45ODAxMTQxNDJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTU4OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ1xcdElQX1ZTX0xDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEyND1jb25maWdcXHRJUF9WU19XUlJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzNi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMzc6Y29uZmlnXFx0SVBfVlNfTENcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcImxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDkuMDM1MDc5NDQxWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzk3MDY2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFByb3RvY29sIFNwZWNpZmljcyoqXG5cblllcywgdGhhdCBmZWVscyByaWdodCwgdGhlIGNvcmUgcHJpbmNpcGxlIGlzIHNvbGlkLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHByZWNpc2UuIExldCdzIGRyaWxsIGRvd24gaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1NDVFBgIHJpZ2h0IG5vdy4gTmVlZCB0byBtYWtlIHN1cmUgdGhlIGxhdGVzdCByZXZpc2lvbnMgYW5kIHBhdGNoZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCwgYW55IHJlY2VudCBlZGdlLWNhc2VzIGNvbnNpZGVyZWQuIEkgY2FuJ3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBHb3R0YSBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDU5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjUyLjE3NDc4OTU0MVoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY2ODYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnXFx0SVBfVlNfUFJPVE9fVENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc3PWNvbW1lbnQgXFxcIklQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNzgtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVENQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODAtXFx0Ym9vbCBcXFwiVENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjUyLjI2MTQ4MTlaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyODk4NzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjQwODg4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODo1NC4yOTA0NzQwNjhaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ3MjU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cXHRib29sIFxcXCJTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjU0LjM5NTk1MTcwNloiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg4NjQ2MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5SaWdodCwgSSdtIHdpdGggdGhpcyBwYXRjaC4gTG9va2luZyBhdCBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5OiBgSVBfVlNgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBgSVBfVlNfREhgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGFuZCBgSVBfVlNfTENgLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgSVBWUyBmdW5jdGlvbmFsaXR5IGhlcmUuXG5cblRoZSBrZXkgc3ltYm9scyB0byB0YXJnZXQgZm9yIGZ1enppbmcganVtcCBvdXQgYXQgbWU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGFuZCBlc3BlY2lhbGx5IHRoZSB0cmFuc21pc3Npb24gZnVuY3Rpb25zIGxpa2UgYGlwX3ZzX25hdF94bWl0YCwgYGlwX3ZzX3R1bm5lbF94bWl0YCwgYGlwX3ZzX2RyX3htaXRgLCBhbmQgYGlwX3ZzX2ljbXBfeG1pdGAuIFRob3NlIGBpcF92c18qX3htaXRgIGZ1bmN0aW9ucyBhcmUgaG90IHBhdGhzLCBzbyBhIHNvbGlkIHBsYWNlIHRvIHRlc3QgdGhlIGBkZXN0LVx1MDAzZWNmbGFnc2AgY2hlY2suIEluY2x1ZGluZyB0aGVtIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNhbGwuIFRoZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzIHRoZSBmb2NhbCBwb2ludCBvZiB0aGUgY2hhbmdlcy5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nIGZvciBteSBvd24gYmVuZWZpdC4uLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0d2Vha2luZyBJUFZTJ3MgZGVzdGluYXRpb24gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG92ZXJsb2FkIGZsYWcuIEl0J3Mgc3dhcHBpbmcgYGluYWN0Y29ubnNgIGZvciBgdG90YWxjb25uc2AsIGFkZGluZyB0aGUgYGNmbGFnc2AgZm9yIGNvbmZpZ3VyYXRpb24gZmxhZ3MsIGFuZCBzaGlmdGluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gQW5kLCB0aGF0IGNyaXRpY2FsIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgc2V0dGluZyB0aGF0IG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gY29uZmlndXJhYmxlIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcywgdG91Y2hpbmcgYm90aCB0aGUgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gR2l2ZW4gdGhlIGNoYW5nZXMsIHRoZSBmdXp6aW5nIG5lZWRzIHRvIGZvY3VzIG9uIHRob3NlIGFyZWFzIEkgaWRlbnRpZmllZCBiZWZvcmU6IGNvbm5lY3Rpb24gYmluZGluZyBhbmQgdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMuIFNwZWNpZmljYWxseSwgdGhlIGFyZWFzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIHRoZSBkZXN0aW5hdGlvbnMgYXJlIHdoYXQgd2Ugc2hvdWxkIGZvY3VzIG9uLlxuXG5TZWVtcyBsaWtlIGEgc29saWQgcGxhbi4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwMzcsIk91dHB1dFRva2VucyI6MzI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE5OjAyLjk4NDYwMTEzMVoiLCJTZXEiOjc2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODQ4OTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX1BST1RPX1RDUFwiLFxuICAgIFwiSVBfVlNfUFJPVE9fU0NUUFwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19MQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkXCIsXG4gICAgXCJpcF92c19jb25uX25ld1wiLFxuICAgIFwiaXBfdnNfdHJ5X2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfbmF0X3htaXRcIixcbiAgICBcImlwX3ZzX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF92c19kcl94bWl0XCIsXG4gICAgXCJpcF92c19pY21wX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUFZTIGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBvdmVybG9hZCBmbGFnIHVwZGF0ZXMuIEl0IGludHJvZHVjZXMgYHRvdGFsY29ubnNgIHRvIHJlcGxhY2UgYGluYWN0Y29ubnNgIGFuZCBhZGRzIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MsIG1vdmluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gSXQgYWxzbyBhZGRzIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gdXBkYXRlIHRoZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29ubmVjdGlvbiBiaW5kaW5nL3VuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMgdGhhdCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IGFuZCBvdmVybG9hZCBzdGF0dXMgb2YgZGVzdGluYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfTENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX3RyeV9iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gICAgXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgICBcImlwX3ZzX25hdF94bWl0XCIsXG4gICAgXCJpcF92c190dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdnNfZHJfeG1pdFwiLFxuICAgIFwiaXBfdnNfaWNtcF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow9t5jr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 22:04:53 +0000 UTC FinishedAt: 2026-08-01 22:19:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_SCTP", "IP_VS_DH", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_LC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_SCTP", "IP_VS_DH", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_LC" ], "series_id": "5696de25-5fc9-4dc6-99c3-a686b5c0f066" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dest_update_overload", "ip_vs_conn_new", "ip_vs_try_bind_dest", "ip_vs_check_template", "ip_vs_expire_nodest_conn_flush", "ip_vs_nat_xmit", "ip_vs_tunnel_xmit", "ip_vs_dr_xmit", "ip_vs_icmp_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXG5pbmRleCBlNmNhOTMwYTM1MDdiLi4wMmRiMDc2N2VmZmYyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTM4LDYgJiM0MzszOCwxMiBAQFxuICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0VcdDFcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXHRcdDJcbiBcbiYjNDM7LyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXG4mIzQzOyNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbiYjNDM7XG4mIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cbiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRVx0MHgwMDAxXHRcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cbiYjNDM7XG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc4LDYgJiM0Mzs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4mIzQzO1x0dW5zaWduZWQgbG9uZ1x0XHRjZmxhZ3M7XHRcdC8qIGNvbmZpZyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0bGFzdF93ZWlnaHQ7XHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xuIFx0X191MTZcdFx0XHR0dW5fdHlwZTtcdC8qIHR1bm5lbCB0eXBlICovXG4gXHRfX2JlMTZcdFx0XHR0dW5fcG9ydDtcdC8qIHR1bm5lbCBwb3J0ICovXG5AQCAtOTg5LDEwICYjNDM7OTk2LDExIEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcbiBcdC8qIGNvbm5lY3Rpb24gY291bnRlcnMgYW5kIHRocmVzaG9sZHMgKi9cbiBcdGF0b21pY190XHRcdGFjdGl2ZWNvbm5zO1x0LyogYWN0aXZlIGNvbm5lY3Rpb25zICovXG4tXHRhdG9taWNfdFx0XHRpbmFjdGNvbm5zO1x0LyogaW5hY3RpdmUgY29ubmVjdGlvbnMgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHR0b3RhbGNvbm5zO1x0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cbiBcdGF0b21pY190XHRcdHBlcnNpc3Rjb25ucztcdC8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi9cbiBcdF9fdTMyXHRcdFx0dV90aHJlc2hvbGQ7XHQvKiB1cHBlciB0aHJlc2hvbGQgKi9cbiBcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGQ7XHQvKiBsb3dlciB0aHJlc2hvbGQgKi9cbiYjNDM7XHRfX3UzMlx0XHRcdGxfdGhyZXNob2xkX3ZhbDsvKiB1c2VkIGxvd2VyIHRocmVzaG9sZCAqL1xuIFxuIFx0LyogZm9yIGRlc3RpbmF0aW9uIGNhY2hlICovXG4gXHRzcGlubG9ja190XHRcdGRzdF9sb2NrO1x0LyogbG9jayBvZiBkc3RfY2FjaGUgKi9cbkBAIC0xOTA5LDYgJiM0MzsxOTE3LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKTtcbiYjNDM7XG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxuICAqL1xuQEAgLTIyMjksMTQgJiM0MzsyMjM5LDIxIEBAIHZvaWQgaXBfdnNfdW5yZWdpc3Rlcl9ob29rcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgdW5zaWduZWQgaW50IGFmKTtcbiBzdGF0aWMgaW5saW5lIGludFxuIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4tXHQvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2XG4mIzQzO1x0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1N1xuIFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xuLVx0ICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4mIzQzO1x0ICogMjU3IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4gXHQgKiB1c2UgdGhlIGZvbGxvd2luZyBmb3JtdWxhIHRvIGVzdGltYXRlIHRoZSBvdmVyaGVhZCBub3c6XG4tXHQgKlx0XHQgIGRlc3QtXHUwMDNlYWN0aXZlY29ubnMqMjU2ICYjNDM7IGRlc3QtXHUwMDNlaW5hY3Rjb25uc1xuJiM0MztcdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC1cdTAwM2V0b3RhbGNvbm5zXG4gXHQgKi9cbiBcdHJldHVybiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykgXHUwMDNjXHUwMDNjIDgpICYjNDM7XG4tXHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludFxuJiM0MztpcF92c19kZXN0X2luYWN0Y29ubnMoY29uc3Qgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWF4KGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucykgLVxuJiM0MztcdFx0ICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyksIDApO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX0lQX1ZTX1BST1RPX1RDUFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbmluZGV4IDFlZDIzNGU3ZjI1MTMuLjJjMzdjNmFjNzUyNWEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbkBAIC0yOCwxMiAmIzQzOzI4LDYgQEBcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXHRJUF9WU19TVkNfRl9TQ0hFRDEgLyogU0ggZmFsbGJhY2sgKi9cbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX1BPUlRcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xuIFxuLS8qXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3Ncbi0gKi9cbi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcdDB4MDAwMVx0XHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcdDB4MDAwMlx0XHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xuLVxuIC8qXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xuICAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXG5pbmRleCAzNmM1Y2JhMDNmNWJjLi42ZmEzZTFkYzUzNGMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwODEsMTIgJiM0MzsxMDgxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gI2VuZGlmXG4gXG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLXtcbi1cdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKVxuLVx0XHQmIzQzOyBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLX1cbi1cbiAvKlxuICAqXHRCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uXG4gICpcdENhbGxlZCBqdXN0IGFmdGVyIGEgbmV3IGNvbm5lY3Rpb24gZW50cnkgaXMgY3JlYXRlZC5cbkBAIC0xMTQ3LDIzICYjNDM7MTE0MSwyMiBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xuIFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcbiYjNDM7XHRcdGludCB0YztcbiYjNDM7XG4gXHRcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnNcbiBcdFx0ICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhblxuIFx0XHQgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2VcbiBcdFx0ICovXG4gXHRcdGlmICghKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpKVxuIFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHR0YyA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucyk7XG4mIzQzO1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKVxuJiM0MztcdFx0XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAxKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIEl0IGlzIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uL3RlbXBsYXRlLCBzbyBpbmNyZWFzZVxuIFx0XHQgICB0aGUgcGVyc2lzdGVudCBjb25uZWN0aW9uIGNvdW50ZXIgKi9cbiBcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHR9XG4tXG4tXHRpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2U9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiBcbkBAIC0xMjQ0LDMwICYjNDM7MTIzNywyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuIFxuIFx0LyogVXBkYXRlIHRoZSBjb25uZWN0aW9uIGNvdW50ZXJzICovXG4gXHRpZiAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xuLVx0XHQvKiBJdCBpcyBhIG5vcm1hbCBjb25uZWN0aW9uLCBzbyBkZWNyZWFzZSB0aGUgaW5hY3Rjb25uc1xuLVx0XHQgICBvciBhY3RpdmVjb25ucyBjb3VudGVyICovXG4tXHRcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSB7XG4tXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHR9IGVsc2Uge1xuJiM0MztcdFx0aW50IHRjO1xuJiM0MztcbiYjNDM7XHRcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBjb3VudGVycyAqL1xuJiM0MztcdFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0fVxuJiM0MztcdFx0dGMgPSBhdG9taWNfZmV0Y2hfZGVjKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucyk7XG4mIzQzO1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGRfdmFsKSlcbiYjNDM7XHRcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgLTEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4tXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHR9XG4tXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG4gXG5AQCAtMTI5Niw3ICYjNDM7MTI3OSw3IEBAIGludCBpcF92c19jaGVja190ZW1wbGF0ZShzdHJ1Y3QgaXBfdnNfY29ubiAqY3QsIHN0cnVjdCBpcF92c19kZXN0ICpjZGVzdClcbiBcdCAqIENoZWNraW5nIHRoZSBkZXN0IHNlcnZlciBzdGF0dXMuXG4gXHQgKi9cbiBcdGlmICgoZGVzdCA9PSBOVUxMKSB8fFxuLVx0ICAgICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcbiYjNDM7XHQgICAgIShkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTIwMzcsNyAmIzQzOzIwMjAsNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlbl9jb250cm9sKSlcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggNmI3OWUwYzRkOWUyOC4uMWE5MjI2NDhjOTE3ZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMjIwOSw3ICYjNDM7MjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0LyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovXG4gXHRcdGlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7XG4gXHRcdFx0Ym9vbCBvbGRfY3QgPSBpcF92c19jb25uX3VzZXNfb2xkX2Nvbm50cmFjayhjcCwgc2tiKTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbmluZGV4IGJjZjQwYjhjNDFjZjIuLjhmOWE4ZTQ5MWFkNmIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzMDQsNiAmIzQzOzEzMDQsNDAgQEAgdm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4gXHR9XG4gfVxuIFxuJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcbiYjNDM7ICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxuJiM0MzsgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgY29ubnM7XG4mIzQzO1x0dTMyIGwsIHU7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRpZiAoIXUpXG4mIzQzO1x0XHRnb3RvIHVuc2V0O1xuJiM0MztcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwpO1xuJiM0MztcdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V0b3RhbGNvbm5zKTtcbiYjNDM7XHRpZiAoY29ubnMgXHUwMDNlPSAobW9kZSBcdTAwM2UgMCA/IGwgOiB1KSkge1xuJiM0MztcdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcdGlmIChjb25ucyBcdTAwM2U9IChtb2RlIFx1MDAzYyAwID8gdSA6IGwpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7dW5zZXQ6XG4mIzQzO1x0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuJiM0MztcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgbW9kZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gLypcbiAgKlx0VXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2VcbiAgKi9cbkBAIC0xMzY4LDEyICYjNDM7MTQwMiwyMSBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxuIFx0fVxuIFxuIFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xuLVx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuJiM0MztcdGRlc3QtXHUwMDNlY2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xuIFxuLVx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuJiM0MztcdGlmIChSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkgIT0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgfHxcbiYjNDM7XHQgICAgUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuJiM0MztcdFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXG4mIzQzO1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGRfdmFsLFxuJiM0MztcdFx0XHQgICB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA/IDpcbiYjNDM7XHRcdFx0ICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIC1cbiYjNDM7XHRcdFx0ICAgICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2VcdTAwM2UgMikpKTtcbiYjNDM7XHRcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgMCk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiYjNDM7XHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ0NSw3ICYjNDM7MTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRkZXN0LVx1MDAzZXBvcnQgPSB1ZGVzdC1cdTAwM2Vwb3J0O1xuIFxuIFx0YXRvbWljX3NldChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zLCAwKTtcbi1cdGF0b21pY19zZXQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zLCAwKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucywgMCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zLCAwKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCwgMSk7XG4gXG5AQCAtMTQ4Niw2ICYjNDM7MTUyOSw5IEBAIGlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgJiM0MzsxNjA1LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNjEzLDcgJiM0MzsxNjYyLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0NGX0FWQUlMQUJMRTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuQEAgLTMwMzEsNyAmIzQzOzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbiYjNDM7XHRcdFx0XHRcdCAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSk7XG4gXHRcdFx0ZWxzZVxuICNlbmRpZlxuIFx0XHRcdFx0c2VxX3ByaW50ZihzZXEsXG5AQCAtMzA0Miw3ICYjNDM7MzA5MSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbiBcdFx0XHRcdFx0ICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2Vjb25uX2ZsYWdzKSksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSxcbiBcdFx0XHRcdFx0ICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyksXG4tXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucykpO1xuJiM0MztcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcbiBcdFx0fVxuIFx0fVxuQEAgLTM2NjcsMTAgJiM0MzszNzE2LDEwIEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqXG4gXHRcdFx0ZW50cnkucG9ydCA9IGRlc3QtXHUwMDNlcG9ydDtcbiBcdFx0XHRlbnRyeS5jb25uX2ZsYWdzID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2Vjb25uX2ZsYWdzKTtcbiBcdFx0XHRlbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4tXHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiYjNDM7XHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCk7XG4mIzQzO1x0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuIFx0XHRcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4mIzQzO1x0XHRcdGVudHJ5LmluYWN0Y29ubnMgPSBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCk7XG4gXHRcdFx0ZW50cnkucGVyc2lzdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0XHRcdGlwX3ZzX2NvcHlfc3RhdHMoXHUwMDI2a3N0YXRzLCBcdTAwMjZkZXN0LVx1MDAzZXN0YXRzKTtcbiBcdFx0XHRpcF92c19leHBvcnRfc3RhdHNfdXNlcihcdTAwMjZlbnRyeS5zdGF0cywgXHUwMDI2a3N0YXRzKTtcbkBAIC00Mjc3LDEyICYjNDM7NDMyNiwxNCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRcdCBkZXN0LVx1MDAzZXR1bl9wb3J0KSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxuIFx0XHRcdGRlc3QtXHUwMDNldHVuX2ZsYWdzKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbi1cdFx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKSB8fFxuJiM0MztcdFx0XHRpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9QRVJTSVNUX0NPTk5TLFxuIFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKSkgfHxcbiBcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LVx1MDAzZWFmKSlcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxLi40M2FiZWQ3YTI2YTZhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5AQCAtMjE5LDggJiM0MzsyMTksOCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVx1MDAzZXNjaGVkX2RhdGE7XG4gXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cdTAwM2VhZiwgcywgXHUwMDI2aXBoLVx1MDAzZWRhZGRyKTtcbi1cdGlmICghZGVzdFxuLVx0ICAgIHx8ICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRpZiAoIWRlc3QgfHxcbiYjNDM7XHQgICAgIShkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjQuLjY5M2JjYzgyY2NiNzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdCAqL1xuIFxuIFx0XHRkZXN0ID0gZW4tXHUwMDNlZGVzdDtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICgoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Li5mNTNmMDVjZWVhMzZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMTY5LDggJiM0MzsxNjksOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAobGVhc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuIFx0XHRcdGdvdG8gbmV4dHN0YWdlO1xuIFx0XHR9XG5AQCAtMTg2LDggJiM0MzsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuLVx0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gZG9oO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZC4uMThiOTc2YTdjNGQyMCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTMwLDcgJiM0MzszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHQvKlxuIFx0ICogU2ltcGx5IHNlbGVjdCB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZlxuLVx0ICogICAgICAgIChhY3RpdmVjb25uc1x1MDAzY1x1MDAzYzUpICYjNDM7IGluYWN0Y29ubnNcbiYjNDM7XHQgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgJiM0MzsgdG90YWxjb25uc1xuIFx0ICogRXhjZXB0IHdob3NlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLlxuIFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcbiBcdCAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXRcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGxlYXN0LVx1MDAzZWFmLCBcdTAwMjZsZWFzdC1cdTAwM2VhZGRyKSxcbiBcdFx0XHQgICAgICBudG9ocyhsZWFzdC1cdTAwM2Vwb3J0KSxcbiBcdFx0XHQgICAgICBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VhY3RpdmVjb25ucyksXG4tXHRcdFx0ICAgICAgYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNlaW5hY3Rjb25ucykpO1xuJiM0MztcdFx0XHQgICAgICBpcF92c19kZXN0X2luYWN0Y29ubnMobGVhc3QpKTtcbiBcbiBcdHJldHVybiBsZWFzdDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmNcbmluZGV4IDNkYmQzMDk2ZTE2MzcuLjlkYjEyNzNlNWJhNDIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG5AQCAtNDQ2LDEyICYjNDM7NDQ2LDEwIEBAIHNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIChuZXh0X3N0YXRlID09IElQX1ZTX1NDVFBfU19FU1RBQkxJU0hFRCkpIHtcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gXHRcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG5pbmRleCA5OWEyODZmZGM5MGM2Li5mZWMwZThiNDdiNzE2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmNcbkBAIC01MjYsMTIgJiM0Mzs1MjYsMTAgQEAgc2V0X3RjcF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbiBcdFx0XHRpZiAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgIXRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIHRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkge1xuIFx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuaW5kZXggOTMwMzhhYmJmNWUwNC4uZWE1ZmRkNGY0Y2U3NiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcbkBAIC04NzgsMTMgJiM0Mzs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFcbiBcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNwLVx1MDAzZWxvY2spO1xuIFx0XHRpZiAoKGNwLVx1MDAzZWZsYWdzIF4gZmxhZ3MpIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpIFx1MDAyNlx1MDAyNiBkZXN0KSB7XG4tXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIHtcbiYjNDM7XHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVsc2VcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4tXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGZsYWdzIFx1MDAyNj0gSVBfVlNfQ09OTl9GX0JBQ0tVUF9VUERfTUFTSztcbiBcdFx0ZmxhZ3MgfD0gY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5pbmRleCAwYjBjNTMwNDk5M2E5Li4xYjM2ZmVkOGFiZTI5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgMCk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgY29va2llKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggZTZjYTkzMGEzNTA3Yi4uMDJkYjA3NjdlZmZmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC0zOCw2ICYjNDM7MzgsMTIgQEAKICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0UJMQogI2RlZmluZSBJUF9WU19IRFJfSUNNUAkJMgogCiYjNDM7LyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovCiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQJMHgwMDAyCQkvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqLwomIzQzOwomIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi8KJiM0MzsjZGVmaW5lIElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFCTB4MDAwMQkJLyogc2VydmVyIGlzIGF2YWlsYWJsZSAqLwomIzQzOwogLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi8KICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMJOAogI2lmIEJJVFNfUEVSX0xPTkcgJmd0OyAzMgpAQCAtOTc4LDYgJiM0Mzs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KJiM0MzsJdW5zaWduZWQgbG9uZwkJY2ZsYWdzOwkJLyogY29uZmlnIGZsYWdzICovCiAJYXRvbWljX3QJCWxhc3Rfd2VpZ2h0OwkvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqLwogCV9fdTE2CQkJdHVuX3R5cGU7CS8qIHR1bm5lbCB0eXBlICovCiAJX19iZTE2CQkJdHVuX3BvcnQ7CS8qIHR1bm5lbCBwb3J0ICovCkBAIC05ODksMTAgJiM0Mzs5OTYsMTEgQEAgc3RydWN0IGlwX3ZzX2Rlc3QgewogCiAJLyogY29ubmVjdGlvbiBjb3VudGVycyBhbmQgdGhyZXNob2xkcyAqLwogCWF0b21pY190CQlhY3RpdmVjb25uczsJLyogYWN0aXZlIGNvbm5lY3Rpb25zICovCi0JYXRvbWljX3QJCWluYWN0Y29ubnM7CS8qIGluYWN0aXZlIGNvbm5lY3Rpb25zICovCiYjNDM7CWF0b21pY190CQl0b3RhbGNvbm5zOwkvKiB0b3RhbCBjb25uZWN0aW9ucyAqLwogCWF0b21pY190CQlwZXJzaXN0Y29ubnM7CS8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi8KIAlfX3UzMgkJCXVfdGhyZXNob2xkOwkvKiB1cHBlciB0aHJlc2hvbGQgKi8KIAlfX3UzMgkJCWxfdGhyZXNob2xkOwkvKiBsb3dlciB0aHJlc2hvbGQgKi8KJiM0MzsJX191MzIJCQlsX3RocmVzaG9sZF92YWw7LyogdXNlZCBsb3dlciB0aHJlc2hvbGQgKi8KIAogCS8qIGZvciBkZXN0aW5hdGlvbiBjYWNoZSAqLwogCXNwaW5sb2NrX3QJCWRzdF9sb2NrOwkvKiBsb2NrIG9mIGRzdF9jYWNoZSAqLwpAQCAtMTkwOSw2ICYjNDM7MTkxNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAkJa2ZyZWUoZGVzdCk7CiB9CiAKJiM0Mzt2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSk7CiYjNDM7CiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqIChmcm9tIGlwX3ZzX3N5bmMuYykKICAqLwpAQCAtMjIyOSwxNCAmIzQzOzIyMzksMjEgQEAgdm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpOwogc3RhdGljIGlubGluZSBpbnQKIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQkvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2CiYjNDM7CS8qIFdlIHRoaW5rIHRoZSBvdmVyaGVhZCBvZiBwcm9jZXNzaW5nIGFjdGl2ZSBjb25uZWN0aW9ucyBpcyAyNTcKIAkgKiB0aW1lcyBoaWdoZXIgdGhhbiB0aGF0IG9mIGluYWN0aXZlIGNvbm5lY3Rpb25zIGluIGF2ZXJhZ2UuIChUaGlzCi0JICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlCiYjNDM7CSAqIDI1NyB0aW1lcyBtaWdodCBub3QgYmUgYWNjdXJhdGUsIHdlIHdpbGwgY2hhbmdlIGl0IGxhdGVyKSBXZQogCSAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzoKLQkgKgkJICBkZXN0LSZndDthY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC0mZ3Q7aW5hY3Rjb25ucwomIzQzOwkgKgkJICBkZXN0LSZndDthY3RpdmVjb25ucyoyNTYgJiM0MzsgZGVzdC0mZ3Q7dG90YWxjb25ucwogCSAqLwogCXJldHVybiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmx0OyZsdDsgOCkgJiM0MzsKLQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKJiM0MzsJCWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7dG90YWxjb25ucyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50CiYjNDM7aXBfdnNfZGVzdF9pbmFjdGNvbm5zKGNvbnN0IHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQomIzQzO3sKJiM0MzsJcmV0dXJuIG1heChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3RvdGFsY29ubnMpIC0KJiM0MzsJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpLCAwKTsKIH0KIAogI2lmZGVmIENPTkZJR19JUF9WU19QUk9UT19UQ1AKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKaW5kZXggMWVkMjM0ZTdmMjUxMy4uMmMzN2M2YWM3NTI1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmgKQEAgLTI4LDEyICYjNDM7MjgsNiBAQAogI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDSwlJUF9WU19TVkNfRl9TQ0hFRDEgLyogU0ggZmFsbGJhY2sgKi8KICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVAlJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi8KIAotLyoKLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzCi0gKi8KLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRQkweDAwMDEJCS8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi8KLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FECTB4MDAwMgkJLyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi8KLQogLyoKICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXMKICAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggMzZjNWNiYTAzZjViYy4uNmZhM2UxZGM1MzRjMyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xMDgxLDEyICYjNDM7MTA4MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXRfdjYoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKQogI2VuZGlmCiAKIAotc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQotewotCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKQotCQkmIzQzOyBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwotfQotCiAvKgogICoJQmluZCBhIGNvbm5lY3Rpb24gZW50cnkgd2l0aCBhIHZpcnR1YWwgc2VydmljZSBkZXN0aW5hdGlvbgogICoJQ2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLgpAQCAtMTE0NywyMyAmIzQzOzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAKIAkvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi8KIAlpZiAoIShmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7CiYjNDM7CQlpbnQgdGM7CiYjNDM7CiAJCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnMKIAkJICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhbgogCQkgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2UKIAkJICovCiAJCWlmICghKGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpCiAJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQllbHNlCi0JCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7CiYjNDM7CQl0YyA9IGF0b21pY19pbmNfcmV0dXJuKCZhbXA7ZGVzdC0mZ3Q7dG90YWxjb25ucyk7CiYjNDM7CQlpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtJmd0O3VfdGhyZXNob2xkKSkKJiM0MzsJCQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAxKTsKIAl9IGVsc2UgewogCQkvKiBJdCBpcyBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbi90ZW1wbGF0ZSwgc28gaW5jcmVhc2UKIAkJICAgdGhlIHBlcnNpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovCiAJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpOwogCX0KLQotCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKLQkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIApAQCAtMTI0NCwzMCAmIzQzOzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCkKIAogCS8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqLwogCWlmICghKGNwLSZndDtmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7Ci0JCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBpbmFjdGNvbm5zCi0JCSAgIG9yIGFjdGl2ZWNvbm5zIGNvdW50ZXIgKi8KLQkJaWYgKGNwLSZndDtmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIHsKLQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKLQkJfSBlbHNlIHsKJiM0MzsJCWludCB0YzsKJiM0MzsKJiM0MzsJCS8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBjb3VudGVycyAqLwomIzQzOwkJaWYgKCEoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpCiAJCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQl9CiYjNDM7CQl0YyA9IGF0b21pY19mZXRjaF9kZWMoJmFtcDtkZXN0LSZndDt0b3RhbGNvbm5zKTsKJiM0MzsJCWlmICh0YyA9PSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsKSkKJiM0MzsJCQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAtMSk7CiAJfSBlbHNlIHsKIAkJLyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlCiAJCSAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqLwogCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zKTsKIAl9CiAKLQlpZiAoZGVzdC0mZ3Q7bF90aHJlc2hvbGQgIT0gMCkgewotCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZsdDsgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQl9IGVsc2UgaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDApIHsKLQkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgJmx0OyBkZXN0LSZndDt1X3RocmVzaG9sZCAqIDMpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQl9IGVsc2UgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfQotCiAJaXBfdnNfZGVzdF9wdXQoZGVzdCk7CiB9CiAKQEAgLTEyOTYsNyAmIzQzOzEyNzksNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpCiAJICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy4KIAkgKi8KIAlpZiAoKGRlc3QgPT0gTlVMTCkgfHwKLQkgICAgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgIShkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8CiAJICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHwKIAkgICAgKGNkZXN0ICZhbXA7JmFtcDsgKGRlc3QgIT0gY2Rlc3QpKSkgewogCQlJUF9WU19EQkdfQlVGKDksICYjMzQ7Y2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgJiMzNDsKQEAgLTIwMzcsNyAmIzQzOzIwMjAsNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJCWNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pOwogCQkJcmVzY2hlZF9zY29yZSYjNDM7JiM0Mzs7CiAJCQlkZXN0ID0gY3AtJmd0O2Rlc3Q7Ci0JCQlpZiAoIWRlc3QgfHwgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQomIzQzOwkJCWlmICghZGVzdCB8fCAoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKGF0b21pY19yZWFkKCZhbXA7Y3AtJmd0O25fY29udHJvbCkpCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwppbmRleCA2Yjc5ZTBjNGQ5ZTI4Li4xYTkyMjY0OGM5MTdkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMzM4LDcgJiM0MzszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMjIwOSw3ICYjNDM7MjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlCiAJfQogCiAJLyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi8KLQlpZiAoY3AgJmFtcDsmYW1wOyBjcC0mZ3Q7ZGVzdCAmYW1wOyZhbXA7ICEoY3AtJmd0O2Rlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShjcC0mZ3Q7ZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkgewogCQkvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi8KIAkJaWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHsKIAkJCWJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMi4uOGY5YThlNDkxYWQ2YiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwpAQCAtMTMwNCw2ICYjNDM7MTMwNCw0MCBAQCB2b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cykKIAl9CiB9CiAKJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXIKJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6CiYjNDM7ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWcKJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZwomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKQomIzQzO3sKJiM0MzsJaW50IGNvbm5zOwomIzQzOwl1MzIgbCwgdTsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2Rlc3QtJmd0O2RzdF9sb2NrKTsKJiM0MzsJdSA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CWlmICghdSkKJiM0MzsJCWdvdG8gdW5zZXQ7CiYjNDM7CWwgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsKTsKJiM0MzsJY29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3RvdGFsY29ubnMpOwomIzQzOwlpZiAoY29ubnMgJmd0Oz0gKG1vZGUgJmd0OyAwID8gbCA6IHUpKSB7CiYjNDM7CQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJaWYgKGNvbm5zICZndDs9IChtb2RlICZsdDsgMCA/IHUgOiBsKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0Mzt1bnNldDoKJiM0MzsJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKQomIzQzO3sKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwlfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIG1vZGUpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2Rlc3QtJmd0O2RzdF9sb2NrKTsKJiM0Mzt9CiYjNDM7CiAvKgogICoJVXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2UKICAqLwpAQCAtMTM2OCwxMiAmIzQzOzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAl9CiAKIAkvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovCi0JZGVzdC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJZGVzdC0mZ3Q7Y2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFOwogCi0JaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKLQlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJaWYgKFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkgIT0gdWRlc3QtJmd0O3VfdGhyZXNob2xkIHx8CiYjNDM7CSAgICBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpICE9IHVkZXN0LSZndDtsX3RocmVzaG9sZCkgewomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwkJV1JJVEVfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCwgdWRlc3QtJmd0O3VfdGhyZXNob2xkKTsKJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQsIHVkZXN0LSZndDtsX3RocmVzaG9sZCk7CiYjNDM7CQkvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi8KJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGRfdmFsLAomIzQzOwkJCSAgIHVkZXN0LSZndDtsX3RocmVzaG9sZCA/IDoKJiM0MzsJCQkgICAodWRlc3QtJmd0O3VfdGhyZXNob2xkIC0KJiM0MzsJCQkgICAgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7Jmd0OyAyKSkpOwomIzQzOwkJX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAwKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwomIzQzOwl9CiAKIAlkZXN0LSZndDthZiA9IHVkZXN0LSZndDthZjsKIApAQCAtMTQ0NSw3ICYjNDM7MTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpCiAJZGVzdC0mZ3Q7cG9ydCA9IHVkZXN0LSZndDtwb3J0OwogCiAJYXRvbWljX3NldCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zLCAwKTsKLQlhdG9taWNfc2V0KCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucywgMCk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDtkZXN0LSZndDt0b3RhbGNvbm5zLCAwKTsKIAlhdG9taWNfc2V0KCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zLCAwKTsKIAlyZWZjb3VudF9zZXQoJmFtcDtkZXN0LSZndDtyZWZjbnQsIDEpOwogCkBAIC0xNDg2LDYgJiM0MzsxNTI5LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdCkKIAkJcmV0dXJuIC1FUkFOR0U7CiAJfQogCiYjNDM7CWlmICh1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQgJmd0OyBJTlRfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHVkZXN0LSZndDt0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7CiAJCWlmICh1ZGVzdC0mZ3Q7dHVuX3BvcnQgPT0gMCkgewogCQkJcHJfZXJyKCYjMzQ7JXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xuJiMzNDssIF9fZnVuY19fKTsKQEAgLTE1NTksNiAmIzQzOzE2MDUsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdCkKIAkJcmV0dXJuIC1FUkFOR0U7CiAJfQogCiYjNDM7CWlmICh1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQgJmd0OyBJTlRfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJaWYgKHVkZXN0LSZndDt0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7CiAJCWlmICh1ZGVzdC0mZ3Q7dHVuX3BvcnQgPT0gMCkgewogCQkJcHJfZXJyKCYjMzQ7JXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xuJiMzNDssIF9fZnVuY19fKTsKQEAgLTE2MTMsNyAmIzQzOzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAJCQkJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsCiAJCQkJaW50IHN2Y3VwZCkKIHsKLQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7CiYjNDM7CWRlc3QtJmd0O2NmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwogCV9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpOwpAQCAtMzAzMSw3ICYjNDM7MzA4MCw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAkJCQkJICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtjb25uX2ZsYWdzKSksCiAJCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSwKIAkJCQkJICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyksCi0JCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCQkJICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTsKIAkJCWVsc2UKICNlbmRpZgogCQkJCXNlcV9wcmludGYoc2VxLApAQCAtMzA0Miw3ICYjNDM7MzA5MSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAkJCQkJICAgaXBfdnNfZndkX25hbWUoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtjb25uX2ZsYWdzKSksCiAJCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSwKIAkJCQkJICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyksCi0JCQkJCSAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCQkJICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTsKIAogCQl9CiAJfQpAQCAtMzY2NywxMCAmIzQzOzM3MTYsMTAgQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICoKIAkJCWVudHJ5LnBvcnQgPSBkZXN0LSZndDtwb3J0OwogCQkJZW50cnkuY29ubl9mbGFncyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7Y29ubl9mbGFncyk7CiAJCQllbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7Ci0JCQllbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtJmd0O3VfdGhyZXNob2xkOwotCQkJZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJCQllbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CQkJZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpOwogCQkJZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKTsKLQkJCWVudHJ5LmluYWN0Y29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwomIzQzOwkJCWVudHJ5LmluYWN0Y29ubnMgPSBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCk7CiAJCQllbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3BlcnNpc3Rjb25ucyk7CiAJCQlpcF92c19jb3B5X3N0YXRzKCZhbXA7a3N0YXRzLCAmYW1wO2Rlc3QtJmd0O3N0YXRzKTsKIAkJCWlwX3ZzX2V4cG9ydF9zdGF0c191c2VyKCZhbXA7ZW50cnkuc3RhdHMsICZhbXA7a3N0YXRzKTsKQEAgLTQyNzcsMTIgJiM0Mzs0MzI2LDE0IEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCQkgZGVzdC0mZ3Q7dHVuX3BvcnQpIHx8CiAJICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLAogCQkJZGVzdC0mZ3Q7dHVuX2ZsYWdzKSB8fAotCSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LSZndDt1X3RocmVzaG9sZCkgfHwKLQkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpIHx8CiYjNDM7CSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILAomIzQzOwkJCVJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkpIHx8CiYjNDM7CSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILAomIzQzOwkJCVJFQURfT05DRShkZXN0LSZndDtsX3RocmVzaG9sZCkpIHx8CiAJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfQUNUSVZFX0NPTk5TLAogCQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykpIHx8CiAJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsCi0JCQlhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpKSB8fAomIzQzOwkJCWlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9QRVJTSVNUX0NPTk5TLAogCQkJYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpKSB8fAogCSAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LSZndDthZikpCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCmluZGV4IGUxZjYyZjZiMjVlMjEuLjQzYWJlZDdhMjZhNmEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCkBAIC0yMTksOCAmIzQzOzIxOSw4IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAKIAlzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtJmd0O3NjaGVkX2RhdGE7CiAJZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtJmd0O2FmLCBzLCAmYW1wO2lwaC0mZ3Q7ZGFkZHIpOwotCWlmICghZGVzdAotCSAgICB8fCAhKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CWlmICghZGVzdCB8fAomIzQzOwkgICAgIShkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpCiAJICAgIHx8IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmbHQ7PSAwCiAJICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHsKIAkJaXBfdnNfc2NoZWR1bGVyX2VycihzdmMsICYjMzQ7bm8gZGVzdGluYXRpb24gYXZhaWxhYmxlJiMzNDspOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNC4uNjkzYmNjODJjY2I3NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICovCiAKIAkJZGVzdCA9IGVuLSZndDtkZXN0OwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKJiM0MzsJCWlmICgoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwICZhbXA7JmFtcDsgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggYzkwZWE4OTdjM2Y3NS4uZjUzZjA1Y2VlYTM2ZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTE2OSw4ICYjNDM7MTY5LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KQogCQlpZiAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApCi0JCSAgICAmYW1wOyZhbXA7IChsZWFzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApICZhbXA7JmFtcDsKJiM0MzsJCSAgICAobGVhc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHsKIAkJCWxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7CiAJCQlnb3RvIG5leHRzdGFnZTsKIAkJfQpAQCAtMTg2LDggJiM0MzsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwogCQlpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwotCQkgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpKQotCQkgICAgJmFtcDsmYW1wOyAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJCSAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoZGVzdC0mZ3Q7Y2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gZG9oOwogCQl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jCkBAIC0zMCw3ICYjNDM7MzAsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJLyoKIAkgKiBTaW1wbHkgc2VsZWN0IHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mCi0JICogICAgICAgIChhY3RpdmVjb25ucyZsdDsmbHQ7NSkgJiM0MzsgaW5hY3Rjb25ucwomIzQzOwkgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgJiM0MzsgdG90YWxjb25ucwogCSAqIEV4Y2VwdCB3aG9zZSB3ZWlnaHQgaXMgZXF1YWwgdG8gemVyby4KIAkgKiBJZiB0aGUgd2VpZ2h0IGlzIGVxdWFsIHRvIHplcm8sIGl0IG1lYW5zIHRoYXQgdGhlIHNlcnZlciBpcwogCSAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXQKQEAgLTU2LDcgJiM0Mzs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICBJUF9WU19EQkdfQUREUihsZWFzdC0mZ3Q7YWYsICZhbXA7bGVhc3QtJmd0O2FkZHIpLAogCQkJICAgICAgbnRvaHMobGVhc3QtJmd0O3BvcnQpLAogCQkJICAgICAgYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7YWN0aXZlY29ubnMpLAotCQkJICAgICAgYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7aW5hY3Rjb25ucykpOwomIzQzOwkJCSAgICAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhsZWFzdCkpOwogCiAJcmV0dXJuIGxlYXN0OwogfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMKaW5kZXggM2RiZDMwOTZlMTYzNy4uOWRiMTI3M2U1YmE0MiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jCkBAIC00NDYsMTIgJiM0Mzs0NDYsMTAgQEAgc2V0X3NjdHBfc3RhdGUoc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsCiAJCQlpZiAoIShjcC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSAmYW1wOyZhbXA7CiAJCQkJKG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkgewogCQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2luYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyB8PSBJUF9WU19DT05OX0ZfSU5BQ1RJVkU7CiAJCQl9IGVsc2UgaWYgKChjcC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSAmYW1wOyZhbXA7CiAJCQkJICAgKG5leHRfc3RhdGUgPT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkgewogCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jCmluZGV4IDk5YTI4NmZkYzkwYzYuLmZlYzBlOGI0N2I3MTYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMKQEAgLTUyNiwxMiAmIzQzOzUyNiwxMCBAQCBzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLAogCQkJaWYgKCEoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgJmFtcDsmYW1wOwogCQkJICAgICF0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHsKIAkJCQlhdG9taWNfZGVjKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKIAkJCQljcC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfQ09OTl9GX0lOQUNUSVZFOwogCQkJfSBlbHNlIGlmICgoY3AtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgJmFtcDsmYW1wOwogCQkJCSAgIHRjcF9zdGF0ZV9hY3RpdmUobmV3X3N0YXRlKSkgewogCQkJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7Ci0JCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2luYWN0Y29ubnMpOwogCQkJCWNwLSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMKaW5kZXggOTMwMzhhYmJmNWUwNC4uZWE1ZmRkNGY0Y2U3NiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jCkBAIC04NzgsMTMgJiM0Mzs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGEKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7Y3AtJmd0O2xvY2spOwogCQlpZiAoKGNwLSZndDtmbGFncyBeIGZsYWdzKSAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUgJmFtcDsmYW1wOwogCQkgICAgIShmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfVEVNUExBVEUpICZhbXA7JmFtcDsgZGVzdCkgewotCQkJaWYgKGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgewomIzQzOwkJCWlmIChmbGFncyAmYW1wOyBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpCiAJCQkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKTsKLQkJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7Ci0JCQl9IGVsc2UgewomIzQzOwkJCWVsc2UKIAkJCQlhdG9taWNfaW5jKCZhbXA7ZGVzdC0mZ3Q7YWN0aXZlY29ubnMpOwotCQkJCWF0b21pY19kZWMoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKLQkJCX0KIAkJfQogCQlmbGFncyAmYW1wOz0gSVBfVlNfQ09OTl9GX0JBQ0tVUF9VUERfTUFTSzsKIAkJZmxhZ3MgfD0gY3AtJmd0O2ZsYWdzICZhbXA7IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggMGIwYzUzMDQ5OTNhOS4uMWIzNmZlZDhhYmUyOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLgogCQkJICovCiAJCQlpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KCZhbXA7cnQtJmd0O2RzdCkpICZhbXA7JmFtcDsKLQkJCSAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQomIzQzOwkJCSAgICBkZXN0LSZndDtjZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGRlc3QtJmd0O2NmbGFncyAmYW1wOyBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkKIAkJCQlfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsICZhbXA7cnQtJmd0O2RzdCwgY29va2llKTsKIAkJCWVsc2UKIAkJCQlub3JlZiA9IDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTEyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIElQVlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyBJUFZTIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIHJlYWxtLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBpdCBtb2RpZmllcyBob3cgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb25zIGFyZSB0cmFja2VkLCBzcGVjaWZpY2FsbHkgbW92aW5nIGZyb20gYGluYWN0Y29ubnNgIHRvIGB0b3RhbGNvbm5zYCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkmIzM5O3JlIGFsc28gYWRkaW5nIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MgYW5kIHNoaWZ0aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBvdmVyIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAgd2l0aGluIHRob3NlIGBjZmxhZ3NgLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gaGFuZGxlIG92ZXJsb2FkIGZsYWcgdXBkYXRlcyBiYXNlZCBvbiBgdG90YWxjb25uc2AgYW5kIHRocmVzaG9sZHMgaXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcHByb2FjaC4KCkZpcnN0IHRoaW5ncyBmaXJzdDogaXMgdGhpcyB0aGluZyBldmVuIHJlYWNoYWJsZSBhbmQgZnV6emFibGU/IFllYWgsIElQVlMgaXMgY29yZSBuZXR3b3JraW5nLCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBsb29raW5nIGF0IHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBoZXJlLCBsaWtlbHkgYWNjZXNzaWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIG9yIGBzZXRzb2Nrb3B0YC4gVGhlIHBhdGNoIHRvdWNoZXMgcXVpdGUgYSBmZXcgZmlsZXM6IGBpcF92c19jb25uLmNgLCBgaXBfdnNfY29yZS5jYCwgYGlwX3ZzX2N0bC5jYCwgYW5kIHNvIG9uLiBUaGF0IGJyb2FkIHRvdWNoIHN1Z2dlc3RzIGEgZnVuZGFtZW50YWwgc2hpZnQsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gYENPTkZJR19JUF9WU2AgaXMgb2J2aW91c2x5IHRoZSBtYWluIHN3aXRjaC4gQnV0IEkgbmVlZCB0byBnbyBkZWVwZXI7IEkgc2hvdWxkIHJlYWxseSBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgSVBWUyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdvdGNoYXMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gTGV0JiMzOTtzIG5hdmlnYXRlIHRvIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQgdGhlcmUuIFRoYXQgc2hvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIElQVlMgYW5kIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIG1lIGltbWVuc2VseSB3aGVuIHRyb3VibGVzaG9vdGluZyBvciBjb25maWd1cmluZyBhIHN5c3RlbS4gSSBrbm93IHRoaXMgaXMgdGhlIHdheSB0byBmaW5kIHRoZSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzItXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMzNz1jb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcGVyc2lzdGVuY2UgZW5naW5lXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzUyPWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1NS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMwNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBEZXBlbmRlbmNpZXMgYW5kIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIE5lZWRzKioKCkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYElQX1ZTYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGlzIGFsbW9zdCBjZXJ0YWlubHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAg4oCTIG5vIHN1cnByaXNlIHRoZXJlLiYjMzQ7IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkIGFzIHByZXJlcXVpc2l0ZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yazogYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhlc2UgYXJlIGFsbCBjb3JlIGNvbXBvbmVudHMsIHNvIHRoaXMgbGlrZWx5IGluZGljYXRlcyBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgcG90ZW50aWFsbHkgaW4gaG93IHRoZSBkaWZmZXJlbnQgbG9hZCBiYWxhbmNpbmcgbWV0aG9kcyBhbmQgcHJvdG9jb2xzIHdvcmsgd2l0aGluIElQVlMuIE15IG5leHQgc3RlcCBpcyB0byBjYXJlZnVsbHkgcmV2aWV3IHRoZXNlIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIEkmIzM5O20gYmV0dGluZyB0aGF0IHRoZSBjaGFuZ2VzIGhlcmUgbWF5IGhhdmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb3IgbmV3IHR1bmluZyBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSBub3cgZGVwcmVjYXRlZCBvciBhbHRlcmVkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3MgaGF2ZW4mIzM5O3QgY2hhbmdlZCB0aGUgZGVmYXVsdCBiZWhhdmlvcnMgb2YgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZzogSVBWUyoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJbnN0ZWFkIG9mIGJsaW5kbHkgcG9raW5nIGFyb3VuZCwgYSBtb3JlIGVmZmljaWVudCBhcHByb2FjaCBpcyB0byBkaXJlY3RseSB0YXJnZXQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gVGhhdCBtZWFucyBJIHNob3VsZCByZWFsbHkgdXNlIGBncmVwYCDigJMgdGhhdCYjMzk7cyB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcuIEkmIzM5O2xsIHNlYXJjaCBmb3IgYGNvbmZpZyBJUF9WU2Agd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIHB1bGwgdXAgYWxsIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zIGluIG9uZSBzaG90LiBTYXZlcyBtZSB0aGUgdHJvdWJsZSBvZiBtYW51YWxseSBuYXZpZ2F0aW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gR29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmNvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gUG9uZGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gc3RhcmluZyBhdCB0aGlzIGFuZCBpbW1lZGlhdGVseSBteSBicmFpbiBmbGFncyBpdC4gKmBjb25maWcgSVBfVlNfYCB3aXRoIGEgc3BhY2UuLi4qIFRoYXQgc3BhY2UgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHByZXR0eSB3ZWxsLCBhbmQgdGhhdCBraW5kIG9mIHN5bnRheCBkZXZpYXRpb24gYWxtb3N0IGFsd2F5cyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUsIGVpdGhlciBpbiB0aGUgS2NvbmZpZyBpdHNlbGYsIHRoZSBidWlsZCBwcm9jZXNzLCBvciBwZXJoYXBzIGV2ZW4gYSB0eXBvIHRoYXQmIzM5O3Mgbm93IG1hbmlmZXN0aW5nIGFzIGEgcHJvYmxlbS4gSXTigJlzIGNlcnRhaW5seSBub3Qgc3RhbmRhcmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyBhbmQgZ2V0IHRvIHRoZSByb290IG9mIHRoZSBlcnJvci4gSXMgaXQgYSBtYWxmb3JtZWQgc3ltYm9sIG5hbWU/IElzIHRoZXJlIGFuIHVuZXhwZWN0ZWQgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW5zZXJ0ZWQ/IFBlcmhhcHMgYSBzdHJheSBjaGFyYWN0ZXIgc2xpcHBlZCBpbnRvIGEgY29uZGl0aW9uYWwgY2xhdXNlPyBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBtYWtlZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGludGVycHJldGVkIGluY29ycmVjdGx5LiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBlY3VsaWFyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIHByZXR0eSBjbGVhci4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGp1c3QgcmVhZCB0aGUgZmlsZS4mIzM0OyBJJiMzOTttIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCYjMzk7cyBhIHNpbXBsZSwgZGlyZWN0LCBhbmQgb2Z0ZW4gdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50LiBXZSYjMzk7cmUgbm90IGVuZ2FnaW5nIGluIGNvbXBsZXggbW9kZWxpbmcgb3IgcmlzayBhc3Nlc3NtZW50cyBhdCB0aGlzIHN0YWdlOyByYXRoZXIsIHdlIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsZXZlbCB1bmRlcnN0YW5kaW5nLiBUaGUgZmlsZSBpdHNlbGYgaXMgdGhlIHByaW1hcnkgc291cmNlIG9mIGluZm9ybWF0aW9uLCBhbmQgdGhlIG1vc3QgZXhwZWRpZW50IG1ldGhvZCBpcyB0byBzaW1wbHkgYmVnaW4gcHJvY2Vzc2luZyBpdHMgY29udGVudHMuIFdlJiMzOTtsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRtZW51Y29uZmlnIElQX1ZTXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcbiAgMTE6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcbiAgMTI6XHRcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXG4gIDEzOlx0XHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcbiAgMTQ6XHRcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXG4gIDE3Olx0XHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcbiAgMTg6XHRcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuICAxOTpcdFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXG4gIDIwOlx0XHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcbiAgMjE6XHRcdCAgaW5mb3JtYXRpb24gYW5kIGl0cyBhZG1pbmlzdHJhdGlvbiBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgdGhlXG4gIDIyOlx0XHQgIGZvbGxvd2luZyBVUkw6IFx1MDAzY2h0dHA6Ly93d3cubGludXh2aXJ0dWFsc2VydmVyLm9yZy9cdTAwM2UuXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gIDI1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjY6XHRcbiAgMjc6XHRpZiBJUF9WU1xuICAyODpcdFxuICAyOTpcdGNvbmZpZ1x0SVBfVlNfSVBWNlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIElQVlNcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gSVBWNiA9IHkgfHwgSVBfVlMgPSBJUFY2XG4gIDMyOlx0XHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgQWRkIElQdjYgc3VwcG9ydCB0byBJUFZTLlxuICAzNTpcdFxuICAzNjpcdFx0ICBTYXkgWSBpZiB1bnN1cmUuXG4gIDM3Olx0XG4gIDM4Olx0Y29uZmlnXHRJUF9WU19ERUJVR1xuICAzOTpcdFx0Ym9vbCBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcJiMzNDtcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBnZXQgYWRkaXRpb25hbCBtZXNzYWdlcyB1c2VmdWwgaW5cbiAgNDI6XHRcdCAgZGVidWdnaW5nIHRoZSBJUCB2aXJ0dWFsIHNlcnZlciBjb2RlLiBZb3UgY2FuIGNoYW5nZSB0aGUgZGVidWdcbiAgNDM6XHRcdCAgbGV2ZWwgaW4gL3Byb2Mvc3lzL25ldC9pcHY0L3ZzL2RlYnVnX2xldmVsXG4gIDQ0Olx0XG4gIDQ1Olx0Y29uZmlnXHRJUF9WU19UQUJfQklUU1xuICA0NjpcdFx0aW50IFwmIzM0O0lQVlMgY29ubmVjdGlvbiB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4gIDQ3Olx0XHRyYW5nZSA4IDIwIGlmICE2NEJJVFxuICA0ODpcdFx0cmFuZ2UgOCAyNyBpZiA2NEJJVFxuICA0OTpcdFx0ZGVmYXVsdCAxMlxuICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBUaGUgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgdXNlcyB0aGUgY2hhaW5pbmcgc2NoZW1lIHRvIGhhbmRsZVxuICA1MjpcdFx0ICBoYXNoIGNvbGxpc2lvbnMuIFVzaW5nIGEgYmlnIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHdpbGwgZ3JlYXRseVxuICA1MzpcdFx0ICByZWR1Y2UgY29uZmxpY3RzIHdoZW4gdGhlcmUgYXJlIGh1bmRyZWRzIG9mIHRob3VzYW5kcyBvZiBjb25uZWN0aW9uc1xuICA1NDpcdFx0ICBpbiB0aGUgaGFzaCB0YWJsZS5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgTm90ZSB0aGUgdGFibGUgc2l6ZSBtdXN0IGJlIHBvd2VyIG9mIDIuIFRoZSB0YWJsZSBzaXplIHdpbGwgYmUgdGhlXG4gIDU3Olx0XHQgIHZhbHVlIG9mIDIgdG8gdGhlIHlvdXIgaW5wdXQgbnVtYmVyIHBvd2VyLiBUaGUgbnVtYmVyIHRvIGNob29zZSBpc1xuICA1ODpcdFx0ICBmcm9tIDggdG8gMjcgZm9yIDY0QklUKDIwIG90aGVyd2lzZSksIHRoZSBkZWZhdWx0IG51bWJlciBpcyAxMixcbiAgNTk6XHRcdCAgd2hpY2ggbWVhbnMgdGhlIHRhYmxlIHNpemUgaXMgNDA5Ni4gRG9uJiMzOTt0IGlucHV0IHRoZSBudW1iZXIgdG9vXG4gIDYwOlx0XHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcbiAgNjE6XHRcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXG4gIDYyOlx0XHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcbiAgNjM6XHRcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxuICA2NDpcdFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXG4gIDY1Olx0XHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxuICA2NjpcdFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxuICA2NzpcdFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cbiAgNjg6XHRcbiAgNjk6XHRcdCAgQW5vdGhlciBub3RlIHRoYXQgZWFjaCBjb25uZWN0aW9uIG9jY3VwaWVzIDEyOCBieXRlcyBlZmZlY3RpdmVseSBhbmRcbiAgNzA6XHRcdCAgZWFjaCBoYXNoIGVudHJ5IHVzZXMgOCBieXRlcywgc28geW91IGNhbiBlc3RpbWF0ZSBob3cgbXVjaCBtZW1vcnkgaXNcbiAgNzE6XHRcdCAgbmVlZGVkIGZvciB5b3VyIGJveC5cbiAgNzI6XHRcbiAgNzM6XHRcdCAgWW91IGNhbiBvdmVyd3JpdGUgdGhpcyBudW1iZXIgc2V0dGluZyBjb25uX3RhYl9iaXRzIG1vZHVsZSBwYXJhbWV0ZXJcbiAgNzQ6XHRcdCAgb3IgYnkgYXBwZW5kaW5nIGlwX3ZzLmNvbm5fdGFiX2JpdHM9PyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpZlxuICA3NTpcdFx0ICBJUCBWUyB3YXMgY29tcGlsZWQgYnVpbHQtaW4uXG4gIDc2Olx0XG4gIDc3Olx0Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDc4Olx0XG4gIDc5Olx0Y29uZmlnXHRJUF9WU19QUk9UT19UQ1BcbiAgODA6XHRcdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgODE6XHRcdGhlbHBcbiAgODI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBUQ1AgdHJhbnNwb3J0XG4gIDgzOlx0XHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbiAgODY6XHRcdGJvb2wgXCYjMzQ7VURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgODc6XHRcdGhlbHBcbiAgODg6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XG4gIDg5Olx0XHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDkwOlx0XG4gIDkxOlx0Y29uZmlnXHRJUF9WU19QUk9UT19BSF9FU1BcbiAgOTI6XHRcdGRlZl9ib29sIElQX1ZTX1BST1RPX0VTUCB8fCBJUF9WU19QUk9UT19BSFxuICA5MzpcdFxuICA5NDpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fRVNQXG4gIDk1Olx0XHRib29sIFwmIzM0O0VTUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDk2Olx0XHRoZWxwXG4gIDk3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXG4gIDk4Olx0XHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRvIGl0LiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nLCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgSW46IFByb2Nlc3NpbmcgdGhlIEluZm9ybWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzIHRleHQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGFsd2F5cyBhIHF1aWNrIHNjYW4uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgZWxlbWVudHMsIHRoZSBjZW50cmFsIHRoZW1lcywgYW5kIGFueSBpbW1lZGlhdGUgaW5kaWNhdG9ycyBvZiB3aGF0IG1ha2VzIHRoaXMgaW5mb3JtYXRpb24gdW5pcXVlIG9yIGludGVyZXN0aW5nLiBUaGlzIGZpcnN0IHBhc3MgaXMgcmVhbGx5IGFib3V0IGdldHRpbmcgbXkgYmVhcmluZ3MsIGZpZ3VyaW5nIG91dCB0aGUgbGFuZHNjYXBlIEkmIzM5O20gYWJvdXQgdG8gdHJhdmVyc2UuIFdoYXQmIzM5O3MgdGhlIGdlbnJlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0JiMzOTtzIHRoZSBvdmVyYWxsIGRpcmVjdGlvbj8gRnJvbSB0aGVyZSwgSSYjMzk7bGwgaWRlbnRpZnkgdGhlIGtleSBjb25jZXB0cyBhbmQgc3RhcnQgZHJhd2luZyBjb25uZWN0aW9ucyBiZXR3ZWVuIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGlzIG1vc3QgaW1wb3J0YW50LCBhbmQgd2hhdCBpcyBtZXJlbHkgc3VwcG9ydGluZyBldmlkZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXG4gMTA0Olx0XHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gMTA1Olx0XG4gMTA2Olx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG4gMTA3Olx0XHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAxMDk6XHRcdGhlbHBcbiAxMTA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxuIDExMTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDExMjpcdFxuIDExMzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbiAxMTQ6XHRcbiAxMTU6XHRjb25maWdcdElQX1ZTX1JSXG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXG4gMTE5Olx0XHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXG4gMTIwOlx0XG4gMTIxOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTIyOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjM6XHQgXG4gMTI0Olx0Y29uZmlnXHRJUF9WU19XUlJcbiAxMjU6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbiAxMjY6XHRcdGhlbHBcbiAxMjc6XHRcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDEyODpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXG4gMTI5Olx0XHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxuIDEzMDpcdFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcbiAxMzE6XHRcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xuIDEzMjpcdFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXG4gMTMzOlx0XG4gMTM0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTM1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMzY6XHRcbiAxMzc6XHRjb25maWdcdElQX1ZTX0xDXG4gMTM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTQxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcbiAxNDI6XHRcdCAgY29ubmVjdGlvbnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTQ1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDY6XHRcbiAxNDc6XHRjb25maWdcdElQX1ZTX1dMQ1xuIDE0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE1MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDE1MjpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE1NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTU2Olx0XG4gMTU3Olx0Y29uZmlnICBJUF9WU19GT1xuIDE1ODpcdFx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4gMTU5Olx0XHRoZWxwXG4gMTYwOlx0XHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNjE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXG4gMTYyOlx0XHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTY1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgIElQX1ZTX09WRlxuIDE2ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1wmIzM0O1xuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTcxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE3MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcbiAxNzM6XHRcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJiMzOTtzIHdlaWdodC5cbiAxNzQ6XHRcbiAxNzU6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNzY6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZ1x0SVBfVlNfTEJMQ1xuIDE3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFRoZSBsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGlzIGZvclxuIDE4MjpcdFx0ICBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuXG4gMTgzOlx0XHQgIFRoaXMgYWxnb3JpdGhtIHVzdWFsbHkgZGlyZWN0cyBwYWNrZXQgZGVzdGluZWQgZm9yIGFuIElQIGFkZHJlc3MgdG9cbiAxODQ6XHRcdCAgaXRzIHNlcnZlciBpZiB0aGUgc2VydmVyIGlzIGFsaXZlIGFuZCB1bmRlciBsb2FkLiBJZiB0aGUgc2VydmVyIGlzXG4gMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFNjb3BlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaGl0cyBhIGZldyBrZXkgYXJlYXMgd2l0aGluIHRoZSBJUFZTIGNvZGUuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhhdCBnaXZlcyBtZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCYjMzk7cyBpbnZvbHZlZC4KCkdpdmVuIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEkmIzM5O2xsIG5lZWQgYElQX1ZTYCBmb3IgdGhlIGNvcmUgSVBWUyBmdW5jdGlvbmFsaXR5LCBuYXR1cmFsbHkuIEkgc2VlIGl0IHRvdWNoZXMgYm90aCBgVENQYCBhbmQgYFNDVFBgLCBzbyBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1NDVFBgIGFyZSBkZWZpbml0ZWx5IHJlcXVpcmVkLiBGdXJ0aGVyLCBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZGlmZmVyZW50IGxvYWQtYmFsYW5jaW5nIG1ldGhvZHMsIGltcGx5aW5nIGBJUF9WU19ESGAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCBhbmQgYElQX1ZTX0xDYCB3aWxsIGJlIG5lZWRlZC4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gTGV0JiMzOTtzIHNlZSBpZiBgSVBfVlNfREhgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyYWJsZS4gSSBzaG91bGQgY29uZmlybSBpdHMgZXhpc3RlbmNlIGFuZCBkZWZhdWx0IHNldHRpbmdzIHNvIEkgY2FuIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGR1cmluZyB0aGUgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTX0RIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzc2NgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlc3Rpb246CgoqKkludmVzdGlnYXRpbmcgYSBQb3NzaWJsZSBDb25uZWN0aW9uKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgbWVudGlvbnMgJiMzNDtESC4mIzM0OyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHNvbWV0aGluZyB3aXRoaW4gdGhlIElQVlMgKElQIFZpcnR1YWwgU2VydmVyKSBjb250ZXh0LiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIGxvYWQgYmFsYW5jaW5nIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzbyBpdCYjMzk7cyBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGZpbGUgd291bGQgaG9sZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0PyBBaCwgeWVzLCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIOKAkyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGF0IHNwZWNpZmljIGRpcmVjdG9yeSBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGRlZmluaXRpb25zIGFuZCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBJUFZTIG1vZHVsZS4gU28sIEkgbmVlZCB0byBjaGVjayBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyB0aGVyZSBhYm91dCAmIzM0O0RIJiMzNDsuIFBlcmhhcHMgaXQgc3RhbmRzIGZvciBzb21ldGhpbmcgbGlrZSAmIzM0O0RpcmVjdCBIYW5kbGluZyYjMzQ7IG9yICYjMzQ7RHluYW1pYyBIYXNoJiMzNDssIG9yIGV2ZW4gc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudC4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE5Mj1jb25maWcgIElQX1ZTX0xCTENSXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjA5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1x0SVBfVlNfREhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEyMAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2ggZm9yIERlc3RpbmF0aW9uIE92ZXJsb2FkIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIGBJUF9WU19ESGAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoZSBwYXRjaCB0byBnZXQgYSBmZWVsIGZvciB0aGUgc2NvcGUuIExvb2tzIGxpa2Ugd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBmb2N1cywgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IG90aGVyIGFyZWFzOiBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgdGhpbmdzIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiBtYW5hZ2VtZW50IChgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCwgc3RhdHMgKGBpcF92c19pbl9zdGF0c2AsIGBpcF92c19vdXRfc3RhdHNgKSwgaG9va3MsIGRlc3QgbWFuYWdlbWVudCwgYW5kIHNjaGVkdWxpbmcuIEl0IGFsc28gbG9va3MgbGlrZSBhIGxvdCBvZiB0aGUgZGVzdGluYXRpb24gcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHVwZGF0ZWQuCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGFyZWFzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYGlwX3ZzX2VkaXRfZGVzdGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBhbmQgdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyAoYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBhbmQgYGlwX3ZzX2xjX3NjaGVkdWxlYCkuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IHBvaW50cyB3aGVyZSB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgbG9naWMgd2lsbCBiZSBtb3N0IGFwcGFyZW50LiBJIGFsc28gd2FudCB0byBjaGVjayB0aGUgbmF0dXJlIG9mIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgZGV0ZXJtaW5pbmcgd2hlcmUgdGhpcyBvdmVybG9hZCBoYW5kbGluZyBpcyBpbnNlcnRlZCBpbiB0aGUgZGVzdGluYXRpb24gZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMzQ0PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM0NTpfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzNDYtXHRcdCAgICBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0LCBpbnQgYWRkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNDQ1PWlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE0OTYtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNDk3Olx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDk4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTE0PWlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1NzQtXHRcdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNTc1Olx0XHRcdF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3ZjLCBkZXN0LCB1ZGVzdCwgMSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3Ni1cdH0gZWxzZSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1OTE9aXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE2MjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTYzMDpcdF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3ZjLCBkZXN0LCB1ZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTYzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk1NDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqQ29uc2lkZXJpbmcgRGVzdGluYXRpb24gTWFuYWdlbWVudCBpbiB0aGUgS2VybmVsJiMzOTtzIElQVlMgTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGRlc3RpbmF0aW9uIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbW9kdWxlLiBJJiMzOTttIHNlZWluZyB0aGF0IGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIFR5cGljYWxseSwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgbWVhbnQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiBhIG1vZHVsZS4gSSBuZWVkIGEgbW9yZSBmbGV4aWJsZSBhcHByb2FjaCwgc29tZXRoaW5nIHRoYXQgYWxsb3dzIGV4dGVybmFsIG1hbmlwdWxhdGlvbiBvZiB0aGVzZSBkZXN0aW5hdGlvbiBlbnRyaWVzLgoKU28sIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGlzIGludGVybmFsIGZ1bmN0aW9uLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGxldmVyYWdlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIHB1YmxpYyBmYWNpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGVzZSB0aGluZ3MgLSBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYW5kIGBpcF92c19uZXdfZGVzdGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29ycmVjdCB0b29scyBmb3IgdGhlIGpvYi4gVGhleSYjMzk7cmUgZGVzaWduZWQgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uIHdpdGggdGhlIGRlc3RpbmF0aW9uIG9iamVjdHMsIHdoaWNoIGlzIHdoYXQgSSBuZWVkLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4ganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBJIGRvbiYjMzk7dCB3YW50IHRvIGdldCBjYXVnaHQgaW4gYW5vdGhlciBzdGF0aWMgdHJhcCEgTGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgb25lICppc24mIzM5O3QqIGFsc28gbGltaXRlZCB0byBpbnRlcm5hbCB1c2UuIFRpbWUgZm9yIGEgcXVpY2sgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX25ld19kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNDQ0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNDQ1OmlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ0Ni17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1MTQ9aXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3OS1cdFx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTU4MDpcdFx0cmV0ID0gaXBfdnNfbmV3X2Rlc3Qoc3ZjLCB1ZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU4MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxODEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRGVzdGluYXRpb24gTWFuYWdlbWVudCBpbiBJUFZTKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBgaXBfdnNfbmV3X2Rlc3RgIHZhcmlhYmxl4oCmIHRoYXQmIzM5O3MgYSBzdGF0aWMgZW50aXR5LCByaWdodD8gR290IGl0LiBTbywgdGhhdCBpbXBsaWVzIHRoYXQgZnVuY3Rpb25zIGxpa2UgYGlwX3ZzX2FkZF9kZXN0YCBhbmQgYGlwX3ZzX2VkaXRfZGVzdGAgYXJlIHByZXR0eSByb2J1c3QgaW4gdGhlaXIgaGFuZGxpbmcgb2YgdGhpcyBzdGF0aWMgZWxlbWVudC4gVGhleSYjMzk7cmUgbGlrZWx5IGRlc2lnbmVkIHRvIGludGVncmF0ZSBzbW9vdGhseSBnaXZlbiB0aGF0IGNvbnN0cmFpbnQuIE5vdywgdGhhdCBicmluZ3MgbWUgdG8gc29tZXRoaW5nIGVsc2UgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsOiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXRzIG1lY2hhbmljcyByZW1haW4gc291bmQgZ2l2ZW4gdGhpcyBmdW5kYW1lbnRhbCBzdGF0aWMgbmF0dXJlIG9mIGBpcF92c19uZXdfZGVzdGAuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5OT12b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMzEyOnN0YXRpYyB2b2lkIF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMTMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzMzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzMzQ6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNi1cdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMzM3Olx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzM4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDU9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxNi1cdFx0XHQgICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZVx1MDAzZSAyKSkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0MTc6XHRcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxOC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIER5bmFtaWMgT3ZlcmxvYWQgaW4gSVBWUyBEZXN0aW5hdGlvbiBVcGRhdGVzKioKClJpZ2h0LCBzbyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzbiYjMzk7dCBhIHN0YXRpYyBjb25kaXRpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGxpbmtlZCB0byBzb21ldGhpbmcgZHluYW1pYyB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgbG9hZCBiYWxhbmNpbmcgcHJvY2Vzcy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0IGlzbiYjMzk7dCBhbiBpc3N1ZSBpbiB0aGUgY29kZSBpdHNlbGYuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBhcmVhcyB0aGF0IGRpcmVjdGx5IGludGVyYWN0IHdpdGggZGVzdGluYXRpb24gc3RhdGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgY29uZGl0aW9uLiBMZXQgbWUgaW52ZXN0aWdhdGUgYGlwX3ZzX2JpbmRfZGVzdGAgYW5kIGBpcF92c191bmJpbmRfZGVzdGAgZmlyc3QuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGRlc3RpbmF0aW9uIGVudHJpZXMsIGFuZCBhcmUgb2J2aW91cyBwb2ludHMgb2YgaW50ZXJhY3Rpb24uIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMsIGFuZCBpbiB3aGF0IG9yZGVyIHdpbGwgcmV2ZWFsIHRoZSBjYXVzZS4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OD1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA4OTppcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA5MC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMTY3PXZvaWQgaXBfdnNfdHJ5X2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk1LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTk2Olx0XHRpcF92c19iaW5kX2Rlc3QoY3AsIGRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk3LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTE0NDQ9aXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNC1cdGNwLVx1MDAzZWRlc3QgPSBOVUxMO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxNTI1Olx0aXBfdnNfYmluZF9kZXN0KGNwLCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOgoKKipBbmFseXppbmcgdGhlIEJpbmRpbmcgU3RyYXRlZ3kgaW4gdGhlIElQVlMgS2VybmVsIE1vZHVsZSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgaXBfdnNfYmluZF9kZXN0YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhlIGNvbXBpbGVyIGlzIGxpa2VseSB0byBleHBhbmQgdGhlIGNvZGUgb2YgYGlwX3ZzX2JpbmRfZGVzdGAgZGlyZWN0bHkgYXQgdGhlIHBvaW50IHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gVGhpcyBjYW4gb3B0aW1pemUgcGVyZm9ybWFuY2UgYnkgYXZvaWRpbmcgYSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCBlc3NlbnRpYWxseSBpbmxpbmluZyB0aGUgbG9naWMgZGlyZWN0bHkgaW50byB0aGUgY2FsbGluZyBmdW5jdGlvbnMuIEl0JiMzOTtzIGEgY2xlYXIgc2lnbmFsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwZXJmb3JtYW5jZSBjcml0aWNhbCwgcHJvYmFibHkgc21hbGwsIGFuZCBsaWtlbHkgY2FsbGVkIHZlcnkgZnJlcXVlbnRseSB3aXRoaW4gdGhlIElQVlMgaW50ZXJuYWxzLiBUaGUgY2hvaWNlIG9mIGBzdGF0aWNgIGFsc28gaW1wbGllcyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBwcmV2ZW50aW5nIG5hbWUgY29sbGlzaW9ucyBpbiBsYXJnZXIgY29kZWJhc2VzLgoKVGhlbiBJJiMzOTttIGNvbnRyYXN0aW5nIHRoYXQgd2l0aCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYW5kIGBpcF92c19jb25uX25ld2AsIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGBzdGF0aWMgaW5saW5lYC4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkZXNpZ24gZGVjaXNpb24uIFRoZXkgYXJlIGxpa2VseSBtb3JlIGNvbXBsZXgsIHBvc3NpYmx5IGludm9sdmluZyBtb3JlIGV4dGVybmFsIGNhbGxzIG9yIG1vcmUgc3Vic3RhbnRpYWwgb3BlcmF0aW9ucy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IGV4cGVjdGVkIHRvIGhhbmRsZSB0aGVtIGFzIHN0YW5kYXJkIGZ1bmN0aW9ucyB3aXRoIHN0YW5kYXJkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0JiMzOTtzIGEgY2x1ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgZm9yIG1vcmUgaW50cmljYXRlIHRhc2tzIGFuZCBhcmVuJiMzOTt0IGFzIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhdCB0aGF0IGZ1bmRhbWVudGFsLCBtaWNyby1vcHRpbWl6YXRpb24gbGV2ZWwuIFRoZXkmIzM5O3JlIHByb2JhYmx5IG1vcmUgYWJvdXQgbWFuYWdpbmcgY29ubmVjdGlvbnMgYW5kIHRyeWluZyB0byBmaW5kIHRoZSBiZXN0IGRlc3RpbmF0aW9uLCByYXRoZXIgdGhhbiBhIHNpbmdsZSwgdWx0cmEtb3B0aW1pemVkIGJpbmRpbmcgbG9va3VwLCB3aGVyZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwgKndvdWxkKiBtYXR0ZXIuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZGVzaWduZXJzIG9mIElQVlMgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIG9wdGltaXphdGlvbiBpcyBjcml0aWNhbCBhbmQgd2hlcmUgaXQmIzM5O3MgbGVzcyBzbywgYW5kIHRoZXkgYXJlIGxldmVyYWdpbmcgdGhlIGlubGluZSBrZXl3b3JkIHRvIHRoZSBiZXN0IGVmZmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIxOS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIyMDpzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjIxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEzNDc9c3RhdGljIHZvaWQgaXBfdnNfY29ubl9leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzkzLVx0XHRcdGlwX3ZzX3VuYmluZF9hcHAoY3ApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMzk0Olx0XHRpcF92c191bmJpbmRfZGVzdChjcCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzOTUtXHRcdGlmICh1bmxpa2VseShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM3NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgbG9naWMsIGFzIHRob3VnaCBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZm9yIGEgZmVsbG93IGV4cGVydDoKCioqSW50ZXJuYWwgQ29ubmVjdGlvbiBNYW5hZ2VtZW50IGluIElQVlMqKgoKQWxyaWdodCwgSSBzZWUgdGhlIGRpcmVjdGlvbiBoZXJlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiBjb25uZWN0aW9uIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gU2luY2UgYGlwX3ZzX3VuYmluZF9kZXN0YCBhbmQgYGlwX3ZzX2Nvbm5fZXhwaXJlYCBhcmUgZGVjbGFyZWQgc3RhdGljIGFuZCB0aGVyZWZvcmUgaW50ZXJuYWwgdG8gdGhlaXIgcmVzcGVjdGl2ZSBtb2R1bGVzLCBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZSBwdWJsaWMtZmFjaW5nIGFuZCBub24tc3RhdGljIGZ1bmN0aW9ucyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYXMgdGhlIHBvaW50cyBvZiBpbnRlcmVzdC4gVGhhdCBtYWtlcyBzZW5zZTsgYGlwX3ZzX2Nvbm5fbmV3YCB3b3VsZCBoYW5kbGUgdGhlIGNyZWF0aW9uLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIHdvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBhdHRlbXB0aW5nIHRoZSBkZXN0aW5hdGlvbiBiaW5kaW5nLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGlmZmVyZW50IHNjaGVkdWxlciBtZXRob2RzIGNvbWUgaW50byBwbGF5IGluIHRoaXMgbmV3IGNvbm5lY3Rpb24gc2V0dXAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGVhY2ggc2NoZWR1bGVyIGhhbmRsZXMgaXRzIG93biBpbnRlcm5hbCBsb2dpYyB0byBkZWFsIHdpdGggdGhpcyBjb25uZWN0aW9uIGNyZWF0aW9uLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGhvdyBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfbGJsY19zY2hlZHVsZWAsIGFuZCBgaXBfdnNfbGNfc2NoZWR1bGVgIGludGVyYWN0IHdpdGggdGhpcyB3aG9sZSBwcm9jZXNzLiBHZXR0aW5nIGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIHNldCB1cCB3aWxsIGNsYXJpZnkgdGhlIGV4YWN0IHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgc3RlcHMuIEVzc2VudGlhbGx5LCBJIG5lZWQgdG8ga25vdyAqd2hlbiogYW5kICpob3cqIHRoZSBzY2hlZHVsZXImIzM5O3MgbG9naWMgZ2V0cyBpbnRlcndvdmVuIGludG8gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yMTE9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjIxMjppcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjEzLVx0XHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0MS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0MjpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19kaF9zY2hlZHVsZXIgPVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDYtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDc6XHQubl9saXN0ID1cdFx0TElTVF9IRUFEX0lOSVQoaXBfdnNfZGhfc2NoZWR1bGVyLm5fbGlzdCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDgtXHQuaW5pdF9zZXJ2aWNlID1cdFx0aXBfdnNfZGhfaW5pdF9zdmMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUxLVx0LmRlbF9kZXN0ID1cdFx0aXBfdnNfZGhfZGVzdF9jaGFuZ2VkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjUyOlx0LnNjaGVkdWxlID1cdFx0aXBfdnNfZGhfc2NoZWR1bGUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTMtfTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNTY9c3RhdGljIGludCBfX2luaXQgaXBfdnNfZGhfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU3LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1ODpcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1OS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjYyPXN0YXRpYyB2b2lkIF9fZXhpdCBpcF92c19kaF9jbGVhbnVwKHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjMte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjY0Olx0dW5yZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2NS1cdHN5bmNocm9uaXplX3JjdSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUwNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBJUFZTIERlc3RpbmF0aW9uIEhhbmRsaW5nKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZXNlIElQVlMgZnVuY3Rpb25zIHdvcmsgdW5kZXIgdGhlIGhvb2QuIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBJIGNvdWxkIHRyZWF0IGBpcF92c19hZGRfZGVzdGAsIGBpcF92c19lZGl0X2Rlc3RgLCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBhbmQgYGlwX3ZzX2Nvbm5fbmV3YCBhcyBhIHN0YXRpYyBzZXQgb2YgZnVuY3Rpb25zIHRvIGNvbnNpZGVyLiBJIG1lYW4sIHRoZXkgc2VlbSBmdW5kYW1lbnRhbCB0byBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGFuZCBjb25uZWN0aW9uIGhhbmRsaW5nLCBzbyBpdCBzZWVtZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC4uLiBhcmUgdGhleSAqdHJ1bHkqIHN0YXRpYyBpbiB0aGVpciBiZWhhdmlvcj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVyZSYjMzk7cyBvZnRlbiBtb3JlIGNvbXBsZXhpdHkgdGhhbiBtZWV0cyB0aGUgZXllLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbjsgaXQmIzM5O3MgYWx3YXlzIGEgbWlzdGFrZSB0byBtYWtlIHRob3NlIGtpbmRzIG9mIGFzc3VtcHRpb25zIHdpdGhvdXQgZGlnZ2luZyBkZWVwZXIuIExldCBtZSBxdWlja2x5IHZlcmlmeSBpZiB0aGVyZSYjMzk7cyBhbnkgZHluYW1pYyBiZWhhdmlvciBvciBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgaWYgdGhleSBvcGVyYXRlIHRoZSBzYW1lIHdheSBpbiBhbGwgY2lyY3Vtc3RhbmNlcyBvciBpZiB0aGVpciBiZWhhdmlvciBjaGFuZ2VzIGJhc2VkIG9uIGNvbnRleHQgb3Igc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2FkZF9kZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTEzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNTE0OmlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTUxNS17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTM0NzI9ZG9faXBfdnNfc2V0X2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIHNvY2twdHJfdCBwdHIsIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM2MDEtXHRjYXNlIElQX1ZTX1NPX1NFVF9BRERERVNUOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjM2MDI6XHRcdHJldCA9IGlwX3ZzX2FkZF9kZXN0KHN2YywgXHUwMDI2dWRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM2MDMtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00Njg1PXN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfY21kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ3OTUtXHRjYXNlIElQVlNfQ01EX05FV19ERVNUOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ3OTY6XHRcdHJldCA9IGlwX3ZzX2FkZF9kZXN0KHN2YywgXHUwMDI2dWRlc3QpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ3OTctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKlN0YXRpYyBGdW5jdGlvbiBEZWVwIERpdmUqKgoKSG1tLCBgaXBfdnNfYWRkX2Rlc3RgLi4uIHRoYXQmIzM5O3Mgc3RhdGljLiBSaWdodC4gTWFrZXMgc2Vuc2UgaW4gaXRzIGNvbnRleHQuIEJ1dCwgd2hlbmV2ZXIgSSBzZWUgYSBzdGF0aWMgZnVuY3Rpb24sIG15IG1pbmQgYXV0b21hdGljYWxseSBzdGFydHMgdHJhY2luZyBpdHMgdXNhZ2UuIExldCYjMzk7cyBzZWUsIHdoZXJlIGVsc2UgaXMgdGhpcyBsaWtlbHkgdG8gYmUgdXNlZD8gSXQmIzM5O3MgdGltZSB0byBjaGVjayBgZG9faXBfdnNfc2V0X2N0bGAgYW5kIGBpcF92c19nZW5sX3NldF9jbWRgLiBJJiMzOTttIHdpbGxpbmcgdG8gYmV0IHRoZXkmIzM5O3JlIHN0YXRpYyBhcyB3ZWxsLCBjb25zaWRlcmluZyB0aGUgd2F5IHRoZSBJUFZTIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCB0aGUgbGFyZ2VyIHN5c3RlbS4gQW5hbHl6aW5nIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIHRvIGdyYXNwIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIG1vZHVsZSBhbmQgZGV0ZXJtaW5lIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9faXBfdnNfc2V0X2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MzQ3MT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MzQ3Mjpkb19pcF92c19zZXRfY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IHB0ciwgdW5zaWduZWQgaW50IGxlbilcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNDczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9Mzk1MT1zdGF0aWMgc3RydWN0IG5mX3NvY2tvcHRfb3BzIGlwX3ZzX3NvY2tvcHRzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zOTU0LVx0LnNldF9vcHRtYXhcdD0gSVBfVlNfU09fU0VUX01BWCYjNDM7MSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozOTU1Olx0LnNldFx0XHQ9IGRvX2lwX3ZzX3NldF9jdGwsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMzk1Ni1cdC5nZXRfb3B0bWluXHQ9IElQX1ZTX0JBU0VfQ1RMLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBOb24tU3RhdGljIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBjb2RlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBhcmUgYmVpbmcgdXNlZC4gU28sIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGUgbGlzdC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gTm9uLXN0YXRpYywgZ29vZC4gTmV4dCwgbGV0JiMzOTtzIGxvb2sgYXQgYGlwX3ZzX2Nvbm5fbmV3YCDigJMgdGhhdCYjMzk7cyBub24tc3RhdGljIGFzIHdlbGwuIEFscmlnaHQsIG1vdmluZyBvbiB0byBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAsIGFsc28gbm9uLXN0YXRpYy4gTGV0JiMzOTtzIGtlZXAgZ29pbmc6IGBpcF92c19pbl9zdGF0c2AgaXMgYW5vdGhlciBub24tc3RhdGljIGZ1bmN0aW9uLiBTYW1lIGdvZXMgZm9yIGBpcF92c19vdXRfc3RhdHNgLiBGaW5hbGx5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2luX2hvb2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19pbl9ob29rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODc9c3RhdGljIHVuc2lnbmVkIGludFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzI3LVx0e1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzI4Olx0XHQuaG9va1x0XHQ9IGlwX3ZzX2luX2hvb2ssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjktXHRcdC5wZlx0XHQ9IE5GUFJPVE9fSVBWNCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNDI6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNzc6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5MC1cdHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM5MTpcdFx0Lmhvb2tcdFx0PSBpcF92c19pbl9ob29rLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzkyLVx0XHQucGZcdFx0PSBORlBST1RPX0lQVjYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzM3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgSSYjMzk7bSB0aGlua2luZyB0aGVzZSB0aGluZ3MgbXlzZWxmOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE9ic2VydmluZyBTdGFzaXMgaW4gdGhlIFN5c3RlbSoqCgpSaWdodCwgdGhpcyBmZWVscy4uLnN0YXRpYy4gU29tZXRoaW5nJiMzOTtzIG5vdCBmbG93aW5nIHRoZSB3YXkgSSBleHBlY3QsIG9yIHNvbWV0aGluZyBoYXMgc3RhbGxlZCBlbnRpcmVseS4gTXkgZ3V0IHRlbGxzIG1lIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBWaXJ0dWFsIFNlcnZlciYjMzk7cyBiZWhhdmlvciwgcG9zc2libHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLgoKU28sIGxldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW5wdXQgYW5kIG91dHB1dCBjb3VudGVycy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaGVhcnQgb2YgdGhlIGxvYWQtYmFsYW5jaW5nIG1lY2hhbmlzbXM6IEkgbmVlZCBhIHF1aWNrIGxvb2sgYXQgYGlwX3ZzX2luYCBhbmQgYGlwX3ZzX291dGAgdG8gc2VlIGlmIHRyYWZmaWMgaXMgZXZlbiBoaXR0aW5nIHRoZSB2aXJ0dWFsIHNlcnZlciwgb3IgaWYgdHJhZmZpYyBpcyBsZWF2aW5nIHRoZSB2aXJ0dWFsIHNlcnZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0b3IuIFRoZXkmIzM5O3JlIG15IGdvLXRvIGRpYWdub3N0aWMgcG9pbnQgZm9yIHRoaXMga2luZCBvZiBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTg5PWNvbnN0IGNoYXIgKmlwX3ZzX3Byb3RvX25hbWUodW5zaWduZWQgaW50IHByb3RvKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTEzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMTQ6dm9pZCBpcF92c19pbml0X2hhc2hfdGFibGUoc3RydWN0IGxpc3RfaGVhZCAqdGFibGUsIGludCByb3dzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9Mjk5PXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzQ4PXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2FkZHJfaXNfdW5pY2FzdChzdHJ1Y3QgbmV0ICpuZXQsIGludCBhZixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTc1OS0gKiAgUGFzcyBvciBkcm9wIHRoZSBwYWNrZXQuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjc2MDogKiAgQ2FsbGVkIGJ5IGlwX3ZzX2luLCB3aGVuIHRoZSB2aXJ0dWFsIHNlcnZpY2UgaXMgYXZhaWxhYmxlIGJ1dFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NjEtICogIG5vIGRlc3RpbmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgY29ubmVjdGlvbi5cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTgwMi1cdFx0Lyogc3RhdGlzdGljcyAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo4MDM6XHRcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDQtXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNjQxPWlwX3ZzX3RyeV90b19zY2hlZHVsZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTY2MC1cdFx0SVBfVlNfREJHX1BLVCgxMiwgYWYsIHBwLCBza2IsIGlwaC1cdTAwM2VvZmYsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE2NjE6XHRcdFx0ICAgICAgXCYjMzQ7aXBfdnNfaW46IHBhY2tldCBjb250aW51ZXMgdHJhdmVyc2FsIGFzIG5vcm1hbFwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE2NjItXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzUyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1MzppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE3NTQtXHQgICAgICB1bnNpZ25lZCBpbnQgaG9va251bSwgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTY4LVx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk3MC1cdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cdTAwM2VsZW4sIGhvb2tudW0sIFx1MDAyNmNpcGgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4MS0jaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTk4MjpzdGF0aWMgaW50IGlwX3ZzX2luX2ljbXBfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODMtXHRcdFx0ICAgIGludCAqcmVsYXRlZCwgdW5zaWduZWQgaW50IGhvb2tudW0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDY3LVx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIwNjg6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODc9c3RhdGljIHVuc2lnbmVkIGludFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXHRcdFx0aW50IHJlbGF0ZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxMzg6XHRcdFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wX3Y2KGlwdnMsIHNrYiwgXHUwMDI2cmVsYXRlZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzOS1cdFx0XHRcdFx0XHQgICAgICAgaG9va251bSwgXHUwMDI2aXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXHRcdFx0aW50IHJlbGF0ZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIxNDg6XHRcdFx0aW50IHZlcmRpY3QgPSBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXHUwMDI2cmVsYXRlZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0OS1cdFx0XHRcdFx0XHQgICAgaG9va251bSwgXHUwMDI2aXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyNDM6XHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cdGlwX3ZzX3NldF9zdGF0ZShjcCwgSVBfVlNfRElSX0lOUFVULCBza2IsIHBkLCBpcGgubGVuKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODAtICogICAgICBXaGVuIGZ3bWFyay1iYXNlZCB2aXJ0dWFsIHNlcnZpY2UgaXMgdXNlZCwgc3VjaCBhcyB0cmFuc3BhcmVudFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjgxOiAqICAgICAgY2FjaGUgY2x1c3RlciwgVENQIHBhY2tldHMgY2FuIGJlIG1hcmtlZCBhbmQgcm91dGVkIHRvIGlwX3ZzX2luLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjgyLSAqICAgICAgYnV0IElDTVAgZGVzdGluZWQgZm9yIDAuMC4wLjAvMCBjYW5ub3Qgbm90IGJlIGVhc2lseSBtYXJrZWQgYW5kXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODM6ICogICAgICBzZW50IHRvIGlwX3ZzX2luX2ljbXAuIFNvLCBjYXRjaCB0aGVtIGF0IHRoZSBORl9JTkVUX0ZPUldBUkQgY2hhaW5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI4NDogKiAgICAgIGFuZCBzZW5kIHRoZW0gdG8gaXBfdnNfaW5faWNtcC5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4NS0gKi9cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIyODc9aXBfdnNfZm9yd2FyZF9pY21wKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzA5Olx0XHRyZXR1cm4gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnIsIHN0YXRlLVx1MDAzZWhvb2ssIFx1MDAyNmlwaGRyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxMC0jZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMTM6XHRyZXR1cm4gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnIsIHN0YXRlLVx1MDAzZWhvb2ssIFx1MDAyNmlwaGRyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNC19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMzE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZfaG9va19vcHMgaXBfdnNfb3BzNFtdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyNy1cdHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMyODpcdFx0Lmhvb2tcdFx0PSBpcF92c19pbl9ob29rLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzI5LVx0XHQucGZcdFx0PSBORlBST1RPX0lQVjQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzMyLVx0fSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMzMzpcdC8qIEJlZm9yZSBpcF92c19pbiwgY2hhbmdlIHNvdXJjZSBvbmx5IGZvciBWUy9OQVQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMzNC1cdHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNDI6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXHR7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzNzc6XHRcdC5ob29rXHRcdD0gaXBfdnNfaW5faG9vayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cdFx0LnBmXHRcdD0gTkZQUk9UT19JUFY2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM4MS1cdH0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzODI6XHQvKiBCZWZvcmUgaXBfdnNfaW4sIGNoYW5nZSBzb3VyY2Ugb25seSBmb3IgVlMvTkFUICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzODMtXHR7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzkwLVx0e1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzkxOlx0XHQuaG9va1x0XHQ9IGlwX3ZzX2luX2hvb2ssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTItXHRcdC5wZlx0XHQ9IE5GUFJPVE9fSVBWNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0NDM9dm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDcxLSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDcyOnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNDczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NTk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfb3BzID0ge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNTYwOlx0LmluaXQgPSBfX2lwX3ZzX2luaXQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NjEtXHQuZXhpdF9iYXRjaCA9IF9faXBfdnNfY2xlYW51cF9iYXRjaCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NjY9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfZGV2X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NzItICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1NzM6c3RhdGljIGludCBfX2luaXQgaXBfdnNfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTc0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI2MjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2NsZWFudXAodm9pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI2MzYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI2Mzc6bW9kdWxlX2luaXQoaXBfdnNfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI2MzgtbW9kdWxlX2V4aXQoaXBfdnNfY2xlYW51cCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTExCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJUFZTIEludGVybmFsIFN0cnVjdHVyZSBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgYGlwX3ZzX2luX2hvb2tgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIElQVlMgaW1wbGVtZW50YXRpb24uIExldCYjMzk7cyBkaWcgaW50byB0aGUgZnVuY3Rpb24gdGhhdCYjMzk7cyBsaWtlbHkgbWFuaXB1bGF0aW5nIHRoYXQ6IGBpcF92c19nZW5sX3NldF9jbWRgLiBUaGlzIGlzIHdoZXJlIGNvbmZpZ3VyYXRpb24gb3IgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIHRoYXQgaG9vayBwcm9iYWJseSBvcmlnaW5hdGUuIFVuZGVyc3RhbmRpbmcgdGhpcyBjb21tYW5kIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuIFRoZSBzdGF0aWMgbmF0dXJlIGltcGxpZXMgYSBnbG9iYWwsIGZpeGVkIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgSSBuZWVkIHRvIHNlZSBob3cgdGhlIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGludGVyYWN0cyB3aXRoIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19nZW5sX3NldF9jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ2NjA9c3RhdGljIGludCBpcF92c19nZW5sX3NldF9kYWVtb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0Njg1OnN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfY21kKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4Ni17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBpcF92c19nZW5sX29wc1tdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIwLVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5MjE6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIyLVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDkyNi1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTI3Olx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDkyOC1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzItXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDkzMzpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzQtXHR9LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ1LVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5NDY6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ3LVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDk1MS1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTUyOlx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDk1My1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTctXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDk1ODpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTktXHR9LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg3LVx0XHQuZmxhZ3NcdD0gR0VOTF9BRE1JTl9QRVJNLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ5ODg6XHRcdC5kb2l0XHQ9IGlwX3ZzX2dlbmxfc2V0X2NtZCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg5LVx0fSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNS1cdFx0LmZsYWdzXHQ9IEdFTkxfQURNSU5fUEVSTSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA2Olx0XHQuZG9pdFx0PSBpcF92c19nZW5sX3NldF9jbWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNy1cdH0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTEtXHRcdC5mbGFnc1x0PSBHRU5MX0FETUlOX1BFUk0sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTAxMjpcdFx0LmRvaXRcdD0gaXBfdnNfZ2VubF9zZXRfY21kLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTMtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ0NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgdGhyb3VnaCB0aGlzOgoKKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgYW5kIEFQSSBVc2FnZSoqCgpPa2F5LCBzbyBgaXBfdnNfZ2VubF9zZXRfY21kYCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFNpbmNlIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGFjY2VzcyB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gYWNoaWV2ZSBteSBnb2FsIHVzaW5nIHRoZSBhdmFpbGFibGUgdG9vbHMuIEkmIzM5O2xsIG5lZWQgdG8gd29yayBhcm91bmQgdGhlIHJlc3RyaWN0aW9uLCBvZiBjb3Vyc2UuCgpSaWdodCwgc28gdG8gbWFrZSB0aGlzIGhhcHBlbiwgSSYjMzk7bGwgbmVlZCB0byBsZWFuIG9uIGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkLiBJIHdpbGwgZGVmaW5pdGVseSBuZWVkIHRvIHVzZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfY29ubl9uZXdgLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCB0aGV5IGFyZSB0aGUgbG9naWNhbCBjaG9pY2VzIGhlcmUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBzZWUgdGhhdCBib3RoIGBpcF92c19pbl9zdGF0c2AgYW5kIGBpcF92c19vdXRfc3RhdHNgIGFyZSBkZWZpbmVkIGFzICpzdGF0aWMgaW5saW5lKi4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gVGhleSAqc2hvdWxkKiBzdGlsbCBiZSB1c2FibGUgaW4gdGhlaXIgcmVzcGVjdGl2ZSBmaWxlcywgYnV0IHRoZXkgd29uJiMzOTt0IGJlIGV4cG9zZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoZSBzb3VyY2Ugd2hlcmUgdGhleSBhcmUgZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBJIG1hcCBvdXQgaG93IHRvIGJ1aWxkIHRoZSBzb2x1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfaW5fc3RhdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9Mjk5PXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODAyLVx0XHQvKiBzdGF0aXN0aWNzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjgwMzpcdFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTgwNC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTM9aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTY5Olx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5NzAtXHR2ZXJkaWN0ID0gaXBfdnNfaWNtcF94bWl0KHNrYiwgY3AsIHBwLCBpcGgtXHUwMDNlbGVuLCBob29rbnVtLCBcdTAwMjZjaXBoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE5ODI9c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2Ny1cdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDY4Olx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDg4PWlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0Mi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI0MzpcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjQ0LVx0aXBfdnNfc2V0X3N0YXRlKGNwLCBJUF9WU19ESVJfSU5QVVQsIHNrYiwgcGQsIGlwaC5sZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIElubGluZSBBbmFseXNpcyAmYW1wOyBUZW1wbGF0ZSBWZXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBhcmUgaW5kZWVkIHN0YXRpYyBpbmxpbmUuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24sIGltcGFjdGluZyBob3cgdGhleSYjMzk7cmUgaGFuZGxlZCBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIE5vdywgdG8gZGlnIGRlZXBlciBhbmQgdW5kZXJzdGFuZCB0aGVpciByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgdGVtcGxhdGUmIzM5O3MgcHJvcGVydGllcyBhcmUgYXNzZXNzZWQsIGFuZCB0aGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHdpbGwgcHJvdmlkZSBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEyNTc9c3RhdGljIGludCBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3Mi0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTI3MzppbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyNzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg5MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgIGlzbiYjMzk7dCBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBhIHRob3VnaHQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IG5vbi1zdGF0aWMgZGVjbGFyYXRpb24uIFdoZXJlIGlzIGl0IGJlaW5nIHVzZWQ/IFdoYXTigJlzIGl0cyBzY29wZT8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGRlY2xhcmF0aW9uPyBJcyBpdCB0aHJlYWQtc2FmZSwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByZWVudHJhbmN5IHByb2JsZW1zIHRvIGxvb2sgYXQ/IFRoaXMgd2lsbCBkcml2ZSBteSBleHBsb3JhdGlvbiBhbmQgdGhlIGxldmVsIG9mIHNjcnV0aW55IEkgd2lsbCBuZWVkIHRvIGFwcGx5IGR1cmluZyBteSBldmFsdWF0aW9uIG9mIHRoZSBjb2RlLgoKTm93LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgLiBUaGlzIHNvdW5kcyBsaWtlIGl0IGRlYWxzIHdpdGggZmx1c2hpbmcgY29ubmVjdGlvbnMgdGhhdCBhcmUgbm90IGxpbmtlZCB0byBhbnkgc3BlY2lmaWMgZGVzdGluYXRpb24gaG9zdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgZXhwaXJhdGlvbiBzdHJhdGVneSB3aXRoaW4gSVBWUy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcywgZGV0ZXJtaW5lIGl0cyB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMsIGFuZCBmdWxseSB1bmRlcnN0YW5kIGl0cyByb2xlIGluIG1haW50YWluaW5nIGNvbm5lY3Rpb24gdGFibGUgaW50ZWdyaXR5LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBpdCBpcyB1c2VkIGNvcnJlY3RseSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFNwZWNpZmljYWxseSwgaXMgaXQgcGFydCBvZiBhIGxhcmdlciwgY29vcmRpbmF0ZWQgY2xlYW51cCBtZWNoYW5pc20/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBleHBpcmF0aW9uIG9yIGdhcmJhZ2UgY29sbGVjdGlvbiByb3V0aW5lcz8gVGhlIGNvbnRleHQgbWF0dGVycyBoZXJlOyBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIGEgY29ubmVjdGlvbiBpbiB0aGUgSVBWUyBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xOTM0PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTk3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjE5OTg6dm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5OTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQzNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipJUFZTIENvbm5lY3Rpb24gRmx1c2hpbmcgQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgc28gYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBJdCBtZWFucyBpdHMgdmFsdWUgb3Igc3RhdGUgY2FuIGNoYW5nZSBkdXJpbmcgcnVudGltZSwgc3VnZ2VzdGluZyBpdCYjMzk7cyBwb3RlbnRpYWxseSBkeW5hbWljIGFuZCB0aWVkIHRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzeXN0ZW0gb3IgbmV0d29yay4gVGhpcyBpcyB1c2VmdWwgZm9yIG1lIGJlY2F1c2UgSSBjYW4gbm93IGNvbnNpZGVyIHRoZSBjb2RlIHRoYXQgc2V0cyBvciBtb2RpZmllcyBpdCBmb3IgdHVuaW5nIHRoZSBJUFZTIGxvYWQgYmFsYW5jZXIuIAoKTm93LCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gZmx1c2hpbmcsIGxldCBtZSBwaXZvdCBhbmQgY2hlY2sgaG93IGBpcF92c19zdGF0c19mcmVlYCB3b3Jrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkIHdoZW4gY29ubmVjdGlvbnMgYXJlIGZsdXNoZWQgb3IgZXhwaXJlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25uZWN0aW9uIGFuZCBob3cgaXRzIGxpZmVjeWNsZSBpcyBtYW5hZ2VkIHNvIHRoYXQgSSBjYW4gaGF2ZSBhIGNsZWFyIGlkZWEgYXMgdG8gd2hldGhlciBzdGFsZSBkYXRhIGlzIGJlaW5nIGNvbGxlY3RlZCBhbmQsIHRoZXJlZm9yZSwgaG93IHRvIGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIHJlc3VsdGluZyBzdGF0aXN0aWNzLiBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByYWNlIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFkZHJlc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfc3RhdHNfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5ND12b2lkIGlwX3ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTI5OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMjk5OnZvaWQgaXBfdnNfc3RhdHNfZnJlZShzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMDAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjg3MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBpcF92c19zdGF0c19mcmVlYCBhbmQgU3RhdGUgTWFuYWdlbWVudCoqCgpBbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IGBpcF92c19zdGF0c19mcmVlYCBpc24mIzM5O3QgZGVjbGFyZWQgYHN0YXRpY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIFRoYXQgb3BlbnMgYSBmZXcgZG9vcnMsIGFuZCBzb21lIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBMZXQmIzM5O3Mgc2VlIGhvdyBhbmQgKndoZXJlKiB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnM7IGhvdyBtYW55IHBsYWNlcyBkb2VzIGl0IGdldCBjYWxsZWQgYW5kIGZyb20gd2hlcmUuIFdoYXQgYXJlIHdlIGV4cGVjdGluZyB0byBzZWU/CgpOb3csIGdpdmVuIHRoYXQgY29udGV4dCwgdGhlIGNvZGUmIzM5O3MgZm9jdXMgc2VlbXMgdG8gYmUgb24gaGFuZGxpbmcgY29ubmVjdGlvbiBzdGF0ZS4gSXQmIzM5O3MgYSBuYXR1cmFsIHByb2dyZXNzaW9uIHRvIGNoZWNrIG91dCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMg4oCTIGBzZXRfc2N0cF9zdGF0ZWAgYW5kIGBzZXRfdGNwX3N0YXRlYC4gVGhlc2UgbGlrZWx5IHBsYXkgYSB2aXRhbCByb2xlIGluIG1hbmFnaW5nIHRoZSBzdGF0ZSBvZiBib3RoIFNDVFAgYW5kIFRDUCBjb25uZWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgSVBWUy4gSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIGhvdyBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhvc2UgZnVuY3Rpb25zLCB3aGF0IHRoZSB2YWxpZCBzdGF0ZXMgYXJlLCBhbmQgaG93IHRoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgc3RvcmVkIGFuZCB1dGlsaXplZC4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgbWFuYWdlbWVudCBoZXJlIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGRlc2lnbiwgaW5jbHVkaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgb3IgbWlnaHQgbm90IGludGVyYWN0IHdpdGggYGlwX3ZzX3N0YXRzX2ZyZWVgLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW4gdGhlc2UgZnVuY3Rpb25zLCBhbmQgd2hhdCBzb3J0IG9mIHdvcmsgdGhleSBwZXJmb3JtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRfc2N0cF9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz0zNzY9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jOjM3NzpzZXRfc2N0cF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtMzc4LVx0XHRpbnQgZGlyZWN0aW9uLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9NDY2PXNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2Y3AtXHUwMDNlbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jOjQ3MTpcdHNldF9zY3RwX3N0YXRlKHBkLCBjcCwgZGlyZWN0aW9uLCBza2IsIGlwaF9sZW4pO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzItXHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NDUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqU0NUUCBTdGF0ZSBUcmFuc2l0aW9uIERpc2NyZXBhbmNpZXMqKgoKSG1tLCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBTQ1RQIGNvZGUuLi4gYW5kIHNvbWV0aGluZyYjMzk7cyBqdXN0IHNuYWdnZWQgbXkgYXR0ZW50aW9uLiBJIHNlZSB0aGF0IGBzZXRfc2N0cF9zdGF0ZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBSaWdodCwgdGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwga2VlcHMgdGhlIGZ1bmN0aW9uIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGFuZCBlbmFibGVzIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBpdCBhZ2dyZXNzaXZlbHkg4oCTIGxpa2VseSBpbmxpbmluZyBpdCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIHJlZHVjaW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpCdXQgdGhlbiwgSSBub3RpY2UgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAuIEFuZC4uLiBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgYHN0YXRpY2AsIHdoaWNoIGltcGxpZXMgaXQmIzM5O3MgcG90ZW50aWFsbHkgdmlzaWJsZSB0byBvdGhlciBwYXJ0cyBvZiB0aGUgbW9kdWxlLCBhbmQgcGVyaGFwcyBldmVuIGV4dGVybmFsbHkuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24gaW1tZWRpYXRlbHkuIElzIGl0IG1lYW50IHRvIGJlIGEgZ2VuZXJhbGx5IGFjY2Vzc2libGUgZnVuY3Rpb24/IFdoYXQmIzM5O3MgdGhlIGRlc2lnbiBpbnRlbnQ/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYmFzZSB0aGF0IGFyZSBub3QgaW5saW5lZD8KClRoZSBhcHBhcmVudCBkaWZmZXJlbmNlIGluIGRlY2xhcmF0aW9uIHNlZW1zIHNpZ25pZmljYW50LiBEb2VzIHRoZSBjb2RlIGludGVuZCBmb3IgZXh0ZXJuYWwgdXNlIG9mIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgcG90ZW50aWFsIGJ1Zz8gVGltZSB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZGlzY3JlcGFuY3kgZXhpc3RzIGJldHdlZW4gYHNldF9zY3RwX3N0YXRlYCBhbmQgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAgYW5kIHRoZWlyIHJvbGUgaW4gU0NUUCYjMzk7cyBzdGF0ZSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8ga25vdyB3aHkgb25lIGlzIGBzdGF0aWMgaW5saW5lYCBhbmQgdGhlIG90aGVyIGlzbiYjMzk7dC4gSSYjMzk7bSBndWVzc2luZyB0aGUgdHJhbnNpdGlvbiBmdW5jdGlvbiBpcyBjb21wbGV4LCBhbmQgdXNlZCBtb3JlIGJyb2FkbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfc3RhdGVfdHJhbnNpdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz00NjU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NDY2OnNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jLTQ2Ny1cdFx0Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9NTY3PXN0cnVjdCBpcF92c19wcm90b2NvbCBpcF92c19wcm90b2NvbF9zY3RwID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTgzLVx0LnN0YXRlX25hbWVcdD0gc2N0cF9zdGF0ZV9uYW1lLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYzo1ODQ6XHQuc3RhdGVfdHJhbnNpdGlvbiA9IHNjdHBfc3RhdGVfdHJhbnNpdGlvbixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTg1LVx0LmFwcF9jb25uX2JpbmRcdD0gc2N0cF9hcHBfY29ubl9iaW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIzMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgU3RhdGUgVHJhbnNpdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBgc2N0cF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBzcGVjaWZpYyBkZXNpZ24gY2hvaWNlOiBpdCYjMzk7cyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgZXhwb3NlZCBvciBjYWxsZWQgZXh0ZXJuYWxseSBmcm9tIG90aGVyIG1vZHVsZXMuIEl0JiMzOTtzIGxpa2VseSBpbnRlbmRlZCBhcyBhbiBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9uIHdpdGhpbiB0aGUgU0NUUCBzdGF0ZSBtYW5hZ2VtZW50IGNvZGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gd2l0aGluIHRoYXQgcGFydGljdWxhciBzY29wZS4KCkdpdmVuIHRoaXMgcmVzdHJpY3Rpb24sIEkmIzM5O2xsIHNoaWZ0IGdlYXJzIGFuZCBsb29rIGRpcmVjdGx5IGF0IGBzZXRfdGNwX3N0YXRlYCB0byBzZWUgaWYgdGhlcmUgaXMgYW4gaW50ZXJhY3Rpb24gdGhlcmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBmdW5jdGlvbiBtaWdodCBwbGF5IGEgcGFydCBpbiB1cGRhdGluZyBhbiBzY3RwIHN0YXRlIGJhc2VkIG9uIGFuIHVwZGF0ZSBmcm9tIGEgVENQLXJlbGF0ZWQgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF90Y3Bfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jPTQ3NT1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYzo0NzY6c2V0X3RjcF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy00NzctXHQgICAgICBpbnQgZGlyZWN0aW9uLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmM9NTUwPXRjcF9zdGF0ZV90cmFuc2l0aW9uKHN0cnVjdCBpcF92c19jb25uICpjcCwgaW50IGRpcmVjdGlvbixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmMtNTYxLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmNwLVx1MDAzZWxvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjU2MjpcdHNldF90Y3Bfc3RhdGUocGQsIGNwLCBkaXJlY3Rpb24sIHRoKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy01NjMtXHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3MjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBUQ1AgU3RhdGUgVHJhbnNpdGlvbnMqKgoKQWxyaWdodCwgc28gYHRjcF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgZm9yIHRoZSBvdmVyYWxsIHN5c3RlbS4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGxpa2VseSBzY29wZSBhbmQgcHVycG9zZSBvZiB0aGF0IHBhcnRpY3VsYXIgdmFyaWFibGUgb3IgZnVuY3Rpb24uIE5vdywgYSBzdGF0aWMgZGVjbGFyYXRpb24gdXN1YWxseSBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBsaWtlbHkgaW50ZXJuYWwgdG8gaXRzIGNvbXBpbGF0aW9uIHVuaXQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IHRoYXQgYWZmZWN0cyBpdHMgYWNjZXNzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBjb25jdXJyZW50IGFjY2VzcyBvciBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVENQL0lQIHN0YWNrLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QuIEdpdmVuIHRoYXQgSSBoYXZlIHRoaXMgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcmVsYXRlZCB0byBJUFZTIGNvbm5lY3Rpb24gaGFuZGxpbmcuIExldCYjMzk7cyBzZWUgaG93IGBpcF92c19wcm9jX2Nvbm5gIGludGVyYWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciBtZWNoYW5pc20uIEkgd2FudCB0byBzZWUgaWYgYHRjcF9zdGF0ZV90cmFuc2l0aW9uYCBwbGF5cyBhIHJvbGUgd2l0aGluIHRoZSBWUyBsYXllciBhbmQgaWYgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBjcmVhdGVzIGFueSB1bmV4cGVjdGVkIGJvdHRsZW5lY2tzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGNvbmN1cnJlbnQgY29ubmVjdGlvbnMgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGltcGFjdC4gSSBiZXQgYGlwX3ZzX3Byb2NfY29ubmAgd2lsbCByZXZlYWwgaG93IHRoaXMgc3RhdGljIGVsZW1lbnQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX3Byb2NfY29ubiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz03ODg9aXBfdnNfY29ubl9maWxsX3BhcmFtX3N5bmMoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBhZiwgdW5pb24gaXBfdnNfc3luY19jb25uICpzYyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTg0MC0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6ODQxOnN0YXRpYyB2b2lkIGlwX3ZzX3Byb2NfY29ubihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnBhcmFtLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDItXHRcdFx0ICAgIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHN0YXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM9OTU1PXN0YXRpYyB2b2lkIGlwX3ZzX3Byb2Nlc3NfbWVzc2FnZV92MChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3QgY2hhciAqYnVmZmVyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTAxNC1cdFx0LyogU2VuZCB0aW1lb3V0IGFzIFplcm8gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6MTAxNTpcdFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFx1MDAyNnBhcmFtLCBmbGFncywgc3RhdGUsIHMtXHUwMDNlcHJvdG9jb2wsIEFGX0lORVQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTYtXHRcdFx0XHQodW5pb24gbmZfaW5ldF9hZGRyICopXHUwMDI2cy1cdTAwM2VkYWRkciwgcy1cdTAwM2VkcG9ydCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTEwNjY9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfcHJvY19zeW5jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIF9fdTggKnAsIF9fdTggKm1zZ19lbmQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy0xMTczLVx0aWYgKGFmID09IEFGX0lORVQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjExNzQ6XHRcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcdTAwMjZwYXJhbSwgZmxhZ3MsIHN0YXRlLCBzLVx1MDAzZXY0LnByb3RvY29sLCBhZixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE3NS1cdFx0XHRcdCh1bmlvbiBuZl9pbmV0X2FkZHIgKilcdTAwMjZzLVx1MDAzZXY0LmRhZGRyLCBzLVx1MDAzZXY0LmRwb3J0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4MC1cdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6MTE4MTpcdFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFx1MDAyNnBhcmFtLCBmbGFncywgc3RhdGUsIHMtXHUwMDNldjYucHJvdG9jb2wsIGFmLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy0xMTgyLVx0XHRcdFx0KHVuaW9uIG5mX2luZXRfYWRkciAqKVx1MDAyNnMtXHUwMDNldjYuZGFkZHIsIHMtXHUwMDNldjYuZHBvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1Njk0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIGBpcF92c19wcm9jX2Nvbm5gIGFuZCBSb3V0aW5nIEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYGlwX3ZzX3Byb2NfY29ubmAgaXMgYXBwYXJlbnRseSBzdGF0aWMuIFRoYXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIE5vdywgd2hhdCYjMzk7cyBnb2luZyBvbiBhcm91bmQgaXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJvdXRpbmcgcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgaG93IG91dGJvdW5kIHJvdXRlcyBhcmUgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYGlwX3ZzX2dldF9vdXRfcnRgIGFuZCBgaXBfdnNfZ2V0X291dF9ydF92NmAuIFRoZXkmIzM5O3JlIHByb2JhYmx5IGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGNvbm5lY3Rpb24gaW5mb3JtYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJvdXRpbmcgbG9naWMgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yaywgZXNwZWNpYWxseSBpbiB0ZXJtcyBvZiBJUHY0IGFuZCBJUHY2LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG91dGJvdW5kIHJvdXRlIGZvciBhIGNvbm5lY3Rpb24sIHdoaWNoIGlzIGxpa2VseSBkZXBlbmRlbnQgb24gdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGlwX3ZzX3Byb2NfY29ubmAuIEkgbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdXRpbGl6aW5nLCBvciBhZmZlY3RlZCBieSBgaXBfdnNfcHJvY19jb25uYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuZXh0IHN0ZXAgaW4gdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3ZzX2dldF9vdXRfcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MzE1PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MzE2Ol9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzE3LVx0XHQgICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTQ4OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjQ4OTpfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ5MC1cdFx0ICAgICAgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz03MzY9aXBfdnNfYnlwYXNzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzM4LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzM5Olx0aWYgKF9faXBfdnNfZ2V0X291dF9ydChjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBOVUxMLCBpcF9oZHIoc2tiKS1cdTAwM2VkYWRkcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzQwLVx0XHRcdCAgICAgICBJUF9WU19SVF9NT0RFX05PTl9MT0NBTCwgTlVMTCwgaXB2c2gpIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzU5PWlwX3ZzX2J5cGFzc194bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTc2My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzY0Olx0aWYgKF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBOVUxMLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy03NjUtXHRcdFx0XHQgIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgTlVMTCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTc4Nz1pcF92c19uYXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04MDQtXHR3YXNfaW5wdXQgPSBydF9pc19pbnB1dF9yb3V0ZShza2JfcnRhYmxlKHNrYikpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo4MDU6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LCBjcC1cdTAwM2VkYWRkci5pcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODA2LVx0XHRcdFx0ICAgSVBfVlNfUlRfTU9ERV9MT0NBTCB8XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz04NzE9aXBfdnNfbmF0X3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODg2LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzo4ODc6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04ODgtXHRcdFx0XHQgICAgICBcdTAwMjZjcC1cdTAwM2VkYWRkci5pbjYsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xMTQ3PWlwX3ZzX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTExNjUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjExNjY6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LCBjcC1cdTAwM2VkYWRkci5pcCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTE2Ny1cdFx0XHRcdCAgIElQX1ZTX1JUX01PREVfTE9DQUwgfFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTI5Mj1pcF92c190dW5uZWxfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzA5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxMzEwOlx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTMxMS1cdFx0XHRcdCAgICAgIFx1MDAyNmNwLVx1MDAzZWRhZGRyLmluNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE0Mzk9aXBfdnNfZHJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNDQ0Olx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnQoY3AtXHUwMDNlaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCwgY3AtXHUwMDNlZGFkZHIuaXAsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE0NDUtXHRcdFx0XHQgICBJUF9WU19SVF9NT0RFX0xPQ0FMIHxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE0Njk9aXBfdnNfZHJfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDczLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNDc0Olx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXHUwMDNlaXB2cywgY3AtXHUwMDNlYWYsIHNrYiwgY3AtXHUwMDNlZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTQ3NS1cdFx0XHRcdCAgICAgIFx1MDAyNmNwLVx1MDAzZWRhZGRyLmluNixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTE1MDQ9aXBfdnNfaWNtcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE1MzYtXHRcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTUzNzpcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0KGNwLVx1MDAzZWlwdnMsIGNwLVx1MDAzZWFmLCBza2IsIGNwLVx1MDAzZWRlc3QsIGNwLVx1MDAzZWRhZGRyLmlwLCBydF9tb2RlLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTM4LVx0XHRcdFx0ICAgTlVMTCwgY2lwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNTk4PWlwX3ZzX2ljbXBfeG1pdF92NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjI5LVx0XHQgIElQX1ZTX1JUX01PREVfUkRSIDogSVBfVlNfUlRfTU9ERV9OT05fTE9DQUw7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE2MzA6XHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cdTAwM2VpcHZzLCBjcC1cdTAwM2VhZiwgc2tiLCBjcC1cdTAwM2VkZXN0LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjMxLVx0XHRcdFx0ICAgICAgXHUwMDI2Y3AtXHUwMDNlZGFkZHIuaW42LCBOVUxMLCBjaXBoLCAwLCBydF9tb2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwMTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSVBWUyBwYXRjaC4gRmlyc3QsIEkmIzM5O3ZlIG5vdGVkIHRoYXQgYF9faXBfdnNfZ2V0X291dF9ydGAgYW5kIGBfX2lwX3ZzX2dldF9vdXRfcnRfdjZgIGFyZSBzdGF0aWMsIHNvIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBleGFtaW5lIGluIHRlcm1zIG9mIGhvdyB0aGlzIG1pZ2h0IGNoYW5nZSBiZWhhdmlvciBhcmUgZ29pbmcgdG8gYmUgYGlwX3ZzX25hdF94bWl0YCwgYGlwX3ZzX3R1bm5lbF94bWl0YCwgYGlwX3ZzX2RyX3htaXRgLCBgaXBfdnNfaWNtcF94bWl0YCwgYW5kIGBpcF92c19ieXBhc3NfeG1pdGAuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBpbXBvcnRhbnQgc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoZSBvdmVyYWxsIHBpY3R1cmU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGBpcF92c19zdGF0c19mcmVlYCwgYW5kIHRoZSBgeG1pdGAgZnVuY3Rpb25zIG1lbnRpb25lZCBiZWZvcmUuIFdhaXQsIGxvb2tzIGxpa2UgYGlwX3ZzX3N0YXRzX2ZyZWVgIGlzIGp1c3QgZnJlZWluZyBzdGF0cywgc28gaXQmIzM5O3Mgbm90IHRlcnJpYmx5IGludGVyZXN0aW5nIGluIHRoaXMgY29udGV4dC4gYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCBzZWVtcyB0byBiZSBhIGtleSBuZXcgZnVuY3Rpb24sIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIGBpcF92c19jb25uX25ld2AgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCBib3RoIGNhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBpcF92c19iaW5kX2Rlc3RgLiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgIGFuZCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCBhcmUgbG9va2luZyBhdCB0aGUgYGRlc3QtJmd0O2NmbGFnc2Agc3RydWN0dXJlLiBUaGUgYHhtaXRgIGZ1bmN0aW9ucyBsaWtlIGBpcF92c19uYXRfeG1pdGAgYWxzbyBjYWxsIGBfX2lwX3ZzX2dldF9vdXRfcnRgIHdoaWNoIGNoZWNrcyBgZGVzdC0mZ3Q7Y2ZsYWdzYC4gU28gSSYjMzk7bSBzZWVpbmcgYSBwYXR0ZXJuIGhlcmUgd2l0aCB0aGF0IGBkZXN0LSZndDtjZmxhZ3NgLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBhbmQgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZWFzeSB0byBob29rIGludG8uCgpOb3cgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlncyBmb3IgdGhpcyBhcmUgYElQX1ZTYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBhbmQgYElQX1ZTX0xDYC4gT2gsIHdhaXQuLi50aGUgbGFzdCBmb3VyIGFyZSBzY2hlZHVsZXJzISBBbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYW5kIGBpcF92c19sYy5jYC4gTWFrZXMgc2Vuc2UsIHNvIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGRlZmluaXRlbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZS4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlnIG5hbWVzIHRvIGJlIGFic29sdXRlbHkgc3VyZTogYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfTENgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBhbmQgYElQX1ZTYC4gSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgcGVlayBhdCBgSVBfVlNfREhgIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgbmV0ZmlsdGVyIGlwdnMgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU19ESCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1MDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqUmVjYWxsaW5nIFByZXZpb3VzIEludmVzdGlnYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBkaXN0aW5jdGx5IHJlbWVtYmVyIHZlcmlmeWluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBgREhgIGp1c3QgcmVjZW50bHksIHByb2JhYmx5IGluIHRoZSBjb250ZXh0IG9mIGNvbmZpZ3VyaW5nIElQVlMuIExldCBtZSBtZW50YWxseSByZXRyYWNlIG15IHN0ZXBzLi4uIEFoLCB5ZXMhIEkgd2FzIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgKmRlZmluaXRlbHkqIGNvbmZpcm1lZCB0aGF0IGBESGAgd2FzIG1hcHBlZCB0byBgY29uZmlnIElQX1ZTX0RIYC4gSSBldmVuIHJlY2FsbCBpdCBzcGVjaWZpY2FsbHkgdXNpbmcgYSB0YWIgZm9yIGluZGVudGF0aW9uLCB3aGljaCBpcyBhIGRldGFpbCBJIHVzdWFsbHkgcGF5IGF0dGVudGlvbiB0byBmb3IgcmVhZGFiaWxpdHkuIFNvLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgYXNzb2NpYXRpb24gcmlnaHQgbm93LiBUaGF0JiMzOTtzIGFscmVhZHkgYmVlbiBhZGRyZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ1x0SVBfVlNfREgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xOTI9Y29uZmlnICBJUF9WU19MQkxDUlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjIxMDpjb25maWdcdElQX1ZTX0RIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludGVybmFsIFJldmlldzogSVBfVlNfTEJMQyoqCgpPa2F5LCB5ZXMsIEkmIzM5O20gcmVhZHkgdG8gYmVnaW4gdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGltbWVkaWF0ZWx5IGNoZWNraW5nIHRoZSBgSVBfVlNfTEJMQ2AgYXNwZWN0LCBhcyB0aGF0JiMzOTtzIHRoZSBjb3JlIGZvY3VzIGhlcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgYW5kIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBmaXJzdC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnXHRJUF9WU19MQkxDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTY3PWNvbmZpZyAgSVBfVlNfT1ZGXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTc4OmNvbmZpZ1x0SVBfVlNfTEJMQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMYW5kc2NhcGUqKgoKWWVzLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gb2YgYElQX1ZTX0xCTENSYC4gVGhhdCB3aWxsIGJlIG15IGluaXRpYWwgYXJlYSBvZiBpbnZlc3RpZ2F0aW9uLiBJdCBjb250YWlucyBkYXRhIHRoYXQgaXMgcmVsZXZhbnQgdG8gbXkgdGFzay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICBJUF9WU19MQkxDUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcdElQX1ZTX0xCTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAzMTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhbiBleHBlcnQ6CgoqKkludGVybmFsIEFzc2Vzc21lbnQgYW5kIERpcmVjdGlvbioqCgpZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFja25vd2xlZGdlIHRoZSBwcmlvciBzdGF0ZSBhbmQgYWdyZWUgdG8gbW92ZSBmb3J3YXJkLiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgSVBfVlNfTENgLiBUaGlzIG1lYW5zIEkmIzM5O20gaW1tZWRpYXRlbHkgc2hpZnRpbmcgZm9jdXMgdG8gYSBzcGVjaWZpYyBhbmQgbGlrZWx5IGNydWNpYWwgZWxlbWVudCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBoYXMgYSBzaWduaWZpY2FuY2Ugd2UgYm90aCB1bmRlcnN0YW5kLiBJdOKAmXMgYSBkaXJlY3QgY2hlY2sgb24gdGhhdCB2YXJpYWJsZSBvciBjb25jZXB0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCwgYW5kIG1ha2UgYSBkZWNpc2lvbiBiYXNlZCBvbiB0aGUgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWdcdElQX1ZTX0xDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTI0PWNvbmZpZ1x0SVBfVlNfV1JSXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1x0SVBfVlNfTENcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O2xlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU5MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBQcm90b2NvbCBTcGVjaWZpY3MqKgoKWWVzLCB0aGF0IGZlZWxzIHJpZ2h0LCB0aGUgY29yZSBwcmluY2lwbGUgaXMgc29saWQuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHByZWNpc2UuIExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgYElQX1ZTX1BST1RPX1RDUGAgYW5kIGBJUF9WU19QUk9UT19TQ1RQYCByaWdodCBub3cuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBsYXRlc3QgcmV2aXNpb25zIGFuZCBwYXRjaGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQsIGFueSByZWNlbnQgZWRnZS1jYXNlcyBjb25zaWRlcmVkLiBJIGNhbiYjMzk7dCBhZmZvcmQgYW55IGFzc3VtcHRpb25zIGhlcmUuIEdvdHRhIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ1x0SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4ODgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgIElQX1ZTX1BST1RPX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xMDA9Y29uZmlnXHRJUF9WU19QUk9UT19BSFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7U0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDM3CgkJCQkJCQlvdXRwdXQ6IDMyNwoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUFZTIFBhdGNoIGZvciBGdXp6aW5nKioKClJpZ2h0LCBJJiMzOTttIHdpdGggdGhpcyBwYXRjaC4gTG9va2luZyBhdCBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5OiBgSVBfVlNgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBgSVBfVlNfREhgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGFuZCBgSVBfVlNfTENgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBjb3JlIElQVlMgZnVuY3Rpb25hbGl0eSBoZXJlLgoKVGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldCBmb3IgZnV6emluZyBqdW1wIG91dCBhdCBtZTogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYCwgYW5kIGVzcGVjaWFsbHkgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbnMgbGlrZSBgaXBfdnNfbmF0X3htaXRgLCBgaXBfdnNfdHVubmVsX3htaXRgLCBgaXBfdnNfZHJfeG1pdGAsIGFuZCBgaXBfdnNfaWNtcF94bWl0YC4gVGhvc2UgYGlwX3ZzXypfeG1pdGAgZnVuY3Rpb25zIGFyZSBob3QgcGF0aHMsIHNvIGEgc29saWQgcGxhY2UgdG8gdGVzdCB0aGUgYGRlc3QtJmd0O2NmbGFnc2AgY2hlY2suIEluY2x1ZGluZyB0aGVtIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNhbGwuIFRoZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzIHRoZSBmb2NhbCBwb2ludCBvZiB0aGUgY2hhbmdlcy4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSByZWFzb25pbmcgZm9yIG15IG93biBiZW5lZml0Li4uIFRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHR3ZWFraW5nIElQVlMmIzM5O3MgZGVzdGluYXRpb24gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG92ZXJsb2FkIGZsYWcuIEl0JiMzOTtzIHN3YXBwaW5nIGBpbmFjdGNvbm5zYCBmb3IgYHRvdGFsY29ubnNgLCBhZGRpbmcgdGhlIGBjZmxhZ3NgIGZvciBjb25maWd1cmF0aW9uIGZsYWdzLCBhbmQgc2hpZnRpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEFuZCwgdGhhdCBjcml0aWNhbCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIHNldHRpbmcgdGhhdCBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIGNvbmZpZ3VyYWJsZSB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHRvdWNoaW5nIGJvdGggdGhlIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEdpdmVuIHRoZSBjaGFuZ2VzLCB0aGUgZnV6emluZyBuZWVkcyB0byBmb2N1cyBvbiB0aG9zZSBhcmVhcyBJIGlkZW50aWZpZWQgYmVmb3JlOiBjb25uZWN0aW9uIGJpbmRpbmcgYW5kIHVuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzLiBTcGVjaWZpY2FsbHksIHRoZSBhcmVhcyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiB0aGUgZGVzdGluYXRpb25zIGFyZSB3aGF0IHdlIHNob3VsZCBmb2N1cyBvbi4KClNlZW1zIGxpa2UgYSBzb2xpZCBwbGFuLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19jb25uX25ldyYjMzQ7LAogICAgJiMzNDtpcF92c190cnlfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICAgJiMzNDtpcF92c19uYXRfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c190dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19kcl94bWl0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2ljbXBfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUFZTIGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBvdmVybG9hZCBmbGFnIHVwZGF0ZXMuIEl0IGludHJvZHVjZXMgYHRvdGFsY29ubnNgIHRvIHJlcGxhY2UgYGluYWN0Y29ubnNgIGFuZCBhZGRzIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MsIG1vdmluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gSXQgYWxzbyBhZGRzIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gdXBkYXRlIHRoZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29ubmVjdGlvbiBiaW5kaW5nL3VuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMgdGhhdCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IGFuZCBvdmVybG9hZCBzdGF0dXMgb2YgZGVzdGluYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fU0NUUCYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJ5X2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2gmIzM0OywKICAgICYjMzQ7aXBfdnNfbmF0X3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdnNfZHJfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF92c19pY21wX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3LjU5MTk5OTMxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTUxMTExMjQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0xDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c190cnlfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19uYXRfeG1pdFwiLFxuICAgIFwiaXBfdnNfdHVubmVsX3htaXRcIixcbiAgICBcImlwX3ZzX2RyX3htaXRcIixcbiAgICBcImlwX3ZzX2ljbXBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQVlMgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIG92ZXJsb2FkIGZsYWcgdXBkYXRlcy4gSXQgaW50cm9kdWNlcyBgdG90YWxjb25uc2AgdG8gcmVwbGFjZSBgaW5hY3Rjb25uc2AgYW5kIGFkZHMgYGNmbGFnc2AgZm9yIGNvbmZpZyBmbGFncywgbW92aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCB0byBgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEVgLiBJdCBhbHNvIGFkZHMgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCB0byB1cGRhdGUgdGhlIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gdGhyZXNob2xkcy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVBWUyBjb3JlIGxvZ2ljIGFuZCBzY2hlZHVsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb25uZWN0aW9uIGJpbmRpbmcvdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRocyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiBkZXN0aW5hdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3LjU5MjAwNDg0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3ODY2OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmM4NGY1NGE0NTMwMjhhZGU4M2ExZWFmODk0NDcyNGMxMzYxMmVkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuaW5kZXggZTZjYTkzMGEzNTA3Yi4uMDJkYjA3NjdlZmZmMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbkBAIC0zOCw2ICszOCwxMiBAQFxcbiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFXFx0MVxcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXFx0XFx0MlxcbiBcXG4rLyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXFxuKyNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXFx0MHgwMDAyXFx0XFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cXG4rXFxuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cXG4rI2RlZmluZSBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4rXFxuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXFxuICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFNcXHQ4XFxuICNpZiBCSVRTX1BFUl9MT05HIFxcdTAwM2UgMzJcXG5AQCAtOTc4LDYgKzk4NCw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcXG4gXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRjb25uX2ZsYWdzO1xcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdHdlaWdodDtcXHRcXHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRjZmxhZ3M7XFx0XFx0LyogY29uZmlnIGZsYWdzICovXFxuIFxcdGF0b21pY190XFx0XFx0bGFzdF93ZWlnaHQ7XFx0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cXG4gXFx0X191MTZcXHRcXHRcXHR0dW5fdHlwZTtcXHQvKiB0dW5uZWwgdHlwZSAqL1xcbiBcXHRfX2JlMTZcXHRcXHRcXHR0dW5fcG9ydDtcXHQvKiB0dW5uZWwgcG9ydCAqL1xcbkBAIC05ODksMTAgKzk5NiwxMSBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XFxuIFxcbiBcXHQvKiBjb25uZWN0aW9uIGNvdW50ZXJzIGFuZCB0aHJlc2hvbGRzICovXFxuIFxcdGF0b21pY190XFx0XFx0YWN0aXZlY29ubnM7XFx0LyogYWN0aXZlIGNvbm5lY3Rpb25zICovXFxuLVxcdGF0b21pY190XFx0XFx0aW5hY3Rjb25ucztcXHQvKiBpbmFjdGl2ZSBjb25uZWN0aW9ucyAqL1xcbitcXHRhdG9taWNfdFxcdFxcdHRvdGFsY29ubnM7XFx0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRwZXJzaXN0Y29ubnM7XFx0LyogcGVyc2lzdGVudCBjb25uZWN0aW9ucyAqL1xcbiBcXHRfX3UzMlxcdFxcdFxcdHVfdGhyZXNob2xkO1xcdC8qIHVwcGVyIHRocmVzaG9sZCAqL1xcbiBcXHRfX3UzMlxcdFxcdFxcdGxfdGhyZXNob2xkO1xcdC8qIGxvd2VyIHRocmVzaG9sZCAqL1xcbitcXHRfX3UzMlxcdFxcdFxcdGxfdGhyZXNob2xkX3ZhbDsvKiB1c2VkIGxvd2VyIHRocmVzaG9sZCAqL1xcbiBcXG4gXFx0LyogZm9yIGRlc3RpbmF0aW9uIGNhY2hlICovXFxuIFxcdHNwaW5sb2NrX3RcXHRcXHRkc3RfbG9jaztcXHQvKiBsb2NrIG9mIGRzdF9jYWNoZSAqL1xcbkBAIC0xOTA5LDYgKzE5MTcsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfZGVzdF9wdXRfYW5kX2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdGtmcmVlKGRlc3QpO1xcbiB9XFxuIFxcbit2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSk7XFxuK1xcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxcbiAgKi9cXG5AQCAtMjIyOSwxNCArMjIzOSwyMSBAQCB2b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZik7XFxuIHN0YXRpYyBpbmxpbmUgaW50XFxuIGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4ge1xcbi1cXHQvKiBXZSB0aGluayB0aGUgb3ZlcmhlYWQgb2YgcHJvY2Vzc2luZyBhY3RpdmUgY29ubmVjdGlvbnMgaXMgMjU2XFxuK1xcdC8qIFdlIHRoaW5rIHRoZSBvdmVyaGVhZCBvZiBwcm9jZXNzaW5nIGFjdGl2ZSBjb25uZWN0aW9ucyBpcyAyNTdcXG4gXFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xcbi1cXHQgKiAyNTYgdGltZXMgbWlnaHQgbm90IGJlIGFjY3VyYXRlLCB3ZSB3aWxsIGNoYW5nZSBpdCBsYXRlcikgV2VcXG4rXFx0ICogMjU3IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXFxuIFxcdCAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzpcXG4tXFx0ICpcXHRcXHQgIGRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKjI1NiArIGRlc3QtXFx1MDAzZWluYWN0Y29ubnNcXG4rXFx0ICpcXHRcXHQgIGRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKjI1NiArIGRlc3QtXFx1MDAzZXRvdGFsY29ubnNcXG4gXFx0ICovXFxuIFxcdHJldHVybiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSBcXHUwMDNjXFx1MDAzYyA4KSArXFxuLVxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4rXFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIGludFxcbitpcF92c19kZXN0X2luYWN0Y29ubnMoY29uc3Qgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuK3tcXG4rXFx0cmV0dXJuIG1heChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNldG90YWxjb25ucykgLVxcbitcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpLCAwKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19JUF9WU19QUk9UT19UQ1BcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbmluZGV4IDFlZDIzNGU3ZjI1MTMuLjJjMzdjNmFjNzUyNWEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbkBAIC0yOCwxMiArMjgsNiBAQFxcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXFx0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXFxuICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVFxcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xcbiBcXG4tLypcXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3NcXG4tICovXFxuLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcXHQweDAwMDJcXHRcXHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xcbi1cXG4gLypcXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCAzNmM1Y2JhMDNmNWJjLi42ZmEzZTFkYzUzNGMzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuQEAgLTEwODEsMTIgKzEwODEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfYmluZF94bWl0X3Y2KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gI2VuZGlmXFxuIFxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbi17XFxuLVxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpXFxuLVxcdFxcdCsgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbi19XFxuLVxcbiAvKlxcbiAgKlxcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cXG4gICpcXHRDYWxsZWQganVzdCBhZnRlciBhIG5ldyBjb25uZWN0aW9uIGVudHJ5IGlzIGNyZWF0ZWQuXFxuQEAgLTExNDcsMjMgKzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcbiBcXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cXG4gXFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XFxuK1xcdFxcdGludCB0YztcXG4rXFxuIFxcdFxcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIG1vZGlmeSB0aGUgY291bnRlcnNcXG4gXFx0XFx0ICogYWNjb3JkaW5nIHRvIHRoZSBmbGFncywgbGF0ZXIgdGhlIHByb3RvY29sIGNhblxcbiBcXHRcXHQgKiB1cGRhdGUgdGhlbSBvbiBzdGF0ZSBjaGFuZ2VcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSlcXG4gXFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbitcXHRcXHR0YyA9IGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZkZXN0LVxcdTAwM2V0b3RhbGNvbm5zKTtcXG4rXFx0XFx0aWYgKHRjID09IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkpXFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDEpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHQvKiBJdCBpcyBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbi90ZW1wbGF0ZSwgc28gaW5jcmVhc2VcXG4gXFx0XFx0ICAgdGhlIHBlcnNpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovXFxuIFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucyk7XFxuIFxcdH1cXG4tXFxuLVxcdGlmIChkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAhPSAwIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzZT0gZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gXFxuQEAgLTEyNDQsMzAgKzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gXFxuIFxcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xcbiBcXHRpZiAoIShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XFxuLVxcdFxcdC8qIEl0IGlzIGEgbm9ybWFsIGNvbm5lY3Rpb24sIHNvIGRlY3JlYXNlIHRoZSBpbmFjdGNvbm5zXFxuLVxcdFxcdCAgIG9yIGFjdGl2ZWNvbm5zIGNvdW50ZXIgKi9cXG4tXFx0XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xcbi1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0aW50IHRjO1xcbitcXG4rXFx0XFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gZGVjcmVhc2UgdGhlIGNvdW50ZXJzICovXFxuK1xcdFxcdGlmICghKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXFxuIFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0fVxcbitcXHRcXHR0YyA9IGF0b21pY19mZXRjaF9kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMpO1xcbitcXHRcXHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkX3ZhbCkpXFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIC0xKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXFxuIFxcdFxcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xcbiBcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFxcdTAwM2MgZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHR9XFxuLVxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG4gfVxcbiBcXG5AQCAtMTI5Niw3ICsxMjc5LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbiBcXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XFxuLVxcdCAgICAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4rXFx0ICAgICEoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIHx8XFxuIFxcdCAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8XFxuIFxcdCAgICAoY2Rlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xcbiBcXHRcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJjaGVja190ZW1wbGF0ZTogZGVzdCBub3QgYXZhaWxhYmxlIGZvciBcXFwiXFxuQEAgLTIwMzcsNyArMjAyMCw3IEBAIHZvaWQgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiBcXHRcXHRcXHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcXG4gXFx0XFx0XFx0cmVzY2hlZF9zY29yZSsrO1xcbiBcXHRcXHRcXHRkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdFxcdGlmICghZGVzdCB8fCAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4rXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjcC1cXHUwMDNlbl9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5pbmRleCA2Yjc5ZTBjNGQ5ZTI4Li4xYTkyMjY0OGM5MTdkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTMwMiw3ICszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuIFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXFx1MDAzZWlwdnM7XFxuIFxcbi1cXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XFxuIFxcbkBAIC0zMzgsNyArMzM4LDcgQEAgaXBfdnNfb3V0X3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4gXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cXHUwMDNlaXB2cztcXG4gXFxuLVxcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcXG4gXFxuQEAgLTIyMDksNyArMjIwOSw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXFxuIFxcdH1cXG4gXFxuIFxcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXFxuLVxcdGlmIChjcCBcXHUwMDI2XFx1MDAyNiBjcC1cXHUwMDNlZGVzdCBcXHUwMDI2XFx1MDAyNiAhKGNwLVxcdTAwM2VkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChjcCBcXHUwMDI2XFx1MDAyNiBjcC1cXHUwMDNlZGVzdCBcXHUwMDI2XFx1MDAyNiAhKGNwLVxcdTAwM2VkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0LyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovXFxuIFxcdFxcdGlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7XFxuIFxcdFxcdFxcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbmluZGV4IGJjZjQwYjhjNDFjZjIuLjhmOWE4ZTQ5MWFkNmIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzMDQsNiArMTMwNCw0MCBAQCB2b2lkIGlwX3ZzX3N0YXRzX2ZyZWUoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcXG4gXFx0fVxcbiB9XFxuIFxcbisvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcXG4rICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xcbisgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xcbisgKi9cXG4rc3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXFxuK3tcXG4rXFx0aW50IGNvbm5zO1xcbitcXHR1MzIgbCwgdTtcXG4rXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRlc3QtXFx1MDAzZWRzdF9sb2NrKTtcXG4rXFx0dSA9IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCk7XFxuK1xcdGlmICghdSlcXG4rXFx0XFx0Z290byB1bnNldDtcXG4rXFx0bCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZF92YWwpO1xcbitcXHRjb25ucyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V0b3RhbGNvbm5zKTtcXG4rXFx0aWYgKGNvbm5zIFxcdTAwM2U9IChtb2RlIFxcdTAwM2UgMCA/IGwgOiB1KSkge1xcbitcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXHRpZiAoY29ubnMgXFx1MDAzZT0gKG1vZGUgXFx1MDAzYyAwID8gdSA6IGwpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbit1bnNldDpcXG4rXFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rfVxcbitcXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuK1xcdF9faXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgbW9kZSk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuK31cXG4rXFxuIC8qXFxuICAqXFx0VXBkYXRlIGEgZGVzdGluYXRpb24gaW4gdGhlIGdpdmVuIHNlcnZpY2VcXG4gICovXFxuQEAgLTEzNjgsMTIgKzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0fVxcbiBcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRkZXN0LVxcdTAwM2VjZmxhZ3MgfD0gSVBfVlNfREVTVF9DRl9BVkFJTEFCTEU7XFxuIFxcbi1cXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkO1xcbi1cXHRkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZDtcXG4rXFx0aWYgKFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkgIT0gdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIHx8XFxuK1xcdCAgICBSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkge1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRlc3QtXFx1MDAzZWRzdF9sb2NrKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4rXFx0XFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXFxuK1xcdFxcdFdSSVRFX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGRfdmFsLFxcbitcXHRcXHRcXHQgICB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPyA6XFxuK1xcdFxcdFxcdCAgICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgLVxcbitcXHRcXHRcXHQgICAgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlXFx1MDAzZSAyKSkpO1xcbitcXHRcXHRfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDApO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbitcXHR9XFxuIFxcbiBcXHRkZXN0LVxcdTAwM2VhZiA9IHVkZXN0LVxcdTAwM2VhZjtcXG4gXFxuQEAgLTE0NDUsNyArMTQ4OCw3IEBAIGlwX3ZzX25ld19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuIFxcdGRlc3QtXFx1MDAzZXBvcnQgPSB1ZGVzdC1cXHUwMDNlcG9ydDtcXG4gXFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zLCAwKTtcXG4tXFx0YXRvbWljX3NldChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucywgMCk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZXRvdGFsY29ubnMsIDApO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMsIDApO1xcbiBcXHRyZWZjb3VudF9zZXQoXFx1MDAyNmRlc3QtXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcbkBAIC0xNDg2LDYgKzE1MjksOSBAQCBpcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIElOVF9NQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XFxuIFxcdFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3BvcnQgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9lcnIoXFxcIiVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5AQCAtMTU1OSw2ICsxNjA1LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuIFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgSU5UX01BWClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRpZiAodWRlc3QtXFx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcXG4gXFx0XFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fcG9ydCA9PSAwKSB7XFxuIFxcdFxcdFxcdHByX2VycihcXFwiJXMoKTogdHVubmVsIHBvcnQgaXMgemVyb1xcXFxuXFxcIiwgX19mdW5jX18pO1xcbkBAIC0xNjEzLDcgKzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbiBcXHRcXHRcXHRcXHRpbnQgc3ZjdXBkKVxcbiB7XFxuLVxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuIFxcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xcbkBAIC0zMDMxLDcgKzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2Vjb25uX2ZsYWdzKSksXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucykpO1xcbitcXHRcXHRcXHRcXHRcXHQgICBpcF92c19kZXN0X2luYWN0Y29ubnMoZGVzdCkpO1xcbiBcXHRcXHRcXHRlbHNlXFxuICNlbmRpZlxcbiBcXHRcXHRcXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG5AQCAtMzA0Miw3ICszMDkxLDcgQEAgc3RhdGljIGludCBpcF92c19pbmZvX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbiBcXHRcXHRcXHRcXHRcXHQgICBpcF92c19md2RfbmFtZShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlY29ubl9mbGFncykpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcXG4gXFxuIFxcdFxcdH1cXG4gXFx0fVxcbkBAIC0zNjY3LDEwICszNzE2LDEwIEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqXFxuIFxcdFxcdFxcdGVudHJ5LnBvcnQgPSBkZXN0LVxcdTAwM2Vwb3J0O1xcbiBcXHRcXHRcXHRlbnRyeS5jb25uX2ZsYWdzID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWNvbm5fZmxhZ3MpO1xcbiBcXHRcXHRcXHRlbnRyeS53ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4tXFx0XFx0XFx0ZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4tXFx0XFx0XFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZDtcXG4rXFx0XFx0XFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbitcXHRcXHRcXHRlbnRyeS5sX3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCk7XFxuIFxcdFxcdFxcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4rXFx0XFx0XFx0ZW50cnkuaW5hY3Rjb25ucyA9IGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KTtcXG4gXFx0XFx0XFx0ZW50cnkucGVyc2lzdGNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucyk7XFxuIFxcdFxcdFxcdGlwX3ZzX2NvcHlfc3RhdHMoXFx1MDAyNmtzdGF0cywgXFx1MDAyNmRlc3QtXFx1MDAzZXN0YXRzKTtcXG4gXFx0XFx0XFx0aXBfdnNfZXhwb3J0X3N0YXRzX3VzZXIoXFx1MDAyNmVudHJ5LnN0YXRzLCBcXHUwMDI2a3N0YXRzKTtcXG5AQCAtNDI3NywxMiArNDMyNiwxNCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiBcXHRcXHRcXHQgZGVzdC1cXHUwMDNldHVuX3BvcnQpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX1RVTl9GTEFHUyxcXG4gXFx0XFx0XFx0ZGVzdC1cXHUwMDNldHVuX2ZsYWdzKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCwgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpIHx8XFxuLVxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsXFxuK1xcdFxcdFxcdFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkpIHx8XFxuK1xcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxcbitcXHRcXHRcXHRSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpKSB8fFxcbiBcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXFxuIFxcdFxcdFxcdGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucykpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0lOQUNUX0NPTk5TLFxcbi1cXHRcXHRcXHRhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucykpIHx8XFxuK1xcdFxcdFxcdGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfUEVSU0lTVF9DT05OUyxcXG4gXFx0XFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXBlcnNpc3Rjb25ucykpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX0FERFJfRkFNSUxZLCBkZXN0LVxcdTAwM2VhZikpXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5pbmRleCBlMWY2MmY2YjI1ZTIxLi40M2FiZWQ3YTI2YTZhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5AQCAtMjE5LDggKzIxOSw4IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtXFx1MDAzZXNjaGVkX2RhdGE7XFxuIFxcdGRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLVxcdTAwM2VhZiwgcywgXFx1MDAyNmlwaC1cXHUwMDNlZGFkZHIpO1xcbi1cXHRpZiAoIWRlc3RcXG4tXFx0ICAgIHx8ICEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbitcXHRpZiAoIWRlc3QgfHxcXG4rXFx0ICAgICEoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXFxuIFxcdCAgICB8fCBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwXFxuIFxcdCAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7XFxuIFxcdFxcdGlwX3ZzX3NjaGVkdWxlcl9lcnIoc3ZjLCBcXFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuaW5kZXggMTVjY2IyYjJmYTFmNC4uNjkzYmNjODJjY2I3NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC01MDIsNyArNTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHQgKi9cXG4gXFxuIFxcdFxcdGRlc3QgPSBlbi1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICgoZGVzdC1cXHUwMDNlY2ZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbmluZGV4IGM5MGVhODk3YzNmNzUuLmY1M2YwNWNlZWEzNmYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbkBAIC0xNjksOCArMTY5LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHRcXHRpZiAobGVhc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAobGVhc3QtXFx1MDAzZWNmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRzdGFnZTtcXG4gXFx0XFx0fVxcbkBAIC0xODYsOCArMTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlXFxuLVxcdFxcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSlcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdFxcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBkb2g7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zMCw3ICszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBTaW1wbHkgc2VsZWN0IHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mXFxuLVxcdCAqICAgICAgICAoYWN0aXZlY29ubnNcXHUwMDNjXFx1MDAzYzUpICsgaW5hY3Rjb25uc1xcbitcXHQgKiAgICAgICAgKGFjdGl2ZWNvbm5zKjI1NikgKyB0b3RhbGNvbm5zXFxuIFxcdCAqIEV4Y2VwdCB3aG9zZSB3ZWlnaHQgaXMgZXF1YWwgdG8gemVyby5cXG4gXFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcXG4gXFx0ICogcXVpZXNjZWQsIHRoZSBleGlzdGluZyBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHN0aWxsIGdldFxcbkBAIC01Niw3ICs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGxlYXN0LVxcdTAwM2VhZiwgXFx1MDAyNmxlYXN0LVxcdTAwM2VhZGRyKSxcXG4gXFx0XFx0XFx0ICAgICAgbnRvaHMobGVhc3QtXFx1MDAzZXBvcnQpLFxcbiBcXHRcXHRcXHQgICAgICBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSxcXG4tXFx0XFx0XFx0ICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2VpbmFjdGNvbm5zKSk7XFxuK1xcdFxcdFxcdCAgICAgIGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhsZWFzdCkpO1xcbiBcXG4gXFx0cmV0dXJuIGxlYXN0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXFxuaW5kZXggM2RiZDMwOTZlMTYzNy4uOWRiMTI3M2U1YmE0MiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xcbkBAIC00NDYsMTIgKzQ0NiwxMCBAQCBzZXRfc2N0cF9zdGF0ZShzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4gXFx0XFx0XFx0aWYgKCEoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQobmV4dF9zdGF0ZSAhPSBJUF9WU19TQ1RQX1NfRVNUQUJMSVNIRUQpKSB7XFxuIFxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuIFxcdFxcdFxcdFxcdGNwLVxcdTAwM2VmbGFncyB8PSBJUF9WU19DT05OX0ZfSU5BQ1RJVkU7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgKG5leHRfc3RhdGUgPT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xcbiBcXHRcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucyk7XFxuLVxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiBcXHRcXHRcXHRcXHRjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0NPTk5fRl9JTkFDVElWRTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuY1xcbmluZGV4IDk5YTI4NmZkYzkwYzYuLmZlYzBlOGI0N2I3MTYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXFxuQEAgLTUyNiwxMiArNTI2LDEwIEBAIHNldF90Y3Bfc3RhdGUoc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXFxuIFxcdFxcdFxcdGlmICghKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgICF0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4gXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmICgoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQgICB0Y3Bfc3RhdGVfYWN0aXZlKG5ld19zdGF0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4gXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xcbmluZGV4IDkzMDM4YWJiZjVlMDQuLmVhNWZkZDRmNGNlNzYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmNcXG5AQCAtODc4LDEzICs4NzgsMTAgQEAgc3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFcXG4gXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdGlmICgoY3AtXFx1MDAzZWZsYWdzIF4gZmxhZ3MpIFxcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSBcXHUwMDI2XFx1MDAyNiBkZXN0KSB7XFxuLVxcdFxcdFxcdGlmIChmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xcbitcXHRcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXFxuIFxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuLVxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbi1cXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VpbmFjdGNvbm5zKTtcXG4tXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGZsYWdzIFxcdTAwMjY9IElQX1ZTX0NPTk5fRl9CQUNLVVBfVVBEX01BU0s7XFxuIFxcdFxcdGZsYWdzIHw9IGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5JUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbmluZGV4IDBiMGM1MzA0OTkzYTkuLjFiMzZmZWQ4YWJlMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWNmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCAwKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcXHUwMDI2cnQtXFx1MDAzZWRzdCkpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VjZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSlcXG4gXFx0XFx0XFx0XFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCwgY29va2llKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA1OjU3Ljk0MDUyMzMyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4NTE2MjU3MDk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0xDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c190cnlfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19uYXRfeG1pdFwiLFxuICAgIFwiaXBfdnNfdHVubmVsX3htaXRcIixcbiAgICBcImlwX3ZzX2RyX3htaXRcIixcbiAgICBcImlwX3ZzX2ljbXBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQVlMgZGVzdGluYXRpb24gc2VydmVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIG92ZXJsb2FkIGZsYWcgdXBkYXRlcy4gSXQgaW50cm9kdWNlcyBgdG90YWxjb25uc2AgdG8gcmVwbGFjZSBgaW5hY3Rjb25uc2AgYW5kIGFkZHMgYGNmbGFnc2AgZm9yIGNvbmZpZyBmbGFncywgbW92aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCB0byBgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEVgLiBJdCBhbHNvIGFkZHMgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCB0byB1cGRhdGUgdGhlIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gdGhyZXNob2xkcy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVBWUyBjb3JlIGxvZ2ljIGFuZCBzY2hlZHVsZXJzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBjb25uZWN0aW9uIGJpbmRpbmcvdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRocyB0aGF0IGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgYW5kIG92ZXJsb2FkIHN0YXR1cyBvZiBkZXN0aW5hdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJjODRmNTRhNDUzMDI4YWRlODNhMWVhZjg5NDQ3MjRjMTM2MTJlZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjA1OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IGU2Y2E5MzBhMzUwN2IuLjAyZGIwNzY3ZWZmZjIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL25ldC9pcF92cy5oXG5AQCAtMzgsNiArMzgsMTIgQEBcbiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFXHQxXG4gI2RlZmluZSBJUF9WU19IRFJfSUNNUFx0XHQyXG4gXG4rLyogRGVzdGluYXRpb24gU2VydmVyIEZsYWdzICovXG4rI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcdDB4MDAwMlx0XHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xuK1xuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBDb25maWcgRmxhZ3MgKi9cbisjZGVmaW5lIElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuK1xuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXG4gI2RlZmluZSBJUF9WU19DT05OX1RBQl9NSU5fQklUU1x0OFxuICNpZiBCSVRTX1BFUl9MT05HIFx1MDAzZSAzMlxuQEAgLTk3OCw2ICs5ODQsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4rXHR1bnNpZ25lZCBsb25nXHRcdGNmbGFncztcdFx0LyogY29uZmlnIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRsYXN0X3dlaWdodDtcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXG4gXHRfX3UxNlx0XHRcdHR1bl90eXBlO1x0LyogdHVubmVsIHR5cGUgKi9cbiBcdF9fYmUxNlx0XHRcdHR1bl9wb3J0O1x0LyogdHVubmVsIHBvcnQgKi9cbkBAIC05ODksMTAgKzk5NiwxMSBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXG4gXHQvKiBjb25uZWN0aW9uIGNvdW50ZXJzIGFuZCB0aHJlc2hvbGRzICovXG4gXHRhdG9taWNfdFx0XHRhY3RpdmVjb25ucztcdC8qIGFjdGl2ZSBjb25uZWN0aW9ucyAqL1xuLVx0YXRvbWljX3RcdFx0aW5hY3Rjb25ucztcdC8qIGluYWN0aXZlIGNvbm5lY3Rpb25zICovXG4rXHRhdG9taWNfdFx0XHR0b3RhbGNvbm5zO1x0LyogdG90YWwgY29ubmVjdGlvbnMgKi9cbiBcdGF0b21pY190XHRcdHBlcnNpc3Rjb25ucztcdC8qIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgKi9cbiBcdF9fdTMyXHRcdFx0dV90aHJlc2hvbGQ7XHQvKiB1cHBlciB0aHJlc2hvbGQgKi9cbiBcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGQ7XHQvKiBsb3dlciB0aHJlc2hvbGQgKi9cbitcdF9fdTMyXHRcdFx0bF90aHJlc2hvbGRfdmFsOy8qIHVzZWQgbG93ZXIgdGhyZXNob2xkICovXG4gXG4gXHQvKiBmb3IgZGVzdGluYXRpb24gY2FjaGUgKi9cbiBcdHNwaW5sb2NrX3RcdFx0ZHN0X2xvY2s7XHQvKiBsb2NrIG9mIGRzdF9jYWNoZSAqL1xuQEAgLTE5MDksNiArMTkxNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0a2ZyZWUoZGVzdCk7XG4gfVxuIFxuK3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsIGludCBtb2RlKTtcbitcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcbiAgKiAoZnJvbSBpcF92c19zeW5jLmMpXG4gICovXG5AQCAtMjIyOSwxNCArMjIzOSwyMSBAQCB2b2lkIGlwX3ZzX3VucmVnaXN0ZXJfaG9va3Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHVuc2lnbmVkIGludCBhZik7XG4gc3RhdGljIGlubGluZSBpbnRcbiBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuLVx0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1NlxuK1x0LyogV2UgdGhpbmsgdGhlIG92ZXJoZWFkIG9mIHByb2Nlc3NpbmcgYWN0aXZlIGNvbm5lY3Rpb25zIGlzIDI1N1xuIFx0ICogdGltZXMgaGlnaGVyIHRoYW4gdGhhdCBvZiBpbmFjdGl2ZSBjb25uZWN0aW9ucyBpbiBhdmVyYWdlLiAoVGhpc1xuLVx0ICogMjU2IHRpbWVzIG1pZ2h0IG5vdCBiZSBhY2N1cmF0ZSwgd2Ugd2lsbCBjaGFuZ2UgaXQgbGF0ZXIpIFdlXG4rXHQgKiAyNTcgdGltZXMgbWlnaHQgbm90IGJlIGFjY3VyYXRlLCB3ZSB3aWxsIGNoYW5nZSBpdCBsYXRlcikgV2VcbiBcdCAqIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGEgdG8gZXN0aW1hdGUgdGhlIG92ZXJoZWFkIG5vdzpcbi1cdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgKyBkZXN0LVx1MDAzZWluYWN0Y29ubnNcbitcdCAqXHRcdCAgZGVzdC1cdTAwM2VhY3RpdmVjb25ucyoyNTYgKyBkZXN0LVx1MDAzZXRvdGFsY29ubnNcbiBcdCAqL1xuIFx0cmV0dXJuIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2NcdTAwM2MgOCkgK1xuLVx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuK1x0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGludFxuK2lwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhjb25zdCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbit7XG4rXHRyZXR1cm4gbWF4KGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucykgLVxuK1x0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSwgMCk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfSVBfVlNfUFJPVE9fVENQXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuaW5kZXggMWVkMjM0ZTdmMjUxMy4uMmMzN2M2YWM3NTI1YSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuQEAgLTI4LDEyICsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggMzZjNWNiYTAzZjViYy4uNmZhM2UxZGM1MzRjMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xMDgxLDEyICsxMDgxLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gI2VuZGlmXG4gXG4gXG4tc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLXtcbi1cdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKVxuLVx0XHQrIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4tfVxuLVxuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTExNDcsMjMgKzExNDEsMjIgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4gXG4gXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cbiBcdGlmICghKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XG4rXHRcdGludCB0YztcbitcbiBcdFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gbW9kaWZ5IHRoZSBjb3VudGVyc1xuIFx0XHQgKiBhY2NvcmRpbmcgdG8gdGhlIGZsYWdzLCBsYXRlciB0aGUgcHJvdG9jb2wgY2FuXG4gXHRcdCAqIHVwZGF0ZSB0aGVtIG9uIHN0YXRlIGNoYW5nZVxuIFx0XHQgKi9cbiBcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbitcdFx0dGMgPSBhdG9taWNfaW5jX3JldHVybihcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK1x0XHRpZiAodGMgPT0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKVxuK1x0XHRcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGluY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbi1cbi1cdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4tXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTEyNDQsMzAgKzEyMzcsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xuIFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcbi1cdFx0LyogSXQgaXMgYSBub3JtYWwgY29ubmVjdGlvbiwgc28gZGVjcmVhc2UgdGhlIGluYWN0Y29ubnNcbi1cdFx0ICAgb3IgYWN0aXZlY29ubnMgY291bnRlciAqL1xuLVx0XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkge1xuLVx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbi1cdFx0fSBlbHNlIHtcbitcdFx0aW50IHRjO1xuK1xuK1x0XHQvKiBJdCBpcyBhIG5vcm1hbCBjb25uZWN0aW9uLCBzbyBkZWNyZWFzZSB0aGUgY291bnRlcnMgKi9cbitcdFx0aWYgKCEoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG4gXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0fVxuK1x0XHR0YyA9IGF0b21pY19mZXRjaF9kZWMoXHUwMDI2ZGVzdC1cdTAwM2V0b3RhbGNvbm5zKTtcbitcdFx0aWYgKHRjID09IFJFQURfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkX3ZhbCkpXG4rXHRcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCwgLTEpO1xuIFx0fSBlbHNlIHtcbiBcdFx0LyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlXG4gXHRcdCAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqL1xuIFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4tXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHR9XG4tXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG4gXG5AQCAtMTI5Niw3ICsxMjc5LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSB8fFxuIFx0ICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHxcbiBcdCAgICAoY2Rlc3QgXHUwMDI2XHUwMDI2IChkZXN0ICE9IGNkZXN0KSkpIHtcbiBcdFx0SVBfVlNfREJHX0JVRig5LCBcImNoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwiXG5AQCAtMjAzNyw3ICsyMDIwLDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4gXHRcdFx0Y3AgPSBpcF92c19objBfdG9fY29ubihobik7XG4gXHRcdFx0cmVzY2hlZF9zY29yZSsrO1xuIFx0XHRcdGRlc3QgPSBjcC1cdTAwM2VkZXN0O1xuLVx0XHRcdGlmICghZGVzdCB8fCAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpXG4rXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNwLVx1MDAzZW5fY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IDZiNzllMGM0ZDllMjguLjFhOTIyNjQ4YzkxN2QgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTMzOCw3ICszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cdTAwM2VkZXN0O1xuIFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cdTAwM2VpcHZzO1xuIFxuLVx0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMjIwOSw3ICsyMjA5LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChjcCBcdTAwMjZcdTAwMjYgY3AtXHUwMDNlZGVzdCBcdTAwMjZcdTAwMjYgIShjcC1cdTAwM2VkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyLi44ZjlhOGU0OTFhZDZiIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMzA0LDYgKzEzMDQsNDAgQEAgdm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4gXHR9XG4gfVxuIFxuKy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuKyAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuKyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4rICovXG4rc3RhdGljIHZvaWQgX19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4re1xuK1x0aW50IGNvbm5zO1xuK1x0dTMyIGwsIHU7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbitcdGlmICghdSlcbitcdFx0Z290byB1bnNldDtcbitcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwpO1xuK1x0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXRvdGFsY29ubnMpO1xuK1x0aWYgKGNvbm5zIFx1MDAzZT0gKG1vZGUgXHUwMDNlIDAgPyBsIDogdSkpIHtcbitcdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRcdHJldHVybjtcbitcdH1cbitcdGlmIChjb25ucyBcdTAwM2U9IChtb2RlIFx1MDAzYyAwID8gdSA6IGwpKVxuK1x0XHRyZXR1cm47XG4rXG4rdW5zZXQ6XG4rXHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbit9XG4rXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgaW50IG1vZGUpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK1x0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmRlc3QtXHUwMDNlZHN0X2xvY2spO1xuK31cbitcbiAvKlxuICAqXHRVcGRhdGUgYSBkZXN0aW5hdGlvbiBpbiB0aGUgZ2l2ZW4gc2VydmljZVxuICAqL1xuQEAgLTEzNjgsMTIgKzE0MDIsMjEgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGRlc3QtXHUwMDNlY2ZsYWdzIHw9IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFO1xuIFxuLVx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkO1xuLVx0ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCA9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuK1x0aWYgKFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCB8fFxuK1x0ICAgIFJFQURfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkge1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKTtcbitcdFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZF92YWwsXG4rXHRcdFx0ICAgdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPyA6XG4rXHRcdFx0ICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIC1cbitcdFx0XHQgICAgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZVx1MDAzZSAyKSkpO1xuK1x0XHRfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QsIDApO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbitcdH1cbiBcbiBcdGRlc3QtXHUwMDNlYWYgPSB1ZGVzdC1cdTAwM2VhZjtcbiBcbkBAIC0xNDQ1LDcgKzE0ODgsNyBAQCBpcF92c19uZXdfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxuIFx0ZGVzdC1cdTAwM2Vwb3J0ID0gdWRlc3QtXHUwMDNlcG9ydDtcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucywgMCk7XG4tXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucywgMCk7XG4rXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNldG90YWxjb25ucywgMCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zLCAwKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCwgMSk7XG4gXG5AQCAtMTQ4Niw2ICsxNTI5LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgKzE2MDUsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNjEzLDcgKzE2NjIsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0ZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9DRl9BVkFJTEFCTEU7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbkBAIC0zMDMxLDcgKzMwODAsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbitcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcdFx0XHRlbHNlXG4gI2VuZGlmXG4gXHRcdFx0XHRzZXFfcHJpbnRmKHNlcSxcbkBAIC0zMDQyLDcgKzMwOTEsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2luZm9fc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4gXHRcdFx0XHRcdCAgIGlwX3ZzX2Z3ZF9uYW1lKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncykpLFxuIFx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCksXG4gXHRcdFx0XHRcdCAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpLFxuLVx0XHRcdFx0XHQgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKTtcbitcdFx0XHRcdFx0ICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGRlc3QpKTtcbiBcbiBcdFx0fVxuIFx0fVxuQEAgLTM2NjcsMTAgKzM3MTYsMTAgQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcbiBcdFx0XHRlbnRyeS5wb3J0ID0gZGVzdC1cdTAwM2Vwb3J0O1xuIFx0XHRcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWNvbm5fZmxhZ3MpO1xuIFx0XHRcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuK1x0XHRcdGVudHJ5LnVfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpO1xuIFx0XHRcdGVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4rXHRcdFx0ZW50cnkuaW5hY3Rjb25ucyA9IGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHRcdFx0aXBfdnNfY29weV9zdGF0cyhcdTAwMjZrc3RhdHMsIFx1MDAyNmRlc3QtXHUwMDNlc3RhdHMpO1xuIFx0XHRcdGlwX3ZzX2V4cG9ydF9zdGF0c191c2VyKFx1MDAyNmVudHJ5LnN0YXRzLCBcdTAwMjZrc3RhdHMpO1xuQEAgLTQyNzcsMTIgKzQzMjYsMTQgQEAgc3RhdGljIGludCBpcF92c19nZW5sX2ZpbGxfZGVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0XHQgZGVzdC1cdTAwM2V0dW5fcG9ydCkgfHxcbiBcdCAgICBubGFfcHV0X3UxNihza2IsIElQVlNfREVTVF9BVFRSX1RVTl9GTEFHUyxcbiBcdFx0XHRkZXN0LVx1MDAzZXR1bl9mbGFncykgfHxcbi1cdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsIGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpIHx8XG4rXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbitcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkpIHx8XG4rXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCxcbitcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbi1cdFx0XHRhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpKSB8fFxuK1x0XHRcdGlwX3ZzX2Rlc3RfaW5hY3Rjb25ucyhkZXN0KSkgfHxcbiBcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1BFUlNJU1RfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfQUREUl9GQU1JTFksIGRlc3QtXHUwMDNlYWYpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjEuLjQzYWJlZDdhMjZhNmEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMTksOCArMjE5LDggQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4tXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRpZiAoIWRlc3QgfHxcbitcdCAgICAhKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSlcbiBcdCAgICB8fCBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwXG4gXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xuIFx0XHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXCJubyBkZXN0aW5hdGlvbiBhdmFpbGFibGVcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjQuLjY5M2JjYzgyY2NiNzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNTAyLDcgKzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoKGRlc3QtXHUwMDNlY2ZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpXG4gXHRcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggYzkwZWE4OTdjM2Y3NS4uZjUzZjA1Y2VlYTM2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2OSw4ICsxNjksOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKGxlYXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4Niw4ICsxODYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuLVx0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQuLjE4Yjk3NmE3YzRkMjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbkBAIC0zMCw3ICszMCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHQvKlxuIFx0ICogU2ltcGx5IHNlbGVjdCB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZlxuLVx0ICogICAgICAgIChhY3RpdmVjb25uc1x1MDAzY1x1MDAzYzUpICsgaW5hY3Rjb25uc1xuK1x0ICogICAgICAgIChhY3RpdmVjb25ucyoyNTYpICsgdG90YWxjb25uc1xuIFx0ICogRXhjZXB0IHdob3NlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLlxuIFx0ICogSWYgdGhlIHdlaWdodCBpcyBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXNcbiBcdCAqIHF1aWVzY2VkLCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciBzdGlsbCBnZXRcbkBAIC01Niw3ICs1Niw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICAgSVBfVlNfREJHX0FERFIobGVhc3QtXHUwMDNlYWYsIFx1MDAyNmxlYXN0LVx1MDAzZWFkZHIpLFxuIFx0XHRcdCAgICAgIG50b2hzKGxlYXN0LVx1MDAzZXBvcnQpLFxuIFx0XHRcdCAgICAgIGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSxcbi1cdFx0XHQgICAgICBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VpbmFjdGNvbm5zKSk7XG4rXHRcdFx0ICAgICAgaXBfdnNfZGVzdF9pbmFjdGNvbm5zKGxlYXN0KSk7XG4gXG4gXHRyZXR1cm4gbGVhc3Q7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXG5pbmRleCAzZGJkMzA5NmUxNjM3Li45ZGIxMjczZTViYTQyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1xuQEAgLTQ0NiwxMiArNDQ2LDEwIEBAIHNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KG5leHRfc3RhdGUgIT0gSVBfVlNfU0NUUF9TX0VTVEFCTElTSEVEKSkge1xuIFx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9JTkFDVElWRTtcbiBcdFx0XHR9IGVsc2UgaWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgIChuZXh0X3N0YXRlID09IElQX1ZTX1NDVFBfU19FU1RBQkxJU0hFRCkpIHtcbiBcdFx0XHRcdGF0b21pY19pbmMoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucyk7XG4tXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gXHRcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG4gXHRcdFx0fVxuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG5pbmRleCA5OWEyODZmZGM5MGM2Li5mZWMwZThiNDdiNzE2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmNcbkBAIC01MjYsMTIgKzUyNiwxMCBAQCBzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuIFx0XHRcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAhdGNwX3N0YXRlX2FjdGl2ZShuZXdfc3RhdGUpKSB7XG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuIFx0XHRcdFx0Y3AtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xuIFx0XHRcdH0gZWxzZSBpZiAoKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgdGNwX3N0YXRlX2FjdGl2ZShuZXdfc3RhdGUpKSB7XG4gXHRcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuIFx0XHRcdFx0Y3AtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xuIFx0XHRcdH1cbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jXG5pbmRleCA5MzAzOGFiYmY1ZTA0Li5lYTVmZGQ0ZjRjZTc2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1xuQEAgLTg3OCwxMyArODc4LDEwIEBAIHN0YXRpYyB2b2lkIGlwX3ZzX3Byb2NfY29ubihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnBhXG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbiBcdFx0aWYgKChjcC1cdTAwM2VmbGFncyBeIGZsYWdzKSBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSBcdTAwMjZcdTAwMjYgZGVzdCkge1xuLVx0XHRcdGlmIChmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0lOQUNUSVZFKSB7XG4rXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5BQ1RJVkUpXG4gXHRcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpO1xuLVx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWluYWN0Y29ubnMpO1xuLVx0XHRcdH0gZWxzZSB7XG4rXHRcdFx0ZWxzZVxuIFx0XHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi1cdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbi1cdFx0XHR9XG4gXHRcdH1cbiBcdFx0ZmxhZ3MgXHUwMDI2PSBJUF9WU19DT05OX0ZfQkFDS1VQX1VQRF9NQVNLO1xuIFx0XHRmbGFncyB8PSBjcC1cdTAwM2VmbGFncyBcdTAwMjYgfklQX1ZTX0NPTk5fRl9CQUNLVVBfVVBEX01BU0s7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IDBiMGM1MzA0OTkzYTkuLjFiMzZmZWQ4YWJlMjkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuK1x0XHRcdCAgICBkZXN0LVx1MDAzZWNmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9DRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgMCk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbitcdFx0XHQgICAgZGVzdC1cdTAwM2VjZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDU6NTcuOTQwNTI0NjQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0NjUyMjM4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBJUFZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgSVBWUyB3aXRoaW4gdGhlIG5ldGZpbHRlciByZWFsbS4gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgaXQgbW9kaWZpZXMgaG93IGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9ucyBhcmUgdHJhY2tlZCwgc3BlY2lmaWNhbGx5IG1vdmluZyBmcm9tIGBpbmFjdGNvbm5zYCB0byBgdG90YWxjb25uc2Agd2l0aGluIHRoZSBgc3RydWN0IGlwX3ZzX2Rlc3RgLiBUaGV5J3JlIGFsc28gYWRkaW5nIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MgYW5kIHNoaWZ0aW5nIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBvdmVyIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAgd2l0aGluIHRob3NlIGBjZmxhZ3NgLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gaGFuZGxlIG92ZXJsb2FkIGZsYWcgdXBkYXRlcyBiYXNlZCBvbiBgdG90YWxjb25uc2AgYW5kIHRocmVzaG9sZHMgaXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcHByb2FjaC5cblxuRmlyc3QgdGhpbmdzIGZpcnN0OiBpcyB0aGlzIHRoaW5nIGV2ZW4gcmVhY2hhYmxlIGFuZCBmdXp6YWJsZT8gWWVhaCwgSVBWUyBpcyBjb3JlIG5ldHdvcmtpbmcsIHNvIHdlJ3JlIGRlZmluaXRlbHkgbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgaGVyZSwgbGlrZWx5IGFjY2Vzc2libGUgdmlhIG5ldGxpbmsgc29ja2V0cyBvciBgc2V0c29ja29wdGAuIFRoZSBwYXRjaCB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgaXBfdnNfY29ubi5jYCwgYGlwX3ZzX2NvcmUuY2AsIGBpcF92c19jdGwuY2AsIGFuZCBzbyBvbi4gVGhhdCBicm9hZCB0b3VjaCBzdWdnZXN0cyBhIGZ1bmRhbWVudGFsIHNoaWZ0LCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gYENPTkZJR19JUF9WU2AgaXMgb2J2aW91c2x5IHRoZSBtYWluIHN3aXRjaC4gQnV0IEkgbmVlZCB0byBnbyBkZWVwZXI7IEkgc2hvdWxkIHJlYWxseSBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgSVBWUyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdvdGNoYXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDMuNzg3MDQ5MjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY4MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjowNjowMy44Mjg5MjI1NzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYxNjcxNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSVBWUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEEgZ29vZCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIGBLY29uZmlnYCBmaWxlLiBMZXQncyBuYXZpZ2F0ZSB0byBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGFuZCBzZWUgd2hhdCdzIGRlZmluZWQgdGhlcmUuIFRoYXQgc2hvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIElQVlMgYW5kIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgaW1tZW5zZWx5IHdoZW4gdHJvdWJsZXNob290aW5nIG9yIGNvbmZpZ3VyaW5nIGEgc3lzdGVtLiBJIGtub3cgdGhpcyBpcyB0aGUgd2F5IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDcyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDYuNzkwNTk3NDI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzI5MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9NT1tZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1xcdElQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMi1cXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMzc9Y29uZmlnXFx0SVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ5LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MDYuODMzOTMzMDk0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMTAyNzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElQVlMgRGVwZW5kZW5jaWVzIGFuZCBQb3RlbnRpYWwgQ29uZmlndXJhdGlvbiBOZWVkcyoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgbWFraW5nIGNoYW5nZXMgdG8gYElQX1ZTYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJPa2F5LCB0aGlzIGFsbW9zdCBjZXJ0YWlubHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAg4oCTIG5vIHN1cnByaXNlIHRoZXJlLlwiIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aG9zZSBhcmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQgYXMgcHJlcmVxdWlzaXRlcy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcms6IGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfcHJvdG9fc2N0cC5jYCwgYW5kIGBpcF92c19wcm90b190Y3AuY2AuIFRoZXNlIGFyZSBhbGwgY29yZSBjb21wb25lbnRzLCBzbyB0aGlzIGxpa2VseSBpbmRpY2F0ZXMgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHBvdGVudGlhbGx5IGluIGhvdyB0aGUgZGlmZmVyZW50IGxvYWQgYmFsYW5jaW5nIG1ldGhvZHMgYW5kIHByb3RvY29scyB3b3JrIHdpdGhpbiBJUFZTLiBNeSBuZXh0IHN0ZXAgaXMgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGVzZSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSBJJ20gYmV0dGluZyB0aGF0IHRoZSBjaGFuZ2VzIGhlcmUgbWF5IGhhdmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb3IgbmV3IHR1bmluZyBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgb3IgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSBub3cgZGVwcmVjYXRlZCBvciBhbHRlcmVkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3MgaGF2ZW4ndCBjaGFuZ2VkIHRoZSBkZWZhdWx0IGJlaGF2aW9ycyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjA2OjEwLjc2NDk2MzU4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjg1NTIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MDY6MTAuODA3ODIzMjIyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MzI2Njg0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZzogSVBWUyoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgSVBWUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluc3RlYWQgb2YgYmxpbmRseSBwb2tpbmcgYXJvdW5kLCBhIG1vcmUgZWZmaWNpZW50IGFwcHJvYWNoIGlzIHRvIGRpcmVjdGx5IHRhcmdldCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBUaGF0IG1lYW5zIEkgc2hvdWxkIHJlYWxseSB1c2UgYGdyZXBgIOKAkyB0aGF0J3MgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LiBJJ2xsIHNlYXJjaCBmb3IgYGNvbmZpZyBJUF9WU2Agd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIHB1bGwgdXAgYWxsIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zIGluIG9uZSBzaG90LiBTYXZlcyBtZSB0aGUgdHJvdWJsZSBvZiBtYW51YWxseSBuYXZpZ2F0aW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gR29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTozNS4xMzQ1MDk4NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzkxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTozNS4xNzc5MDYyNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjE4NTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBQb25kZXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gc3RhcmluZyBhdCB0aGlzIGFuZCBpbW1lZGlhdGVseSBteSBicmFpbiBmbGFncyBpdC4gKmBjb25maWcgSVBfVlNfYCB3aXRoIGEgc3BhY2UuLi4qIFRoYXQgc3BhY2UgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHByZXR0eSB3ZWxsLCBhbmQgdGhhdCBraW5kIG9mIHN5bnRheCBkZXZpYXRpb24gYWxtb3N0IGFsd2F5cyBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUsIGVpdGhlciBpbiB0aGUgS2NvbmZpZyBpdHNlbGYsIHRoZSBidWlsZCBwcm9jZXNzLCBvciBwZXJoYXBzIGV2ZW4gYSB0eXBvIHRoYXQncyBub3cgbWFuaWZlc3RpbmcgYXMgYSBwcm9ibGVtLiBJdOKAmXMgY2VydGFpbmx5IG5vdCBzdGFuZGFyZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgYW5kIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgZXJyb3IuIElzIGl0IGEgbWFsZm9ybWVkIHN5bWJvbCBuYW1lPyBJcyB0aGVyZSBhbiB1bmV4cGVjdGVkIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGluc2VydGVkPyBQZXJoYXBzIGEgc3RyYXkgY2hhcmFjdGVyIHNsaXBwZWQgaW50byBhIGNvbmRpdGlvbmFsIGNsYXVzZT8gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCB0aGUgYXNzb2NpYXRlZCBtYWtlZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGludGVycHJldGVkIGluY29ycmVjdGx5LiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBlY3VsaWFyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMzMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjM4LjYxNDA5NDA5N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODIyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjM4LjY1NjE4MjI3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDIxNjczMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBObyBuZWVkIHRvIG92ZXJ0aGluayB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBqdXN0IHJlYWQgdGhlIGZpbGUuXCIgSSdtIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCdzIGEgc2ltcGxlLCBkaXJlY3QsIGFuZCBvZnRlbiB0aGUgbW9zdCBlZmZpY2llbnQgc3RhcnRpbmcgcG9pbnQuIFdlJ3JlIG5vdCBlbmdhZ2luZyBpbiBjb21wbGV4IG1vZGVsaW5nIG9yIHJpc2sgYXNzZXNzbWVudHMgYXQgdGhpcyBzdGFnZTsgcmF0aGVyLCB3ZSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGV2ZWwgdW5kZXJzdGFuZGluZy4gVGhlIGZpbGUgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IHNvdXJjZSBvZiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBtb3N0IGV4cGVkaWVudCBtZXRob2QgaXMgdG8gc2ltcGx5IGJlZ2luIHByb2Nlc3NpbmcgaXRzIGNvbnRlbnRzLiBXZSdsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0MS42Nzc4NTk0ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRtZW51Y29uZmlnIElQX1ZTXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXFxuICAxMTpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXFxuICAxMjpcXHRcXHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xcbiAgMTM6XFx0XFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXFxuICAxNDpcXHRcXHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXFxuICAxNzpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcXG4gIDE4OlxcdFxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcbiAgMTk6XFx0XFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXFxuICAyMDpcXHRcXHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcXG4gIDIxOlxcdFxcdCAgaW5mb3JtYXRpb24gYW5kIGl0cyBhZG1pbmlzdHJhdGlvbiBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgdGhlXFxuICAyMjpcXHRcXHQgIGZvbGxvd2luZyBVUkw6IFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4dmlydHVhbHNlcnZlci5vcmcvXFx1MDAzZS5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAgMjU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNjpcXHRcXG4gIDI3OlxcdGlmIElQX1ZTXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZ1xcdElQX1ZTX0lQVjZcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIklQdjYgc3VwcG9ydCBmb3IgSVBWU1xcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gSVBWNiA9IHkgfHwgSVBfVlMgPSBJUFY2XFxuICAzMjpcXHRcXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkIElQdjYgc3VwcG9ydCB0byBJUFZTLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIFNheSBZIGlmIHVuc3VyZS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnXFx0SVBfVlNfREVCVUdcXG4gIDM5OlxcdFxcdGJvb2wgXFxcIklQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1xcXCJcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBnZXQgYWRkaXRpb25hbCBtZXNzYWdlcyB1c2VmdWwgaW5cXG4gIDQyOlxcdFxcdCAgZGVidWdnaW5nIHRoZSBJUCB2aXJ0dWFsIHNlcnZlciBjb2RlLiBZb3UgY2FuIGNoYW5nZSB0aGUgZGVidWdcXG4gIDQzOlxcdFxcdCAgbGV2ZWwgaW4gL3Byb2Mvc3lzL25ldC9pcHY0L3ZzL2RlYnVnX2xldmVsXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZ1xcdElQX1ZTX1RBQl9CSVRTXFxuICA0NjpcXHRcXHRpbnQgXFxcIklQVlMgY29ubmVjdGlvbiB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbiAgNDc6XFx0XFx0cmFuZ2UgOCAyMCBpZiAhNjRCSVRcXG4gIDQ4OlxcdFxcdHJhbmdlIDggMjcgaWYgNjRCSVRcXG4gIDQ5OlxcdFxcdGRlZmF1bHQgMTJcXG4gIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgVGhlIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHVzZXMgdGhlIGNoYWluaW5nIHNjaGVtZSB0byBoYW5kbGVcXG4gIDUyOlxcdFxcdCAgaGFzaCBjb2xsaXNpb25zLiBVc2luZyBhIGJpZyBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB3aWxsIGdyZWF0bHlcXG4gIDUzOlxcdFxcdCAgcmVkdWNlIGNvbmZsaWN0cyB3aGVuIHRoZXJlIGFyZSBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgY29ubmVjdGlvbnNcXG4gIDU0OlxcdFxcdCAgaW4gdGhlIGhhc2ggdGFibGUuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgTm90ZSB0aGUgdGFibGUgc2l6ZSBtdXN0IGJlIHBvd2VyIG9mIDIuIFRoZSB0YWJsZSBzaXplIHdpbGwgYmUgdGhlXFxuICA1NzpcXHRcXHQgIHZhbHVlIG9mIDIgdG8gdGhlIHlvdXIgaW5wdXQgbnVtYmVyIHBvd2VyLiBUaGUgbnVtYmVyIHRvIGNob29zZSBpc1xcbiAgNTg6XFx0XFx0ICBmcm9tIDggdG8gMjcgZm9yIDY0QklUKDIwIG90aGVyd2lzZSksIHRoZSBkZWZhdWx0IG51bWJlciBpcyAxMixcXG4gIDU5OlxcdFxcdCAgd2hpY2ggbWVhbnMgdGhlIHRhYmxlIHNpemUgaXMgNDA5Ni4gRG9uJ3QgaW5wdXQgdGhlIG51bWJlciB0b29cXG4gIDYwOlxcdFxcdCAgc21hbGwsIG90aGVyd2lzZSB5b3Ugd2lsbCBsb3NlIHBlcmZvcm1hbmNlIG9uIGl0LiBZb3UgY2FuIGFkYXB0IHRoZVxcbiAgNjE6XFx0XFx0ICB0YWJsZSBzaXplIHlvdXJzZWxmLCBhY2NvcmRpbmcgdG8geW91ciB2aXJ0dWFsIHNlcnZlciBhcHBsaWNhdGlvbi5cXG4gIDYyOlxcdFxcdCAgSXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgbm90IGZhciBsZXNzIHRoYW4gdGhlIG51bWJlciBvZlxcbiAgNjM6XFx0XFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kIG11bHRpcGx5aW5nIGF2ZXJhZ2UgbGFzdGluZyB0aW1lIG9mXFxuICA2NDpcXHRcXHQgIGNvbm5lY3Rpb24gaW4gdGhlIHRhYmxlLiAgRm9yIGV4YW1wbGUsIHlvdXIgdmlydHVhbCBzZXJ2ZXIgZ2V0cyAyMDBcXG4gIDY1OlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCwgdGhlIGNvbm5lY3Rpb24gbGFzdHMgZm9yIDIwMCBzZWNvbmRzIGluXFxuICA2NjpcXHRcXHQgIGF2ZXJhZ2UgaW4gdGhlIGNvbm5lY3Rpb24gdGFibGUsIHRoZSB0YWJsZSBzaXplIHNob3VsZCBiZSBub3QgZmFyXFxuICA2NzpcXHRcXHQgIGxlc3MgdGhhbiAyMDB4MjAwLCBpdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSAzMjc2OCAoMioqMTUpLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIEFub3RoZXIgbm90ZSB0aGF0IGVhY2ggY29ubmVjdGlvbiBvY2N1cGllcyAxMjggYnl0ZXMgZWZmZWN0aXZlbHkgYW5kXFxuICA3MDpcXHRcXHQgIGVhY2ggaGFzaCBlbnRyeSB1c2VzIDggYnl0ZXMsIHNvIHlvdSBjYW4gZXN0aW1hdGUgaG93IG11Y2ggbWVtb3J5IGlzXFxuICA3MTpcXHRcXHQgIG5lZWRlZCBmb3IgeW91ciBib3guXFxuICA3MjpcXHRcXG4gIDczOlxcdFxcdCAgWW91IGNhbiBvdmVyd3JpdGUgdGhpcyBudW1iZXIgc2V0dGluZyBjb25uX3RhYl9iaXRzIG1vZHVsZSBwYXJhbWV0ZXJcXG4gIDc0OlxcdFxcdCAgb3IgYnkgYXBwZW5kaW5nIGlwX3ZzLmNvbm5fdGFiX2JpdHM9PyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpZlxcbiAgNzU6XFx0XFx0ICBJUCBWUyB3YXMgY29tcGlsZWQgYnVpbHQtaW4uXFxuICA3NjpcXHRcXG4gIDc3OlxcdGNvbW1lbnQgXFxcIklQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbiAgODA6XFx0XFx0Ym9vbCBcXFwiVENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXHRoZWxwXFxuICA4MjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVENQIHRyYW5zcG9ydFxcbiAgODM6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgODQ6XFx0XFxuICA4NTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19VRFBcXG4gIDg2OlxcdFxcdGJvb2wgXFxcIlVEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODc6XFx0XFx0aGVscFxcbiAgODg6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFVEUCB0cmFuc3BvcnRcXG4gIDg5OlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDkwOlxcdFxcbiAgOTE6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fQUhfRVNQXFxuICA5MjpcXHRcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG4gIDkzOlxcdFxcbiAgOTQ6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fRVNQXFxuICA5NTpcXHRcXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDk2OlxcdFxcdGhlbHBcXG4gIDk3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBFU1AgKEVuY2Fwc3VsYXRpb25cXG4gIDk4OlxcdFxcdCAgU2VjdXJpdHkgUGF5bG9hZCkgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjQxLjY3Nzk2NDc0OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzgwOTE5ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIExldCdzIGdldCB0byBpdC4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIEluOiBQcm9jZXNzaW5nIHRoZSBJbmZvcm1hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgdGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYWx3YXlzIGEgcXVpY2sgc2Nhbi4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGVsZW1lbnRzLCB0aGUgY2VudHJhbCB0aGVtZXMsIGFuZCBhbnkgaW1tZWRpYXRlIGluZGljYXRvcnMgb2Ygd2hhdCBtYWtlcyB0aGlzIGluZm9ybWF0aW9uIHVuaXF1ZSBvciBpbnRlcmVzdGluZy4gVGhpcyBmaXJzdCBwYXNzIGlzIHJlYWxseSBhYm91dCBnZXR0aW5nIG15IGJlYXJpbmdzLCBmaWd1cmluZyBvdXQgdGhlIGxhbmRzY2FwZSBJJ20gYWJvdXQgdG8gdHJhdmVyc2UuIFdoYXQncyB0aGUgZ2VucmU/IFdoYXQncyB0aGUgY29udGV4dD8gV2hhdCdzIHRoZSBvdmVyYWxsIGRpcmVjdGlvbj8gRnJvbSB0aGVyZSwgSSdsbCBpZGVudGlmeSB0aGUga2V5IGNvbmNlcHRzIGFuZCBzdGFydCBkcmF3aW5nIGNvbm5lY3Rpb25zIGJldHdlZW4gdGhlbS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBtb3N0IGltcG9ydGFudCwgYW5kIHdoYXQgaXMgbWVyZWx5IHN1cHBvcnRpbmcgZXZpZGVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTE1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjQ0LjQ1ODg4NzY2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdGJvb2wgXFxcIkFIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXFxuIDEwNDpcXHRcXHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbiAxMDc6XFx0XFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gMTA5OlxcdFxcdGhlbHBcXG4gMTEwOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxcbiAxMTE6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAxMTI6XFx0XFxuIDExMzpcXHRjb21tZW50IFxcXCJJUFZTIHNjaGVkdWxlclxcXCJcXG4gMTE0OlxcdFxcbiAxMTU6XFx0Y29uZmlnXFx0SVBfVlNfUlJcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXFxcIlxcbiAxMTc6XFx0XFx0aGVscFxcbiAxMTg6XFx0XFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xcbiAxMTk6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEyMjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTIzOlxcdCBcXG4gMTI0OlxcdGNvbmZpZ1xcdElQX1ZTX1dSUlxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDEyNjpcXHRcXHRoZWxwXFxuIDEyNzpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTI4OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xcbiAxMjk6XFx0XFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcXG4gMTMwOlxcdFxcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXFxuIDEzMTpcXHRcXHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcXG4gMTMyOlxcdFxcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEzNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnXFx0SVBfVlNfTENcXG4gMTM4OlxcdFxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNDE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXFxuIDE0MjpcXHRcXHQgIGNvbm5lY3Rpb25zLlxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE0NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ2OlxcdFxcbiAxNDc6XFx0Y29uZmlnXFx0SVBfVlNfV0xDXFxuIDE0ODpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxNDk6XFx0XFx0aGVscFxcbiAxNTA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTUxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcXG4gMTUyOlxcdFxcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxNTU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyAgSVBfVlNfRk9cXG4gMTU4OlxcdFxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbiAxNTk6XFx0XFx0aGVscFxcbiAxNjA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE2MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNjI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE2NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnICBJUF9WU19PVkZcXG4gMTY4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXFxcIlxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE3MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNzI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcXG4gMTczOlxcdFxcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJ3Mgd2VpZ2h0LlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE3NjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbiAxNzk6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gaXMgZm9yXFxuIDE4MjpcXHRcXHQgIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyB1c3VhbGx5IHVzZWQgaW4gY2FjaGUgY2x1c3Rlci5cXG4gMTgzOlxcdFxcdCAgVGhpcyBhbGdvcml0aG0gdXN1YWxseSBkaXJlY3RzIHBhY2tldCBkZXN0aW5lZCBmb3IgYW4gSVAgYWRkcmVzcyB0b1xcbiAxODQ6XFx0XFx0ICBpdHMgc2VydmVyIGlmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUgYW5kIHVuZGVyIGxvYWQuIElmIHRoZSBzZXJ2ZXIgaXNcXG4gMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0NC40NTg5ODc4MjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMzkwNjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgU2NvcGUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBmZXcga2V5IGFyZWFzIHdpdGhpbiB0aGUgSVBWUyBjb2RlLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGlwX3ZzX2RoLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19wcm90b19zY3RwLmNgLCBhbmQgYGlwX3ZzX3Byb3RvX3RjcC5jYC4gVGhhdCBnaXZlcyBtZSBhIHByZXR0eSBnb29kIGlkZWEgb2Ygd2hhdCdzIGludm9sdmVkLlxuXG5HaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCBgSVBfVlNgIGZvciB0aGUgY29yZSBJUFZTIGZ1bmN0aW9uYWxpdHksIG5hdHVyYWxseS4gSSBzZWUgaXQgdG91Y2hlcyBib3RoIGBUQ1BgIGFuZCBgU0NUUGAsIHNvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fU0NUUGAgYXJlIGRlZmluaXRlbHkgcmVxdWlyZWQuIEZ1cnRoZXIsIGl0IGludGVyYWN0cyB3aXRoIHRoZSBkaWZmZXJlbnQgbG9hZC1iYWxhbmNpbmcgbWV0aG9kcywgaW1wbHlpbmcgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgIGFuZCBgSVBfVlNfTENgIHdpbGwgYmUgbmVlZGVkLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcuIExldCdzIHNlZSBpZiBgSVBfVlNfREhgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyYWJsZS4gSSBzaG91bGQgY29uZmlybSBpdHMgZXhpc3RlbmNlIGFuZCBkZWZhdWx0IHNldHRpbmdzIHNvIEkgY2FuIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgZHVyaW5nIHRoZSBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo0OC41NzI4OTY4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNzkzMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU19ESFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTE6NDguNjE1MTg0ODQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTgzMjI1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3NzaWJsZSBDb25uZWN0aW9uKipcblxuT2theSwgc28gdGhlIHByb21wdCBtZW50aW9ucyBcIkRILlwiIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gc29tZXRoaW5nIHdpdGhpbiB0aGUgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGNvbnRleHQuIEl0J3MgYSBrZXkgcGFydCBvZiBsb2FkIGJhbGFuY2luZyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc28gaXQncyBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gTGV0J3Mgc2VlLi4uIHdoYXQgZmlsZSB3b3VsZCBob2xkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQ/IEFoLCB5ZXMsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2Ag4oCTIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgc3BlY2lmaWMgZGlyZWN0b3J5IGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBkZWZpbml0aW9ucyBhbmQgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgSVBWUyBtb2R1bGUuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaW4gYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGVyZSBhYm91dCBcIkRIXCIuIFBlcmhhcHMgaXQgc3RhbmRzIGZvciBzb21ldGhpbmcgbGlrZSBcIkRpcmVjdCBIYW5kbGluZ1wiIG9yIFwiRHluYW1pYyBIYXNoXCIsIG9yIGV2ZW4gc29tZXRoaW5nIGVudGlyZWx5IGRpZmZlcmVudC4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzc2NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjExOjUyLjMzMzUxMDM3MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MDI2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTkyPWNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTE6NTIuMzc3MzE2NDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk2Mjc4ODM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2ggZm9yIERlc3RpbmF0aW9uIE92ZXJsb2FkIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gYElQX1ZTX0RIYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIGluIHRoZSBwYXRjaCB0byBnZXQgYSBmZWVsIGZvciB0aGUgc2NvcGUuIExvb2tzIGxpa2Ugd2UgaGF2ZSBhIG5ldyBmdW5jdGlvbiwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBmb2N1cywgYW5kIGl0J3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgb3RoZXIgYXJlYXM6IGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCB0aGluZ3MgcmVsYXRlZCB0byBjb25uZWN0aW9uIG1hbmFnZW1lbnQgKGBpcF92c19jaGVja190ZW1wbGF0ZWAsIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgLCBzdGF0cyAoYGlwX3ZzX2luX3N0YXRzYCwgYGlwX3ZzX291dF9zdGF0c2ApLCBob29rcywgZGVzdCBtYW5hZ2VtZW50LCBhbmQgc2NoZWR1bGluZy4gSXQgYWxzbyBsb29rcyBsaWtlIGEgbG90IG9mIHRoZSBkZXN0aW5hdGlvbiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgdXBkYXRlZC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtleSBhcmVhcy4gSSdsbCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYGlwX3ZzX2VkaXRfZGVzdGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBhbmQgdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyAoYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBhbmQgYGlwX3ZzX2xjX3NjaGVkdWxlYCkuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IHBvaW50cyB3aGVyZSB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgbG9naWMgd2lsbCBiZSBtb3N0IGFwcGFyZW50LiBJIGFsc28gd2FudCB0byBjaGVjayB0aGUgbmF0dXJlIG9mIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCBmb3IgZGV0ZXJtaW5pbmcgd2hlcmUgdGhpcyBvdmVybG9hZCBoYW5kbGluZyBpcyBpbnNlcnRlZCBpbiB0aGUgZGVzdGluYXRpb24gZGF0YSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEyMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo1OS4zNDAxMDc1OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0NTc5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDQ9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM0NTpfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzQ2LVxcdFxcdCAgICBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0LCBpbnQgYWRkKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE0NDU9aXBfdnNfbmV3X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDk2LVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0OTc6XFx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ5OC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNTE0PWlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3NC1cXHRcXHRlbHNlXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1NzU6XFx0XFx0XFx0X19pcF92c191cGRhdGVfZGVzdChzdmMsIGRlc3QsIHVkZXN0LCAxKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTU3Ni1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE1OTE9aXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTYyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTYzMDpcXHRfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN2YywgZGVzdCwgdWRlc3QsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNjMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMTo1OS4zODM1NzM5NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTQxMTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkNvbnNpZGVyaW5nIERlc3RpbmF0aW9uIE1hbmFnZW1lbnQgaW4gdGhlIEtlcm5lbCdzIElQVlMgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG1vZHVsZS4gSSdtIHNlZWluZyB0aGF0IGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLiBUaGF0J3MgYSByZWQgZmxhZy4gVHlwaWNhbGx5LCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBtZWFudCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIGEgbW9kdWxlLiBJIG5lZWQgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoLCBzb21ldGhpbmcgdGhhdCBhbGxvd3MgZXh0ZXJuYWwgbWFuaXB1bGF0aW9uIG9mIHRoZXNlIGRlc3RpbmF0aW9uIGVudHJpZXMuXG5cblNvLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhpcyBpbnRlcm5hbCBmdW5jdGlvbiwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxldmVyYWdlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIHB1YmxpYyBmYWNpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGhhbmRsZSB0aGVzZSB0aGluZ3MgLSBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYW5kIGBpcF92c19uZXdfZGVzdGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29ycmVjdCB0b29scyBmb3IgdGhlIGpvYi4gVGhleSdyZSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZGVzdGluYXRpb24gb2JqZWN0cywgd2hpY2ggaXMgd2hhdCBJIG5lZWQuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGNhdWdodCBpbiBhbm90aGVyIHN0YXRpYyB0cmFwISBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGF0IG9uZSAqaXNuJ3QqIGFsc28gbGltaXRlZCB0byBpbnRlcm5hbCB1c2UuIFRpbWUgZm9yIGEgcXVpY2sgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTQ3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MDMuMTI4OTg5NzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODM3NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX25ld19kZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTQ0ND1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0NDU6aXBfdnNfbmV3X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQ0Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTUxND1pcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1NzktXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1ODA6XFx0XFx0cmV0ID0gaXBfdnNfbmV3X2Rlc3Qoc3ZjLCB1ZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE1ODEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjowMy4xNzI4MzIzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDUxMjY5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEZXN0aW5hdGlvbiBNYW5hZ2VtZW50IGluIElQVlMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgaXBfdnNfbmV3X2Rlc3RgIHZhcmlhYmxl4oCmIHRoYXQncyBhIHN0YXRpYyBlbnRpdHksIHJpZ2h0PyBHb3QgaXQuIFNvLCB0aGF0IGltcGxpZXMgdGhhdCBmdW5jdGlvbnMgbGlrZSBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YCBhcmUgcHJldHR5IHJvYnVzdCBpbiB0aGVpciBoYW5kbGluZyBvZiB0aGlzIHN0YXRpYyBlbGVtZW50LiBUaGV5J3JlIGxpa2VseSBkZXNpZ25lZCB0byBpbnRlZ3JhdGUgc21vb3RobHkgZ2l2ZW4gdGhhdCBjb25zdHJhaW50LiBOb3csIHRoYXQgYnJpbmdzIG1lIHRvIHNvbWV0aGluZyBlbHNlIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBtb3JlIGRldGFpbDogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGl0cyBtZWNoYW5pY3MgcmVtYWluIHNvdW5kIGdpdmVuIHRoaXMgZnVuZGFtZW50YWwgc3RhdGljIG5hdHVyZSBvZiBgaXBfdnNfbmV3X2Rlc3RgLiBMZXQncyBzZWUgaG93IHRoYXQgZml0cyBpbnRvIHRoZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjA2Ljk3Nzk2MTY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg5OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEyOTk9dm9pZCBpcF92c19zdGF0c19mcmVlKHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTMxMjpzdGF0aWMgdm9pZCBfX2lwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMxMy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzMy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTMzNDp2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCBpbnQgbW9kZSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzNS17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzMzYtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzMzc6XFx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCBtb2RlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTMzOC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzNDU9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNDE2LVxcdFxcdFxcdCAgICAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2VcXHUwMDNlIDIpKSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE0MTc6XFx0XFx0X19pcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTQxOC1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjowNy4wMTk4NjQ4NjlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4Njc3Mjc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIER5bmFtaWMgT3ZlcmxvYWQgaW4gSVBWUyBEZXN0aW5hdGlvbiBVcGRhdGVzKipcblxuUmlnaHQsIHNvIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgaXNuJ3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGxpbmtlZCB0byBzb21ldGhpbmcgZHluYW1pYyB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgbG9hZCBiYWxhbmNpbmcgcHJvY2Vzcy4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0IGlzbid0IGFuIGlzc3VlIGluIHRoZSBjb2RlIGl0c2VsZi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgYXJlYXMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGRlc3RpbmF0aW9uIHN0YXRlIGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGNvbmRpdGlvbi4gTGV0IG1lIGludmVzdGlnYXRlIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIGZpcnN0LiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBkZXN0aW5hdGlvbiBlbnRyaWVzLCBhbmQgYXJlIG9idmlvdXMgcG9pbnRzIG9mIGludGVyYWN0aW9uLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCwgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLCBhbmQgaW4gd2hhdCBvcmRlciB3aWxsIHJldmVhbCB0aGUgY2F1c2UuIEtub3dpbmcgdGhpcywgSSBjYW4gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoxMC43MDY2NDQxOTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzk3NTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OD1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODk6aXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDkwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTk1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE5NjpcXHRcXHRpcF92c19iaW5kX2Rlc3QoY3AsIGRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTE5Ny1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xNDQ0PWlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTUyNC1cXHRjcC1cXHUwMDNlZGVzdCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxNTI1OlxcdGlwX3ZzX2JpbmRfZGVzdChjcCwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xNTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoxMC43NDk0NTA2NloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgzNzA5MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgdGhlIEJpbmRpbmcgU3RyYXRlZ3kgaW4gdGhlIElQVlMgS2VybmVsIE1vZHVsZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGlwX3ZzX2JpbmRfZGVzdGAgZnVuY3Rpb24sIGFuZCBpdCdzIGRlZmluZWQgYXMgYHN0YXRpYyBpbmxpbmVgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbWVhbnMgdGhlIGNvbXBpbGVyIGlzIGxpa2VseSB0byBleHBhbmQgdGhlIGNvZGUgb2YgYGlwX3ZzX2JpbmRfZGVzdGAgZGlyZWN0bHkgYXQgdGhlIHBvaW50IHdoZXJlIGl0J3MgY2FsbGVkLiBUaGlzIGNhbiBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBieSBhdm9pZGluZyBhIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGVzc2VudGlhbGx5IGlubGluaW5nIHRoZSBsb2dpYyBkaXJlY3RseSBpbnRvIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucy4gSXQncyBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwsIHByb2JhYmx5IHNtYWxsLCBhbmQgbGlrZWx5IGNhbGxlZCB2ZXJ5IGZyZXF1ZW50bHkgd2l0aGluIHRoZSBJUFZTIGludGVybmFscy4gVGhlIGNob2ljZSBvZiBgc3RhdGljYCBhbHNvIGltcGxpZXMgdGhlIGZ1bmN0aW9uJ3Mgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCwgaW4gdGhpcyBjb250ZXh0LCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBwcmV2ZW50aW5nIG5hbWUgY29sbGlzaW9ucyBpbiBsYXJnZXIgY29kZWJhc2VzLlxuXG5UaGVuIEknbSBjb250cmFzdGluZyB0aGF0IHdpdGggYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfY29ubl9uZXdgLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBgc3RhdGljIGlubGluZWAuIFRoYXQncyBhIGRpZmZlcmVudCBkZXNpZ24gZGVjaXNpb24uIFRoZXkgYXJlIGxpa2VseSBtb3JlIGNvbXBsZXgsIHBvc3NpYmx5IGludm9sdmluZyBtb3JlIGV4dGVybmFsIGNhbGxzIG9yIG1vcmUgc3Vic3RhbnRpYWwgb3BlcmF0aW9ucy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IGV4cGVjdGVkIHRvIGhhbmRsZSB0aGVtIGFzIHN0YW5kYXJkIGZ1bmN0aW9ucyB3aXRoIHN0YW5kYXJkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0J3MgYSBjbHVlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBmb3IgbW9yZSBpbnRyaWNhdGUgdGFza3MgYW5kIGFyZW4ndCBhcyBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXQgdGhhdCBmdW5kYW1lbnRhbCwgbWljcm8tb3B0aW1pemF0aW9uIGxldmVsLiBUaGV5J3JlIHByb2JhYmx5IG1vcmUgYWJvdXQgbWFuYWdpbmcgY29ubmVjdGlvbnMgYW5kIHRyeWluZyB0byBmaW5kIHRoZSBiZXN0IGRlc3RpbmF0aW9uLCByYXRoZXIgdGhhbiBhIHNpbmdsZSwgdWx0cmEtb3B0aW1pemVkIGJpbmRpbmcgbG9va3VwLCB3aGVyZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwgKndvdWxkKiBtYXR0ZXIuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZGVzaWduZXJzIG9mIElQVlMgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIG9wdGltaXphdGlvbiBpcyBjcml0aWNhbCBhbmQgd2hlcmUgaXQncyBsZXNzIHNvLCBhbmQgdGhleSBhcmUgbGV2ZXJhZ2luZyB0aGUgaW5saW5lIGtleXdvcmQgdG8gdGhlIGJlc3QgZWZmZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjE0LjkzMzE2MjM4NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNjg3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTExNjc9dm9pZCBpcF92c190cnlfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIxOS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMjA6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMjEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMzQ3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzkzLVxcdFxcdFxcdGlwX3ZzX3VuYmluZF9hcHAoY3ApO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTM5NDpcXHRcXHRpcF92c191bmJpbmRfZGVzdChjcCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMzk1LVxcdFxcdGlmICh1bmxpa2VseShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjE0Ljk3NzQzOTA4M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE3NjMxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBsb2dpYywgYXMgdGhvdWdoIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmb3IgYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludGVybmFsIENvbm5lY3Rpb24gTWFuYWdlbWVudCBpbiBJUFZTKipcblxuQWxyaWdodCwgSSBzZWUgdGhlIGRpcmVjdGlvbiBoZXJlLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIGludGVybmFsIHdvcmtpbmdzIG9mIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBTaW5jZSBgaXBfdnNfdW5iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfY29ubl9leHBpcmVgIGFyZSBkZWNsYXJlZCBzdGF0aWMgYW5kIHRoZXJlZm9yZSBpbnRlcm5hbCB0byB0aGVpciByZXNwZWN0aXZlIG1vZHVsZXMsIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGUgcHVibGljLWZhY2luZyBhbmQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCBvdXRjb21lLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGlwX3ZzX2Nvbm5fbmV3YCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgIGFzIHRoZSBwb2ludHMgb2YgaW50ZXJlc3QuIFRoYXQgbWFrZXMgc2Vuc2U7IGBpcF92c19jb25uX25ld2Agd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiwgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCB3b3VsZCBiZSByZXNwb25zaWJsZSBmb3IgYXR0ZW1wdGluZyB0aGUgZGVzdGluYXRpb24gYmluZGluZy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGlmZmVyZW50IHNjaGVkdWxlciBtZXRob2RzIGNvbWUgaW50byBwbGF5IGluIHRoaXMgbmV3IGNvbm5lY3Rpb24gc2V0dXAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGVhY2ggc2NoZWR1bGVyIGhhbmRsZXMgaXRzIG93biBpbnRlcm5hbCBsb2dpYyB0byBkZWFsIHdpdGggdGhpcyBjb25uZWN0aW9uIGNyZWF0aW9uLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgaG93IGBpcF92c19kaF9zY2hlZHVsZWAsIGBpcF92c19sYmxjX3NjaGVkdWxlYCwgYW5kIGBpcF92c19sY19zY2hlZHVsZWAgaW50ZXJhY3Qgd2l0aCB0aGlzIHdob2xlIHByb2Nlc3MuIEdldHRpbmcgYSBoYW5kbGUgb24gaG93IHRoZXNlIHNjaGVkdWxlcyBhcmUgc2V0IHVwIHdpbGwgY2xhcmlmeSB0aGUgZXhhY3QgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBpcF92c19jb25uX25ld2AgYW5kIGBpcF92c190cnlfYmluZF9kZXN0YCBzdGVwcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICp3aGVuKiBhbmQgKmhvdyogdGhlIHNjaGVkdWxlcidzIGxvZ2ljIGdldHMgaW50ZXJ3b3ZlbiBpbnRvIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzc0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MTkuMTk1MDcyNDM3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzMDI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yMTE9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyMTI6aXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yMTMtXFx0XFx0ICBzdHJ1Y3QgaXBfdnNfaXBoZHIgKmlwaClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0MS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDI6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfZGhfc2NoZWR1bGVyID1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQ2LVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0NzpcXHQubl9saXN0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19kaF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDgtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfZGhfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTEtXFx0LmRlbF9kZXN0ID1cXHRcXHRpcF92c19kaF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjUyOlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfZGhfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUzLX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNTY9c3RhdGljIGludCBfX2luaXQgaXBfdnNfZGhfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1Ny17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjU4OlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX2RoX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU5LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTI2Mj1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfZGhfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2My17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjY0OlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2NS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MTkuMjQyNDExMTg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODM1NzQzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBJUFZTIERlc3RpbmF0aW9uIEhhbmRsaW5nKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGVzZSBJUFZTIGZ1bmN0aW9ucyB3b3JrIHVuZGVyIHRoZSBob29kLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gd2FzIHRoYXQgSSBjb3VsZCB0cmVhdCBgaXBfdnNfYWRkX2Rlc3RgLCBgaXBfdnNfZWRpdF9kZXN0YCwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYW5kIGBpcF92c19jb25uX25ld2AgYXMgYSBzdGF0aWMgc2V0IG9mIGZ1bmN0aW9ucyB0byBjb25zaWRlci4gSSBtZWFuLCB0aGV5IHNlZW0gZnVuZGFtZW50YWwgdG8gZGVzdGluYXRpb24gbWFuYWdlbWVudCBhbmQgY29ubmVjdGlvbiBoYW5kbGluZywgc28gaXQgc2VlbWVkIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgaXBfdnNfYWRkX2Rlc3RgIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC4uLiBhcmUgdGhleSAqdHJ1bHkqIHN0YXRpYyBpbiB0aGVpciBiZWhhdmlvcj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVyZSdzIG9mdGVuIG1vcmUgY29tcGxleGl0eSB0aGFuIG1lZXRzIHRoZSBleWUuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBhc3N1bXB0aW9uOyBpdCdzIGFsd2F5cyBhIG1pc3Rha2UgdG8gbWFrZSB0aG9zZSBraW5kcyBvZiBhc3N1bXB0aW9ucyB3aXRob3V0IGRpZ2dpbmcgZGVlcGVyLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgZHluYW1pYyBiZWhhdmlvciBvciBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiB0aGV5IG9wZXJhdGUgdGhlIHNhbWUgd2F5IGluIGFsbCBjaXJjdW1zdGFuY2VzIG9yIGlmIHRoZWlyIGJlaGF2aW9yIGNoYW5nZXMgYmFzZWQgb24gY29udGV4dCBvciBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyMy4xMjU5ODkyMjVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDUxNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2FkZF9kZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTUxMz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE1MTQ6aXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTUxNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MzQ3Mj1kb19pcF92c19zZXRfY3RsKHN0cnVjdCBzb2NrICpzaywgaW50IGNtZCwgc29ja3B0cl90IHB0ciwgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNjAxLVxcdGNhc2UgSVBfVlNfU09fU0VUX0FERERFU1Q6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjM2MDI6XFx0XFx0cmV0ID0gaXBfdnNfYWRkX2Rlc3Qoc3ZjLCBcXHUwMDI2dWRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNjAzLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ2ODU9c3RhdGljIGludCBpcF92c19nZW5sX3NldF9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Nzk1LVxcdGNhc2UgSVBWU19DTURfTkVXX0RFU1Q6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjQ3OTY6XFx0XFx0cmV0ID0gaXBfdnNfYWRkX2Rlc3Qoc3ZjLCBcXHUwMDI2dWRlc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Nzk3LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyMy4xNjk0NjAxMDRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MzIyMjg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqU3RhdGljIEZ1bmN0aW9uIERlZXAgRGl2ZSoqXG5cbkhtbSwgYGlwX3ZzX2FkZF9kZXN0YC4uLiB0aGF0J3Mgc3RhdGljLiBSaWdodC4gTWFrZXMgc2Vuc2UgaW4gaXRzIGNvbnRleHQuIEJ1dCwgd2hlbmV2ZXIgSSBzZWUgYSBzdGF0aWMgZnVuY3Rpb24sIG15IG1pbmQgYXV0b21hdGljYWxseSBzdGFydHMgdHJhY2luZyBpdHMgdXNhZ2UuIExldCdzIHNlZSwgd2hlcmUgZWxzZSBpcyB0aGlzIGxpa2VseSB0byBiZSB1c2VkPyBJdCdzIHRpbWUgdG8gY2hlY2sgYGRvX2lwX3ZzX3NldF9jdGxgIGFuZCBgaXBfdnNfZ2VubF9zZXRfY21kYC4gSSdtIHdpbGxpbmcgdG8gYmV0IHRoZXkncmUgc3RhdGljIGFzIHdlbGwsIGNvbnNpZGVyaW5nIHRoZSB3YXkgdGhlIElQVlMgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQuIEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoZSBsYXJnZXIgc3lzdGVtLiBBbmFseXppbmcgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBpcyBlc3NlbnRpYWwgdG8gZ3Jhc3AgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoaXMgbW9kdWxlIGFuZCBkZXRlcm1pbmUgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI4NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjI2LjQ1MjY4NTk2MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNTE5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9faXBfdnNfc2V0X2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTM0NzE9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozNDcyOmRvX2lwX3ZzX3NldF9jdGwoc3RydWN0IHNvY2sgKnNrLCBpbnQgY21kLCBzb2NrcHRyX3QgcHRyLCB1bnNpZ25lZCBpbnQgbGVuKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0zNDczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0zOTUxPXN0YXRpYyBzdHJ1Y3QgbmZfc29ja29wdF9vcHMgaXBfdnNfc29ja29wdHMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMzk1NC1cXHQuc2V0X29wdG1heFxcdD0gSVBfVlNfU09fU0VUX01BWCsxLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzozOTU1OlxcdC5zZXRcXHRcXHQ9IGRvX2lwX3ZzX3NldF9jdGwsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTM5NTYtXFx0LmdldF9vcHRtaW5cXHQ9IElQX1ZTX0JBU0VfQ1RMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjoyNi40OTU5NDIwMzJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4OTgzNjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBOb24tU3RhdGljIEZ1bmN0aW9uIFVzYWdlKipcblxuT2theSwgSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgY29kZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgYXJlIGJlaW5nIHVzZWQuIFNvLCBJJ20gZ29pbmcgdGhyb3VnaCB0aGUgbGlzdC4gTGV0J3Mgc3RhcnQgd2l0aCBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBOb24tc3RhdGljLCBnb29kLiBOZXh0LCBsZXQncyBsb29rIGF0IGBpcF92c19jb25uX25ld2Ag4oCTIHRoYXQncyBub24tc3RhdGljIGFzIHdlbGwuIEFscmlnaHQsIG1vdmluZyBvbiB0byBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAsIGFsc28gbm9uLXN0YXRpYy4gTGV0J3Mga2VlcCBnb2luZzogYGlwX3ZzX2luX3N0YXRzYCBpcyBhbm90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFNhbWUgZ29lcyBmb3IgYGlwX3ZzX291dF9zdGF0c2AuIEZpbmFsbHksIGxldCdzIHRha2UgYSBsb29rIGF0IGBpcF92c19pbl9ob29rYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzAuNjg1NzgxNjA2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA0MzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19pbl9ob29rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDg3PXN0YXRpYyB1bnNpZ25lZCBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIwODg6aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDg5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjMxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczRbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyNy1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzI4OlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMyOS1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0MS1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzQyOlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM0My1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjM2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2hvb2tfb3BzIGlwX3ZzX29wczZbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3Ni1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzc3OlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM3OC1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5MC1cXHR7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzkxOlxcdFxcdC5ob29rXFx0XFx0PSBpcF92c19pbl9ob29rLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM5Mi1cXHRcXHQucGZcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzAuNzMzODI5NDk1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTE5NDM5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJ20gdGhpbmtpbmcgdGhlc2UgdGhpbmdzIG15c2VsZjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE9ic2VydmluZyBTdGFzaXMgaW4gdGhlIFN5c3RlbSoqXG5cblJpZ2h0LCB0aGlzIGZlZWxzLi4uc3RhdGljLiBTb21ldGhpbmcncyBub3QgZmxvd2luZyB0aGUgd2F5IEkgZXhwZWN0LCBvciBzb21ldGhpbmcgaGFzIHN0YWxsZWQgZW50aXJlbHkuIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgVmlydHVhbCBTZXJ2ZXIncyBiZWhhdmlvciwgcG9zc2libHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuXG5TbywgbGV0J3MgZ2V0IHJpZ2h0IHRvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGlucHV0IGFuZCBvdXRwdXQgY291bnRlcnMuIEknbSBmb2N1c2luZyBvbiB0aGUgaGVhcnQgb2YgdGhlIGxvYWQtYmFsYW5jaW5nIG1lY2hhbmlzbXM6IEkgbmVlZCBhIHF1aWNrIGxvb2sgYXQgYGlwX3ZzX2luYCBhbmQgYGlwX3ZzX291dGAgdG8gc2VlIGlmIHRyYWZmaWMgaXMgZXZlbiBoaXR0aW5nIHRoZSB2aXJ0dWFsIHNlcnZlciwgb3IgaWYgdHJhZmZpYyBpcyBsZWF2aW5nIHRoZSB2aXJ0dWFsIHNlcnZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0b3IuIFRoZXkncmUgbXkgZ28tdG8gZGlhZ25vc3RpYyBwb2ludCBmb3IgdGhpcyBraW5kIG9mIHNpdHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjozMy44ODU3NzYyNjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzQ1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz04OT1jb25zdCBjaGFyICppcF92c19wcm90b19uYW1lKHVuc2lnbmVkIGludCBwcm90bylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTEzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTE0OnZvaWQgaXBfdnNfaW5pdF9oYXNoX3RhYmxlKHN0cnVjdCBsaXN0X2hlYWQgKnRhYmxlLCBpbnQgcm93cylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTExNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI5OT1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjMwMDppcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0zMDEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz03NDg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfYWRkcl9pc191bmljYXN0KHN0cnVjdCBuZXQgKm5ldCwgaW50IGFmLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NTktICogIFBhc3Mgb3IgZHJvcCB0aGUgcGFja2V0Llxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NzYwOiAqICBDYWxsZWQgYnkgaXBfdnNfaW4sIHdoZW4gdGhlIHZpcnR1YWwgc2VydmljZSBpcyBhdmFpbGFibGUgYnV0XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03NjEtICogIG5vIGRlc3RpbmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgY29ubmVjdGlvbi5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDItXFx0XFx0Lyogc3RhdGlzdGljcyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6ODAzOlxcdFxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODA0LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNjQxPWlwX3ZzX3RyeV90b19zY2hlZHVsZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNjYwLVxcdFxcdElQX1ZTX0RCR19QS1QoMTIsIGFmLCBwcCwgc2tiLCBpcGgtXFx1MDAzZW9mZixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE2NjE6XFx0XFx0XFx0ICAgICAgXFxcImlwX3ZzX2luOiBwYWNrZXQgY29udGludWVzIHRyYXZlcnNhbCBhcyBub3JtYWxcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE2NjItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTI9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1MzppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU0LVxcdCAgICAgIHVuc2lnbmVkIGludCBob29rbnVtLCBzdHJ1Y3QgaXBfdnNfaXBoZHIgKmlwaClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cXHQvKiBkbyB0aGUgc3RhdGlzdGljcyBhbmQgcHV0IGl0IGJhY2sgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTcwLVxcdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cXHUwMDNlbGVuLCBob29rbnVtLCBcXHUwMDI2Y2lwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODEtI2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTgyOnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTE5ODMtXFx0XFx0XFx0ICAgIGludCAqcmVsYXRlZCwgdW5zaWduZWQgaW50IGhvb2tudW0sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjctXFx0LyogZG8gdGhlIHN0YXRpc3RpY3MgYW5kIHB1dCBpdCBiYWNrICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDY4OlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA2OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjA4Nz1zdGF0aWMgdW5zaWduZWQgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMDg4OmlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjA4OS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxMzctXFx0XFx0XFx0aW50IHJlbGF0ZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTM4OlxcdFxcdFxcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFxcdTAwMjZyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjEzOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaG9va251bSwgXFx1MDAyNmlwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDctXFx0XFx0XFx0aW50IHJlbGF0ZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ4OlxcdFxcdFxcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFxcdTAwMjZyZWxhdGVkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjE0OS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaG9va251bSwgXFx1MDAyNmlwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjQzOlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cXHRpcF92c19zZXRfc3RhdGUoY3AsIElQX1ZTX0RJUl9JTlBVVCwgc2tiLCBwZCwgaXBoLmxlbik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODAtICogICAgICBXaGVuIGZ3bWFyay1iYXNlZCB2aXJ0dWFsIHNlcnZpY2UgaXMgdXNlZCwgc3VjaCBhcyB0cmFuc3BhcmVudFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjI4MTogKiAgICAgIGNhY2hlIGNsdXN0ZXIsIFRDUCBwYWNrZXRzIGNhbiBiZSBtYXJrZWQgYW5kIHJvdXRlZCB0byBpcF92c19pbixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODItICogICAgICBidXQgSUNNUCBkZXN0aW5lZCBmb3IgMC4wLjAuMC8wIGNhbm5vdCBub3QgYmUgZWFzaWx5IG1hcmtlZCBhbmRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODM6ICogICAgICBzZW50IHRvIGlwX3ZzX2luX2ljbXAuIFNvLCBjYXRjaCB0aGVtIGF0IHRoZSBORl9JTkVUX0ZPUldBUkQgY2hhaW5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODQ6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjg1LSAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjg3PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzA4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMwOTpcXHRcXHRyZXR1cm4gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFxcdTAwMjZyLCBzdGF0ZS1cXHUwMDNlaG9vaywgXFx1MDAyNmlwaGRyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTAtI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzEzOlxcdHJldHVybiBpcF92c19pbl9pY21wKGlwdnMsIHNrYiwgXFx1MDAyNnIsIHN0YXRlLVxcdTAwM2Vob29rLCBcXHUwMDI2aXBoZHIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNC19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM0W10gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjctXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMyODpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMjktXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMzItXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMzM6XFx0LyogQmVmb3JlIGlwX3ZzX2luLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMzNC1cXHR7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDEtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM0MjpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNDMtXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIzNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZl9ob29rX29wcyBpcF92c19vcHM2W10gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzYtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM3NzpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzNzgtXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzODEtXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzODI6XFx0LyogQmVmb3JlIGlwX3ZzX2luLCBjaGFuZ2Ugc291cmNlIG9ubHkgZm9yIFZTL05BVCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjM4My1cXHR7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTAtXFx0e1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjM5MTpcXHRcXHQuaG9va1xcdFxcdD0gaXBfdnNfaW5faG9vayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzOTItXFx0XFx0LnBmXFx0XFx0PSBORlBST1RPX0lQVjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0NDM9dm9pZCBpcF92c191bnJlZ2lzdGVyX2hvb2tzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCB1bnNpZ25lZCBpbnQgYWYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI0NzEtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNDcyOnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjQ3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NTk9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfb3BzID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjU2MDpcXHQuaW5pdCA9IF9faXBfdnNfaW5pdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NjEtXFx0LmV4aXRfYmF0Y2ggPSBfX2lwX3ZzX2NsZWFudXBfYmF0Y2gsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1NjY9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcHZzX2NvcmVfZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU3Mi0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1NzM6c3RhdGljIGludCBfX2luaXQgaXBfdnNfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU3NC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI2MjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2NsZWFudXAodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjYzNi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI2Mzc6bW9kdWxlX2luaXQoaXBfdnNfaW5pdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNjM4LW1vZHVsZV9leGl0KGlwX3ZzX2NsZWFudXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjozMy45Mjc1Mjc1MTVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNDEyNjEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJUFZTIEludGVybmFsIFN0cnVjdHVyZSBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBgaXBfdnNfaW5faG9va2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBvYnNlcnZhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBJUFZTIGltcGxlbWVudGF0aW9uLiBMZXQncyBkaWcgaW50byB0aGUgZnVuY3Rpb24gdGhhdCdzIGxpa2VseSBtYW5pcHVsYXRpbmcgdGhhdDogYGlwX3ZzX2dlbmxfc2V0X2NtZGAuIFRoaXMgaXMgd2hlcmUgY29uZmlndXJhdGlvbiBvciBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhhdCBob29rIHByb2JhYmx5IG9yaWdpbmF0ZS4gVW5kZXJzdGFuZGluZyB0aGlzIGNvbW1hbmQgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gVGhlIHN0YXRpYyBuYXR1cmUgaW1wbGllcyBhIGdsb2JhbCwgZml4ZWQgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW50ZXJhY3RzIHdpdGggaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTExLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzcuMjYxNjU2NDAyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA3MTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19nZW5sX3NldF9jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00NjYwPXN0YXRpYyBpbnQgaXBfdnNfZ2VubF9zZXRfZGFlbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNDY4NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NDY4NTpzdGF0aWMgaW50IGlwX3ZzX2dlbmxfc2V0X2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00Njg2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00OTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaXBfdnNfZ2VubF9vcHNbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTIwLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTIxOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MjItXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTI2LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTI3OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MjgtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTMyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTMzOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5MzQtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTQ1LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTQ2OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NDctXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTUxLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTUyOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTMtXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTU3LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTU4OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5NTktXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy00OTg3LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo0OTg4OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTQ5ODktXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDA1LVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA2OlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDctXFx0fSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDExLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9BRE1JTl9QRVJNLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDEyOlxcdFxcdC5kb2l0XFx0PSBpcF92c19nZW5sX3NldF9jbWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMTMtXFx0fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6MzcuMzA0NzMxNDMxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mjg5MzgwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgYW5kIEFQSSBVc2FnZSoqXG5cbk9rYXksIHNvIGBpcF92c19nZW5sX3NldF9jbWRgIGlzIHN0YXRpYy4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBTaW5jZSBJIGNhbid0IGRpcmVjdGx5IGFjY2VzcyB0aGF0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gYWNoaWV2ZSBteSBnb2FsIHVzaW5nIHRoZSBhdmFpbGFibGUgdG9vbHMuIEknbGwgbmVlZCB0byB3b3JrIGFyb3VuZCB0aGUgcmVzdHJpY3Rpb24sIG9mIGNvdXJzZS5cblxuUmlnaHQsIHNvIHRvIG1ha2UgdGhpcyBoYXBwZW4sIEknbGwgbmVlZCB0byBsZWFuIG9uIGEgc2VyaWVzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkLiBJIHdpbGwgZGVmaW5pdGVseSBuZWVkIHRvIHVzZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfY29ubl9uZXdgLCBhbmQgYGlwX3ZzX3RyeV9iaW5kX2Rlc3RgLCB0aGV5IGFyZSB0aGUgbG9naWNhbCBjaG9pY2VzIGhlcmUuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSB0aGF0IGJvdGggYGlwX3ZzX2luX3N0YXRzYCBhbmQgYGlwX3ZzX291dF9zdGF0c2AgYXJlIGRlZmluZWQgYXMgKnN0YXRpYyBpbmxpbmUqLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBUaGV5ICpzaG91bGQqIHN0aWxsIGJlIHVzYWJsZSBpbiB0aGVpciByZXNwZWN0aXZlIGZpbGVzLCBidXQgdGhleSB3b24ndCBiZSBleHBvc2VkIGZvciB1c2Ugb3V0c2lkZSBvZiB0aGUgc291cmNlIHdoZXJlIHRoZXkgYXJlIGRlZmluZWQuIEknbGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBJIG1hcCBvdXQgaG93IHRvIGJ1aWxkIHRoZSBzb2x1dGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0MS4xMzM2NzIwMDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTE0MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luX3N0YXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yOTk9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzozMDA6aXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMzAxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NzYzPWludCBpcF92c19sZWF2ZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy04MDItXFx0XFx0Lyogc3RhdGlzdGljcyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6ODAzOlxcdFxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtODA0LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0xNzUzPWlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk2OC1cXHQvKiBkbyB0aGUgc3RhdGlzdGljcyBhbmQgcHV0IGl0IGJhY2sgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE5Njk6XFx0aXBfdnNfaW5fc3RhdHMoY3AsIHNrYik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTcwLVxcdHZlcmRpY3QgPSBpcF92c19pY21wX3htaXQoc2tiLCBjcCwgcHAsIGlwaC1cXHUwMDNlbGVuLCBob29rbnVtLCBcXHUwMDI2Y2lwaCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE5ODI9c3RhdGljIGludCBpcF92c19pbl9pY21wX3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMDY3LVxcdC8qIGRvIHRoZSBzdGF0aXN0aWNzIGFuZCBwdXQgaXQgYmFjayAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjA2ODpcXHRpcF92c19pbl9zdGF0cyhjcCwgc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIwNjktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwODg9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjQzOlxcdGlwX3ZzX2luX3N0YXRzKGNwLCBza2IpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI0NC1cXHRpcF92c19zZXRfc3RhdGUoY3AsIElQX1ZTX0RJUl9JTlBVVCwgc2tiLCBwZCwgaXBoLmxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjQxLjE4MTE5MDE2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQ4OTk4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqU3RhdGljIElubGluZSBBbmFseXNpcyBcdTAwMjYgVGVtcGxhdGUgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgZnVuY3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBpbmRlZWQgc3RhdGljIGlubGluZS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLCBpbXBhY3RpbmcgaG93IHRoZXkncmUgaGFuZGxlZCBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIE5vdywgdG8gZGlnIGRlZXBlciBhbmQgdW5kZXJzdGFuZCB0aGVpciByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBmdW5jdGlvbiBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgdGVtcGxhdGUncyBwcm9wZXJ0aWVzIGFyZSBhc3Nlc3NlZCwgYW5kIHRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQgd2lsbCBwcm92aWRlIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1NTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0NC4yNzYwOTI3NDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzc4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMjU3PXN0YXRpYyBpbnQgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3Mi0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyNzM6aW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTI3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjEyOjQ0LjMxOTQ3NjAyMVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM1NTI0MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVBWUyBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBpcF92c19jaGVja190ZW1wbGF0ZWAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBzcGFya3MgYSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBub24tc3RhdGljIGRlY2xhcmF0aW9uLiBXaGVyZSBpcyBpdCBiZWluZyB1c2VkPyBXaGF04oCZcyBpdHMgc2NvcGU/IFdoYXQncyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGRlY2xhcmF0aW9uPyBJcyBpdCB0aHJlYWQtc2FmZSwgb3IgYXJlIHRoZXJlIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByZWVudHJhbmN5IHByb2JsZW1zIHRvIGxvb2sgYXQ/IFRoaXMgd2lsbCBkcml2ZSBteSBleHBsb3JhdGlvbiBhbmQgdGhlIGxldmVsIG9mIHNjcnV0aW55IEkgd2lsbCBuZWVkIHRvIGFwcGx5IGR1cmluZyBteSBldmFsdWF0aW9uIG9mIHRoZSBjb2RlLlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYC4gVGhpcyBzb3VuZHMgbGlrZSBpdCBkZWFscyB3aXRoIGZsdXNoaW5nIGNvbm5lY3Rpb25zIHRoYXQgYXJlIG5vdCBsaW5rZWQgdG8gYW55IHNwZWNpZmljIGRlc3RpbmF0aW9uIGhvc3QuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgZXhwaXJhdGlvbiBzdHJhdGVneSB3aXRoaW4gSVBWUy4gSSdsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLCBkZXRlcm1pbmUgaXRzIHRyaWdnZXJpbmcgY29uZGl0aW9ucywgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gbWFpbnRhaW5pbmcgY29ubmVjdGlvbiB0YWJsZSBpbnRlZ3JpdHkuIEknbGwgbmVlZCB0byBzZWUgaWYgaXQgaXMgdXNlZCBjb3JyZWN0bHksIGFuZCBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkLiBTcGVjaWZpY2FsbHksIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIGNvb3JkaW5hdGVkIGNsZWFudXAgbWVjaGFuaXNtPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3RoZXIgZXhwaXJhdGlvbiBvciBnYXJiYWdlIGNvbGxlY3Rpb24gcm91dGluZXM/IFRoZSBjb250ZXh0IG1hdHRlcnMgaGVyZTsgSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBwbGFjZSBpbiB0aGUgbGlmZWN5Y2xlIG9mIGEgY29ubmVjdGlvbiBpbiB0aGUgSVBWUyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODkxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NDguMDU1MDAzMDcyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMwNzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTE5MzQ9c3RhdGljIHZvaWQgaXBfdnNfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTk5Ny0jaWZkZWYgQ09ORklHX1NZU0NUTFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTk5ODp2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5OTkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxMjo0OC4wOTkzMTQ5MjFaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MjEzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKklQVlMgQ29ubmVjdGlvbiBGbHVzaGluZyBDb25zaWRlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBJdCBtZWFucyBpdHMgdmFsdWUgb3Igc3RhdGUgY2FuIGNoYW5nZSBkdXJpbmcgcnVudGltZSwgc3VnZ2VzdGluZyBpdCdzIHBvdGVudGlhbGx5IGR5bmFtaWMgYW5kIHRpZWQgdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN5c3RlbSBvciBuZXR3b3JrLiBUaGlzIGlzIHVzZWZ1bCBmb3IgbWUgYmVjYXVzZSBJIGNhbiBub3cgY29uc2lkZXIgdGhlIGNvZGUgdGhhdCBzZXRzIG9yIG1vZGlmaWVzIGl0IGZvciB0dW5pbmcgdGhlIElQVlMgbG9hZCBiYWxhbmNlci4gXG5cbk5vdywgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gZmx1c2hpbmcsIGxldCBtZSBwaXZvdCBhbmQgY2hlY2sgaG93IGBpcF92c19zdGF0c19mcmVlYCB3b3Jrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkIHdoZW4gY29ubmVjdGlvbnMgYXJlIGZsdXNoZWQgb3IgZXhwaXJlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbm5lY3Rpb24gYW5kIGhvdyBpdHMgbGlmZWN5Y2xlIGlzIG1hbmFnZWQgc28gdGhhdCBJIGNhbiBoYXZlIGEgY2xlYXIgaWRlYSBhcyB0byB3aGV0aGVyIHN0YWxlIGRhdGEgaXMgYmVpbmcgY29sbGVjdGVkIGFuZCwgdGhlcmVmb3JlLCBob3cgdG8gY29ycmVjdGx5IGludGVycHJldCB0aGUgcmVzdWx0aW5nIHN0YXRpc3RpY3MuIEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgcGFydHMgb2YgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDM1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NTEuNTUxNDU3NTc3WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1MDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19zdGF0c19mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTI5ND12b2lkIGlwX3ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMjk4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMjk5OnZvaWQgaXBfdnNfc3RhdHNfZnJlZShzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzAwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTI6NTEuNTkzNTEyMjA2WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzgyNDY1ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgaXBfdnNfc3RhdHNfZnJlZWAgYW5kIFN0YXRlIE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IGBpcF92c19zdGF0c19mcmVlYCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gVGhhdCBvcGVucyBhIGZldyBkb29ycywgYW5kIHNvbWUgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4uIExldCdzIHNlZSBob3cgYW5kICp3aGVyZSogdGhhdCBmdW5jdGlvbiBpcyB1c2VkIOKAkyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnM7IGhvdyBtYW55IHBsYWNlcyBkb2VzIGl0IGdldCBjYWxsZWQgYW5kIGZyb20gd2hlcmUuIFdoYXQgYXJlIHdlIGV4cGVjdGluZyB0byBzZWU/XG5cbk5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCB0aGUgY29kZSdzIGZvY3VzIHNlZW1zIHRvIGJlIG9uIGhhbmRsaW5nIGNvbm5lY3Rpb24gc3RhdGUuIEl0J3MgYSBuYXR1cmFsIHByb2dyZXNzaW9uIHRvIGNoZWNrIG91dCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMg4oCTIGBzZXRfc2N0cF9zdGF0ZWAgYW5kIGBzZXRfdGNwX3N0YXRlYC4gVGhlc2UgbGlrZWx5IHBsYXkgYSB2aXRhbCByb2xlIGluIG1hbmFnaW5nIHRoZSBzdGF0ZSBvZiBib3RoIFNDVFAgYW5kIFRDUCBjb25uZWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgSVBWUy4gSSdsbCBuZWVkIHRvIGFuYWx5emUgaG93IHN0YXRlIHRyYW5zaXRpb25zIGFyZSBpbXBsZW1lbnRlZCBpbiB0aG9zZSBmdW5jdGlvbnMsIHdoYXQgdGhlIHZhbGlkIHN0YXRlcyBhcmUsIGFuZCBob3cgdGhhdCBpbmZvcm1hdGlvbiBpcyBiZWluZyBzdG9yZWQgYW5kIHV0aWxpemVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgZGVzaWduLCBpbmNsdWRpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBtaWdodCBvciBtaWdodCBub3QgaW50ZXJhY3Qgd2l0aCBgaXBfdnNfc3RhdHNfZnJlZWAuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHdoYXQgc29ydCBvZiB3b3JrIHRoZXkgcGVyZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI4NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODowOS40MTgxNzM2NDVaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Njk5OTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfc2N0cF9zdGF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM9Mzc2PXN0YXRpYyBpbmxpbmUgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6Mzc3OnNldF9zY3RwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtMzc4LVxcdFxcdGludCBkaXJlY3Rpb24sIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jPTQ2Nj1zY3RwX3N0YXRlX3RyYW5zaXRpb24oc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBpbnQgZGlyZWN0aW9uLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYzo0NzE6XFx0c2V0X3NjdHBfc3RhdGUocGQsIGNwLCBkaXJlY3Rpb24sIHNrYiwgaXBoX2xlbik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NzItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNwLVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MDkuODA1MTc3NjA5WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzg1OTkxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlNDVFAgU3RhdGUgVHJhbnNpdGlvbiBEaXNjcmVwYW5jaWVzKipcblxuSG1tLCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNDVFAgY29kZS4uLiBhbmQgc29tZXRoaW5nJ3MganVzdCBzbmFnZ2VkIG15IGF0dGVudGlvbi4gSSBzZWUgdGhhdCBgc2V0X3NjdHBfc3RhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWMgaW5saW5lYC4gUmlnaHQsIHRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwga2VlcHMgdGhlIGZ1bmN0aW9uIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGFuZCBlbmFibGVzIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBpdCBhZ2dyZXNzaXZlbHkg4oCTIGxpa2VseSBpbmxpbmluZyBpdCB3aGVyZSBpdCdzIGNhbGxlZCwgcmVkdWNpbmcgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZC4gTWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuQnV0IHRoZW4sIEkgbm90aWNlIGBzY3RwX3N0YXRlX3RyYW5zaXRpb25gLiBBbmQuLi4gaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgYHN0YXRpY2AsIHdoaWNoIGltcGxpZXMgaXQncyBwb3RlbnRpYWxseSB2aXNpYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBtb2R1bGUsIGFuZCBwZXJoYXBzIGV2ZW4gZXh0ZXJuYWxseS4gVGhhdCByYWlzZXMgYSBxdWVzdGlvbiBpbW1lZGlhdGVseS4gSXMgaXQgbWVhbnQgdG8gYmUgYSBnZW5lcmFsbHkgYWNjZXNzaWJsZSBmdW5jdGlvbj8gV2hhdCdzIHRoZSBkZXNpZ24gaW50ZW50PyBJcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGJhc2UgdGhhdCBhcmUgbm90IGlubGluZWQ/XG5cblRoZSBhcHBhcmVudCBkaWZmZXJlbmNlIGluIGRlY2xhcmF0aW9uIHNlZW1zIHNpZ25pZmljYW50LiBEb2VzIHRoZSBjb2RlIGludGVuZCBmb3IgZXh0ZXJuYWwgdXNlIG9mIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgcG90ZW50aWFsIGJ1Zz8gVGltZSB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZGlzY3JlcGFuY3kgZXhpc3RzIGJldHdlZW4gYHNldF9zY3RwX3N0YXRlYCBhbmQgYHNjdHBfc3RhdGVfdHJhbnNpdGlvbmAgYW5kIHRoZWlyIHJvbGUgaW4gU0NUUCdzIHN0YXRlIG1hbmFnZW1lbnQuIEkgbmVlZCB0byBrbm93IHdoeSBvbmUgaXMgYHN0YXRpYyBpbmxpbmVgIGFuZCB0aGUgb3RoZXIgaXNuJ3QuIEknbSBndWVzc2luZyB0aGUgdHJhbnNpdGlvbiBmdW5jdGlvbiBpcyBjb21wbGV4LCBhbmQgdXNlZCBtb3JlIGJyb2FkbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MTMuODQzNzgwNzA1WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzc5MTc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3N0YXRlX3RyYW5zaXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jPTQ2NT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NDY2OnNjdHBfc3RhdGVfdHJhbnNpdGlvbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIGludCBkaXJlY3Rpb24sXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYy00NjctXFx0XFx0Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYz01Njc9c3RydWN0IGlwX3ZzX3Byb3RvY29sIGlwX3ZzX3Byb3RvY29sX3NjdHAgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jLTU4My1cXHQuc3RhdGVfbmFtZVxcdD0gc2N0cF9zdGF0ZV9uYW1lLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmM6NTg0OlxcdC5zdGF0ZV90cmFuc2l0aW9uID0gc2N0cF9zdGF0ZV90cmFuc2l0aW9uLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMtNTg1LVxcdC5hcHBfY29ubl9iaW5kXFx0PSBzY3RwX2FwcF9jb25uX2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjEzLjkwNzU3OTExNVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkwMTcxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFN0YXRlIFRyYW5zaXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBgc2N0cF9zdGF0ZV90cmFuc2l0aW9uYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBzcGVjaWZpYyBkZXNpZ24gY2hvaWNlOiBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBleHBvc2VkIG9yIGNhbGxlZCBleHRlcm5hbGx5IGZyb20gb3RoZXIgbW9kdWxlcy4gSXQncyBsaWtlbHkgaW50ZW5kZWQgYXMgYW4gaW50ZXJuYWwgdXRpbGl0eSBmdW5jdGlvbiB3aXRoaW4gdGhlIFNDVFAgc3RhdGUgbWFuYWdlbWVudCBjb2RlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgc2NvcGUuXG5cbkdpdmVuIHRoaXMgcmVzdHJpY3Rpb24sIEknbGwgc2hpZnQgZ2VhcnMgYW5kIGxvb2sgZGlyZWN0bHkgYXQgYHNldF90Y3Bfc3RhdGVgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBpbnRlcmFjdGlvbiB0aGVyZS4gSSdtIGFzc3VtaW5nIHRoYXQgZnVuY3Rpb24gbWlnaHQgcGxheSBhIHBhcnQgaW4gdXBkYXRpbmcgYW4gc2N0cCBzdGF0ZSBiYXNlZCBvbiBhbiB1cGRhdGUgZnJvbSBhIFRDUC1yZWxhdGVkIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDIzMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjE3LjA5Nzc1MzY2NFoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MTE3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldF90Y3Bfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYz00NzU9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjQ3NjpzZXRfdGNwX3N0YXRlKHN0cnVjdCBpcF92c19wcm90b19kYXRhICpwZCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy00NzctXFx0ICAgICAgaW50IGRpcmVjdGlvbiwgc3RydWN0IHRjcGhkciAqdGgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fdGNwLmM9NTUwPXRjcF9zdGF0ZV90cmFuc2l0aW9uKHN0cnVjdCBpcF92c19jb25uICpjcCwgaW50IGRpcmVjdGlvbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b190Y3AuYy01NjEtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jOjU2MjpcXHRzZXRfdGNwX3N0YXRlKHBkLCBjcCwgZGlyZWN0aW9uLCB0aCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3RjcC5jLTU2My1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODoxNy4yMDU4NzU2MzJaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2ODEyNTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBUQ1AgU3RhdGUgVHJhbnNpdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBgdGNwX3N0YXRlX3RyYW5zaXRpb25gIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBmb3IgdGhlIG92ZXJhbGwgc3lzdGVtLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGlrZWx5IHNjb3BlIGFuZCBwdXJwb3NlIG9mIHRoYXQgcGFydGljdWxhciB2YXJpYWJsZSBvciBmdW5jdGlvbi4gTm93LCBhIHN0YXRpYyBkZWNsYXJhdGlvbiB1c3VhbGx5IG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGhvdyB0aGF0IGFmZmVjdHMgaXRzIGFjY2Vzc2liaWxpdHkgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFRDUC9JUCBzdGFjay5cblxuTm93LCBsZXQncyBwaXZvdC4gR2l2ZW4gdGhhdCBJIGhhdmUgdGhpcyBpbiBmcm9udCBvZiBtZSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIElQVlMgY29ubmVjdGlvbiBoYW5kbGluZy4gTGV0J3Mgc2VlIGhvdyBgaXBfdnNfcHJvY19jb25uYCBpbnRlcmFjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgbWVjaGFuaXNtLiBJIHdhbnQgdG8gc2VlIGlmIGB0Y3Bfc3RhdGVfdHJhbnNpdGlvbmAgcGxheXMgYSByb2xlIHdpdGhpbiB0aGUgVlMgbGF5ZXIgYW5kIGlmIHRoZSBzdGF0aWMgZGVjbGFyYXRpb24gY3JlYXRlcyBhbnkgdW5leHBlY3RlZCBib3R0bGVuZWNrcy4gSSdtIHRoaW5raW5nIGFib3V0IGNvbmN1cnJlbnQgY29ubmVjdGlvbnMgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGltcGFjdC4gSSBiZXQgYGlwX3ZzX3Byb2NfY29ubmAgd2lsbCByZXZlYWwgaG93IHRoaXMgc3RhdGljIGVsZW1lbnQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzIzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjEuMzc0MDA0ODQ3WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzEyNjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19wcm9jX2Nvbm5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTc4OD1pcF92c19jb25uX2ZpbGxfcGFyYW1fc3luYyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGFmLCB1bmlvbiBpcF92c19zeW5jX2Nvbm4gKnNjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDAtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzo4NDE6c3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFyYW0sXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy04NDItXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IHN0YXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz05NTU9c3RhdGljIHZvaWQgaXBfdnNfcHJvY2Vzc19tZXNzYWdlX3YwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBjaGFyICpidWZmZXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTQtXFx0XFx0LyogU2VuZCB0aW1lb3V0IGFzIFplcm8gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjEwMTU6XFx0XFx0aXBfdnNfcHJvY19jb25uKGlwdnMsIFxcdTAwMjZwYXJhbSwgZmxhZ3MsIHN0YXRlLCBzLVxcdTAwM2Vwcm90b2NvbCwgQUZfSU5FVCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTEwMTYtXFx0XFx0XFx0XFx0KHVuaW9uIG5mX2luZXRfYWRkciAqKVxcdTAwMjZzLVxcdTAwM2VkYWRkciwgcy1cXHUwMDNlZHBvcnQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTEwNjY9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfcHJvY19zeW5jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIF9fdTggKnAsIF9fdTggKm1zZ19lbmQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jLTExNzMtXFx0aWYgKGFmID09IEFGX0lORVQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzoxMTc0OlxcdFxcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcXHUwMDI2cGFyYW0sIGZsYWdzLCBzdGF0ZSwgcy1cXHUwMDNldjQucHJvdG9jb2wsIGFmLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE3NS1cXHRcXHRcXHRcXHQodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNnMtXFx1MDAzZXY0LmRhZGRyLCBzLVxcdTAwM2V2NC5kcG9ydCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4MC1cXHRlbHNlXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYzoxMTgxOlxcdFxcdGlwX3ZzX3Byb2NfY29ubihpcHZzLCBcXHUwMDI2cGFyYW0sIGZsYWdzLCBzdGF0ZSwgcy1cXHUwMDNldjYucHJvdG9jb2wsIGFmLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtMTE4Mi1cXHRcXHRcXHRcXHQodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNnMtXFx1MDAzZXY2LmRhZGRyLCBzLVxcdTAwM2V2Ni5kcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjEuNDI3MTM2NTU2WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMyNTIyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyBgaXBfdnNfcHJvY19jb25uYCBhbmQgUm91dGluZyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gYGlwX3ZzX3Byb2NfY29ubmAgaXMgYXBwYXJlbnRseSBzdGF0aWMuIFRoYXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gTm93LCB3aGF0J3MgZ29pbmcgb24gYXJvdW5kIGl0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByb3V0aW5nIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGhvdyBvdXRib3VuZCByb3V0ZXMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYGlwX3ZzX2dldF9vdXRfcnRgIGFuZCBgaXBfdnNfZ2V0X291dF9ydF92NmAuIFRoZXkncmUgcHJvYmFibHkgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyBsb2dpYyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLCBlc3BlY2lhbGx5IGluIHRlcm1zIG9mIElQdjQgYW5kIElQdjYuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBkZXRlcm1pbmUgdGhlIGNvcnJlY3Qgb3V0Ym91bmQgcm91dGUgZm9yIGEgY29ubmVjdGlvbiwgd2hpY2ggaXMgbGlrZWx5IGRlcGVuZGVudCBvbiB0aGUgc3RhdGljIG5hdHVyZSBvZiBgaXBfdnNfcHJvY19jb25uYC4gSSBuZWVkIHRvIGFzc2VzcyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB1dGlsaXppbmcsIG9yIGFmZmVjdGVkIGJ5IGBpcF92c19wcm9jX2Nvbm5gLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIG5leHQgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1Njk0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6MjQuODgwMzkyMDkxWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjYwNzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwX3ZzX2dldF9vdXRfcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzozMTY6X19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzE3LVxcdFxcdCAgIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz00ODg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NDg5Ol9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTQ5MC1cXHRcXHQgICAgICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzM2PWlwX3ZzX2J5cGFzc194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzM4LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjczOTpcXHRpZiAoX19pcF92c19nZXRfb3V0X3J0KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgTlVMTCwgaXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzQwLVxcdFxcdFxcdCAgICAgICBJUF9WU19SVF9NT0RFX05PTl9MT0NBTCwgTlVMTCwgaXB2c2gpIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NzU5PWlwX3ZzX2J5cGFzc194bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzYzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NzY0OlxcdGlmIChfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBOVUxMLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNzY1LVxcdFxcdFxcdFxcdCAgXFx1MDAyNmlwaC1cXHUwMDNlZGFkZHIsIE5VTEwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTc4Nz1pcF92c19uYXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTgwNC1cXHR3YXNfaW5wdXQgPSBydF9pc19pbnB1dF9yb3V0ZShza2JfcnRhYmxlKHNrYikpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6ODA1OlxcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsIGNwLVxcdTAwM2VkYWRkci5pcCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTgwNi1cXHRcXHRcXHRcXHQgICBJUF9WU19SVF9NT0RFX0xPQ0FMIHxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9ODcxPWlwX3ZzX25hdF94bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtODg2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6ODg3OlxcdGxvY2FsID0gX19pcF92c19nZXRfb3V0X3J0X3Y2KGNwLVxcdTAwM2VpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy04ODgtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmNwLVxcdTAwM2VkYWRkci5pbjYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTExNDc9aXBfdnNfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMTY1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTE2NjpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsIGNwLVxcdTAwM2VkYWRkci5pcCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTExNjctXFx0XFx0XFx0XFx0ICAgSVBfVlNfUlRfTU9ERV9MT0NBTCB8XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTEyOTI9aXBfdnNfdHVubmVsX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzA5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTMxMDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihpcHZzLCBjcC1cXHUwMDNlYWYsIHNrYiwgY3AtXFx1MDAzZWRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xMzExLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZjcC1cXHUwMDNlZGFkZHIuaW42LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDM5PWlwX3ZzX2RyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTQ0NDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydChjcC1cXHUwMDNlaXB2cywgY3AtXFx1MDAzZWFmLCBza2IsIGNwLVxcdTAwM2VkZXN0LCBjcC1cXHUwMDNlZGFkZHIuaXAsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDQ1LVxcdFxcdFxcdFxcdCAgIElQX1ZTX1JUX01PREVfTE9DQUwgfFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDY5PWlwX3ZzX2RyX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNDczLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTQ3NDpcXHRsb2NhbCA9IF9faXBfdnNfZ2V0X291dF9ydF92NihjcC1cXHUwMDNlaXB2cywgY3AtXFx1MDAzZWFmLCBza2IsIGNwLVxcdTAwM2VkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTQ3NS1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2Y3AtXFx1MDAzZWRhZGRyLmluNixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTUwND1pcF92c19pY21wX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTM2LVxcdFxcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE1Mzc6XFx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnQoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBjcC1cXHUwMDNlZGVzdCwgY3AtXFx1MDAzZWRhZGRyLmlwLCBydF9tb2RlLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUzOC1cXHRcXHRcXHRcXHQgICBOVUxMLCBjaXBoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTU5OD1pcF92c19pY21wX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNjI5LVxcdFxcdCAgSVBfVlNfUlRfTU9ERV9SRFIgOiBJUF9WU19SVF9NT0RFX05PTl9MT0NBTDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjE2MzA6XFx0bG9jYWwgPSBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoY3AtXFx1MDAzZWlwdnMsIGNwLVxcdTAwM2VhZiwgc2tiLCBjcC1cXHUwMDNlZGVzdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE2MzEtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmNwLVxcdTAwM2VkYWRkci5pbjYsIE5VTEwsIGNpcGgsIDAsIHJ0X21vZGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODoyNC45NjcwMDQzMloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDA5MjI3NjE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgSVBWUyBwYXRjaC4gRmlyc3QsIEkndmUgbm90ZWQgdGhhdCBgX19pcF92c19nZXRfb3V0X3J0YCBhbmQgYF9faXBfdnNfZ2V0X291dF9ydF92NmAgYXJlIHN0YXRpYywgc28gdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW4gdGVybXMgb2YgaG93IHRoaXMgbWlnaHQgY2hhbmdlIGJlaGF2aW9yIGFyZSBnb2luZyB0byBiZSBgaXBfdnNfbmF0X3htaXRgLCBgaXBfdnNfdHVubmVsX3htaXRgLCBgaXBfdnNfZHJfeG1pdGAsIGBpcF92c19pY21wX3htaXRgLCBhbmQgYGlwX3ZzX2J5cGFzc194bWl0YC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBpbXBvcnRhbnQgc3ltYm9scyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHRoZSBvdmVyYWxsIHBpY3R1cmU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGBpcF92c19zdGF0c19mcmVlYCwgYW5kIHRoZSBgeG1pdGAgZnVuY3Rpb25zIG1lbnRpb25lZCBiZWZvcmUuIFdhaXQsIGxvb2tzIGxpa2UgYGlwX3ZzX3N0YXRzX2ZyZWVgIGlzIGp1c3QgZnJlZWluZyBzdGF0cywgc28gaXQncyBub3QgdGVycmlibHkgaW50ZXJlc3RpbmcgaW4gdGhpcyBjb250ZXh0LiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHNlZW1zIHRvIGJlIGEga2V5IG5ldyBmdW5jdGlvbiwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBgaXBfdnNfY29ubl9uZXdgIGFuZCBgaXBfdnNfdHJ5X2JpbmRfZGVzdGAgYm90aCBjYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgaXBfdnNfYmluZF9kZXN0YC4gYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCBhbmQgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAgYXJlIGxvb2tpbmcgYXQgdGhlIGBkZXN0LVx1MDAzZWNmbGFnc2Agc3RydWN0dXJlLiBUaGUgYHhtaXRgIGZ1bmN0aW9ucyBsaWtlIGBpcF92c19uYXRfeG1pdGAgYWxzbyBjYWxsIGBfX2lwX3ZzX2dldF9vdXRfcnRgIHdoaWNoIGNoZWNrcyBgZGVzdC1cdTAwM2VjZmxhZ3NgLiBTbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlIHdpdGggdGhhdCBgZGVzdC1cdTAwM2VjZmxhZ3NgLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYW5kIGBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hgIGFyZSBhbGwgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGVhc3kgdG8gaG9vayBpbnRvLlxuXG5Ob3cgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlncyBmb3IgdGhpcyBhcmUgYElQX1ZTYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYElQX1ZTX0RIYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBhbmQgYElQX1ZTX0xDYC4gT2gsIHdhaXQuLi50aGUgbGFzdCBmb3VyIGFyZSBzY2hlZHVsZXJzISBBbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBpcF92c19kaC5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYW5kIGBpcF92c19sYy5jYC4gTWFrZXMgc2Vuc2UsIHNvIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGRlZmluaXRlbHkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZS5cblxuTGV0J3MgZG91YmxlIGNoZWNrIHRob3NlIGNvbmZpZyBuYW1lcyB0byBiZSBhYnNvbHV0ZWx5IHN1cmU6IGBJUF9WU19ESGAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1BST1RPX1RDUGAsIGBJUF9WU19QUk9UT19TQ1RQYCwgYW5kIGBJUF9WU2AuIEp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgcGVlayBhdCBgSVBfVlNfREhgIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgbmV0ZmlsdGVyIGlwdnMgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODAxOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODozNS4wNTkyODQxNDFaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzUyMDA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfREhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjM1LjExMjA0MjAyWiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTYyODk5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipSZWNhbGxpbmcgUHJldmlvdXMgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgZGlzdGluY3RseSByZW1lbWJlciB2ZXJpZnlpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYERIYCBqdXN0IHJlY2VudGx5LCBwcm9iYWJseSBpbiB0aGUgY29udGV4dCBvZiBjb25maWd1cmluZyBJUFZTLiBMZXQgbWUgbWVudGFsbHkgcmV0cmFjZSBteSBzdGVwcy4uLiBBaCwgeWVzISBJIHdhcyBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kICpkZWZpbml0ZWx5KiBjb25maXJtZWQgdGhhdCBgREhgIHdhcyBtYXBwZWQgdG8gYGNvbmZpZyBJUF9WU19ESGAuIEkgZXZlbiByZWNhbGwgaXQgc3BlY2lmaWNhbGx5IHVzaW5nIGEgdGFiIGZvciBpbmRlbnRhdGlvbiwgd2hpY2ggaXMgYSBkZXRhaWwgSSB1c3VhbGx5IHBheSBhdHRlbnRpb24gdG8gZm9yIHJlYWRhYmlsaXR5LiBTbywgSSBkb24ndCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgYXNzb2NpYXRpb24gcmlnaHQgbm93LiBUaGF0J3MgYWxyZWFkeSBiZWVuIGFkZHJlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODozOS42MDgzMzM3ODlaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MzU5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ1xcdElQX1ZTX0RIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE5Mj1jb25maWcgIElQX1ZTX0xCTENSXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMDktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1xcdElQX1ZTX0RIXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjM5LjcwNDcwMDEyOFoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIyNTgxOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludGVybmFsIFJldmlldzogSVBfVlNfTEJMQyoqXG5cbk9rYXksIHllcywgSSdtIHJlYWR5IHRvIGJlZ2luIHRoaXMuIExldCdzIHN0YXJ0IGJ5IGltbWVkaWF0ZWx5IGNoZWNraW5nIHRoZSBgSVBfVlNfTEJMQ2AgYXNwZWN0LCBhcyB0aGF0J3MgdGhlIGNvcmUgZm9jdXMgaGVyZS4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSBhbmQgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIGZpcnN0LiBUaGlzIGlzIHdoZXJlIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODAzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDIuOTI3Mjg1Nzc3WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQ0NjU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWdcXHRJUF9WU19MQkxDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE2Nz1jb25maWcgIElQX1ZTX09WRlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3ODpjb25maWdcXHRJUF9WU19MQkxDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjQzLjAwNDczNzEyNloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ4MDQ4MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIExhbmRzY2FwZSoqXG5cblllcywgdGhhdCdzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY3VycmVudCBzaXR1YXRpb24uIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBleGFtaW5hdGlvbiBvZiBgSVBfVlNfTEJMQ1JgLiBUaGF0IHdpbGwgYmUgbXkgaW5pdGlhbCBhcmVhIG9mIGludmVzdGlnYXRpb24uIEl0IGNvbnRhaW5zIGRhdGEgdGhhdCBpcyByZWxldmFudCB0byBteSB0YXNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDA2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjQ1Ljg1Mjc4ODM3MVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU0MjY3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnICBJUF9WU19MQkxDUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDUuOTA4MjE5M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcxODkxNTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqSW50ZXJuYWwgQXNzZXNzbWVudCBhbmQgRGlyZWN0aW9uKipcblxuWWVzLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGFja25vd2xlZGdlIHRoZSBwcmlvciBzdGF0ZSBhbmQgYWdyZWUgdG8gbW92ZSBmb3J3YXJkLiBOb3csIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgSVBfVlNfTENgLiBUaGlzIG1lYW5zIEknbSBpbW1lZGlhdGVseSBzaGlmdGluZyBmb2N1cyB0byBhIHNwZWNpZmljIGFuZCBsaWtlbHkgY3J1Y2lhbCBlbGVtZW50LCB3aGljaCBJJ20gYXNzdW1pbmcgaGFzIGEgc2lnbmlmaWNhbmNlIHdlIGJvdGggdW5kZXJzdGFuZC4gSXTigJlzIGEgZGlyZWN0IGNoZWNrIG9uIHRoYXQgdmFyaWFibGUgb3IgY29uY2VwdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAsIGFuZCBtYWtlIGEgZGVjaXNpb24gYmFzZWQgb24gdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAzMTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODo0OC45ODAxMTQxNDJaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTU4OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ1xcdElQX1ZTX0xDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEyND1jb25maWdcXHRJUF9WU19XUlJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzNi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMzc6Y29uZmlnXFx0SVBfVlNfTENcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcImxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6MTg6NDkuMDM1MDc5NDQxWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzk3MDY2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFByb3RvY29sIFNwZWNpZmljcyoqXG5cblllcywgdGhhdCBmZWVscyByaWdodCwgdGhlIGNvcmUgcHJpbmNpcGxlIGlzIHNvbGlkLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHByZWNpc2UuIExldCdzIGRyaWxsIGRvd24gaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1NDVFBgIHJpZ2h0IG5vdy4gTmVlZCB0byBtYWtlIHN1cmUgdGhlIGxhdGVzdCByZXZpc2lvbnMgYW5kIHBhdGNoZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCwgYW55IHJlY2VudCBlZGdlLWNhc2VzIGNvbnNpZGVyZWQuIEkgY2FuJ3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBHb3R0YSBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDU5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjUyLjE3NDc4OTU0MVoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY2ODYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnXFx0SVBfVlNfUFJPVE9fVENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc3PWNvbW1lbnQgXFxcIklQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNzgtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVENQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODAtXFx0Ym9vbCBcXFwiVENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjUyLjI2MTQ4MTlaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAyODk4NzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjQwODg4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjoxODo1NC4yOTA0NzQwNjhaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ3MjU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cXHRib29sIFxcXCJTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE4OjU0LjM5NTk1MTcwNloiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg4NjQ2MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5SaWdodCwgSSdtIHdpdGggdGhpcyBwYXRjaC4gTG9va2luZyBhdCBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5OiBgSVBfVlNgLCBgSVBfVlNfUFJPVE9fVENQYCwgYElQX1ZTX1BST1RPX1NDVFBgLCBgSVBfVlNfREhgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGFuZCBgSVBfVlNfTENgLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgSVBWUyBmdW5jdGlvbmFsaXR5IGhlcmUuXG5cblRoZSBrZXkgc3ltYm9scyB0byB0YXJnZXQgZm9yIGZ1enppbmcganVtcCBvdXQgYXQgbWU6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c190cnlfYmluZF9kZXN0YCwgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYCwgYGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaGAsIGFuZCBlc3BlY2lhbGx5IHRoZSB0cmFuc21pc3Npb24gZnVuY3Rpb25zIGxpa2UgYGlwX3ZzX25hdF94bWl0YCwgYGlwX3ZzX3R1bm5lbF94bWl0YCwgYGlwX3ZzX2RyX3htaXRgLCBhbmQgYGlwX3ZzX2ljbXBfeG1pdGAuIFRob3NlIGBpcF92c18qX3htaXRgIGZ1bmN0aW9ucyBhcmUgaG90IHBhdGhzLCBzbyBhIHNvbGlkIHBsYWNlIHRvIHRlc3QgdGhlIGBkZXN0LVx1MDAzZWNmbGFnc2AgY2hlY2suIEluY2x1ZGluZyB0aGVtIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNhbGwuIFRoZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGlzIHRoZSBmb2NhbCBwb2ludCBvZiB0aGUgY2hhbmdlcy5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nIGZvciBteSBvd24gYmVuZWZpdC4uLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0d2Vha2luZyBJUFZTJ3MgZGVzdGluYXRpb24gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG92ZXJsb2FkIGZsYWcuIEl0J3Mgc3dhcHBpbmcgYGluYWN0Y29ubnNgIGZvciBgdG90YWxjb25uc2AsIGFkZGluZyB0aGUgYGNmbGFnc2AgZm9yIGNvbmZpZ3VyYXRpb24gZmxhZ3MsIGFuZCBzaGlmdGluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gQW5kLCB0aGF0IGNyaXRpY2FsIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgc2V0dGluZyB0aGF0IG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gY29uZmlndXJhYmxlIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcywgdG91Y2hpbmcgYm90aCB0aGUgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gR2l2ZW4gdGhlIGNoYW5nZXMsIHRoZSBmdXp6aW5nIG5lZWRzIHRvIGZvY3VzIG9uIHRob3NlIGFyZWFzIEkgaWRlbnRpZmllZCBiZWZvcmU6IGNvbm5lY3Rpb24gYmluZGluZyBhbmQgdW5iaW5kaW5nLCBkZXN0aW5hdGlvbiB1cGRhdGVzLCBhbmQgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMuIFNwZWNpZmljYWxseSwgdGhlIGFyZWFzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIHRoZSBkZXN0aW5hdGlvbnMgYXJlIHdoYXQgd2Ugc2hvdWxkIGZvY3VzIG9uLlxuXG5TZWVtcyBsaWtlIGEgc29saWQgcGxhbi4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwMzcsIk91dHB1dFRva2VucyI6MzI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjE5OjAyLjk4NDYwMTEzMVoiLCJTZXEiOjc2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODQ4OTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX1BST1RPX1RDUFwiLFxuICAgIFwiSVBfVlNfUFJPVE9fU0NUUFwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19MQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkXCIsXG4gICAgXCJpcF92c19jb25uX25ld1wiLFxuICAgIFwiaXBfdnNfdHJ5X2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfbmF0X3htaXRcIixcbiAgICBcImlwX3ZzX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF92c19kcl94bWl0XCIsXG4gICAgXCJpcF92c19pY21wX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUFZTIGRlc3RpbmF0aW9uIHNlcnZlciBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBvdmVybG9hZCBmbGFnIHVwZGF0ZXMuIEl0IGludHJvZHVjZXMgYHRvdGFsY29ubnNgIHRvIHJlcGxhY2UgYGluYWN0Y29ubnNgIGFuZCBhZGRzIGBjZmxhZ3NgIGZvciBjb25maWcgZmxhZ3MsIG1vdmluZyBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgdG8gYElQX1ZTX0RFU1RfQ0ZfQVZBSUxBQkxFYC4gSXQgYWxzbyBhZGRzIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgdG8gdXBkYXRlIHRoZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIHRocmVzaG9sZHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgc2NoZWR1bGVycy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gY29ubmVjdGlvbiBiaW5kaW5nL3VuYmluZGluZywgZGVzdGluYXRpb24gdXBkYXRlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHMgdGhhdCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IGFuZCBvdmVybG9hZCBzdGF0dXMgb2YgZGVzdGluYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfTENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX3RyeV9iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gICAgXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgICBcImlwX3ZzX25hdF94bWl0XCIsXG4gICAgXCJpcF92c190dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdnNfZHJfeG1pdFwiLFxuICAgIFwiaXBfdnNfaWNtcF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVBWUyBkZXN0aW5hdGlvbiBzZXJ2ZXIgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgb3ZlcmxvYWQgZmxhZyB1cGRhdGVzLiBJdCBpbnRyb2R1Y2VzIGB0b3RhbGNvbm5zYCB0byByZXBsYWNlIGBpbmFjdGNvbm5zYCBhbmQgYWRkcyBgY2ZsYWdzYCBmb3IgY29uZmlnIGZsYWdzLCBtb3ZpbmcgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIHRvIGBJUF9WU19ERVNUX0NGX0FWQUlMQUJMRWAuIEl0IGFsc28gYWRkcyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIHRvIHVwZGF0ZSB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiB0aHJlc2hvbGRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIHNjaGVkdWxlcnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGNvbm5lY3Rpb24gYmluZGluZy91bmJpbmRpbmcsIGRlc3RpbmF0aW9uIHVwZGF0ZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIHRoYXQgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBhbmQgb3ZlcmxvYWQgc3RhdHVzIG9mIGRlc3RpbmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow9t5jr[1] Phase: Succeeded StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-01 22:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-01 22:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2] Phase: Succeeded StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-01 22:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 22:19:15 +0000 UTC FinishedAt: 2026-08-01 22:19:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9t5jr/series-workflow9t5jr-convert-artifact-4224958042/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 22:19:41 +0000 UTC FinishedAt: 2026-08-01 22:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 22:19:41 +0000 UTC FinishedAt: 2026-08-01 22:39:49 +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:*742e09d5-4f58-4364-a970-00d4aee49abb,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-workflow9t5jr/series-workflow9t5jr-convert-artifact-4224958042/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": "7be22422-2707-46f0-8da2-d3ba87e736c7", "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-workflow9t5jr/series-workflow9t5jr-build-action-2567041800/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 22:19:41 +0000 UTC FinishedAt: 2026-08-01 22:39:25 +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:*742e09d5-4f58-4364-a970-00d4aee49abb,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-workflow9t5jr/series-workflow9t5jr-convert-artifact-4224958042/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": "7be22422-2707-46f0-8da2-d3ba87e736c7", "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-workflow9t5jr/series-workflow9t5jr-build-action-2567041800/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 22:39:49 +0000 UTC FinishedAt: 2026-08-01 22:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 22:39:49 +0000 UTC FinishedAt: 2026-08-01 22:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 22:39:49 +0000 UTC FinishedAt: 2026-08-01 22:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 22:39:49 +0000 UTC FinishedAt: 2026-08-01 22:39:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9t5jr/series-workflow9t5jr-convert-artifact-2898772661/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 22:40:00 +0000 UTC FinishedAt: 2026-08-01 22:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 22:40:00 +0000 UTC FinishedAt: 2026-08-01 22:41:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7be22422-2707-46f0-8da2-d3ba87e736c7,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-workflow9t5jr/series-workflow9t5jr-build-action-2567041800/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-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 22:41:51 +0000 UTC FinishedAt: 2026-08-01 22:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 22:41:51 +0000 UTC FinishedAt: 2026-08-01 22:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 22:41:51 +0000 UTC FinishedAt: 2026-08-01 23:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 22:41:51 +0000 UTC FinishedAt: 2026-08-01 23:06:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*742e09d5-4f58-4364-a970-00d4aee49abb,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-workflow9t5jr/series-workflow9t5jr-convert-artifact-2898772661/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": "6fe78807-adfb-49b4-9bd8-980563695b3b", "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-workflow9t5jr/series-workflow9t5jr-build-action-1096020929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 22:41:51 +0000 UTC FinishedAt: 2026-08-01 23:06:17 +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:*742e09d5-4f58-4364-a970-00d4aee49abb,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-workflow9t5jr/series-workflow9t5jr-convert-artifact-2898772661/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": "6fe78807-adfb-49b4-9bd8-980563695b3b", "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-workflow9t5jr/series-workflow9t5jr-build-action-1096020929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 23:06:59 +0000 UTC FinishedAt: 2026-08-01 23:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 23:06:59 +0000 UTC FinishedAt: 2026-08-01 23:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 23:06:59 +0000 UTC FinishedAt: 2026-08-01 23:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 23:06:59 +0000 UTC FinishedAt: 2026-08-01 23:08:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6fe78807-adfb-49b4-9bd8-980563695b3b,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-workflow9t5jr/series-workflow9t5jr-build-action-1096020929/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-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"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:*7be22422-2707-46f0-8da2-d3ba87e736c7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6fe78807-adfb-49b4-9bd8-980563695b3b,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-workflow9t5jr/series-workflow9t5jr-build-action-2567041800/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-workflow9t5jr/series-workflow9t5jr-build-action-1096020929/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-01 23:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-01 23:08:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"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-workflow9t5jr/series-workflow9t5jr-convert-artifact-3512096922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-01 23:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-01 23:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 23:08:53 +0000 UTC FinishedAt: 2026-08-01 23:08:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 23:09:03 +0000 UTC FinishedAt: 2026-08-02 02:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9t5jr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_conn_new","ip_vs_try_bind_dest","ip_vs_check_template","ip_vs_expire_nodest_conn_flush","ip_vs_nat_xmit","ip_vs_tunnel_xmit","ip_vs_dr_xmit","ip_vs_icmp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_SCTP","IP_VS_DH","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_LC"],"series_id":"5696de25-5fc9-4dc6-99c3-a686b5c0f066","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 23:09:03 +0000 UTC FinishedAt: 2026-08-02 02:10:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7be22422-2707-46f0-8da2-d3ba87e736c7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6fe78807-adfb-49b4-9bd8-980563695b3b,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-workflow9t5jr/series-workflow9t5jr-build-action-2567041800/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-workflow9t5jr/series-workflow9t5jr-build-action-1096020929/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-workflow9t5jr/series-workflow9t5jr-convert-artifact-3512096922/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,}