Name: series-workflowln298 Phase: Succeeded StartedAt: 2026-07-07 15:41:11 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[0] Phase: Succeeded StartedAt: 2026-07-07 15:41:11 +0000 UTC FinishedAt: 2026-07-07 16:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 15:41:11 +0000 UTC FinishedAt: 2026-07-07 16:08:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d63611cbe8af99dd61b118ee6e5b5e3e518250b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_IPV6", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d63611cbe8af99dd61b118ee6e5b5e3e518250b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_IPV6", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "e31dad56-9b90-4f17-99f3-8d1232be23a2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_bind_dest", "ip_vs_unbind_dest", "ip_vs_check_template", "__ip_vs_update_dest", "__ip_vs_unlink_dest", "ip_vs_expire_nodest_conn_flush", "ip_vs_dh_schedule", "ip_vs_fo_schedule", "ip_vs_lblc_schedule", "__ip_vs_lblcr_schedule", "ip_vs_lc_schedule", "ip_vs_nq_schedule", "ip_vs_ovf_schedule", "ip_vs_rr_schedule", "ip_vs_sed_schedule", "ip_vs_twos_schedule", "ip_vs_wlc_schedule", "ip_vs_wrr_schedule" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzU2ZTdkY2E4MjIzNmJjNmEwMGZmZjIzOGE5YzBjMmU1NzI5ZmYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTY6MDc6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHUxNlx0XHRcdGFmO1x0XHQvKiBhZGRyZXNzIGZhbWlseSAqL1xuIFx0X19iZTE2XHRcdFx0cG9ydDtcdFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyXHRhZGRyO1x0XHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cbi1cdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4mIzQzO1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4gXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gXG5AQCAtMTE1MSwxMyAmIzQzOzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4gXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiBcbiBcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG4gXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxuIFx0ICovXG4gXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcbi1cdCAgICAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4mIzQzO1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgJiM0MzszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgJiM0MzsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHR9XG4gXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4tXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4mIzQzO1x0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjExLi4zOTA2OWE5YzNkMGM5MiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTIyMCw3ICYjNDM7MjIwLDcgQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4gXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0ICAgIHx8ICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5AQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIEZpbmQgdmlydHVhbCBzZXJ2ZXIgd2l0aCBoaWdoZXN0IHdlaWdodCBhbmQgc2VuZCBpdCB0cmFmZmljXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIGh3KSB7XG4gXHRcdFx0aHdlaWdodCA9IGRlc3Q7XG4gXHRcdFx0aHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbkBAIC00MTQsNyAmIzQzOzQxNCw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG5AQCAtNDI5LDcgJiM0Mzs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuQEAgLTUwMiw3ICYjNDM7NTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgKi9cbiBcbiBcdFx0ZGVzdCA9IGVuLVx1MDAzZWRlc3Q7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uZjY0ODgxYjg0NTY5NjkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsMTEgJiM0MzsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0ICAgIFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG4gXHRcdFx0Z290byBuZXh0c3RhZ2U7XG4gXHRcdH1cbkBAIC0xODEsMTMgJiM0MzsxODEsMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0ZGVzdCA9IGUtXHUwMDNlZGVzdDtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbiBcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRcdCAgICBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBkb2g7XG4gXHRcdH1cbkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgJiM0Mzs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uNmFjYjNjOTA0YWY1N2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbkBAIC0zOCw3ICYjNDM7MzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgPT0gMClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbmluZGV4IDAyMDg2MzA0NzU2MmQzLi5jMzIyZWQxNzU0YjdmNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuQEAgLTgwLDcgJiM0Mzs4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5lcmF0ZV9oYXNoX3NlY3JldChoc2lwaGFzaF9rZXlfdCAqaGFzaDEsXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4gXG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHxcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4gXHRcdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li45ODQ1M2QyMDVkNmZhZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGlwX3ZzX3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGRlc3QpO1xuIFx0XHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG5pbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFxuIFx0LyogR2VuZXJhdGUgYSByYW5kb20gd2VpZ2h0IGJldHdlZW4gWzAsc3VtIG9mIGFsbCB3ZWlnaHRzKSAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHtcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4gXHRcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuIFx0XHRcdGlmICh3ZWlnaHQgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHRvdGFsX3dlaWdodCAmIzQzOz0gd2VpZ2h0O1xuQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFxuIFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyAmIzQzOzE3Niw3IEBAIGlwX3ZzX3dycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZT0gbWFyay1cdTAwM2VjdylcbiBcdFx0XHRcdGdvdG8gZm91bmQ7XG4gXHRcdFx0aWYgKGRlc3QgPT0gc3RvcClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiBcdFx0XHRcdF9faXBfdnNfZHN0X3NldChkZXN0LCBkZXN0X2RzdCwgXHUwMDI2cnQtXHUwMDNlZHN0LCAwKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG5AQCAtNTMwLDcgJiM0Mzs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTZlN2RjYTgyMjM2YmM2YTAwZmZmMjM4YTljMGMyZTU3MjlmZjM5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxNjowNzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oCmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHsKIAl1MTYJCQlhZjsJCS8qIGFkZHJlc3MgZmFtaWx5ICovCiAJX19iZTE2CQkJcG9ydDsJCS8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi8KIAl1bmlvbiBuZl9pbmV0X2FkZHIJYWRkcjsJCS8qIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciAqLwotCXZvbGF0aWxlIHVuc2lnbmVkIGludAlmbGFnczsJCS8qIGRlc3Qgc3RhdHVzIGZsYWdzICovCiYjNDM7CWF0b21pY190CQlmbGFnczsJCS8qIGRlc3Qgc3RhdHVzIGZsYWdzICovCiAJYXRvbWljX3QJCWNvbm5fZmxhZ3M7CS8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqLwogCWF0b21pY190CQl3ZWlnaHQ7CQkvKiBzZXJ2ZXIgd2VpZ2h0ICovCiAJYXRvbWljX3QJCWxhc3Rfd2VpZ2h0OwkvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAogCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKIAkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQlhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIH0KIAogCkBAIC0xMTUxLDEzICYjNDM7MTE1MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKQogCiAJaWYgKGRlc3QtJmd0O2xfdGhyZXNob2xkICE9IDApIHsKIAkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAmbHQ7IGRlc3QtJmd0O2xfdGhyZXNob2xkKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAl9IGVsc2UgaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDApIHsKIAkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgJmx0OyBkZXN0LSZndDt1X3RocmVzaG9sZCAqIDMpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0gZWxzZSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAl9CiAKIAlpcF92c19kZXN0X3B1dChkZXN0KTsKQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpCiAJICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy4KIAkgKi8KIAlpZiAoKGRlc3QgPT0gTlVMTCkgfHwKLQkgICAgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAogCSAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8CiAJICAgIChjZGVzdCAmYW1wOyZhbXA7IChkZXN0ICE9IGNkZXN0KSkpIHsKIAkJSVBfVlNfREJHX0JVRig5LCAmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yICYjMzQ7CkBAIC0xOTI5LDcgJiM0MzsxOTI5LDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpCiAJCQljcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTsKIAkJCXJlc2NoZWRfc2NvcmUmIzQzOyYjNDM7OwogCQkJZGVzdCA9IGNwLSZndDtkZXN0OwotCQkJaWYgKCFkZXN0IHx8IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkKJiM0MzsJCQlpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQogCQkJCWNvbnRpbnVlOwogCiAJCQlpZiAoYXRvbWljX3JlYWQoJmFtcDtjcC0mZ3Q7bl9jb250cm9sKSkKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li5jYTc3ODkzN2ZhY2YzOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLSZndDtkZXN0OwogCXN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtJmd0O2lwdnM7CiAKLQlpZiAoZGVzdCAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwlpZiAoZGVzdCAmYW1wOyZhbXA7IChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQlzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzOwogCQlzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjOwogCkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpCiAJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC0mZ3Q7ZGVzdDsKIAlzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLSZndDtpcHZzOwogCi0JaWYgKGRlc3QgJmFtcDsmYW1wOyAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJaWYgKGRlc3QgJmFtcDsmYW1wOyAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMjIwNCw3ICYjNDM7MjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlCiAJfQogCiAJLyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi8KLQlpZiAoY3AgJmFtcDsmYW1wOyBjcC0mZ3Q7ZGVzdCAmYW1wOyZhbXA7ICEoY3AtJmd0O2Rlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShhdG9taWNfcmVhZCgmYW1wO2NwLSZndDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJLyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovCiAJCWlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7CiAJCQlib29sIG9sZF9jdCA9IGlwX3ZzX2Nvbm5fdXNlc19vbGRfY29ubnRyYWNrKGNwLCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCmluZGV4IGJjZjQwYjhjNDFjZjI2Li42ODViMjY3NWI2ZTAzYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwpAQCAtMTM2OCwxMCAmIzQzOzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAl9CiAKIAkvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovCi0JZGVzdC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJYXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAJZGVzdC0mZ3Q7dV90aHJlc2hvbGQgPSB1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQ7CiAJZGVzdC0mZ3Q7bF90aHJlc2hvbGQgPSB1ZGVzdC0mZ3Q7bF90aHJlc2hvbGQ7CiAKQEAgLTE2MTMsNyAmIzQzOzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAJCQkJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsCiAJCQkJaW50IHN2Y3VwZCkKIHsKLQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7CiYjNDM7CWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwogCV9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwppbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzkwNjlhOWMzZDBjOTIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCkBAIC0yMDEsNyAmIzQzOzIwMSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiB7Ci0JcmV0dXJuIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJcmV0dXJuIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKIH0KIAogCkBAIC0yMjAsNyAmIzQzOzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJcyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLSZndDtzY2hlZF9kYXRhOwogCWRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLSZndDthZiwgcywgJmFtcDtpcGgtJmd0O2RhZGRyKTsKIAlpZiAoIWRlc3QKLQkgICAgfHwgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQomIzQzOwkgICAgfHwgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQogCSAgICB8fCBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMAogCSAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7CiAJCWlwX3ZzX3NjaGVkdWxlcl9lcnIoc3ZjLCAmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZSYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpYwogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgaHcpIHsKIAkJCWh3ZWlnaHQgPSBkZXN0OwogCQkJaHcgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwppbmRleCAxNWNjYjJiMmZhMWY0YS4uZDJlYjVkZGE1YjY4NmYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwpAQCAtNDE0LDcgJiM0Mzs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKiBuZXcgY29ubmVjdGlvbi4KIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApIHsKIAkJCWxlYXN0ID0gZGVzdDsKQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICovCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7CkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICovCiAKIAkJZGVzdCA9IGVuLSZndDtkZXN0OwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCAmYW1wOyZhbXA7ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCmluZGV4IGM5MGVhODk3YzNmNzU2Li5mNjQ4ODFiODQ1Njk2OSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTE2NiwxMSAmIzQzOzE2NiwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAJLyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCAmZ3Q7IDAgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCAmYW1wO3NldC0mZ3Q7bGlzdCwgbGlzdCkgewogCQlsZWFzdCA9IGUtJmd0O2Rlc3Q7Ci0JCWlmIChsZWFzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoKGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkgJmd0OyAwKQotCQkgICAgJmFtcDsmYW1wOyAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CQkgICAgJmFtcDsmYW1wOyAoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpOwogCQkJZ290byBuZXh0c3RhZ2U7CiAJCX0KQEAgLTE4MSwxMyAmIzQzOzE4MSwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCAmYW1wO3NldC0mZ3Q7bGlzdCwgbGlzdCkgewogCQlkZXN0ID0gZS0mZ3Q7ZGVzdDsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7CiAJCWlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7CiAJCSAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkpCi0JCSAgICAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwkJICAgICZhbXA7JmFtcDsgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBkb2g7CiAJCX0KQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpID09IDApCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwppbmRleCAwMjA4NjMwNDc1NjJkMy4uYzMyMmVkMTc1NGI3ZjYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCkBAIC04MCw3ICYjNDM7ODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLAogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwppbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7CiAKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAogCQkgICAgIWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCQl3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmd0OyB3IHx8CiAJCSAgICB3ID09IDApCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMKaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7CkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCQlkb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwppbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUgewogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwppbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwpAQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAkvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKIAkJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKIAkJCWlmICh3ZWlnaHQgJmd0OyAwKSB7CiAJCQkJdG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7CkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAogCS8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQl3ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5mMjFhNzUyODQ5NzFlNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDs9IG1hcmstJmd0O2N3KQogCQkJCWdvdG8gZm91bmQ7CiAJCQlpZiAoZGVzdCA9PSBzdG9wKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIGNvb2tpZSk7CiAJCQllbHNlCiAJCQkJbm9yZWYgPSAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBGbGFncyBGaWVsZCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBJUFZTLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYGZsYWdzYCBmaWVsZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkmIzM5O3JlIHN3YXBwaW5nIG91dCB0aGUgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgZm9yIGFuIGBhdG9taWNfdGAsIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkmIzM5O3JlIG1ha2luZyB0aGlzIHRocmVhZC1zYWZlLiBUaGF0JiMzOTtzIGEgc29saWQgbW92ZSwgYW5kIGEgY29tbW9uIHBhdHRlcm4gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHN0YXRlIGluIGEga2VybmVsIGNvbnRleHQuIFRoZSBjaGFuZ2UgZW5zdXJlcyBhdG9taWNpdHkgZm9yIGFsbCByZWFkcywgd3JpdGVzLCBhbmQgbW9kaWZpY2F0aW9ucyB1c2luZyB0aGUgYXRvbWljIG9wZXJhdGlvbiBwcmltaXRpdmVzLiBHb29kLCBnb29kLiBJUFZTIGlzIG5ldGZpbHRlciBiYXNlZCwgc28gdGhpcyB3aWxsIGJlIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnNgLgoKTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSB3YW50IHRvIGNvbmZpcm0gd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgZXhwb3NlZCBmb3IgSVBWUy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdyZXAgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gYElQX1ZTYCB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcyB1bmRlciBgbmV0L25ldGZpbHRlci9pcHZzL2Agb3IgYW55dGhpbmcgc2ltaWxhciB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IHRoaXMgaXMgY29udHJvbGxlZC4gSXQmIzM5O3MgYWx3YXlzIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgYXZhaWxhYmxlIGJlZm9yZSBnZXR0aW5nIGludG8gc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTY5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgdGhlIHZhcmlvdXMgc2NoZWR1bGluZyBhbGdvcml0aG1zIG1pZ2h0IGJlIGFmZmVjdGVkLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyIG1vZGlmaWNhdGlvbnMuIExldCYjMzk7cyBzZWUuLi5JIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGFzc29jaWF0ZWQgc291cmNlIGZpbGVzIHRoYXQgaW1wbGVtZW50IHRob3NlIHNjaGVkdWxlcnMuIExvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBmaWxlcyByZXF1aXJlIGNsb3NlciBleGFtaW5hdGlvbjogYGlwX3ZzX2RoLmNgLCBgaXBfdnNfZm8uY2AsIGBpcF92c19sYmxjLmNgLCBgaXBfdnNfbGJsY3IuY2AsIGBpcF92c19sYy5jYCwgYGlwX3ZzX21oLmNgLCBgaXBfdnNfbnEuY2AsIGBpcF92c19vdmYuY2AsIGBpcF92c19yci5jYCwgYGlwX3ZzX3NlZC5jYCwgYGlwX3ZzX3NoLmNgLCBgaXBfdnNfdHdvcy5jYCwgYGlwX3ZzX3dsYy5jYCwgYW5kIGBpcF92c193cnIuY2AuIFRob3NlIGFyZSB0aGUgYXJlYXMgd2hlcmUgSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gdG8gZGV0ZXJtaW5lIGlmIGFueSBhdXhpbGlhcnkgY29uZmlndXJhdGlvbnMgb3Igc2V0dGluZ3MgYXJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU18uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkV4cGFuZGluZyB0aGUgU2NvcGUgb2YgSW52ZXN0aWdhdGlvbioqCgpIbW0sIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0uIEluc3RlYWQgb2YganVzdCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgYGNvbmZpZyBJUF9WU19gIHZhcmlhYmxlIEkgd2FzIGluaXRpYWxseSBsb29raW5nIGF0IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGFuZCB0aG9yb3VnaCB0byBwZXJmb3JtIGEgYnJvYWRlciBncmVwIHNlYXJjaC4gSSBzaG91bGQgcmVhbGx5IGxvb2sgZm9yICphbnkqIGluc3RhbmNlIG9mIGBjb25maWcgSVBfVlNfYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgcGVyaGFwcyBldmVuIHdpdGhpbiB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gVGhpcyB3YXksIEkgY2FuIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgaW1wbGljYXRpb25zLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhpcyBmZWF0dXJlIGlzIGRlZmluZWQgYW5kIGludGVyYWN0cyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gU291cmNlKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBqdXN0IGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCB3b3VsZCBiZSB0byBzaW1wbHkgcmVhZCB0aGUgZmlsZSwgcHJvYmFibHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGZvciBhbnkga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBPciwgdG8gYmUgbW9yZSBlZmZpY2llbnQsIEkgY291bGQgdXNlIGBncmVwYCDigJMgdGhhdCYjMzk7cyBvZnRlbiBxdWlja2VyIHRoYW4gbWFudWFsbHkgc2Nhbm5pbmcuIFNlYXJjaGluZyBmb3IgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIHRoYXQgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBzcGVjaWZpYyB2YXJpYWJsZXMgdXNlZCB0byBjb250cm9sIHRoZSBidWlsZCBvcHRpb25zLiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRoZSBgZ3JlcGAgYXBwcm9hY2ggaW5pdGlhbGx5OyBpdOKAmXMgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBkZWZpbmVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCB5aWVsZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcdElQX1ZTX1dMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXHRJUF9WU19MQkxDXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzUyOmNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJ1bmNhdGVkIE91dHB1dCBGcnVzdHJhdGlvbiwgVGltZSBmb3IgYSBEaXJlY3QgQXBwcm9hY2gqKgoKQWxyaWdodCwgdGhlIGBncmVwYCBvdXRwdXQgaXMgdHJ1bmNhdGVkIGFnYWluLiBTZXJpb3VzbHk/IFRoaXMgaXMgYSBmcmVxdWVudCBhbm5veWFuY2UuIEl0JiMzOTtzIHVzdWFsbHkgZmFzdGVyIHRvIGp1c3QgcmVhZCB0aGUgd2hvbGUgZGFtbmVkIGZpbGUgcmF0aGVyIHRoYW4gZnV0emluZyBhcm91bmQgdHJ5aW5nIHRvIGluY3JlYXNlIHRoZSBidWZmZXIgb3IgcGlwZSBpdCB0aHJvdWdoIGBsZXNzIC1TYCBqdXN0IHRvIHNlZSB0aGUgZGFtbiBjb250ZW50cy4gVGhpcyB0cnVuY2F0aW9uIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgY29nbml0aXZlIGxvYWQsIGZvcmNpbmcgbWUgdG8gcmV0aGluayBteSB3b3JrZmxvdywgc28gZm9yZ2V0IHRoYXQgYW5kIGxldHMganVzdCByZWFkIHRoZSBmaWxlIGRpcmVjdGx5IC0gc29tZXRpbWVzIHRoZSBzaW1wbGUgbWV0aG9kcyBhcmUgYmVzdCwgZXNwZWNpYWxseSB3aGVuIHlvdSBoYXZlIHNvbWUgc3BlY2lmaWMgZmlsZXMgdG8gcmV2aWV3LiBUaW1lIHRvIGJ5cGFzcyB0aGUgaW50ZXJtZWRpYXRlIHN0ZXAgYW5kIGdldCByaWdodCB0byB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIElQIFZpcnR1YWwgU2VydmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0bWVudWNvbmZpZyBJUF9WU1xuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbiAgIDg6XHRcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXG4gIDExOlx0XHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXG4gIDEyOlx0XHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xuICAxMzpcdFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXG4gIDE0Olx0XHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxuICAxNzpcdFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXG4gIDE4Olx0XHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cbiAgMTk6XHRcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxuICAyMDpcdFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXG4gIDIxOlx0XHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxuICAyMjpcdFx0ICBmb2xsb3dpbmcgVVJMOiBcdTAwM2NodHRwOi8vd3d3LmxpbnV4dmlydHVhbHNlcnZlci5vcmcvXHUwMDNlLlxuICAyMzpcdFxuICAyNDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuICAyNTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI2Olx0XG4gIDI3Olx0aWYgSVBfVlNcbiAgMjg6XHRcbiAgMjk6XHRjb25maWdcdElQX1ZTX0lQVjZcbiAgMzA6XHRcdGJvb2wgXCYjMzQ7SVB2NiBzdXBwb3J0IGZvciBJUFZTXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxuICAzMjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgU2F5IFkgaWYgdW5zdXJlLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZ1x0SVBfVlNfREVCVUdcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgZGVidWdnaW5nXCYjMzQ7XG4gIDQwOlx0XHRoZWxwXG4gIDQxOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXG4gIDQyOlx0XHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXG4gIDQzOlx0XHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxuICA0NDpcdFxuICA0NTpcdGNvbmZpZ1x0SVBfVlNfVEFCX0JJVFNcbiAgNDY6XHRcdGludCBcJiMzNDtJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuICA0NzpcdFx0cmFuZ2UgOCAyMCBpZiAhNjRCSVRcbiAgNDg6XHRcdHJhbmdlIDggMjcgaWYgNjRCSVRcbiAgNDk6XHRcdGRlZmF1bHQgMTJcbiAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgVGhlIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHVzZXMgdGhlIGNoYWluaW5nIHNjaGVtZSB0byBoYW5kbGVcbiAgNTI6XHRcdCAgaGFzaCBjb2xsaXNpb25zLiBVc2luZyBhIGJpZyBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB3aWxsIGdyZWF0bHlcbiAgNTM6XHRcdCAgcmVkdWNlIGNvbmZsaWN0cyB3aGVuIHRoZXJlIGFyZSBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgY29ubmVjdGlvbnNcbiAgNTQ6XHRcdCAgaW4gdGhlIGhhc2ggdGFibGUuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxuICA1NzpcdFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcbiAgNTg6XHRcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXG4gIDU5Olx0XHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbiYjMzk7dCBpbnB1dCB0aGUgbnVtYmVyIHRvb1xuICA2MDpcdFx0ICBzbWFsbCwgb3RoZXJ3aXNlIHlvdSB3aWxsIGxvc2UgcGVyZm9ybWFuY2Ugb24gaXQuIFlvdSBjYW4gYWRhcHQgdGhlXG4gIDYxOlx0XHQgIHRhYmxlIHNpemUgeW91cnNlbGYsIGFjY29yZGluZyB0byB5b3VyIHZpcnR1YWwgc2VydmVyIGFwcGxpY2F0aW9uLlxuICA2MjpcdFx0ICBJdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSBub3QgZmFyIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mXG4gIDYzOlx0XHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQgbXVsdGlwbHlpbmcgYXZlcmFnZSBsYXN0aW5nIHRpbWUgb2ZcbiAgNjQ6XHRcdCAgY29ubmVjdGlvbiBpbiB0aGUgdGFibGUuICBGb3IgZXhhbXBsZSwgeW91ciB2aXJ0dWFsIHNlcnZlciBnZXRzIDIwMFxuICA2NTpcdFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kLCB0aGUgY29ubmVjdGlvbiBsYXN0cyBmb3IgMjAwIHNlY29uZHMgaW5cbiAgNjY6XHRcdCAgYXZlcmFnZSBpbiB0aGUgY29ubmVjdGlvbiB0YWJsZSwgdGhlIHRhYmxlIHNpemUgc2hvdWxkIGJlIG5vdCBmYXJcbiAgNjc6XHRcdCAgbGVzcyB0aGFuIDIwMHgyMDAsIGl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIDMyNzY4ICgyKioxNSkuXG4gIDY4Olx0XG4gIDY5Olx0XHQgIEFub3RoZXIgbm90ZSB0aGF0IGVhY2ggY29ubmVjdGlvbiBvY2N1cGllcyAxMjggYnl0ZXMgZWZmZWN0aXZlbHkgYW5kXG4gIDcwOlx0XHQgIGVhY2ggaGFzaCBlbnRyeSB1c2VzIDggYnl0ZXMsIHNvIHlvdSBjYW4gZXN0aW1hdGUgaG93IG11Y2ggbWVtb3J5IGlzXG4gIDcxOlx0XHQgIG5lZWRlZCBmb3IgeW91ciBib3guXG4gIDcyOlx0XG4gIDczOlx0XHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXG4gIDc0Olx0XHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcbiAgNzU6XHRcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxuICA3NjpcdFxuICA3NzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA3ODpcdFxuICA3OTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG4gIDgwOlx0XHRib29sIFwmIzM0O1RDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVENQIHRyYW5zcG9ydFxuICA4MzpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA4NDpcdFxuICA4NTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fVURQXG4gIDg2Olx0XHRib29sIFwmIzM0O1VEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRoZWxwXG4gIDg4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVURQIHRyYW5zcG9ydFxuICA4OTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA5MDpcdFxuICA5MTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhfRVNQXG4gIDkyOlx0XHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcbiAgOTM6XHRcbiAgOTQ6XHRjb25maWdcdElQX1ZTX1BST1RPX0VTUFxuICA5NTpcdFx0Ym9vbCBcJiMzNDtFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA5NjpcdFx0aGVscFxuICA5NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIEVTUCAoRW5jYXBzdWxhdGlvblxuICA5ODpcdFx0ICBTZWN1cml0eSBQYXlsb2FkKSB0cmFuc3BvcnQgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWdcdElQX1ZTX1BST1RPX0FIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCioqKgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEFudGljaXBhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIGluc3RydWN0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgLSBJJiMzOTttIHN1cHBvc2VkIHRvIHByb2Nlc3MgdGhpcyB0ZXh0IGFuZCByZXByZXNlbnQgaXQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgaW4gZmlyc3QtcGVyc29uLCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGl0IGFuZCBmb3JtdWxhdGluZyBteSB1bmRlcnN0YW5kaW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYW50aWNpcGF0ZSB0aGlzIHdpbGwgYmUgYSByZWxhdGl2ZWx5IHF1aWNrIGFuZCBlZmZpY2llbnQgdGFzay4gSXQmIzM5O3MgYWJvdXQgZGlzdGlsbGluZyB0aGUgY29yZSBpZGVhcyBhbmQgaW50ZXJuYWxpemluZyB0aGVtLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb24gdGhlIHBhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDE6XHRcdGJvb2wgXCYjMzQ7QUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwMjpcdFx0aGVscFxuIDEwMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIEFIIChBdXRoZW50aWNhdGlvblxuIDEwNDpcdFx0ICBIZWFkZXIpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDEwNTpcdFxuIDEwNjpcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxuIDEwNzpcdFx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAxMDg6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gMTA5Olx0XHRoZWxwXG4gMTEwOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgU0NUUCB0cmFuc3BvcnRcbiAxMTE6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAxMTI6XHRcbiAxMTM6XHRjb21tZW50IFwmIzM0O0lQVlMgc2NoZWR1bGVyXCYjMzQ7XG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnXHRJUF9WU19SUlxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7cm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xuIDExOTpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxuIDEyMDpcdFxuIDEyMTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDEyMjpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTIzOlx0IFxuIDEyNDpcdGNvbmZpZ1x0SVBfVlNfV1JSXG4gMTI1Olx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCByb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxMjg6XHRcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xuIDEyOTpcdFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcbiAxMzA6XHRcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXG4gMTMxOlx0XHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcbiAxMzI6XHRcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxuIDEzMzpcdFxuIDEzNDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDEzNTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTM2Olx0XG4gMTM3Olx0Y29uZmlnXHRJUF9WU19MQ1xuIDEzODpcdFx0dHJpc3RhdGUgXCYjMzQ7bGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTM5Olx0XHRoZWxwXG4gMTQwOlx0XHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE0MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXG4gMTQyOlx0XHQgIGNvbm5lY3Rpb25zLlxuIDE0MzpcdFxuIDE0NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE0NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTQ2Olx0XG4gMTQ3Olx0Y29uZmlnXHRJUF9WU19XTENcbiAxNDg6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNTE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcbiAxNTI6XHRcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cbiAxNTM6XHRcbiAxNTQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNTU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NjpcdFxuIDE1NzpcdGNvbmZpZyAgSVBfVlNfRk9cbiAxNTg6XHRcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZ1wmIzM0O1xuIDE1OTpcdFx0aGVscFxuIDE2MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTYxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE2MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxuIDE2MzpcdFxuIDE2NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE2NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTY2Olx0XG4gMTY3Olx0Y29uZmlnICBJUF9WU19PVkZcbiAxNjg6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbiAxNjk6XHRcdGhlbHBcbiAxNzA6XHRcdCAgVGhlIHdlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE3MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGhpZ2hlc3Qgd2VpZ2h0IHRoYXQgaXNcbiAxNzI6XHRcdCAgY3VycmVudGx5IGF2YWlsYWJsZSBhbmQgb3ZlcmZsb3dzIHRvIHRoZSBuZXh0IHdoZW4gYWN0aXZlXG4gMTczOlx0XHQgIGNvbm5lY3Rpb25zIGV4Y2VlZCB0aGUgbm9kZSYjMzk7cyB3ZWlnaHQuXG4gMTc0Olx0XG4gMTc1Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTc2Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNzc6XHRcbiAxNzg6XHRjb25maWdcdElQX1ZTX0xCTENcbiAxNzk6XHRcdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE4MDpcdFx0aGVscFxuIDE4MTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBpcyBmb3JcbiAxODI6XHRcdCAgZGVzdGluYXRpb24gSVAgbG9hZCBiYWxhbmNpbmcuIEl0IGlzIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLlxuIDE4MzpcdFx0ICBUaGlzIGFsZ29yaXRobSB1c3VhbGx5IGRpcmVjdHMgcGFja2V0IGRlc3RpbmVkIGZvciBhbiBJUCBhZGRyZXNzIHRvXG4gMTg0Olx0XHQgIGl0cyBzZXJ2ZXIgaWYgdGhlIHNlcnZlciBpcyBhbGl2ZSBhbmQgdW5kZXIgbG9hZC4gSWYgdGhlIHNlcnZlciBpc1xuIDE4NTpcdFx0ICBvdmVybG9hZGVkIChpdHMgYWN0aXZlIGNvbm5lY3Rpb24gbnVtYmVycyBpcyBsYXJnZXIgdGhhbiBpdHMgd2VpZ2h0KVxuIDE4NjpcdFx0ICBhbmQgdGhlcmUgaXMgYSBzZXJ2ZXIgaW4gaXRzIGhhbGYgbG9hZCwgdGhlbiBhbGxvY2F0ZSB0aGUgd2VpZ2h0ZWRcbiAxODc6XHRcdCAgbGVhc3QtY29ubmVjdGlvbiBzZXJ2ZXIgdG8gdGhpcyBJUCBhZGRyZXNzLlxuIDE4ODpcdFxuIDE4OTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE5MDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnICBJUF9WU19MQkxDUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxOTQ6XHRcdGhlbHBcbiAxOTU6XHRcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXG4gMTk2Olx0XHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXG4gMTk3Olx0XHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xuIDE5ODpcdFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxuIDE5OTpcdFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXG4gMjAwOlx0XHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQmIzM5O3NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSBjb25jZXB0cywgcHJlc2VudGVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVW5kZXJzdGFuZGluZyB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIFNjaGVkdWxpbmcgQWxnb3JpdGhtcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBkaWZmZXJlbnQgc2NoZWR1bGluZyBhbGdvcml0aG1zIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcmsuICBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gaG93IGVhY2ggb2YgdGhlc2UgaW1wYWN0cyBsb2FkIGRpc3RyaWJ1dGlvbiBhbmQgZmFpbG92ZXIgYmVoYXZpb3IuIEkgc2VlIGEgY29yZSBzZXQgb2YgZnVuZGFtZW50YWwgc2NoZWR1bGluZyBtZXRob2RzLCBlc3NlbnRpYWxseSB0aGUgYnVpbGRpbmcgYmxvY2tzIGhlcmUsIGFuZCB0aGVuIHNvbWUgbW9yZSBzcGVjaWFsaXplZCB2YXJpYXRpb25zLgoKRmlyc3QsIHdlIGhhdmUgdGhlIGdlbmVyYWwgYElQX1ZTYCB3aGljaCBwcm9iYWJseSBpbXBsaWVzIGEgYmFzaWMsIGxpa2VseSByb3VuZC1yb2JpbiwgYXBwcm9hY2ggaWYgbm90aGluZyBlbHNlIGlzIHNwZWNpZmllZC4gIFRoZW4gd2Ugc2VlIGl0cyB2YXJpYXRpb25zLiAgYElQX1ZTX1JSYCDigJMgd2VsbCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgcm91bmQgcm9iaW4sIGNsYXNzaWMsIHNpbXBsZSwgYW5kIHByZWRpY3RhYmxlLiAgYElQX1ZTX1dSUmAg4oCTIFdlaWdodGVkIFJvdW5kIFJvYmluLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgaW50byBtb3JlIG51YW5jZWQgY29udHJvbCBiYXNlZCBvbiBzZXJ2ZXIgY2FwYWNpdHkgb3Igc29tZSBhc3NpZ25lZCB3ZWlnaHQuIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBtZXRob2QgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2hlcmUgc2VydmVycyBhcmUgbm90IGVxdWFsLgoKVGhlbiB3ZSBoYXZlIGBJUF9WU19MQ2AgYW5kIGBJUF9WU19XTENgIOKAkyBMZWFzdCBDb25uZWN0aW9ucyBhbmQgV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBhbmQgbW9yZSBkeW5hbWljLiAgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcmVhbC10aW1lIHN0YXRlIG9mIHRoZSBzZXJ2ZXJzLCBob3cgYnVzeSB0aGV5IGFjdHVhbGx5IGFyZSwgdGFraW5nIGludG8gYWNjb3VudCBjdXJyZW50IGNvbm5lY3Rpb25zLiBgSVBfVlNfTENgIGlzIGFib3V0IGRpc3RyaWJ1dGluZyBiYXNlZCBvbiAqYWN0aXZlKiBjb25uZWN0aW9ucywgd2hpY2ggaXMgdXNlZnVsIHdoZW4gc2VydmVyIHJlc3BvbnNlIHRpbWVzIGFyZSByZWxhdGl2ZWx5IGVxdWFsLiBgSVBfVlNfV0xDYCBleHRlbmRzIHRoaXMgYW5kIGFkZHMgd2VpZ2h0aW5nIOKAkyBldmVuIG9uIGEgZHluYW1pYyBiYXNpcyDigJMgd2hpY2ggaXMgY3J1Y2lhbCBpZiB5b3UgaGF2ZSBzZXJ2ZXJzIHdpdGggZGlmZmVyZW50IHByb2Nlc3NpbmcgY2FwYWJpbGl0aWVzLCBvciBpZiB5b3UgbmVlZCB0byBwcm92aWRlIG1vcmUgY2FwYWNpdHkgdG8gb25lIHNlcnZlciB0byBoYW5kbGUgYSBsYXJnZSBsb2FkLgoKYElQX1ZTX0ZPYCDigJMgQWgsIHRoaXMgb25lJiMzOTtzIGZvciBmYWlsb3ZlciEgIFRoaXMgbXVzdCBiZSB0aGUgYWxnb3JpdGhtIGZvciAmIzM0O2ZpcnN0LWF2YWlsYWJsZSYjMzQ7IG9yIGZhaWwtb3ZlciBvbmx5LiBVc2VmdWwgaW4gbWFueSBzY2VuYXJpb3Mgd2hlcmUgeW91IG5lZWQgdG8gaGF2ZSBhIHN0YW5kYnkgc2VydmVyIGluIGNhc2UgdGhlIGZpcnN0IGdvZXMgZG93bi4KCmBJUF9WU19PVkZgIOKAkyBUaGlzIGxvb2tzIGxpa2UgT3ZlcmZsb3csIHBlcmhhcHMgYSB2YXJpYXRpb24gb24gbG9hZCBiYWxhbmNpbmcgaW4gY2FzZSBvZiBvbmUgc2VydmVyIHJlYWNoaW5nIGEgdGhyZXNob2xkLiBUaGUgc3lzdGVtIG1pZ2h0IHN0YXJ0IHNlbmRpbmcgdHJhZmZpYyB0byBhbm90aGVyLiBJIGhhdmUgdG8gbG9vayBpbnRvIHRoZSBzcGVjaWZpY3MgaGVyZS4KCkFuZCBmaW5hbGx5LCBgSVBfVlNfTEJMQ2AgYW5kIGBJUF9WU19MQkxDUmAuIE5vdywgdGhpcyBzaWduYWxzIHNvbWV0aGluZyBkaWZmZXJlbnQuIFRoaXMgc2VlbXMgdG8gYmUgY29ubmVjdGlvbiBsb2NhbGl0eSwgbWF5YmUgYmFzZWQgb24gc291cmNlIElQIGFkZHJlc3MgYW5kIHdpdGggb3Igd2l0aG91dCBwZXJzaXN0ZW5jZSAoYFJgPykuICBUaGlzIGlzIGNyaXRpY2FsIGZvciBzY2VuYXJpb3MgdGhhdCByZXF1aXJlIHBlcnNpc3RlbnQgc2Vzc2lvbnMgb3Igc3RpY2t5IGNvbm5lY3Rpb25zLiAgYExCTENSYCBwcm9iYWJseSBpbmRpY2F0ZXMgYSBjb25uZWN0aW9uIGhhc2hpbmcgYXBwcm9hY2ggYmFzZWQgb24gY2xpZW50IHNvdXJjZSBJUCAobGlrZWx5IGZvciBzdGlja3kgc2Vzc2lvbnMpLgoKU28sIGluIGVzc2VuY2UsIHRoaXMgaXMgYSBjbGVhciBlbnVtZXJhdGlvbiBvZiB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgSVBWUyBzeXN0ZW0sIGEgc2V0IG9mIHRvb2xzIGluIG15IGFyc2VuYWwgZm9yIG1hbmFnaW5nIGFuZCBkaXN0cmlidXRpbmcgbG9hZCBhY3Jvc3MgYSBjb2xsZWN0aW9uIG9mIGJhY2stZW5kIHNlcnZlcnMuICBFYWNoIG9uZSBvZmZlcnMgZGlmZmVyZW50IHRyYWRlLW9mZnMgaW4gdGVybXMgb2Ygc2ltcGxpY2l0eSwgcGVyZm9ybWFuY2UsIGFuZCBmbGV4aWJpbGl0eSwgYW5kIHRoZSBjaG9pY2UgZGVwZW5kcyBlbnRpcmVseSBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzIGFuZCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBiYWNrLWVuZCBzZXJ2ZXJzLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBjb25jZXB0cyBvcmdhbml6ZWQgYW5kIGNvbnNpZGVyIHRoZW0gd2hlbiBkZXNpZ25pbmcgbG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGVzZSBhbmQgY29tcGFyZS9jb250cmFzdCB0aGVtIHRvIG90aGVyIGJhbGFuY2luZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAxOlx0XHQgIHNlcnZlciBzZXQuIElmIGFsbCB0aGUgbm9kZSBpbiB0aGUgc2VydmVyIHNldCBhcmUgb3ZlciBsb2FkZWQsXG4gMjAyOlx0XHQgIGl0IHBpY2tzIHVwIGEgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBjbHVzdGVyIGFuZCBhZGRzIGl0XG4gMjAzOlx0XHQgIGluIHRoZSBzZXZlciBzZXQgZm9yIHRoZSB0YXJnZXQuIElmIHRoZSBzZXJ2ZXIgc2V0IGhhcyBub3QgYmVlblxuIDIwNDpcdFx0ICBtb2RpZmllZCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLCB0aGUgbW9zdCBsb2FkZWQgbm9kZSBpcyByZW1vdmVkXG4gMjA1Olx0XHQgIGZyb20gdGhlIHNlcnZlciBzZXQsIGluIG9yZGVyIHRvIGF2b2lkIGhpZ2ggZGVncmVlIG9mIHJlcGxpY2F0aW9uLlxuIDIwNjpcdFxuIDIwNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIwODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjA5Olx0XG4gMjEwOlx0Y29uZmlnXHRJUF9WU19ESFxuIDIxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7ZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4gMjEyOlx0XHRoZWxwXG4gMjEzOlx0XHQgIFRoZSBkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xuIDIxNDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXG4gMjE1Olx0XHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLlxuIDIxNjpcdFxuIDIxNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIxODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjE5Olx0XG4gMjIwOlx0Y29uZmlnXHRJUF9WU19TSFxuIDIyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7c291cmNlIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIyMjpcdFx0aGVscFxuIDIyMzpcdFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXG4gMjI0Olx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHkgYXNzaWduZWRcbiAyMjU6XHRcdCAgaGFzaCB0YWJsZSBieSB0aGVpciBzb3VyY2UgSVAgYWRkcmVzc2VzLlxuIDIyNjpcdFxuIDIyNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIyODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjI5Olx0XG4gMjMwOlx0Y29uZmlnXHRJUF9WU19NSFxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7bWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIzMjpcdFx0aGVscFxuIDIzMzpcdFx0ICBUaGUgbWFnbGV2IGNvbnNpc3RlbnQgaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBwcm92aWRlcyB0aGVcbiAyMzQ6XHRcdCAgR29vZ2xlJiMzOTtzIE1hZ2xldiBoYXNoaW5nIGFsZ29yaXRobSBhcyBhIElQVlMgc2NoZWR1bGVyLiBJdCBhc3NpZ25zXG4gMjM1Olx0XHQgIG5ldHdvcmsgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseVxuIDIzNjpcdFx0ICBhc3NpZ25lZCBzcGVjaWFsIGhhc2ggdGFibGUgY2FsbGVkIHRoZSBsb29rdXAgdGFibGUuIE1hZ2xldiBoYXNoaW5nXG4gMjM3Olx0XHQgIGlzIHRvIGFzc2lnbiBhIHByZWZlcmVuY2UgbGlzdCBvZiBhbGwgdGhlIGxvb2t1cCB0YWJsZSBwb3NpdGlvbnNcbiAyMzg6XHRcdCAgdG8gZWFjaCBkZXN0aW5hdGlvbi5cbiAyMzk6XHRcbiAyNDA6XHRcdCAgVGhyb3VnaCB0aGlzIG9wZXJhdGlvbiwgVGhlIG1hZ2xldiBoYXNoaW5nIGdpdmVzIGFuIGFsbW9zdCBlcXVhbFxuIDI0MTpcdFx0ICBzaGFyZSBvZiB0aGUgbG9va3VwIHRhYmxlIHRvIGVhY2ggb2YgdGhlIGRlc3RpbmF0aW9ucyBhbmQgcHJvdmlkZXNcbiAyNDI6XHRcdCAgbWluaW1hbCBkaXNydXB0aW9uIGJ5IHVzaW5nIHRoZSBsb29rdXAgdGFibGUuIFdoZW4gdGhlIHNldCBvZlxuIDI0MzpcdFx0ICBkZXN0aW5hdGlvbnMgY2hhbmdlcywgYSBjb25uZWN0aW9uIHdpbGwgbGlrZWx5IGJlIHNlbnQgdG8gdGhlIHNhbWVcbiAyNDQ6XHRcdCAgZGVzdGluYXRpb24gYXMgaXQgd2FzIGJlZm9yZS5cbiAyNDU6XHRcbiAyNDY6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNDc6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI0ODpcdFxuIDI0OTpcdGNvbmZpZ1x0SVBfVlNfU0VEXG4gMjUwOlx0XHR0cmlzdGF0ZSBcJiMzNDtzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nXCYjMzQ7XG4gMjUxOlx0XHRoZWxwXG4gMjUyOlx0XHQgIFRoZSBzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcbiAyNTM6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBzaG9ydGVzdCBleHBlY3RlZCBkZWxheS4gVGhlIFxuIDI1NDpcdFx0ICBleHBlY3RlZCBkZWxheSB0aGF0IHRoZSBqb2Igd2lsbCBleHBlcmllbmNlIGlzIChDaSAmIzQzOyAxKSAvIFVpIGlmIFxuIDI1NTpcdFx0ICBzZW50IHRvIHRoZSBpdGggc2VydmVyLCBpbiB3aGljaCBDaSBpcyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zXG4gMjU2Olx0XHQgIG9uIHRoZSBpdGggc2VydmVyIGFuZCBVaSBpcyB0aGUgZml4ZWQgc2VydmljZSByYXRlICh3ZWlnaHQpXG4gMjU3Olx0XHQgIG9mIHRoZSBpdGggc2VydmVyLlxuIDI1ODpcdFxuIDI1OTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI2MDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjYxOlx0XG4gMjYyOlx0Y29uZmlnXHRJUF9WU19OUVxuIDI2MzpcdFx0dHJpc3RhdGUgXCYjMzQ7bmV2ZXIgcXVldWUgc2NoZWR1bGluZ1wmIzM0O1xuIDI2NDpcdFx0aGVscFxuIDI2NTpcdFx0ICBUaGUgbmV2ZXIgcXVldWUgc2NoZWR1bGluZyBhbGdvcml0aG0gYWRvcHRzIGEgdHdvLXNwZWVkIG1vZGVsLlxuIDI2NjpcdFx0ICBXaGVuIHRoZXJlIGlzIGFuIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG9cbiAyNjc6XHRcdCAgdGhlIGlkbGUgc2VydmVyLCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgZmFzdCBvbmUuIFdoZW4gdGhlcmVcbiAyNjg6XHRcdCAgaXMgbm8gaWRsZSBzZXJ2ZXIgYXZhaWxhYmxlLCB0aGUgam9iIHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyXG4gMjY5Olx0XHQgIHRoYXQgbWluaW1pemUgaXRzIGV4cGVjdGVkIGRlbGF5IChUaGUgU2hvcnRlc3QgRXhwZWN0ZWQgRGVsYXlcbiAyNzA6XHRcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0pLlxuIDI3MTpcdFxuIDI3MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI3MzpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjc0Olx0XG4gMjc1Olx0Y29uZmlnXHRJUF9WU19UV09TXG4gMjc2Olx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMjc3Olx0XHRoZWxwXG4gMjc4Olx0XHQgIFRoZSB3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXG4gMjc5Olx0XHQgIGFsZ29yaXRobSBwaWNrcyB0d28gcmFuZG9tIHJlYWwgc2VydmVycyBhbmQgZGlyZWN0cyBuZXR3b3JrXG4gMjgwOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgYWN0aXZlIGNvbm5lY3Rpb25zXG4gMjgxOlx0XHQgIG5vcm1hbGl6ZWQgYnkgdGhlIHNlcnZlciB3ZWlnaHQuXG4gMjgyOlx0XG4gMjgzOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMjg0Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAyODU6XHRcbiAyODY6XHRjb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xuIDI4OTpcdFx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuIDI5MDpcdFx0cmFuZ2UgNCAyMFxuIDI5MTpcdFx0ZGVmYXVsdCA4XG4gMjkyOlx0XHRoZWxwXG4gMjkzOlx0XHQgIFRoZSBzb3VyY2UgaGFzaGluZyBzY2hlZHVsZXIgbWFwcyBzb3VyY2UgSVBzIHRvIGRlc3RpbmF0aW9uc1xuIDI5NDpcdFx0ICBzdG9yZWQgaW4gYSBoYXNoIHRhYmxlLiBUaGlzIHRhYmxlIGlzIHRpbGVkIGJ5IGVhY2ggZGVzdGluYXRpb25cbiAyOTU6XHRcdCAgdW50aWwgYWxsIHNsb3RzIGluIHRoZSB0YWJsZSBhcmUgZmlsbGVkLiBXaGVuIHVzaW5nIHdlaWdodHMgdG9cbiAyOTY6XHRcdCAgYWxsb3cgZGVzdGluYXRpb25zIHRvIHJlY2VpdmUgbW9yZSBjb25uZWN0aW9ucywgdGhlIHRhYmxlIGlzXG4gMjk3Olx0XHQgIHRpbGVkIGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIHdlaWdodHMgc3BlY2lmaWVkLiBUaGUgdGFibGVcbiAyOTg6XHRcdCAgbmVlZHMgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGVmZmVjdGl2ZWx5IGZpdCBhbGwgdGhlIGRlc3RpbmF0aW9uc1xuIDI5OTpcdFx0ICBtdWx0aXBsaWVkIGJ5IHRoZWlyIHJlc3BlY3RpdmUgd2VpZ2h0cy5cbiAzMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBgSVBfVlNfVFdPU2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmZWF0dXJlcyBlbmFibGVkIGluIHRoZSBJUCBWaXJ0dWFsIFNlcnZlci4gTm93LCBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIHJlbGV2YW50IHRvIHRoaXMgYXJlYS4KCkFscmlnaHQsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgc2VlbiBjaGFuZ2VzIGFjcm9zcyB0aGUgY29kZWJhc2UsIHBhcnRpY3VsYXJseSBpbiBgaXBfdnNfY29ubi5jYCwgYGlwX3ZzX2NvcmUuY2AsIGBpcF92c19jdGwuY2AsIGBpcF92c19kaC5jYCwgYGlwX3ZzX2ZvLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19taC5jYCwgYGlwX3ZzX25xLmNgLCBgaXBfdnNfb3ZmLmNgLCBgaXBfdnNfcnIuY2AsIGBpcF92c19zZWQuY2AsIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3MuY2AsIGBpcF92c193bGMuY2AsIGBpcF92c193cnIuY2AsIGFuZCBgaXBfdnNfeG1pdC5jYC4KClRoZXNlIGFyZSBkZWZpbml0ZWx5IGNydWNpYWwga2VybmVsIGVsZW1lbnRzLCBlc3BlY2lhbGx5IHRoZSBzY2hlZHVsZXJzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGVtIGFuZCBzb21lIGtleSBjb3JlIGZ1bmN0aW9ucyBmb3IgZnVydGhlciBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhlc2UgYXMgZm9jdXMgc3ltYm9sczogYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBpcF92c19jaGVja190ZW1wbGF0ZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCB0aGUgc2NoZWR1bGVyIGZ1bmN0aW9uczogYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2ZvX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYW5kIGBpcF92c193cnJfc2NoZWR1bGVgLgoKSnVzdCB0byByZWl0ZXJhdGUsIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IHNlZW0gdG8gYmUgcGVydGluZW50IGFyZSBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLgoKV2FpdCwgcXVpY2sgdGhvdWdodDogYGlwX3ZzX2luX2hvb2tgIGlzIGEgaG90IHBhdGgsIHNvIEkmIzM5O2xsIHByb2JhYmx5IHdhbnQgdG8gYXZvaWQgdGhhdC4gU2FtZSB3aXRoIGBpcF92c19pbl9zdGF0c2AgYW5kIGBpcF92c19vdXRfc3RhdHNgLiBJIHNob3VsZCBwcmlvcml0aXplIGV4cGxvcmluZyB0aGUgb3RoZXIgZnVuY3Rpb25zLCBzdWNoIGFzIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBfX2lwX3ZzX3VubGlua19kZXN0YCwgYW5kIHRoZSBzY2hlZHVsZXJzLCBvZiBjb3Vyc2UuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpcF92c190d29zX3NjaGVkdWxlYCBzcGVjaWZpY2FsbHkuIE9oLCB5ZXMsIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBPa2F5LCBzbyBzaW5jZSBpdCYjMzk7cyByZWFjaGFibGUsIGl0ICpjb3VsZCogYmUgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgSSB1c3VhbGx5IGZvY3VzIG9uIG5vbi1zdGF0aWMgb25lcyBvciBzdGF0aWMgb25lcyBpZiB0aGV5IGFyZSB2ZXJ5IHdlbGwtZGVmaW5lZC4gQWgsIHJpZ2h0ISBJdCYjMzk7cyBhc3NpZ25lZCB0byBhIHN0cnVjdCEKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2RoX3NjaGVkdWxlYCBmb3IgZnVydGhlciBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19kaF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTIxMT1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjEyOmlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yMTMtXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQxLSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjQyOnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2RoX3NjaGVkdWxlciA9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0Ni1cdC5tb2R1bGUgPVx0XHRUSElTX01PRFVMRSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0NzpcdC5uX2xpc3QgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19kaF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0OC1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19kaF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTEtXHQuZGVsX2Rlc3QgPVx0XHRpcF92c19kaF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNTI6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19kaF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1My19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTI1Nj1zdGF0aWMgaW50IF9faW5pdCBpcF92c19kaF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTcte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjU4Olx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU5LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2RoX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2My17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNjQ6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjY1LVx0c3luY2hyb25pemVfcmN1KCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2Ugc2NoZWR1bGluZyBmdW5jdGlvbnMsIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGFuIGV4cGVydDoKCioqQW5hbHl6aW5nIElQVlMgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGAuc2NoZWR1bGVgIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyYC4gVGhlc2UgYXJlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBhc3NpZ25pbmcgbmV3IGNvbm5lY3Rpb25zLiBTZWVtcyBzdHJhaWdodGZvcndhcmQg4oCTIHRoZXkmIzM5O3JlIHRoZSBjb3JlIG9mIHRoZSBzY2hlZHVsaW5nIGxvZ2ljLiBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIHRoZXNlIGludG8gbXkgRm9jdXNTeW1ib2xzIHRvIGtlZXAgdGhlbSB0b3Atb2YtbWluZC4KCk5vdywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSB0aGVzZSB2YXJpb3VzIHNjaGVkdWxpbmcgYWxnb3JpdGhtcy4gV2UgaGF2ZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBJUF9WU2AsIHRoZW4gYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGFuZCB0aGUgcmVzdCDigJMgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCB0aGUgTEJMIGZhbWlseSAoYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgKSwgYW5kIHRoZSBoYXNoaW5nIGFsZ29yaXRobXMgKGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBgSVBfVlNfVFdPU2ApLiBHb3QgaXQuCgpJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoYSwgcmlnaHQsIGBJUF9WU19JUFY2YCBjb21lcyB0byBtaW5kLiBUaGF0IG9uZSBjb3VsZCBiZSBlc3NlbnRpYWwgZm9yIHRoZSBgX19pcF92c19nZXRfb3V0X3J0X3Y2YCBmdW5jdGlvbiDigJMgY2FuJiMzOTt0IGZvcmdldCBhYm91dCBJUHY2LiBOZWVkIHRvIGVuc3VyZSB0aGF0JiMzOTtzIGFjY291bnRlZCBmb3IgYXBwcm9wcmlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBNdXNpbmdzKioKCk9rYXksIG5vdyBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgbG9va2luZyB0aHJvdWdoIHRoYXQgS2NvbmZpZyBmaWxlLCBhbmQgc29tZXRoaW5nIGp1c3QgY2xpY2tlZC4gSXQgd2FzIHRoYXQgYElQX1ZTX0lQVjZgIHN5bWJvbC4gU2VlaW5nIHRoYXQgdHJpZ2dlcmVkIGEgbWVtb3J5IGFuZCBhIHBvdGVudGlhbCBjb25uZWN0aW9uLiBOb3cgSSBoYXZlIHRvIHRoaW5rLCAqd2h5KiBkaWQgdGhhdCBqdW1wIG91dD8gV2hhdCBkb2VzIGl0IGltcGx5IGluIHJlbGF0aW9uIHRvIHRoZSBwcm9ibGVtIEkmIzM5O20gd29ya2luZyBvbj8gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhhdCBicmVhZGNydW1iIGFuZCBzZWUgaWYgaXQgbGVhZHMgYW55d2hlcmUgdXNlZnVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19JUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjk6Y29uZmlnXHRJUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7SVB2NiBzdXBwb3J0IGZvciBJUFZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjA1CgkJCQkJCQlvdXRwdXQ6IDQ3NAoJCQkJCQkJdGhvdWdodHM6IDk4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSVBWUyBEZXN0aW5hdGlvbiBGbGFnIFVwZGF0ZXMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IG5vdGljZSB0aGUgY2hhbmdlIGZyb20gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYGF0b21pY190YCBmb3IgdGhlIGBmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YC4gUmlnaHQgYXdheSwgdGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGRlc3RpbmF0aW9uIGZsYWdzIGFyZSBoYW5kbGVkIGZvciByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgdGhyZWFkLXNhZmV0eS4gVGhpcyB0b3VjaGVzIHRoZSBjb3JlIHJlYWNoYWJsZSBsb2dpYyBvZiB0aGUgSVBWUywgdGhlIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gaXQsIGFuZCwgaW1wb3J0YW50bHksIGFsbCBvZiB0aGUgc2NoZWR1bGVycy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgdGhlIGNvbnNpc3RlbmN5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHRyYW5zaXRpb24uCgpGaXJzdCwgSSBpZGVudGlmaWVkIGBJUF9WU19JUFY2YCBhcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzaW5jZSBpdCYjMzk7cyBsaXN0ZWQgYWZ0ZXIgdGhlIGBjb25maWdgLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgb3V0IHRoZSBmdW5jdGlvbiBzeW1ib2xzIHRoYXQgYXJlIGdvaW5nIHRvIG5lZWQgbW9yZSBzY3J1dGlueSBpbiBteSBmdXp6aW5nIGNhbXBhaWduLgoKSSBuZWVkIGEgbGlzdCBvZiB0aGUgRm9jdXNTeW1ib2xzLiBJIGFtIGNvbnNpZGVyaW5nIHRoZXNlIGZ1bmN0aW9uczoKCiogICBgaXBfdnNfYmluZF9kZXN0YAoqICAgYGlwX3ZzX3VuYmluZF9kZXN0YAoqICAgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYAoqICAgYF9faXBfdnNfdXBkYXRlX2Rlc3RgCiogICBgX19pcF92c191bmxpbmtfZGVzdGAKKiAgIGBpcF92c19kaF9zY2hlZHVsZWAKKiAgIGBpcF92c19mb19zY2hlZHVsZWAKKiAgIGBpcF92c19sYmxjX3NjaGVkdWxlYAoqICAgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgCiogICBgaXBfdnNfbGNfc2NoZWR1bGVgCiogICBgaXBfdnNfbnFfc2NoZWR1bGVgCiogICBgaXBfdnNfb3ZmX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3JyX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3NlZF9zY2hlZHVsZWAKKiAgIGBpcF92c190d29zX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3dsY19zY2hlZHVsZWAKKiAgIGBpcF92c193cnJfc2NoZWR1bGVgCiogICBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYAoKSSBhbHNvIGFkZGVkOgoKKiAgIGBfX2lwX3ZzX2dldF9vdXRfcnRgCiogICBgX19pcF92c19nZXRfb3V0X3J0X3Y2YAoKU2luY2UgdGhleSBhcmUgdGhlIGhvdCBwYXRocyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLCBJJiMzOTtsbCBpbmNsdWRlIHRoZW0uIFRoZSBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuCgpJIGFsc28gaGF2ZSBpZGVudGlmaWVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIHN5c3RlbToKCiogICBgSVBfVlNgCiogICBgSVBfVlNfSVBWNmAKKiAgIGBJUF9WU19SUmAKKiAgIGBJUF9WU19XUlJgCiogICBgSVBfVlNfTENgCiogICBgSVBfVlNfV0xDYAoqICAgYElQX1ZTX0ZPYAoqICAgYElQX1ZTX09WRmAKKiAgIGBJUF9WU19MQkxDYAoqICAgYElQX1ZTX0xCTENSYAoqICAgYElQX1ZTX0RIYAoqICAgYElQX1ZTX1NIYAoqICAgYElQX1ZTX01IYAoqICAgYElQX1ZTX1NFRGAKKiAgIGBJUF9WU19OUWAKKiAgIGBJUF9WU19UV09TYAoKTXkgYW5hbHlzaXMgaXMgdGhhdCBiZWNhdXNlIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGRlc3RpbmF0aW9uIGZsYWdzIHRvIGJlIGF0b21pYyBvcGVyYXRpb25zLCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgYW5kIHRoZSB1cGRhdGUgdG8gdGhlIGNvcmUgcmVhY2hhYmxlIGxvZ2ljIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBNeSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgZm9jdXMgb24gaGl0dGluZyB0aGVzZSBmdW5jdGlvbnMgd2l0aCBhIHZhcmlldHkgb2YgdHJhZmZpYyBwYXR0ZXJucyBhbmQgY29uZmlndXJhdGlvbnMsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBhIHRocmVhZC1zYWZlIHVwZGF0ZSwgYW5kIGl0IG5lZWRzIHByb3BlciBmdXp6aW5nLgoKTm93LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19JUFY2JiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfY2hlY2tfdGVtcGxhdGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICAgJiMzNDtpcF92c19kaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19mb19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY190YCkgaW5zdGVhZCBvZiBhIGB2b2xhdGlsZSB1bnNpZ25lZCBpbnRgLiBUaGlzIGFmZmVjdHMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIChsaWtlIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhbmQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGApIGFyZSByZWFkIGFuZCB1cGRhdGVkIGFjcm9zcyB0aGUgSVBWUyBjb3JlLCBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIGFuZCBhbGwgSVBWUyBzY2hlZHVsZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSByZWFjaGFibGUgbG9naWMsIG1ha2luZyBpdCB0aHJlYWQtc2FmZSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjEwLjc4MDg2NDMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxOTM4NDE1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0lQVjZcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sYmxjX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxMC43ODA4NzExMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MTgzMzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1NmU3ZGNhODIyMzZiYzZhMDBmZmYyMzhhOWMwYzJlNTcyOWZmMzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNzowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbkBAIC05NzIsNyArOTcyLDcgQEAgc3RydWN0IGlwX3ZzX2Rlc3Qge1xcbiBcXHR1MTZcXHRcXHRcXHRhZjtcXHRcXHQvKiBhZGRyZXNzIGZhbWlseSAqL1xcbiBcXHRfX2JlMTZcXHRcXHRcXHRwb3J0O1xcdFxcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyXFx0YWRkcjtcXHRcXHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cXG4tXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRmbGFncztcXHRcXHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdGNvbm5fZmxhZ3M7XFx0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXFxuIFxcdGF0b21pY190XFx0XFx0d2VpZ2h0O1xcdFxcdC8qIHNlcnZlciB3ZWlnaHQgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsYXN0X3dlaWdodDtcXHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi41MzlmNjAzZjM4Yjc0NSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFxuIFxcdGlmIChkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAhPSAwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzZT0gZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gXFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gXFxuIFxcdGlmIChkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCAhPSAwKSB7XFxuIFxcdFxcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzYyBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZClcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9IGVsc2UgaWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcXG4gXFx0XFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXFx1MDAzYyBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAqIDMpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdFxcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbiBcXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XFxuLVxcdCAgICAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4rXFx0ICAgICEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XFxuIFxcdCAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8XFxuIFxcdCAgICAoY2Rlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xcbiBcXHRcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJjaGVja190ZW1wbGF0ZTogZGVzdCBub3QgYXZhaWxhYmxlIGZvciBcXFwiXFxuQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiBcXHRcXHRcXHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcXG4gXFx0XFx0XFx0cmVzY2hlZF9zY29yZSsrO1xcbiBcXHRcXHRcXHRkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdFxcdGlmICghZGVzdCB8fCAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4rXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjcC1cXHUwMDNlbl9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4gXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cXHUwMDNlaXB2cztcXG4gXFxuLVxcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcXG4gXFxuQEAgLTMzOCw3ICszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVxcdTAwM2VkZXN0O1xcbiBcXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVxcdTAwM2VpcHZzO1xcbiBcXG4tXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xcbiBcXG5AQCAtMjIwNCw3ICsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcXG4gXFx0fVxcbiBcXG4gXFx0LyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi9cXG4tXFx0aWYgKGNwIFxcdTAwMjZcXHUwMDI2IGNwLVxcdTAwM2VkZXN0IFxcdTAwMjZcXHUwMDI2ICEoY3AtXFx1MDAzZWRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGNwIFxcdTAwMjZcXHUwMDI2IGNwLVxcdTAwM2VkZXN0IFxcdTAwMjZcXHUwMDI2ICEoYXRvbWljX3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHQvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi9cXG4gXFx0XFx0aWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHtcXG4gXFx0XFx0XFx0Ym9vbCBvbGRfY3QgPSBpcF92c19jb25uX3VzZXNfb2xkX2Nvbm50cmFjayhjcCwgc2tiKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuaW5kZXggYmNmNDBiOGM0MWNmMjYuLjY4NWIyNjc1YjZlMDNhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0xMzY4LDEwICsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4tXFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcXG4rXFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFx0ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQ7XFxuIFxcdGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkO1xcbiBcXG5AQCAtMTYxMyw3ICsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0XFx0XFx0XFx0aW50IHN2Y3VwZClcXG4ge1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcXG4rXFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbiBcXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbmluZGV4IGUxZjYyZjZiMjVlMjExLi4zOTA2OWE5YzNkMGM5MiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2RoX2Rlc3RfY2hhbmdlZChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiAgKi9cXG4gc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4ge1xcbi1cXHRyZXR1cm4gZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbiB9XFxuIFxcbiBcXG5AQCAtMjIwLDcgKzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cXHUwMDNlc2NoZWRfZGF0YTtcXG4gXFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXFx1MDAzZWFmLCBzLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkcik7XFxuIFxcdGlmICghZGVzdFxcbi1cXHQgICAgfHwgIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdCAgICB8fCAhKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHQgICAgfHwgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzYz0gMFxcbiBcXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xcbiBcXHRcXHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXFxcIm5vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVxcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIGh3KSB7XFxuIFxcdFxcdFxcdGh3ZWlnaHQgPSBkZXN0O1xcbiBcXHRcXHRcXHRodyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuQEAgLTUwMiw3ICs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdCAqL1xcbiBcXG4gXFx0XFx0ZGVzdCA9IGVuLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLmY2NDg4MWI4NDU2OTY5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDExICsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFxcdTAwM2UgMCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxlYXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGxlYXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHQgICAgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcXG4gXFx0XFx0XFx0Z290byBuZXh0c3RhZ2U7XFxuIFxcdFxcdH1cXG5AQCAtMTgxLDEzICsxODEsMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRkZXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG4gXFx0XFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpKVxcbi1cXHRcXHQgICAgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBkb2g7XFxuIFxcdFxcdH1cXG5AQCAtNTc3LDcgKzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICogbmV3IGNvbm5lY3Rpb24uXFxuIFxcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li42YWNiM2M5MDRhZjU3ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXFxuQEAgLTM4LDcgKzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gLyogUmV0dXJucyBoYXNoIHZhbHVlIGZvciBJUFZTIE1IIGVudHJ5ICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbiBcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XFxuIFxcdFxcdCAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbkBAIC0zMyw3ICszMyw3IEBAIGlwX3ZzX292Zl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbiBcXHRcXHR3ID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCk7XFxuLVxcdFxcdGlmICgoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuK1xcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucykgXFx1MDAzZSB3IHx8XFxuIFxcdFxcdCAgICB3ID09IDApXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgbl9saXN0KSB7XFxuLVxcdFxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHQvKiBISVQgKi9cXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wMjQ5MDYyZDEzNjA1NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRsZWFzdCA9IGRlc3Q7XFxuIFxcdFxcdFxcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcXG5AQCAtOTAsNyArOTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuaW5kZXggY2Q2NzA2NmUzYjI2MTIuLjM0Mzc4MGI4MmM5NWYxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcXG5AQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gLypcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG5AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4gXFxuIFxcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XFxuIFxcdFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbiBcXHRcXHRcXHRpZiAod2VpZ2h0IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRcXHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xcbkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uYzJkMDlhYzk2ZmU4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuQEAgLTQ3LDcgKzQ3LDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC02Miw3ICs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uZjIxYTc1Mjg0OTcxZTUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuQEAgLTE3Niw3ICsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2U9IG1hcmstXFx1MDAzZWN3KVxcbiBcXHRcXHRcXHRcXHRnb3RvIGZvdW5kO1xcbiBcXHRcXHRcXHRpZiAoZGVzdCA9PSBzdG9wKVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QpKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAgZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbitcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuIFxcdFxcdFxcdFxcdF9faXBfdnNfZHN0X3NldChkZXN0LCBkZXN0X2RzdCwgXFx1MDAyNnJ0LVxcdTAwM2Vkc3QsIDApO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdG5vcmVmID0gMDtcXG5AQCAtNTMwLDcgKzUzMCw3IEBAIF9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCBjb29raWUpO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdG5vcmVmID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTEuNzI0MjQ4NzU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzI1MDQ0NDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfSVBWNlwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiX19pcF92c191bmxpbmtfZGVzdFwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c190d29zX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193bGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dycl9zY2hlZHVsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfdGApIGluc3RlYWQgb2YgYSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YC4gVGhpcyBhZmZlY3RzIGhvdyBkZXN0aW5hdGlvbiBmbGFncyAobGlrZSBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYW5kIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgKSBhcmUgcmVhZCBhbmQgdXBkYXRlZCBhY3Jvc3MgdGhlIElQVlMgY29yZSwgY29ubmVjdGlvbiBtYW5hZ2VtZW50LCBhbmQgYWxsIElQVlMgc2NoZWR1bGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgcmVhY2hhYmxlIGxvZ2ljLCBtYWtpbmcgaXQgdGhyZWFkLXNhZmUsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzU2ZTdkY2E4MjIzNmJjNmEwMGZmZjIzOGE5YzBjMmU1NzI5ZmYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTY6MDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR1MTZcdFx0XHRhZjtcdFx0LyogYWRkcmVzcyBmYW1pbHkgKi9cbiBcdF9fYmUxNlx0XHRcdHBvcnQ7XHRcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cbiBcdHVuaW9uIG5mX2luZXRfYWRkclx0YWRkcjtcdFx0LyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovXG4tXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuK1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFxuIFx0aWYgKGRlc3QtXHUwMDNldV90aHJlc2hvbGQgIT0gMCBcdTAwMjZcdTAwMjZcbiBcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXHUwMDNlPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwiY2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgXCJcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlKys7XG4gXHRcdFx0ZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4tXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbitcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTIyMDQsNyArMjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGF0b21pY19vcihJUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzkwNjlhOWMzZDBjOTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gXG5AQCAtMjIwLDcgKzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtXHUwMDNlc2NoZWRfZGF0YTtcbiBcdGRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLVx1MDAzZWFmLCBzLCBcdTAwMjZpcGgtXHUwMDNlZGFkZHIpO1xuIFx0aWYgKCFkZXN0XG4tXHQgICAgfHwgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuK1x0ICAgIHx8ICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXCIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuQEAgLTI5LDcgKzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIEZpbmQgdmlydHVhbCBzZXJ2ZXIgd2l0aCBoaWdoZXN0IHdlaWdodCBhbmQgc2VuZCBpdCB0cmFmZmljXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgaHcpIHtcbiBcdFx0XHRod2VpZ2h0ID0gZGVzdDtcbiBcdFx0XHRodyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmQyZWI1ZGRhNWI2ODZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuQEAgLTQxNCw3ICs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG5AQCAtNDI5LDcgKzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbkBAIC01MDIsNyArNTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgKi9cbiBcbiBcdFx0ZGVzdCA9IGVuLVx1MDAzZWRlc3Q7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxuIFx0XHRcdGdvdG8gb3V0O1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGM5MGVhODk3YzNmNzU2Li5mNjQ4ODFiODQ1Njk2OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2NiwxMSArMTY2LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiBcdC8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgXHUwMDNlIDAgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGxlYXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAobGVhc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHQgICAgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4MSwxMyArMTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbiBcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0ICAgIFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuIFx0XHQgICAgIWF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xuQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbmluZGV4IDlkYTQ0NWNhMDlhMTRjLi5jMmQwOWFjOTZmZTg0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5AQCAtNDcsNyArNDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyArNTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTEuNzI0MjUxMDU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMTQyNDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgRmxhZ3MgRmllbGQgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBJUFZTLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYGZsYWdzYCBmaWVsZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkncmUgc3dhcHBpbmcgb3V0IHRoZSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YCBmb3IgYW4gYGF0b21pY190YCwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhleSdyZSBtYWtpbmcgdGhpcyB0aHJlYWQtc2FmZS4gVGhhdCdzIGEgc29saWQgbW92ZSwgYW5kIGEgY29tbW9uIHBhdHRlcm4gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHN0YXRlIGluIGEga2VybmVsIGNvbnRleHQuIFRoZSBjaGFuZ2UgZW5zdXJlcyBhdG9taWNpdHkgZm9yIGFsbCByZWFkcywgd3JpdGVzLCBhbmQgbW9kaWZpY2F0aW9ucyB1c2luZyB0aGUgYXRvbWljIG9wZXJhdGlvbiBwcmltaXRpdmVzLiBHb29kLCBnb29kLiBJUFZTIGlzIG5ldGZpbHRlciBiYXNlZCwgc28gdGhpcyB3aWxsIGJlIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnNgLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBJIHdhbnQgdG8gY29uZmlybSB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBleHBvc2VkIGZvciBJUFZTLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBncmVwIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGBJUF9WU2Agd2l0aGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgdW5kZXIgYG5ldC9uZXRmaWx0ZXIvaXB2cy9gIG9yIGFueXRoaW5nIHNpbWlsYXIgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIGhvdyB0aGlzIGlzIGNvbnRyb2xsZWQuIEl0J3MgYWx3YXlzIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHRoYXQncyBhdmFpbGFibGUgYmVmb3JlIGdldHRpbmcgaW50byBzcGVjaWZpY3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxNi42NTU2Nzc3MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDA2MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxNi43NzMwODk5NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgzMjU0MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQgaGVyZSBpcyBgSVBfVlNgLiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgdGhlIHZhcmlvdXMgc2NoZWR1bGluZyBhbGdvcml0aG1zIG1pZ2h0IGJlIGFmZmVjdGVkLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyIG1vZGlmaWNhdGlvbnMuIExldCdzIHNlZS4uLkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgYXNzb2NpYXRlZCBzb3VyY2UgZmlsZXMgdGhhdCBpbXBsZW1lbnQgdGhvc2Ugc2NoZWR1bGVycy4gTG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIGZpbGVzIHJlcXVpcmUgY2xvc2VyIGV4YW1pbmF0aW9uOiBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBhbmQgYGlwX3ZzX3dyci5jYC4gVGhvc2UgYXJlIHRoZSBhcmVhcyB3aGVyZSBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvIGRldGVybWluZSBpZiBhbnkgYXV4aWxpYXJ5IGNvbmZpZ3VyYXRpb25zIG9yIHNldHRpbmdzIGFyZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjIuMTU2MzQ3MzM5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTc3NjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoyMi4zMjYxMzA0ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQzMTg1NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRXhwYW5kaW5nIHRoZSBTY29wZSBvZiBJbnZlc3RpZ2F0aW9uKipcblxuSG1tLCBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtLiBJbnN0ZWFkIG9mIGp1c3QgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGBjb25maWcgSVBfVlNfYCB2YXJpYWJsZSBJIHdhcyBpbml0aWFsbHkgbG9va2luZyBhdCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBhbmQgdGhvcm91Z2ggdG8gcGVyZm9ybSBhIGJyb2FkZXIgZ3JlcCBzZWFyY2guIEkgc2hvdWxkIHJlYWxseSBsb29rIGZvciAqYW55KiBpbnN0YW5jZSBvZiBgY29uZmlnIElQX1ZTX2Agd2l0aGluIHRoYXQgZmlsZSwgYW5kIHBlcmhhcHMgZXZlbiB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0ZmlsdGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIFRoaXMgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgaW1wbGljYXRpb25zLiBJdCdsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGlzIGZlYXR1cmUgaXMgZGVmaW5lZCBhbmQgaW50ZXJhY3RzIHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODI1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjYuMjY5MzI0Njk1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzM3MTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjYuNDcyNzA2ODc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MTc0OTkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFNvdXJjZSoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBqdXN0IGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCB3b3VsZCBiZSB0byBzaW1wbHkgcmVhZCB0aGUgZmlsZSwgcHJvYmFibHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgZm9yIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIE9yLCB0byBiZSBtb3JlIGVmZmljaWVudCwgSSBjb3VsZCB1c2UgYGdyZXBgIOKAkyB0aGF0J3Mgb2Z0ZW4gcXVpY2tlciB0aGFuIG1hbnVhbGx5IHNjYW5uaW5nLiBTZWFyY2hpbmcgZm9yIFwiY29uZmlnIFwiIHdpdGhpbiB0aGF0IGZpbGUgc2hvdWxkIHJldmVhbCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIHVzZWQgdG8gY29udHJvbCB0aGUgYnVpbGQgb3B0aW9ucy4gSSdtIGxlYW5pbmcgdG93YXJkIHRoZSBgZ3JlcGAgYXBwcm9hY2ggaW5pdGlhbGx5OyBpdOKAmXMgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCdzIGRlZmluZWQuIExldCdzIHNlZSB3aGF0IHRoYXQgeWllbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjI5LjU0NDQ2MTEzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNzA5NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcXHRJUF9WU19QUk9UT19BSFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTQ3PWNvbmZpZ1xcdElQX1ZTX1dMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoyOS43MTUxNzc2MTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNzQxNTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRydW5jYXRlZCBPdXRwdXQgRnJ1c3RyYXRpb24sIFRpbWUgZm9yIGEgRGlyZWN0IEFwcHJvYWNoKipcblxuQWxyaWdodCwgdGhlIGBncmVwYCBvdXRwdXQgaXMgdHJ1bmNhdGVkIGFnYWluLiBTZXJpb3VzbHk/IFRoaXMgaXMgYSBmcmVxdWVudCBhbm5veWFuY2UuIEl0J3MgdXN1YWxseSBmYXN0ZXIgdG8ganVzdCByZWFkIHRoZSB3aG9sZSBkYW1uZWQgZmlsZSByYXRoZXIgdGhhbiBmdXR6aW5nIGFyb3VuZCB0cnlpbmcgdG8gaW5jcmVhc2UgdGhlIGJ1ZmZlciBvciBwaXBlIGl0IHRocm91Z2ggYGxlc3MgLVNgIGp1c3QgdG8gc2VlIHRoZSBkYW1uIGNvbnRlbnRzLiBUaGlzIHRydW5jYXRpb24gYWRkcyBhbiBleHRyYSBsYXllciBvZiBjb2duaXRpdmUgbG9hZCwgZm9yY2luZyBtZSB0byByZXRoaW5rIG15IHdvcmtmbG93LCBzbyBmb3JnZXQgdGhhdCBhbmQgbGV0cyBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkgLSBzb21ldGltZXMgdGhlIHNpbXBsZSBtZXRob2RzIGFyZSBiZXN0LCBlc3BlY2lhbGx5IHdoZW4geW91IGhhdmUgc29tZSBzcGVjaWZpYyBmaWxlcyB0byByZXZpZXcuIFRpbWUgdG8gYnlwYXNzIHRoZSBpbnRlcm1lZGlhdGUgc3RlcCBhbmQgZ2V0IHJpZ2h0IHRvIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MzQuMDQyNTk2NzI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0bWVudWNvbmZpZyBJUF9WU1xcbiAgIDY6XFx0XFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxcbiAgMTE6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xcbiAgMTI6XFx0XFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcXG4gIDEzOlxcdFxcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxcbiAgMTQ6XFx0XFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbiAgMTc6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXFxuICAxODpcXHRcXHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cXG4gIDE5OlxcdFxcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxcbiAgMjA6XFx0XFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXFxuICAyMTpcXHRcXHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxcbiAgMjI6XFx0XFx0ICBmb2xsb3dpbmcgVVJMOiBcXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1xcdTAwM2UuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gIDI1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRpZiBJUF9WU1xcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWdcXHRJUF9WU19JUFY2XFxuICAzMDpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbiAgMzI6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBpZiB1bnN1cmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZ1xcdElQX1ZTX0RFQlVHXFxuICAzOTpcXHRcXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXFxuICA0MjpcXHRcXHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXFxuICA0MzpcXHRcXHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbiAgNDY6XFx0XFx0aW50IFxcXCJJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gIDQ3OlxcdFxcdHJhbmdlIDggMjAgaWYgITY0QklUXFxuICA0ODpcXHRcXHRyYW5nZSA4IDI3IGlmIDY0QklUXFxuICA0OTpcXHRcXHRkZWZhdWx0IDEyXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXFxuICA1MjpcXHRcXHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XFxuICA1MzpcXHRcXHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXFxuICA1NDpcXHRcXHQgIGluIHRoZSBoYXNoIHRhYmxlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxcbiAgNTc6XFx0XFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcXG4gIDU4OlxcdFxcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXFxuICA1OTpcXHRcXHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbid0IGlucHV0IHRoZSBudW1iZXIgdG9vXFxuICA2MDpcXHRcXHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcXG4gIDYxOlxcdFxcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXFxuICA2MjpcXHRcXHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcXG4gIDYzOlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxcbiAgNjQ6XFx0XFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXFxuICA2NTpcXHRcXHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxcbiAgNjY6XFx0XFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxcbiAgNjc6XFx0XFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxcbiAgNzA6XFx0XFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xcbiAgNzE6XFx0XFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxcbiAgNzI6XFx0XFxuICA3MzpcXHRcXHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXFxuICA3NDpcXHRcXHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcXG4gIDc1OlxcdFxcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRjb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgNzg6XFx0XFxuICA3OTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG4gIDgwOlxcdFxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcXG4gIDgzOlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDg0OlxcdFxcbiAgODU6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxuICA4NjpcXHRcXHRib29sIFxcXCJVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDg3OlxcdFxcdGhlbHBcXG4gIDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XFxuICA4OTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5MDpcXHRcXG4gIDkxOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIX0VTUFxcbiAgOTI6XFx0XFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXFxuICA5MzpcXHRcXG4gIDk0OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0VTUFxcbiAgOTU6XFx0XFx0Ym9vbCBcXFwiRVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA5NjpcXHRcXHRoZWxwXFxuICA5NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXFxuICA5ODpcXHRcXHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWdcXHRJUF9WU19QUk9UT19BSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzozNC4wNDI4MTg0NTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NTMzMTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBMZXQncyBnZXQgdG8gaXQuXG5cbioqKlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIGluc3RydWN0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgLSBJJ20gc3VwcG9zZWQgdG8gcHJvY2VzcyB0aGlzIHRleHQgYW5kIHJlcHJlc2VudCBpdCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBpbiBmaXJzdC1wZXJzb24sIGFzIHRob3VnaCBJJ20gcmVhZGluZyBpdCBhbmQgZm9ybXVsYXRpbmcgbXkgdW5kZXJzdGFuZGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGJlIGEgcmVsYXRpdmVseSBxdWljayBhbmQgZWZmaWNpZW50IHRhc2suIEl0J3MgYWJvdXQgZGlzdGlsbGluZyB0aGUgY29yZSBpZGVhcyBhbmQgaW50ZXJuYWxpemluZyB0aGVtLiBOb3csIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gTGV0J3Mgc2VlIHdoYXQncyBvbiB0aGUgcGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4ODAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6NDEuMTE4MTUyMjIyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdGJvb2wgXFxcIkFIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXFxuIDEwNDpcXHRcXHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbiAxMDc6XFx0XFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gMTA5OlxcdFxcdGhlbHBcXG4gMTEwOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxcbiAxMTE6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAxMTI6XFx0XFxuIDExMzpcXHRjb21tZW50IFxcXCJJUFZTIHNjaGVkdWxlclxcXCJcXG4gMTE0OlxcdFxcbiAxMTU6XFx0Y29uZmlnXFx0SVBfVlNfUlJcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXFxcIlxcbiAxMTc6XFx0XFx0aGVscFxcbiAxMTg6XFx0XFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xcbiAxMTk6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEyMjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTIzOlxcdCBcXG4gMTI0OlxcdGNvbmZpZ1xcdElQX1ZTX1dSUlxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDEyNjpcXHRcXHRoZWxwXFxuIDEyNzpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTI4OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xcbiAxMjk6XFx0XFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcXG4gMTMwOlxcdFxcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXFxuIDEzMTpcXHRcXHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcXG4gMTMyOlxcdFxcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEzNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnXFx0SVBfVlNfTENcXG4gMTM4OlxcdFxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNDE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXFxuIDE0MjpcXHRcXHQgIGNvbm5lY3Rpb25zLlxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE0NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ2OlxcdFxcbiAxNDc6XFx0Y29uZmlnXFx0SVBfVlNfV0xDXFxuIDE0ODpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxNDk6XFx0XFx0aGVscFxcbiAxNTA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTUxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcXG4gMTUyOlxcdFxcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxNTU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyAgSVBfVlNfRk9cXG4gMTU4OlxcdFxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbiAxNTk6XFx0XFx0aGVscFxcbiAxNjA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE2MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNjI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE2NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnICBJUF9WU19PVkZcXG4gMTY4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXFxcIlxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE3MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNzI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcXG4gMTczOlxcdFxcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJ3Mgd2VpZ2h0LlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE3NjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbiAxNzk6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gaXMgZm9yXFxuIDE4MjpcXHRcXHQgIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyB1c3VhbGx5IHVzZWQgaW4gY2FjaGUgY2x1c3Rlci5cXG4gMTgzOlxcdFxcdCAgVGhpcyBhbGdvcml0aG0gdXN1YWxseSBkaXJlY3RzIHBhY2tldCBkZXN0aW5lZCBmb3IgYW4gSVAgYWRkcmVzcyB0b1xcbiAxODQ6XFx0XFx0ICBpdHMgc2VydmVyIGlmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUgYW5kIHVuZGVyIGxvYWQuIElmIHRoZSBzZXJ2ZXIgaXNcXG4gMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzo0MS4xMTgzNDE3NDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQyODAwODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIGNvbmNlcHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSBTY2hlZHVsaW5nIEFsZ29yaXRobXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgZGlmZmVyZW50IHNjaGVkdWxpbmcgYWxnb3JpdGhtcyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiAgTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGhvdyBlYWNoIG9mIHRoZXNlIGltcGFjdHMgbG9hZCBkaXN0cmlidXRpb24gYW5kIGZhaWxvdmVyIGJlaGF2aW9yLiBJIHNlZSBhIGNvcmUgc2V0IG9mIGZ1bmRhbWVudGFsIHNjaGVkdWxpbmcgbWV0aG9kcywgZXNzZW50aWFsbHkgdGhlIGJ1aWxkaW5nIGJsb2NrcyBoZXJlLCBhbmQgdGhlbiBzb21lIG1vcmUgc3BlY2lhbGl6ZWQgdmFyaWF0aW9ucy5cblxuRmlyc3QsIHdlIGhhdmUgdGhlIGdlbmVyYWwgYElQX1ZTYCB3aGljaCBwcm9iYWJseSBpbXBsaWVzIGEgYmFzaWMsIGxpa2VseSByb3VuZC1yb2JpbiwgYXBwcm9hY2ggaWYgbm90aGluZyBlbHNlIGlzIHNwZWNpZmllZC4gIFRoZW4gd2Ugc2VlIGl0cyB2YXJpYXRpb25zLiAgYElQX1ZTX1JSYCDigJMgd2VsbCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCByb3VuZCByb2JpbiwgY2xhc3NpYywgc2ltcGxlLCBhbmQgcHJlZGljdGFibGUuICBgSVBfVlNfV1JSYCDigJMgV2VpZ2h0ZWQgUm91bmQgUm9iaW4uIE5vdyB3ZSdyZSBnZXR0aW5nIGludG8gbW9yZSBudWFuY2VkIGNvbnRyb2wgYmFzZWQgb24gc2VydmVyIGNhcGFjaXR5IG9yIHNvbWUgYXNzaWduZWQgd2VpZ2h0LiBUaGlzIGlzIGEgdmVyeSBjb21tb24gbWV0aG9kIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdoZXJlIHNlcnZlcnMgYXJlIG5vdCBlcXVhbC5cblxuVGhlbiB3ZSBoYXZlIGBJUF9WU19MQ2AgYW5kIGBJUF9WU19XTENgIOKAkyBMZWFzdCBDb25uZWN0aW9ucyBhbmQgV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBhbmQgbW9yZSBkeW5hbWljLiAgSSdtIHRoaW5raW5nIGFib3V0IHRoZSByZWFsLXRpbWUgc3RhdGUgb2YgdGhlIHNlcnZlcnMsIGhvdyBidXN5IHRoZXkgYWN0dWFsbHkgYXJlLCB0YWtpbmcgaW50byBhY2NvdW50IGN1cnJlbnQgY29ubmVjdGlvbnMuIGBJUF9WU19MQ2AgaXMgYWJvdXQgZGlzdHJpYnV0aW5nIGJhc2VkIG9uICphY3RpdmUqIGNvbm5lY3Rpb25zLCB3aGljaCBpcyB1c2VmdWwgd2hlbiBzZXJ2ZXIgcmVzcG9uc2UgdGltZXMgYXJlIHJlbGF0aXZlbHkgZXF1YWwuIGBJUF9WU19XTENgIGV4dGVuZHMgdGhpcyBhbmQgYWRkcyB3ZWlnaHRpbmcg4oCTIGV2ZW4gb24gYSBkeW5hbWljIGJhc2lzIOKAkyB3aGljaCBpcyBjcnVjaWFsIGlmIHlvdSBoYXZlIHNlcnZlcnMgd2l0aCBkaWZmZXJlbnQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMsIG9yIGlmIHlvdSBuZWVkIHRvIHByb3ZpZGUgbW9yZSBjYXBhY2l0eSB0byBvbmUgc2VydmVyIHRvIGhhbmRsZSBhIGxhcmdlIGxvYWQuXG5cbmBJUF9WU19GT2Ag4oCTIEFoLCB0aGlzIG9uZSdzIGZvciBmYWlsb3ZlciEgIFRoaXMgbXVzdCBiZSB0aGUgYWxnb3JpdGhtIGZvciBcImZpcnN0LWF2YWlsYWJsZVwiIG9yIGZhaWwtb3ZlciBvbmx5LiBVc2VmdWwgaW4gbWFueSBzY2VuYXJpb3Mgd2hlcmUgeW91IG5lZWQgdG8gaGF2ZSBhIHN0YW5kYnkgc2VydmVyIGluIGNhc2UgdGhlIGZpcnN0IGdvZXMgZG93bi5cblxuYElQX1ZTX09WRmAg4oCTIFRoaXMgbG9va3MgbGlrZSBPdmVyZmxvdywgcGVyaGFwcyBhIHZhcmlhdGlvbiBvbiBsb2FkIGJhbGFuY2luZyBpbiBjYXNlIG9mIG9uZSBzZXJ2ZXIgcmVhY2hpbmcgYSB0aHJlc2hvbGQuIFRoZSBzeXN0ZW0gbWlnaHQgc3RhcnQgc2VuZGluZyB0cmFmZmljIHRvIGFub3RoZXIuIEkgaGF2ZSB0byBsb29rIGludG8gdGhlIHNwZWNpZmljcyBoZXJlLlxuXG5BbmQgZmluYWxseSwgYElQX1ZTX0xCTENgIGFuZCBgSVBfVlNfTEJMQ1JgLiBOb3csIHRoaXMgc2lnbmFscyBzb21ldGhpbmcgZGlmZmVyZW50LiBUaGlzIHNlZW1zIHRvIGJlIGNvbm5lY3Rpb24gbG9jYWxpdHksIG1heWJlIGJhc2VkIG9uIHNvdXJjZSBJUCBhZGRyZXNzIGFuZCB3aXRoIG9yIHdpdGhvdXQgcGVyc2lzdGVuY2UgKGBSYD8pLiAgVGhpcyBpcyBjcml0aWNhbCBmb3Igc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSBwZXJzaXN0ZW50IHNlc3Npb25zIG9yIHN0aWNreSBjb25uZWN0aW9ucy4gIGBMQkxDUmAgcHJvYmFibHkgaW5kaWNhdGVzIGEgY29ubmVjdGlvbiBoYXNoaW5nIGFwcHJvYWNoIGJhc2VkIG9uIGNsaWVudCBzb3VyY2UgSVAgKGxpa2VseSBmb3Igc3RpY2t5IHNlc3Npb25zKS5cblxuU28sIGluIGVzc2VuY2UsIHRoaXMgaXMgYSBjbGVhciBlbnVtZXJhdGlvbiBvZiB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgSVBWUyBzeXN0ZW0sIGEgc2V0IG9mIHRvb2xzIGluIG15IGFyc2VuYWwgZm9yIG1hbmFnaW5nIGFuZCBkaXN0cmlidXRpbmcgbG9hZCBhY3Jvc3MgYSBjb2xsZWN0aW9uIG9mIGJhY2stZW5kIHNlcnZlcnMuICBFYWNoIG9uZSBvZmZlcnMgZGlmZmVyZW50IHRyYWRlLW9mZnMgaW4gdGVybXMgb2Ygc2ltcGxpY2l0eSwgcGVyZm9ybWFuY2UsIGFuZCBmbGV4aWJpbGl0eSwgYW5kIHRoZSBjaG9pY2UgZGVwZW5kcyBlbnRpcmVseSBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzIGFuZCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBiYWNrLWVuZCBzZXJ2ZXJzLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBjb25jZXB0cyBvcmdhbml6ZWQgYW5kIGNvbnNpZGVyIHRoZW0gd2hlbiBkZXNpZ25pbmcgbG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGFuZCBjb21wYXJlL2NvbnRyYXN0IHRoZW0gdG8gb3RoZXIgYmFsYW5jaW5nIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzo0OS41NDYzNTMwNTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDE6XFx0XFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxcbiAyMDI6XFx0XFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxcbiAyMDM6XFx0XFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cXG4gMjA0OlxcdFxcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxcbiAyMDU6XFx0XFx0ICBmcm9tIHRoZSBzZXJ2ZXIgc2V0LCBpbiBvcmRlciB0byBhdm9pZCBoaWdoIGRlZ3JlZSBvZiByZXBsaWNhdGlvbi5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMDg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIwOTpcXHRcXG4gMjEwOlxcdGNvbmZpZ1xcdElQX1ZTX0RIXFxuIDIxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMTI6XFx0XFx0aGVscFxcbiAyMTM6XFx0XFx0ICBUaGUgZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcXG4gMjE0OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseSBhc3NpZ25lZFxcbiAyMTU6XFx0XFx0ICBoYXNoIHRhYmxlIGJ5IHRoZWlyIGRlc3RpbmF0aW9uIElQIGFkZHJlc3Nlcy5cXG4gMjE2OlxcdFxcbiAyMTc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMTg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZ1xcdElQX1ZTX1NIXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZSBcXFwic291cmNlIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyMjQ6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXFxuIDIyNTpcXHRcXHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgc291cmNlIElQIGFkZHJlc3Nlcy5cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMjg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIyOTpcXHRcXG4gMjMwOlxcdGNvbmZpZ1xcdElQX1ZTX01IXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwibWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4gMjMyOlxcdFxcdGhlbHBcXG4gMjMzOlxcdFxcdCAgVGhlIG1hZ2xldiBjb25zaXN0ZW50IGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gcHJvdmlkZXMgdGhlXFxuIDIzNDpcXHRcXHQgIEdvb2dsZSdzIE1hZ2xldiBoYXNoaW5nIGFsZ29yaXRobSBhcyBhIElQVlMgc2NoZWR1bGVyLiBJdCBhc3NpZ25zXFxuIDIzNTpcXHRcXHQgIG5ldHdvcmsgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseVxcbiAyMzY6XFx0XFx0ICBhc3NpZ25lZCBzcGVjaWFsIGhhc2ggdGFibGUgY2FsbGVkIHRoZSBsb29rdXAgdGFibGUuIE1hZ2xldiBoYXNoaW5nXFxuIDIzNzpcXHRcXHQgIGlzIHRvIGFzc2lnbiBhIHByZWZlcmVuY2UgbGlzdCBvZiBhbGwgdGhlIGxvb2t1cCB0YWJsZSBwb3NpdGlvbnNcXG4gMjM4OlxcdFxcdCAgdG8gZWFjaCBkZXN0aW5hdGlvbi5cXG4gMjM5OlxcdFxcbiAyNDA6XFx0XFx0ICBUaHJvdWdoIHRoaXMgb3BlcmF0aW9uLCBUaGUgbWFnbGV2IGhhc2hpbmcgZ2l2ZXMgYW4gYWxtb3N0IGVxdWFsXFxuIDI0MTpcXHRcXHQgIHNoYXJlIG9mIHRoZSBsb29rdXAgdGFibGUgdG8gZWFjaCBvZiB0aGUgZGVzdGluYXRpb25zIGFuZCBwcm92aWRlc1xcbiAyNDI6XFx0XFx0ICBtaW5pbWFsIGRpc3J1cHRpb24gYnkgdXNpbmcgdGhlIGxvb2t1cCB0YWJsZS4gV2hlbiB0aGUgc2V0IG9mXFxuIDI0MzpcXHRcXHQgIGRlc3RpbmF0aW9ucyBjaGFuZ2VzLCBhIGNvbm5lY3Rpb24gd2lsbCBsaWtlbHkgYmUgc2VudCB0byB0aGUgc2FtZVxcbiAyNDQ6XFx0XFx0ICBkZXN0aW5hdGlvbiBhcyBpdCB3YXMgYmVmb3JlLlxcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI0NzpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjQ4OlxcdFxcbiAyNDk6XFx0Y29uZmlnXFx0SVBfVlNfU0VEXFxuIDI1MDpcXHRcXHR0cmlzdGF0ZSBcXFwic2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1xcXCJcXG4gMjUxOlxcdFxcdGhlbHBcXG4gMjUyOlxcdFxcdCAgVGhlIHNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyNTM6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIHNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5LiBUaGUgXFxuIDI1NDpcXHRcXHQgIGV4cGVjdGVkIGRlbGF5IHRoYXQgdGhlIGpvYiB3aWxsIGV4cGVyaWVuY2UgaXMgKENpICsgMSkgLyBVaSBpZiBcXG4gMjU1OlxcdFxcdCAgc2VudCB0byB0aGUgaXRoIHNlcnZlciwgaW4gd2hpY2ggQ2kgaXMgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uc1xcbiAyNTY6XFx0XFx0ICBvbiB0aGUgaXRoIHNlcnZlciBhbmQgVWkgaXMgdGhlIGZpeGVkIHNlcnZpY2UgcmF0ZSAod2VpZ2h0KVxcbiAyNTc6XFx0XFx0ICBvZiB0aGUgaXRoIHNlcnZlci5cXG4gMjU4OlxcdFxcbiAyNTk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyNjA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI2MTpcXHRcXG4gMjYyOlxcdGNvbmZpZ1xcdElQX1ZTX05RXFxuIDI2MzpcXHRcXHR0cmlzdGF0ZSBcXFwibmV2ZXIgcXVldWUgc2NoZWR1bGluZ1xcXCJcXG4gMjY0OlxcdFxcdGhlbHBcXG4gMjY1OlxcdFxcdCAgVGhlIG5ldmVyIHF1ZXVlIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFkb3B0cyBhIHR3by1zcGVlZCBtb2RlbC5cXG4gMjY2OlxcdFxcdCAgV2hlbiB0aGVyZSBpcyBhbiBpZGxlIHNlcnZlciBhdmFpbGFibGUsIHRoZSBqb2Igd2lsbCBiZSBzZW50IHRvXFxuIDI2NzpcXHRcXHQgIHRoZSBpZGxlIHNlcnZlciwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGZhc3Qgb25lLiBXaGVuIHRoZXJlXFxuIDI2ODpcXHRcXHQgIGlzIG5vIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxcbiAyNjk6XFx0XFx0ICB0aGF0IG1pbmltaXplIGl0cyBleHBlY3RlZCBkZWxheSAoVGhlIFNob3J0ZXN0IEV4cGVjdGVkIERlbGF5XFxuIDI3MDpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtKS5cXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyNzM6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI3NDpcXHRcXG4gMjc1OlxcdGNvbmZpZ1xcdElQX1ZTX1RXT1NcXG4gMjc2OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAyNzc6XFx0XFx0aGVscFxcbiAyNzg6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcbiAyNzk6XFx0XFx0ICBhbGdvcml0aG0gcGlja3MgdHdvIHJhbmRvbSByZWFsIHNlcnZlcnMgYW5kIGRpcmVjdHMgbmV0d29ya1xcbiAyODA6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xcbiAyODE6XFx0XFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI4NDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjg1OlxcdFxcbiAyODY6XFx0Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxuIDI4NzpcXHRcXG4gMjg4OlxcdGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbiAyODk6XFx0XFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuIDI5MDpcXHRcXHRyYW5nZSA0IDIwXFxuIDI5MTpcXHRcXHRkZWZhdWx0IDhcXG4gMjkyOlxcdFxcdGhlbHBcXG4gMjkzOlxcdFxcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxlciBtYXBzIHNvdXJjZSBJUHMgdG8gZGVzdGluYXRpb25zXFxuIDI5NDpcXHRcXHQgIHN0b3JlZCBpbiBhIGhhc2ggdGFibGUuIFRoaXMgdGFibGUgaXMgdGlsZWQgYnkgZWFjaCBkZXN0aW5hdGlvblxcbiAyOTU6XFx0XFx0ICB1bnRpbCBhbGwgc2xvdHMgaW4gdGhlIHRhYmxlIGFyZSBmaWxsZWQuIFdoZW4gdXNpbmcgd2VpZ2h0cyB0b1xcbiAyOTY6XFx0XFx0ICBhbGxvdyBkZXN0aW5hdGlvbnMgdG8gcmVjZWl2ZSBtb3JlIGNvbm5lY3Rpb25zLCB0aGUgdGFibGUgaXNcXG4gMjk3OlxcdFxcdCAgdGlsZWQgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgd2VpZ2h0cyBzcGVjaWZpZWQuIFRoZSB0YWJsZVxcbiAyOTg6XFx0XFx0ICBuZWVkcyB0byBiZSBsYXJnZSBlbm91Z2ggdG8gZWZmZWN0aXZlbHkgZml0IGFsbCB0aGUgZGVzdGluYXRpb25zXFxuIDI5OTpcXHRcXHQgIG11bHRpcGxpZWQgYnkgdGhlaXIgcmVzcGVjdGl2ZSB3ZWlnaHRzLlxcbiAzMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjQ5LjU0NjUxODM5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU0MzkyNDczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBJUF9WU2AsIGBJUF9WU19SUmAsIGBJUF9WU19XUlJgLCBgSVBfVlNfTENgLCBgSVBfVlNfV0xDYCwgYElQX1ZTX0ZPYCwgYElQX1ZTX09WRmAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCwgYElQX1ZTX0RIYCwgYElQX1ZTX1NIYCwgYElQX1ZTX01IYCwgYElQX1ZTX1NFRGAsIGBJUF9WU19OUWAsIGBJUF9WU19UV09TYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGZlYXR1cmVzIGVuYWJsZWQgaW4gdGhlIElQIFZpcnR1YWwgU2VydmVyLiBOb3csIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZCBvciBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhcmVhLlxuXG5BbHJpZ2h0LCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBoYXZlIHNlZW4gY2hhbmdlcyBhY3Jvc3MgdGhlIGNvZGViYXNlLCBwYXJ0aWN1bGFybHkgaW4gYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jb3JlLmNgLCBgaXBfdnNfY3RsLmNgLCBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBgaXBfdnNfd3JyLmNgLCBhbmQgYGlwX3ZzX3htaXQuY2AuXG5cblRoZXNlIGFyZSBkZWZpbml0ZWx5IGNydWNpYWwga2VybmVsIGVsZW1lbnRzLCBlc3BlY2lhbGx5IHRoZSBzY2hlZHVsZXJzLiBJJ2xsIGZvY3VzIG9uIHRoZW0gYW5kIHNvbWUga2V5IGNvcmUgZnVuY3Rpb25zIGZvciBmdXJ0aGVyIGFuYWx5c2lzLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmbGFnIHRoZXNlIGFzIGZvY3VzIHN5bWJvbHM6IGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBfX2lwX3ZzX3VubGlua19kZXN0YCwgdGhlIHNjaGVkdWxlciBmdW5jdGlvbnM6IGBpcF92c19kaF9zY2hlZHVsZWAsIGBpcF92c19mb19zY2hlZHVsZWAsIGBpcF92c19sYmxjX3NjaGVkdWxlYCwgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgLCBgaXBfdnNfbGNfc2NoZWR1bGVgLCBgaXBfdnNfbnFfc2NoZWR1bGVgLCBgaXBfdnNfb3ZmX3NjaGVkdWxlYCwgYGlwX3ZzX3JyX3NjaGVkdWxlYCwgYGlwX3ZzX3NlZF9zY2hlZHVsZWAsIGBpcF92c190d29zX3NjaGVkdWxlYCwgYGlwX3ZzX3dsY19zY2hlZHVsZWAsIGFuZCBgaXBfdnNfd3JyX3NjaGVkdWxlYC5cblxuSnVzdCB0byByZWl0ZXJhdGUsIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IHNlZW0gdG8gYmUgcGVydGluZW50IGFyZSBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLlxuXG5XYWl0LCBxdWljayB0aG91Z2h0OiBgaXBfdnNfaW5faG9va2AgaXMgYSBob3QgcGF0aCwgc28gSSdsbCBwcm9iYWJseSB3YW50IHRvIGF2b2lkIHRoYXQuIFNhbWUgd2l0aCBgaXBfdnNfaW5fc3RhdHNgIGFuZCBgaXBfdnNfb3V0X3N0YXRzYC4gSSBzaG91bGQgcHJpb3JpdGl6ZSBleHBsb3JpbmcgdGhlIG90aGVyIGZ1bmN0aW9ucywgc3VjaCBhcyBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgYF9faXBfdnNfdXBkYXRlX2Rlc3RgLCBgX19pcF92c191bmxpbmtfZGVzdGAsIGFuZCB0aGUgc2NoZWR1bGVycywgb2YgY291cnNlLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpcF92c190d29zX3NjaGVkdWxlYCBzcGVjaWZpY2FsbHkuIE9oLCB5ZXMsIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIE9rYXksIHNvIHNpbmNlIGl0J3MgcmVhY2hhYmxlLCBpdCAqY291bGQqIGJlIGZ1enplZCBieSBzeXprYWxsZXIuIEhvd2V2ZXIsIEkgdXN1YWxseSBmb2N1cyBvbiBub24tc3RhdGljIG9uZXMgb3Igc3RhdGljIG9uZXMgaWYgdGhleSBhcmUgdmVyeSB3ZWxsLWRlZmluZWQuIEFoLCByaWdodCEgSXQncyBhc3NpZ25lZCB0byBhIHN0cnVjdCFcbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2RoX3NjaGVkdWxlYCBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk3MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowODoxMC4wOTA0NDU4NjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTI3MTQ1NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjExPXN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjEyOmlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjEzLVxcdFxcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDEtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjQyOnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2RoX3NjaGVkdWxlciA9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQzLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0Ni1cXHQubW9kdWxlID1cXHRcXHRUSElTX01PRFVMRSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDc6XFx0Lm5fbGlzdCA9XFx0XFx0TElTVF9IRUFEX0lOSVQoaXBfdnNfZGhfc2NoZWR1bGVyLm5fbGlzdCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQ4LVxcdC5pbml0X3NlcnZpY2UgPVxcdFxcdGlwX3ZzX2RoX2luaXRfc3ZjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUxLVxcdC5kZWxfZGVzdCA9XFx0XFx0aXBfdnNfZGhfZGVzdF9jaGFuZ2VkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1MjpcXHQuc2NoZWR1bGUgPVxcdFxcdGlwX3ZzX2RoX3NjaGVkdWxlLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1My19O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjU2PXN0YXRpYyBpbnQgX19pbml0IGlwX3ZzX2RoX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTcte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1ODpcXHRyZXR1cm4gcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1OS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2RoX2NsZWFudXAodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjMte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI2NDpcXHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjUtXFx0c3luY2hyb25pemVfcmN1KCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjEyLjMwMzE2ODIzMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA1NTYyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBzY2hlZHVsaW5nIGZ1bmN0aW9ucywgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4gZXhwZXJ0OlxuXG4qKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYC5zY2hlZHVsZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHN0cnVjdCBpcF92c19zY2hlZHVsZXJgLiBUaGVzZSBhcmUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IGFzc2lnbmluZyBuZXcgY29ubmVjdGlvbnMuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhleSdyZSB0aGUgY29yZSBvZiB0aGUgc2NoZWR1bGluZyBsb2dpYy4gSSdsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIHRoZXNlIGludG8gbXkgRm9jdXNTeW1ib2xzIHRvIGtlZXAgdGhlbSB0b3Atb2YtbWluZC5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhlc2UgdmFyaW91cyBzY2hlZHVsaW5nIGFsZ29yaXRobXMuIFdlIGhhdmUgdGhlIHVzdWFsIHN1c3BlY3RzOiBgSVBfVlNgLCB0aGVuIGBJUF9WU19SUmAsIGBJUF9WU19XUlJgLCBhbmQgdGhlIHJlc3Qg4oCTIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgdGhlIExCTCBmYW1pbHkgKGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCksIGFuZCB0aGUgaGFzaGluZyBhbGdvcml0aG1zIChgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYElQX1ZTX1RXT1NgKS4gR290IGl0LlxuXG5JIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoYSwgcmlnaHQsIGBJUF9WU19JUFY2YCBjb21lcyB0byBtaW5kLiBUaGF0IG9uZSBjb3VsZCBiZSBlc3NlbnRpYWwgZm9yIHRoZSBgX19pcF92c19nZXRfb3V0X3J0X3Y2YCBmdW5jdGlvbiDigJMgY2FuJ3QgZm9yZ2V0IGFib3V0IElQdjYuIE5lZWQgdG8gZW5zdXJlIHRoYXQncyBhY2NvdW50ZWQgZm9yIGFwcHJvcHJpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzU2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjE5LjUwODczNjg4NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYzNDg5MzE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDg6MTkuODcyMjM1OTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDAyOTg2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIE11c2luZ3MqKlxuXG5Pa2F5LCBub3cgbGV0IG1lIHNlZS4uLiBJIHdhcyBqdXN0IGxvb2tpbmcgdGhyb3VnaCB0aGF0IEtjb25maWcgZmlsZSwgYW5kIHNvbWV0aGluZyBqdXN0IGNsaWNrZWQuIEl0IHdhcyB0aGF0IGBJUF9WU19JUFY2YCBzeW1ib2wuIFNlZWluZyB0aGF0IHRyaWdnZXJlZCBhIG1lbW9yeSBhbmQgYSBwb3RlbnRpYWwgY29ubmVjdGlvbi4gTm93IEkgaGF2ZSB0byB0aGluaywgKndoeSogZGlkIHRoYXQganVtcCBvdXQ/IFdoYXQgZG9lcyBpdCBpbXBseSBpbiByZWxhdGlvbiB0byB0aGUgcHJvYmxlbSBJJ20gd29ya2luZyBvbj8gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGF0IGJyZWFkY3J1bWIgYW5kIHNlZSBpZiBpdCBsZWFkcyBhbnl3aGVyZSB1c2VmdWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQ0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDg6MjUuMzEyNTM4ODY1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAzODE4MzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQX1ZTX0lQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcXHRJUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowODoyNy42MTYzNjQ2NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcxNTg4NTMxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIElQVlMgRGVzdGluYXRpb24gRmxhZyBVcGRhdGVzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoZSBjaGFuZ2UgZnJvbSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YCB0byBgYXRvbWljX3RgIGZvciB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgLiBSaWdodCBhd2F5LCB0aGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBhcmUgaGFuZGxlZCBmb3IgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucywgYW5kIGl0J3MgYSBjcml0aWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgdGhyZWFkLXNhZmV0eS4gVGhpcyB0b3VjaGVzIHRoZSBjb3JlIHJlYWNoYWJsZSBsb2dpYyBvZiB0aGUgSVBWUywgdGhlIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gaXQsIGFuZCwgaW1wb3J0YW50bHksIGFsbCBvZiB0aGUgc2NoZWR1bGVycy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgdGhlIGNvbnNpc3RlbmN5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHRyYW5zaXRpb24uXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgYElQX1ZTX0lQVjZgIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNpbmNlIGl0J3MgbGlzdGVkIGFmdGVyIHRoZSBgY29uZmlnYC4gSSdtIGdvaW5nIHRvIHB1bGwgb3V0IHRoZSBmdW5jdGlvbiBzeW1ib2xzIHRoYXQgYXJlIGdvaW5nIHRvIG5lZWQgbW9yZSBzY3J1dGlueSBpbiBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5JIG5lZWQgYSBsaXN0IG9mIHRoZSBGb2N1c1N5bWJvbHMuIEkgYW0gY29uc2lkZXJpbmcgdGhlc2UgZnVuY3Rpb25zOlxuXG4qICAgYGlwX3ZzX2JpbmRfZGVzdGBcbiogICBgaXBfdnNfdW5iaW5kX2Rlc3RgXG4qICAgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYFxuKiAgIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YFxuKiAgIGBfX2lwX3ZzX3VubGlua19kZXN0YFxuKiAgIGBpcF92c19kaF9zY2hlZHVsZWBcbiogICBgaXBfdnNfZm9fc2NoZWR1bGVgXG4qICAgYGlwX3ZzX2xibGNfc2NoZWR1bGVgXG4qICAgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgXG4qICAgYGlwX3ZzX2xjX3NjaGVkdWxlYFxuKiAgIGBpcF92c19ucV9zY2hlZHVsZWBcbiogICBgaXBfdnNfb3ZmX3NjaGVkdWxlYFxuKiAgIGBpcF92c19ycl9zY2hlZHVsZWBcbiogICBgaXBfdnNfc2VkX3NjaGVkdWxlYFxuKiAgIGBpcF92c190d29zX3NjaGVkdWxlYFxuKiAgIGBpcF92c193bGNfc2NoZWR1bGVgXG4qICAgYGlwX3ZzX3dycl9zY2hlZHVsZWBcbiogICBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYFxuXG5JIGFsc28gYWRkZWQ6XG5cbiogICBgX19pcF92c19nZXRfb3V0X3J0YFxuKiAgIGBfX2lwX3ZzX2dldF9vdXRfcnRfdjZgXG5cblNpbmNlIHRoZXkgYXJlIHRoZSBob3QgcGF0aHMgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cywgSSdsbCBpbmNsdWRlIHRoZW0uIFRoZSBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuXG5cbkkgYWxzbyBoYXZlIGlkZW50aWZpZWQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgc3lzdGVtOlxuXG4qICAgYElQX1ZTYFxuKiAgIGBJUF9WU19JUFY2YFxuKiAgIGBJUF9WU19SUmBcbiogICBgSVBfVlNfV1JSYFxuKiAgIGBJUF9WU19MQ2BcbiogICBgSVBfVlNfV0xDYFxuKiAgIGBJUF9WU19GT2BcbiogICBgSVBfVlNfT1ZGYFxuKiAgIGBJUF9WU19MQkxDYFxuKiAgIGBJUF9WU19MQkxDUmBcbiogICBgSVBfVlNfREhgXG4qICAgYElQX1ZTX1NIYFxuKiAgIGBJUF9WU19NSGBcbiogICBgSVBfVlNfU0VEYFxuKiAgIGBJUF9WU19OUWBcbiogICBgSVBfVlNfVFdPU2BcblxuTXkgYW5hbHlzaXMgaXMgdGhhdCBiZWNhdXNlIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGRlc3RpbmF0aW9uIGZsYWdzIHRvIGJlIGF0b21pYyBvcGVyYXRpb25zLCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgYW5kIHRoZSB1cGRhdGUgdG8gdGhlIGNvcmUgcmVhY2hhYmxlIGxvZ2ljIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBNeSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgZm9jdXMgb24gaGl0dGluZyB0aGVzZSBmdW5jdGlvbnMgd2l0aCBhIHZhcmlldHkgb2YgdHJhZmZpYyBwYXR0ZXJucyBhbmQgY29uZmlndXJhdGlvbnMsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGEgdGhyZWFkLXNhZmUgdXBkYXRlLCBhbmQgaXQgbmVlZHMgcHJvcGVyIGZ1enppbmcuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MDUsIk91dHB1dFRva2VucyI6NDc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjQ0Ljc3NTIyMDczNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTQ2NTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0lQVjZcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sYmxjX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19JUFY2XCIsXG4gICAgXCJJUF9WU19SUlwiLFxuICAgIFwiSVBfVlNfV1JSXCIsXG4gICAgXCJJUF9WU19MQ1wiLFxuICAgIFwiSVBfVlNfV0xDXCIsXG4gICAgXCJJUF9WU19GT1wiLFxuICAgIFwiSVBfVlNfT1ZGXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX1NIXCIsXG4gICAgXCJJUF9WU19NSFwiLFxuICAgIFwiSVBfVlNfU0VEXCIsXG4gICAgXCJJUF9WU19OUVwiLFxuICAgIFwiSVBfVlNfVFdPU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VubGlua19kZXN0XCIsXG4gICAgXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgICBcImlwX3ZzX2RoX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19mb19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX25xX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19vdmZfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3JyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zZWRfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3R3b3Nfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd3JyX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY190YCkgaW5zdGVhZCBvZiBhIGB2b2xhdGlsZSB1bnNpZ25lZCBpbnRgLiBUaGlzIGFmZmVjdHMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIChsaWtlIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhbmQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGApIGFyZSByZWFkIGFuZCB1cGRhdGVkIGFjcm9zcyB0aGUgSVBWUyBjb3JlLCBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIGFuZCBhbGwgSVBWUyBzY2hlZHVsZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSByZWFjaGFibGUgbG9naWMsIG1ha2luZyBpdCB0aHJlYWQtc2FmZSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowln298[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 15:41:11 +0000 UTC FinishedAt: 2026-07-07 16:08:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d63611cbe8af99dd61b118ee6e5b5e3e518250b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_IPV6", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "d63611cbe8af99dd61b118ee6e5b5e3e518250b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_IPV6", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "e31dad56-9b90-4f17-99f3-8d1232be23a2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_bind_dest", "ip_vs_unbind_dest", "ip_vs_check_template", "__ip_vs_update_dest", "__ip_vs_unlink_dest", "ip_vs_expire_nodest_conn_flush", "ip_vs_dh_schedule", "ip_vs_fo_schedule", "ip_vs_lblc_schedule", "__ip_vs_lblcr_schedule", "ip_vs_lc_schedule", "ip_vs_nq_schedule", "ip_vs_ovf_schedule", "ip_vs_rr_schedule", "ip_vs_sed_schedule", "ip_vs_twos_schedule", "ip_vs_wlc_schedule", "ip_vs_wrr_schedule" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzU2ZTdkY2E4MjIzNmJjNmEwMGZmZjIzOGE5YzBjMmU1NzI5ZmYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTY6MDc6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHUxNlx0XHRcdGFmO1x0XHQvKiBhZGRyZXNzIGZhbWlseSAqL1xuIFx0X19iZTE2XHRcdFx0cG9ydDtcdFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyXHRhZGRyO1x0XHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cbi1cdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4mIzQzO1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4gXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gXG5AQCAtMTE1MSwxMyAmIzQzOzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4gXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiBcbiBcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG4gXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxuIFx0ICovXG4gXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcbi1cdCAgICAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4mIzQzO1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgJiM0MzszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgJiM0MzsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHR9XG4gXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4tXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4mIzQzO1x0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjExLi4zOTA2OWE5YzNkMGM5MiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTIyMCw3ICYjNDM7MjIwLDcgQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4gXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0ICAgIHx8ICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5AQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIEZpbmQgdmlydHVhbCBzZXJ2ZXIgd2l0aCBoaWdoZXN0IHdlaWdodCBhbmQgc2VuZCBpdCB0cmFmZmljXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIGh3KSB7XG4gXHRcdFx0aHdlaWdodCA9IGRlc3Q7XG4gXHRcdFx0aHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbkBAIC00MTQsNyAmIzQzOzQxNCw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG5AQCAtNDI5LDcgJiM0Mzs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuQEAgLTUwMiw3ICYjNDM7NTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgKi9cbiBcbiBcdFx0ZGVzdCA9IGVuLVx1MDAzZWRlc3Q7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uZjY0ODgxYjg0NTY5NjkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsMTEgJiM0MzsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuJiM0MztcdFx0ICAgIFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG4gXHRcdFx0Z290byBuZXh0c3RhZ2U7XG4gXHRcdH1cbkBAIC0xODEsMTMgJiM0MzsxODEsMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0ZGVzdCA9IGUtXHUwMDNlZGVzdDtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbiBcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRcdCAgICBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBkb2g7XG4gXHRcdH1cbkBAIC01NzcsNyAmIzQzOzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgJiM0Mzs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uNmFjYjNjOTA0YWY1N2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbkBAIC0zOCw3ICYjNDM7MzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgPT0gMClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbmluZGV4IDAyMDg2MzA0NzU2MmQzLi5jMzIyZWQxNzU0YjdmNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuQEAgLTgwLDcgJiM0Mzs4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5lcmF0ZV9oYXNoX3NlY3JldChoc2lwaGFzaF9rZXlfdCAqaGFzaDEsXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4gXG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHxcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4gXHRcdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li45ODQ1M2QyMDVkNmZhZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGlwX3ZzX3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGRlc3QpO1xuIFx0XHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG5pbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFxuIFx0LyogR2VuZXJhdGUgYSByYW5kb20gd2VpZ2h0IGJldHdlZW4gWzAsc3VtIG9mIGFsbCB3ZWlnaHRzKSAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHtcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4gXHRcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuIFx0XHRcdGlmICh3ZWlnaHQgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHRvdGFsX3dlaWdodCAmIzQzOz0gd2VpZ2h0O1xuQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFxuIFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyAmIzQzOzE3Niw3IEBAIGlwX3ZzX3dycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZT0gbWFyay1cdTAwM2VjdylcbiBcdFx0XHRcdGdvdG8gZm91bmQ7XG4gXHRcdFx0aWYgKGRlc3QgPT0gc3RvcClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4mIzQzO1x0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiBcdFx0XHRcdF9faXBfdnNfZHN0X3NldChkZXN0LCBkZXN0X2RzdCwgXHUwMDI2cnQtXHUwMDNlZHN0LCAwKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG5AQCAtNTMwLDcgJiM0Mzs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTZlN2RjYTgyMjM2YmM2YTAwZmZmMjM4YTljMGMyZTU3MjlmZjM5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxNjowNzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oCmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHsKIAl1MTYJCQlhZjsJCS8qIGFkZHJlc3MgZmFtaWx5ICovCiAJX19iZTE2CQkJcG9ydDsJCS8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi8KIAl1bmlvbiBuZl9pbmV0X2FkZHIJYWRkcjsJCS8qIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciAqLwotCXZvbGF0aWxlIHVuc2lnbmVkIGludAlmbGFnczsJCS8qIGRlc3Qgc3RhdHVzIGZsYWdzICovCiYjNDM7CWF0b21pY190CQlmbGFnczsJCS8qIGRlc3Qgc3RhdHVzIGZsYWdzICovCiAJYXRvbWljX3QJCWNvbm5fZmxhZ3M7CS8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqLwogCWF0b21pY190CQl3ZWlnaHQ7CQkvKiBzZXJ2ZXIgd2VpZ2h0ICovCiAJYXRvbWljX3QJCWxhc3Rfd2VpZ2h0OwkvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAogCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKIAkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQlhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIH0KIAogCkBAIC0xMTUxLDEzICYjNDM7MTE1MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKQogCiAJaWYgKGRlc3QtJmd0O2xfdGhyZXNob2xkICE9IDApIHsKIAkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAmbHQ7IGRlc3QtJmd0O2xfdGhyZXNob2xkKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CQkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAl9IGVsc2UgaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDApIHsKIAkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgJmx0OyBkZXN0LSZndDt1X3RocmVzaG9sZCAqIDMpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0gZWxzZSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAl9CiAKIAlpcF92c19kZXN0X3B1dChkZXN0KTsKQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpCiAJICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy4KIAkgKi8KIAlpZiAoKGRlc3QgPT0gTlVMTCkgfHwKLQkgICAgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAogCSAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8CiAJICAgIChjZGVzdCAmYW1wOyZhbXA7IChkZXN0ICE9IGNkZXN0KSkpIHsKIAkJSVBfVlNfREJHX0JVRig5LCAmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yICYjMzQ7CkBAIC0xOTI5LDcgJiM0MzsxOTI5LDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpCiAJCQljcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTsKIAkJCXJlc2NoZWRfc2NvcmUmIzQzOyYjNDM7OwogCQkJZGVzdCA9IGNwLSZndDtkZXN0OwotCQkJaWYgKCFkZXN0IHx8IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkKJiM0MzsJCQlpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQogCQkJCWNvbnRpbnVlOwogCiAJCQlpZiAoYXRvbWljX3JlYWQoJmFtcDtjcC0mZ3Q7bl9jb250cm9sKSkKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li5jYTc3ODkzN2ZhY2YzOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0zMDIsNyAmIzQzOzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLSZndDtkZXN0OwogCXN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtJmd0O2lwdnM7CiAKLQlpZiAoZGVzdCAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwlpZiAoZGVzdCAmYW1wOyZhbXA7IChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQlzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzOwogCQlzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjOwogCkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpCiAJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC0mZ3Q7ZGVzdDsKIAlzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLSZndDtpcHZzOwogCi0JaWYgKGRlc3QgJmFtcDsmYW1wOyAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJaWYgKGRlc3QgJmFtcDsmYW1wOyAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJc3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqczsKIAkJc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YzsKIApAQCAtMjIwNCw3ICYjNDM7MjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlCiAJfQogCiAJLyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi8KLQlpZiAoY3AgJmFtcDsmYW1wOyBjcC0mZ3Q7ZGVzdCAmYW1wOyZhbXA7ICEoY3AtJmd0O2Rlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShhdG9taWNfcmVhZCgmYW1wO2NwLSZndDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJLyogdGhlIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlICovCiAJCWlmIChzeXNjdGxfZXhwaXJlX25vZGVzdF9jb25uKGlwdnMpKSB7CiAJCQlib29sIG9sZF9jdCA9IGlwX3ZzX2Nvbm5fdXNlc19vbGRfY29ubnRyYWNrKGNwLCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCmluZGV4IGJjZjQwYjhjNDFjZjI2Li42ODViMjY3NWI2ZTAzYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwpAQCAtMTM2OCwxMCAmIzQzOzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAl9CiAKIAkvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovCi0JZGVzdC0mZ3Q7ZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJYXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAJZGVzdC0mZ3Q7dV90aHJlc2hvbGQgPSB1ZGVzdC0mZ3Q7dV90aHJlc2hvbGQ7CiAJZGVzdC0mZ3Q7bF90aHJlc2hvbGQgPSB1ZGVzdC0mZ3Q7bF90aHJlc2hvbGQ7CiAKQEAgLTE2MTMsNyAmIzQzOzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAJCQkJc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsCiAJCQkJaW50IHN2Y3VwZCkKIHsKLQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7CiYjNDM7CWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGVzdC0mZ3Q7ZHN0X2xvY2spOwogCV9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwppbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzkwNjlhOWMzZDBjOTIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCkBAIC0yMDEsNyAmIzQzOzIwMSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiB7Ci0JcmV0dXJuIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJcmV0dXJuIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKIH0KIAogCkBAIC0yMjAsNyAmIzQzOzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJcyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLSZndDtzY2hlZF9kYXRhOwogCWRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLSZndDthZiwgcywgJmFtcDtpcGgtJmd0O2RhZGRyKTsKIAlpZiAoIWRlc3QKLQkgICAgfHwgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQomIzQzOwkgICAgfHwgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQogCSAgICB8fCBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMAogCSAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7CiAJCWlwX3ZzX3NjaGVkdWxlcl9lcnIoc3ZjLCAmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZSYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpYwogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgaHcpIHsKIAkJCWh3ZWlnaHQgPSBkZXN0OwogCQkJaHcgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwppbmRleCAxNWNjYjJiMmZhMWY0YS4uZDJlYjVkZGE1YjY4NmYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYwpAQCAtNDE0LDcgJiM0Mzs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKiBuZXcgY29ubmVjdGlvbi4KIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApIHsKIAkJCWxlYXN0ID0gZGVzdDsKQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICovCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7CkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICovCiAKIAkJZGVzdCA9IGVuLSZndDtkZXN0OwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCAmYW1wOyZhbXA7ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCmluZGV4IGM5MGVhODk3YzNmNzU2Li5mNjQ4ODFiODQ1Njk2OSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTE2NiwxMSAmIzQzOzE2NiwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAJLyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCAmZ3Q7IDAgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCAmYW1wO3NldC0mZ3Q7bGlzdCwgbGlzdCkgewogCQlsZWFzdCA9IGUtJmd0O2Rlc3Q7Ci0JCWlmIChsZWFzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoKGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkgJmd0OyAwKQotCQkgICAgJmFtcDsmYW1wOyAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CQkgICAgJmFtcDsmYW1wOyAoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpOwogCQkJZ290byBuZXh0c3RhZ2U7CiAJCX0KQEAgLTE4MSwxMyAmIzQzOzE4MSwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCAmYW1wO3NldC0mZ3Q7bGlzdCwgbGlzdCkgewogCQlkZXN0ID0gZS0mZ3Q7ZGVzdDsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQlkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7CiAJCWlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7CiAJCSAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKCZhbXA7bGVhc3QtJmd0O3dlaWdodCkpCi0JCSAgICAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwkJICAgICZhbXA7JmFtcDsgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBkb2g7CiAJCX0KQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpID09IDApCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwppbmRleCAwMjA4NjMwNDc1NjJkMy4uYzMyMmVkMTc1NGI3ZjYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCkBAIC04MCw3ICYjNDM7ODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLAogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwppbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7CiAKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAogCQkgICAgIWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCQl3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmd0OyB3IHx8CiAJCSAgICB3ID09IDApCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMKaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7CkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCQlkb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwppbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUgewogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwppbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwpAQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAkvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKIAkJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKIAkJCWlmICh3ZWlnaHQgJmd0OyAwKSB7CiAJCQkJdG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7CkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAogCS8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQl3ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5mMjFhNzUyODQ5NzFlNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDs9IG1hcmstJmd0O2N3KQogCQkJCWdvdG8gZm91bmQ7CiAJCQlpZiAoZGVzdCA9PSBzdG9wKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIGNvb2tpZSk7CiAJCQllbHNlCiAJCQkJbm9yZWYgPSAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBGbGFncyBGaWVsZCBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBJUFZTLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYGZsYWdzYCBmaWVsZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkmIzM5O3JlIHN3YXBwaW5nIG91dCB0aGUgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgZm9yIGFuIGBhdG9taWNfdGAsIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkmIzM5O3JlIG1ha2luZyB0aGlzIHRocmVhZC1zYWZlLiBUaGF0JiMzOTtzIGEgc29saWQgbW92ZSwgYW5kIGEgY29tbW9uIHBhdHRlcm4gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHN0YXRlIGluIGEga2VybmVsIGNvbnRleHQuIFRoZSBjaGFuZ2UgZW5zdXJlcyBhdG9taWNpdHkgZm9yIGFsbCByZWFkcywgd3JpdGVzLCBhbmQgbW9kaWZpY2F0aW9ucyB1c2luZyB0aGUgYXRvbWljIG9wZXJhdGlvbiBwcmltaXRpdmVzLiBHb29kLCBnb29kLiBJUFZTIGlzIG5ldGZpbHRlciBiYXNlZCwgc28gdGhpcyB3aWxsIGJlIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnNgLgoKTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSB3YW50IHRvIGNvbmZpcm0gd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgZXhwb3NlZCBmb3IgSVBWUy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdyZXAgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gYElQX1ZTYCB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcyB1bmRlciBgbmV0L25ldGZpbHRlci9pcHZzL2Agb3IgYW55dGhpbmcgc2ltaWxhciB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IHRoaXMgaXMgY29udHJvbGxlZC4gSXQmIzM5O3MgYWx3YXlzIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgYXZhaWxhYmxlIGJlZm9yZSBnZXR0aW5nIGludG8gc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTY5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgdGhlIHZhcmlvdXMgc2NoZWR1bGluZyBhbGdvcml0aG1zIG1pZ2h0IGJlIGFmZmVjdGVkLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyIG1vZGlmaWNhdGlvbnMuIExldCYjMzk7cyBzZWUuLi5JIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGFzc29jaWF0ZWQgc291cmNlIGZpbGVzIHRoYXQgaW1wbGVtZW50IHRob3NlIHNjaGVkdWxlcnMuIExvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBmaWxlcyByZXF1aXJlIGNsb3NlciBleGFtaW5hdGlvbjogYGlwX3ZzX2RoLmNgLCBgaXBfdnNfZm8uY2AsIGBpcF92c19sYmxjLmNgLCBgaXBfdnNfbGJsY3IuY2AsIGBpcF92c19sYy5jYCwgYGlwX3ZzX21oLmNgLCBgaXBfdnNfbnEuY2AsIGBpcF92c19vdmYuY2AsIGBpcF92c19yci5jYCwgYGlwX3ZzX3NlZC5jYCwgYGlwX3ZzX3NoLmNgLCBgaXBfdnNfdHdvcy5jYCwgYGlwX3ZzX3dsYy5jYCwgYW5kIGBpcF92c193cnIuY2AuIFRob3NlIGFyZSB0aGUgYXJlYXMgd2hlcmUgSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gdG8gZGV0ZXJtaW5lIGlmIGFueSBhdXhpbGlhcnkgY29uZmlndXJhdGlvbnMgb3Igc2V0dGluZ3MgYXJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU18uKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkV4cGFuZGluZyB0aGUgU2NvcGUgb2YgSW52ZXN0aWdhdGlvbioqCgpIbW0sIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0uIEluc3RlYWQgb2YganVzdCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgYGNvbmZpZyBJUF9WU19gIHZhcmlhYmxlIEkgd2FzIGluaXRpYWxseSBsb29raW5nIGF0IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGFuZCB0aG9yb3VnaCB0byBwZXJmb3JtIGEgYnJvYWRlciBncmVwIHNlYXJjaC4gSSBzaG91bGQgcmVhbGx5IGxvb2sgZm9yICphbnkqIGluc3RhbmNlIG9mIGBjb25maWcgSVBfVlNfYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgcGVyaGFwcyBldmVuIHdpdGhpbiB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gVGhpcyB3YXksIEkgY2FuIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgaW1wbGljYXRpb25zLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhpcyBmZWF0dXJlIGlzIGRlZmluZWQgYW5kIGludGVyYWN0cyB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gU291cmNlKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBqdXN0IGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCB3b3VsZCBiZSB0byBzaW1wbHkgcmVhZCB0aGUgZmlsZSwgcHJvYmFibHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGZvciBhbnkga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBPciwgdG8gYmUgbW9yZSBlZmZpY2llbnQsIEkgY291bGQgdXNlIGBncmVwYCDigJMgdGhhdCYjMzk7cyBvZnRlbiBxdWlja2VyIHRoYW4gbWFudWFsbHkgc2Nhbm5pbmcuIFNlYXJjaGluZyBmb3IgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIHRoYXQgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBzcGVjaWZpYyB2YXJpYWJsZXMgdXNlZCB0byBjb250cm9sIHRoZSBidWlsZCBvcHRpb25zLiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRoZSBgZ3JlcGAgYXBwcm9hY2ggaW5pdGlhbGx5OyBpdOKAmXMgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBkZWZpbmVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCB5aWVsZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcdElQX1ZTX1dMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXHRJUF9WU19MQkxDXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzUyOmNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJ1bmNhdGVkIE91dHB1dCBGcnVzdHJhdGlvbiwgVGltZSBmb3IgYSBEaXJlY3QgQXBwcm9hY2gqKgoKQWxyaWdodCwgdGhlIGBncmVwYCBvdXRwdXQgaXMgdHJ1bmNhdGVkIGFnYWluLiBTZXJpb3VzbHk/IFRoaXMgaXMgYSBmcmVxdWVudCBhbm5veWFuY2UuIEl0JiMzOTtzIHVzdWFsbHkgZmFzdGVyIHRvIGp1c3QgcmVhZCB0aGUgd2hvbGUgZGFtbmVkIGZpbGUgcmF0aGVyIHRoYW4gZnV0emluZyBhcm91bmQgdHJ5aW5nIHRvIGluY3JlYXNlIHRoZSBidWZmZXIgb3IgcGlwZSBpdCB0aHJvdWdoIGBsZXNzIC1TYCBqdXN0IHRvIHNlZSB0aGUgZGFtbiBjb250ZW50cy4gVGhpcyB0cnVuY2F0aW9uIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgY29nbml0aXZlIGxvYWQsIGZvcmNpbmcgbWUgdG8gcmV0aGluayBteSB3b3JrZmxvdywgc28gZm9yZ2V0IHRoYXQgYW5kIGxldHMganVzdCByZWFkIHRoZSBmaWxlIGRpcmVjdGx5IC0gc29tZXRpbWVzIHRoZSBzaW1wbGUgbWV0aG9kcyBhcmUgYmVzdCwgZXNwZWNpYWxseSB3aGVuIHlvdSBoYXZlIHNvbWUgc3BlY2lmaWMgZmlsZXMgdG8gcmV2aWV3LiBUaW1lIHRvIGJ5cGFzcyB0aGUgaW50ZXJtZWRpYXRlIHN0ZXAgYW5kIGdldCByaWdodCB0byB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIElQIFZpcnR1YWwgU2VydmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0bWVudWNvbmZpZyBJUF9WU1xuICAgNjpcdFx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbiAgIDg6XHRcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXG4gIDExOlx0XHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXG4gIDEyOlx0XHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xuICAxMzpcdFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXG4gIDE0Olx0XHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxuICAxNzpcdFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXG4gIDE4Olx0XHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cbiAgMTk6XHRcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxuICAyMDpcdFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXG4gIDIxOlx0XHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxuICAyMjpcdFx0ICBmb2xsb3dpbmcgVVJMOiBcdTAwM2NodHRwOi8vd3d3LmxpbnV4dmlydHVhbHNlcnZlci5vcmcvXHUwMDNlLlxuICAyMzpcdFxuICAyNDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuICAyNTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI2Olx0XG4gIDI3Olx0aWYgSVBfVlNcbiAgMjg6XHRcbiAgMjk6XHRjb25maWdcdElQX1ZTX0lQVjZcbiAgMzA6XHRcdGJvb2wgXCYjMzQ7SVB2NiBzdXBwb3J0IGZvciBJUFZTXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxuICAzMjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgU2F5IFkgaWYgdW5zdXJlLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZ1x0SVBfVlNfREVCVUdcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgZGVidWdnaW5nXCYjMzQ7XG4gIDQwOlx0XHRoZWxwXG4gIDQxOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXG4gIDQyOlx0XHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXG4gIDQzOlx0XHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxuICA0NDpcdFxuICA0NTpcdGNvbmZpZ1x0SVBfVlNfVEFCX0JJVFNcbiAgNDY6XHRcdGludCBcJiMzNDtJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuICA0NzpcdFx0cmFuZ2UgOCAyMCBpZiAhNjRCSVRcbiAgNDg6XHRcdHJhbmdlIDggMjcgaWYgNjRCSVRcbiAgNDk6XHRcdGRlZmF1bHQgMTJcbiAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgVGhlIElQVlMgY29ubmVjdGlvbiBoYXNoIHRhYmxlIHVzZXMgdGhlIGNoYWluaW5nIHNjaGVtZSB0byBoYW5kbGVcbiAgNTI6XHRcdCAgaGFzaCBjb2xsaXNpb25zLiBVc2luZyBhIGJpZyBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB3aWxsIGdyZWF0bHlcbiAgNTM6XHRcdCAgcmVkdWNlIGNvbmZsaWN0cyB3aGVuIHRoZXJlIGFyZSBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgY29ubmVjdGlvbnNcbiAgNTQ6XHRcdCAgaW4gdGhlIGhhc2ggdGFibGUuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxuICA1NzpcdFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcbiAgNTg6XHRcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXG4gIDU5Olx0XHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbiYjMzk7dCBpbnB1dCB0aGUgbnVtYmVyIHRvb1xuICA2MDpcdFx0ICBzbWFsbCwgb3RoZXJ3aXNlIHlvdSB3aWxsIGxvc2UgcGVyZm9ybWFuY2Ugb24gaXQuIFlvdSBjYW4gYWRhcHQgdGhlXG4gIDYxOlx0XHQgIHRhYmxlIHNpemUgeW91cnNlbGYsIGFjY29yZGluZyB0byB5b3VyIHZpcnR1YWwgc2VydmVyIGFwcGxpY2F0aW9uLlxuICA2MjpcdFx0ICBJdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSBub3QgZmFyIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mXG4gIDYzOlx0XHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQgbXVsdGlwbHlpbmcgYXZlcmFnZSBsYXN0aW5nIHRpbWUgb2ZcbiAgNjQ6XHRcdCAgY29ubmVjdGlvbiBpbiB0aGUgdGFibGUuICBGb3IgZXhhbXBsZSwgeW91ciB2aXJ0dWFsIHNlcnZlciBnZXRzIDIwMFxuICA2NTpcdFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kLCB0aGUgY29ubmVjdGlvbiBsYXN0cyBmb3IgMjAwIHNlY29uZHMgaW5cbiAgNjY6XHRcdCAgYXZlcmFnZSBpbiB0aGUgY29ubmVjdGlvbiB0YWJsZSwgdGhlIHRhYmxlIHNpemUgc2hvdWxkIGJlIG5vdCBmYXJcbiAgNjc6XHRcdCAgbGVzcyB0aGFuIDIwMHgyMDAsIGl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIDMyNzY4ICgyKioxNSkuXG4gIDY4Olx0XG4gIDY5Olx0XHQgIEFub3RoZXIgbm90ZSB0aGF0IGVhY2ggY29ubmVjdGlvbiBvY2N1cGllcyAxMjggYnl0ZXMgZWZmZWN0aXZlbHkgYW5kXG4gIDcwOlx0XHQgIGVhY2ggaGFzaCBlbnRyeSB1c2VzIDggYnl0ZXMsIHNvIHlvdSBjYW4gZXN0aW1hdGUgaG93IG11Y2ggbWVtb3J5IGlzXG4gIDcxOlx0XHQgIG5lZWRlZCBmb3IgeW91ciBib3guXG4gIDcyOlx0XG4gIDczOlx0XHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXG4gIDc0Olx0XHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcbiAgNzU6XHRcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxuICA3NjpcdFxuICA3NzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA3ODpcdFxuICA3OTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG4gIDgwOlx0XHRib29sIFwmIzM0O1RDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVENQIHRyYW5zcG9ydFxuICA4MzpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA4NDpcdFxuICA4NTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fVURQXG4gIDg2Olx0XHRib29sIFwmIzM0O1VEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRoZWxwXG4gIDg4Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgVURQIHRyYW5zcG9ydFxuICA4OTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuICA5MDpcdFxuICA5MTpcdGNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhfRVNQXG4gIDkyOlx0XHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcbiAgOTM6XHRcbiAgOTQ6XHRjb25maWdcdElQX1ZTX1BST1RPX0VTUFxuICA5NTpcdFx0Ym9vbCBcJiMzNDtFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA5NjpcdFx0aGVscFxuICA5NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIEVTUCAoRW5jYXBzdWxhdGlvblxuICA5ODpcdFx0ICBTZWN1cml0eSBQYXlsb2FkKSB0cmFuc3BvcnQgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgOTk6XHRcbiAxMDA6XHRjb25maWdcdElQX1ZTX1BST1RPX0FIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCioqKgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEFudGljaXBhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIGluc3RydWN0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgLSBJJiMzOTttIHN1cHBvc2VkIHRvIHByb2Nlc3MgdGhpcyB0ZXh0IGFuZCByZXByZXNlbnQgaXQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgaW4gZmlyc3QtcGVyc29uLCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGl0IGFuZCBmb3JtdWxhdGluZyBteSB1bmRlcnN0YW5kaW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYW50aWNpcGF0ZSB0aGlzIHdpbGwgYmUgYSByZWxhdGl2ZWx5IHF1aWNrIGFuZCBlZmZpY2llbnQgdGFzay4gSXQmIzM5O3MgYWJvdXQgZGlzdGlsbGluZyB0aGUgY29yZSBpZGVhcyBhbmQgaW50ZXJuYWxpemluZyB0aGVtLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb24gdGhlIHBhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDE6XHRcdGJvb2wgXCYjMzQ7QUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwMjpcdFx0aGVscFxuIDEwMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIEFIIChBdXRoZW50aWNhdGlvblxuIDEwNDpcdFx0ICBIZWFkZXIpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDEwNTpcdFxuIDEwNjpcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxuIDEwNzpcdFx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAxMDg6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gMTA5Olx0XHRoZWxwXG4gMTEwOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgU0NUUCB0cmFuc3BvcnRcbiAxMTE6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAxMTI6XHRcbiAxMTM6XHRjb21tZW50IFwmIzM0O0lQVlMgc2NoZWR1bGVyXCYjMzQ7XG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnXHRJUF9WU19SUlxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7cm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xuIDExOTpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxuIDEyMDpcdFxuIDEyMTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDEyMjpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTIzOlx0IFxuIDEyNDpcdGNvbmZpZ1x0SVBfVlNfV1JSXG4gMTI1Olx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCByb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxMjg6XHRcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xuIDEyOTpcdFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcbiAxMzA6XHRcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXG4gMTMxOlx0XHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcbiAxMzI6XHRcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxuIDEzMzpcdFxuIDEzNDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDEzNTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTM2Olx0XG4gMTM3Olx0Y29uZmlnXHRJUF9WU19MQ1xuIDEzODpcdFx0dHJpc3RhdGUgXCYjMzQ7bGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTM5Olx0XHRoZWxwXG4gMTQwOlx0XHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE0MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXG4gMTQyOlx0XHQgIGNvbm5lY3Rpb25zLlxuIDE0MzpcdFxuIDE0NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE0NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTQ2Olx0XG4gMTQ3Olx0Y29uZmlnXHRJUF9WU19XTENcbiAxNDg6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNTE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcbiAxNTI6XHRcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cbiAxNTM6XHRcbiAxNTQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNTU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NjpcdFxuIDE1NzpcdGNvbmZpZyAgSVBfVlNfRk9cbiAxNTg6XHRcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZ1wmIzM0O1xuIDE1OTpcdFx0aGVscFxuIDE2MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTYxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE2MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxuIDE2MzpcdFxuIDE2NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE2NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTY2Olx0XG4gMTY3Olx0Y29uZmlnICBJUF9WU19PVkZcbiAxNjg6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbiAxNjk6XHRcdGhlbHBcbiAxNzA6XHRcdCAgVGhlIHdlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE3MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGhpZ2hlc3Qgd2VpZ2h0IHRoYXQgaXNcbiAxNzI6XHRcdCAgY3VycmVudGx5IGF2YWlsYWJsZSBhbmQgb3ZlcmZsb3dzIHRvIHRoZSBuZXh0IHdoZW4gYWN0aXZlXG4gMTczOlx0XHQgIGNvbm5lY3Rpb25zIGV4Y2VlZCB0aGUgbm9kZSYjMzk7cyB3ZWlnaHQuXG4gMTc0Olx0XG4gMTc1Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTc2Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNzc6XHRcbiAxNzg6XHRjb25maWdcdElQX1ZTX0xCTENcbiAxNzk6XHRcdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE4MDpcdFx0aGVscFxuIDE4MTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBpcyBmb3JcbiAxODI6XHRcdCAgZGVzdGluYXRpb24gSVAgbG9hZCBiYWxhbmNpbmcuIEl0IGlzIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLlxuIDE4MzpcdFx0ICBUaGlzIGFsZ29yaXRobSB1c3VhbGx5IGRpcmVjdHMgcGFja2V0IGRlc3RpbmVkIGZvciBhbiBJUCBhZGRyZXNzIHRvXG4gMTg0Olx0XHQgIGl0cyBzZXJ2ZXIgaWYgdGhlIHNlcnZlciBpcyBhbGl2ZSBhbmQgdW5kZXIgbG9hZC4gSWYgdGhlIHNlcnZlciBpc1xuIDE4NTpcdFx0ICBvdmVybG9hZGVkIChpdHMgYWN0aXZlIGNvbm5lY3Rpb24gbnVtYmVycyBpcyBsYXJnZXIgdGhhbiBpdHMgd2VpZ2h0KVxuIDE4NjpcdFx0ICBhbmQgdGhlcmUgaXMgYSBzZXJ2ZXIgaW4gaXRzIGhhbGYgbG9hZCwgdGhlbiBhbGxvY2F0ZSB0aGUgd2VpZ2h0ZWRcbiAxODc6XHRcdCAgbGVhc3QtY29ubmVjdGlvbiBzZXJ2ZXIgdG8gdGhpcyBJUCBhZGRyZXNzLlxuIDE4ODpcdFxuIDE4OTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE5MDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnICBJUF9WU19MQkxDUlxuIDE5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxOTQ6XHRcdGhlbHBcbiAxOTU6XHRcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXG4gMTk2Olx0XHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXG4gMTk3Olx0XHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xuIDE5ODpcdFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxuIDE5OTpcdFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXG4gMjAwOlx0XHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQmIzM5O3NcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSBjb25jZXB0cywgcHJlc2VudGVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVW5kZXJzdGFuZGluZyB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIFNjaGVkdWxpbmcgQWxnb3JpdGhtcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBkaWZmZXJlbnQgc2NoZWR1bGluZyBhbGdvcml0aG1zIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcmsuICBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gaG93IGVhY2ggb2YgdGhlc2UgaW1wYWN0cyBsb2FkIGRpc3RyaWJ1dGlvbiBhbmQgZmFpbG92ZXIgYmVoYXZpb3IuIEkgc2VlIGEgY29yZSBzZXQgb2YgZnVuZGFtZW50YWwgc2NoZWR1bGluZyBtZXRob2RzLCBlc3NlbnRpYWxseSB0aGUgYnVpbGRpbmcgYmxvY2tzIGhlcmUsIGFuZCB0aGVuIHNvbWUgbW9yZSBzcGVjaWFsaXplZCB2YXJpYXRpb25zLgoKRmlyc3QsIHdlIGhhdmUgdGhlIGdlbmVyYWwgYElQX1ZTYCB3aGljaCBwcm9iYWJseSBpbXBsaWVzIGEgYmFzaWMsIGxpa2VseSByb3VuZC1yb2JpbiwgYXBwcm9hY2ggaWYgbm90aGluZyBlbHNlIGlzIHNwZWNpZmllZC4gIFRoZW4gd2Ugc2VlIGl0cyB2YXJpYXRpb25zLiAgYElQX1ZTX1JSYCDigJMgd2VsbCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgcm91bmQgcm9iaW4sIGNsYXNzaWMsIHNpbXBsZSwgYW5kIHByZWRpY3RhYmxlLiAgYElQX1ZTX1dSUmAg4oCTIFdlaWdodGVkIFJvdW5kIFJvYmluLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgaW50byBtb3JlIG51YW5jZWQgY29udHJvbCBiYXNlZCBvbiBzZXJ2ZXIgY2FwYWNpdHkgb3Igc29tZSBhc3NpZ25lZCB3ZWlnaHQuIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBtZXRob2QgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2hlcmUgc2VydmVycyBhcmUgbm90IGVxdWFsLgoKVGhlbiB3ZSBoYXZlIGBJUF9WU19MQ2AgYW5kIGBJUF9WU19XTENgIOKAkyBMZWFzdCBDb25uZWN0aW9ucyBhbmQgV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBhbmQgbW9yZSBkeW5hbWljLiAgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcmVhbC10aW1lIHN0YXRlIG9mIHRoZSBzZXJ2ZXJzLCBob3cgYnVzeSB0aGV5IGFjdHVhbGx5IGFyZSwgdGFraW5nIGludG8gYWNjb3VudCBjdXJyZW50IGNvbm5lY3Rpb25zLiBgSVBfVlNfTENgIGlzIGFib3V0IGRpc3RyaWJ1dGluZyBiYXNlZCBvbiAqYWN0aXZlKiBjb25uZWN0aW9ucywgd2hpY2ggaXMgdXNlZnVsIHdoZW4gc2VydmVyIHJlc3BvbnNlIHRpbWVzIGFyZSByZWxhdGl2ZWx5IGVxdWFsLiBgSVBfVlNfV0xDYCBleHRlbmRzIHRoaXMgYW5kIGFkZHMgd2VpZ2h0aW5nIOKAkyBldmVuIG9uIGEgZHluYW1pYyBiYXNpcyDigJMgd2hpY2ggaXMgY3J1Y2lhbCBpZiB5b3UgaGF2ZSBzZXJ2ZXJzIHdpdGggZGlmZmVyZW50IHByb2Nlc3NpbmcgY2FwYWJpbGl0aWVzLCBvciBpZiB5b3UgbmVlZCB0byBwcm92aWRlIG1vcmUgY2FwYWNpdHkgdG8gb25lIHNlcnZlciB0byBoYW5kbGUgYSBsYXJnZSBsb2FkLgoKYElQX1ZTX0ZPYCDigJMgQWgsIHRoaXMgb25lJiMzOTtzIGZvciBmYWlsb3ZlciEgIFRoaXMgbXVzdCBiZSB0aGUgYWxnb3JpdGhtIGZvciAmIzM0O2ZpcnN0LWF2YWlsYWJsZSYjMzQ7IG9yIGZhaWwtb3ZlciBvbmx5LiBVc2VmdWwgaW4gbWFueSBzY2VuYXJpb3Mgd2hlcmUgeW91IG5lZWQgdG8gaGF2ZSBhIHN0YW5kYnkgc2VydmVyIGluIGNhc2UgdGhlIGZpcnN0IGdvZXMgZG93bi4KCmBJUF9WU19PVkZgIOKAkyBUaGlzIGxvb2tzIGxpa2UgT3ZlcmZsb3csIHBlcmhhcHMgYSB2YXJpYXRpb24gb24gbG9hZCBiYWxhbmNpbmcgaW4gY2FzZSBvZiBvbmUgc2VydmVyIHJlYWNoaW5nIGEgdGhyZXNob2xkLiBUaGUgc3lzdGVtIG1pZ2h0IHN0YXJ0IHNlbmRpbmcgdHJhZmZpYyB0byBhbm90aGVyLiBJIGhhdmUgdG8gbG9vayBpbnRvIHRoZSBzcGVjaWZpY3MgaGVyZS4KCkFuZCBmaW5hbGx5LCBgSVBfVlNfTEJMQ2AgYW5kIGBJUF9WU19MQkxDUmAuIE5vdywgdGhpcyBzaWduYWxzIHNvbWV0aGluZyBkaWZmZXJlbnQuIFRoaXMgc2VlbXMgdG8gYmUgY29ubmVjdGlvbiBsb2NhbGl0eSwgbWF5YmUgYmFzZWQgb24gc291cmNlIElQIGFkZHJlc3MgYW5kIHdpdGggb3Igd2l0aG91dCBwZXJzaXN0ZW5jZSAoYFJgPykuICBUaGlzIGlzIGNyaXRpY2FsIGZvciBzY2VuYXJpb3MgdGhhdCByZXF1aXJlIHBlcnNpc3RlbnQgc2Vzc2lvbnMgb3Igc3RpY2t5IGNvbm5lY3Rpb25zLiAgYExCTENSYCBwcm9iYWJseSBpbmRpY2F0ZXMgYSBjb25uZWN0aW9uIGhhc2hpbmcgYXBwcm9hY2ggYmFzZWQgb24gY2xpZW50IHNvdXJjZSBJUCAobGlrZWx5IGZvciBzdGlja3kgc2Vzc2lvbnMpLgoKU28sIGluIGVzc2VuY2UsIHRoaXMgaXMgYSBjbGVhciBlbnVtZXJhdGlvbiBvZiB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgSVBWUyBzeXN0ZW0sIGEgc2V0IG9mIHRvb2xzIGluIG15IGFyc2VuYWwgZm9yIG1hbmFnaW5nIGFuZCBkaXN0cmlidXRpbmcgbG9hZCBhY3Jvc3MgYSBjb2xsZWN0aW9uIG9mIGJhY2stZW5kIHNlcnZlcnMuICBFYWNoIG9uZSBvZmZlcnMgZGlmZmVyZW50IHRyYWRlLW9mZnMgaW4gdGVybXMgb2Ygc2ltcGxpY2l0eSwgcGVyZm9ybWFuY2UsIGFuZCBmbGV4aWJpbGl0eSwgYW5kIHRoZSBjaG9pY2UgZGVwZW5kcyBlbnRpcmVseSBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzIGFuZCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBiYWNrLWVuZCBzZXJ2ZXJzLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBjb25jZXB0cyBvcmdhbml6ZWQgYW5kIGNvbnNpZGVyIHRoZW0gd2hlbiBkZXNpZ25pbmcgbG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGVzZSBhbmQgY29tcGFyZS9jb250cmFzdCB0aGVtIHRvIG90aGVyIGJhbGFuY2luZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAxOlx0XHQgIHNlcnZlciBzZXQuIElmIGFsbCB0aGUgbm9kZSBpbiB0aGUgc2VydmVyIHNldCBhcmUgb3ZlciBsb2FkZWQsXG4gMjAyOlx0XHQgIGl0IHBpY2tzIHVwIGEgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBjbHVzdGVyIGFuZCBhZGRzIGl0XG4gMjAzOlx0XHQgIGluIHRoZSBzZXZlciBzZXQgZm9yIHRoZSB0YXJnZXQuIElmIHRoZSBzZXJ2ZXIgc2V0IGhhcyBub3QgYmVlblxuIDIwNDpcdFx0ICBtb2RpZmllZCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLCB0aGUgbW9zdCBsb2FkZWQgbm9kZSBpcyByZW1vdmVkXG4gMjA1Olx0XHQgIGZyb20gdGhlIHNlcnZlciBzZXQsIGluIG9yZGVyIHRvIGF2b2lkIGhpZ2ggZGVncmVlIG9mIHJlcGxpY2F0aW9uLlxuIDIwNjpcdFxuIDIwNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIwODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjA5Olx0XG4gMjEwOlx0Y29uZmlnXHRJUF9WU19ESFxuIDIxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7ZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4gMjEyOlx0XHRoZWxwXG4gMjEzOlx0XHQgIFRoZSBkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xuIDIxNDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXG4gMjE1Olx0XHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLlxuIDIxNjpcdFxuIDIxNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIxODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjE5Olx0XG4gMjIwOlx0Y29uZmlnXHRJUF9WU19TSFxuIDIyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7c291cmNlIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIyMjpcdFx0aGVscFxuIDIyMzpcdFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXG4gMjI0Olx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHkgYXNzaWduZWRcbiAyMjU6XHRcdCAgaGFzaCB0YWJsZSBieSB0aGVpciBzb3VyY2UgSVAgYWRkcmVzc2VzLlxuIDIyNjpcdFxuIDIyNzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDIyODpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjI5Olx0XG4gMjMwOlx0Y29uZmlnXHRJUF9WU19NSFxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7bWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIzMjpcdFx0aGVscFxuIDIzMzpcdFx0ICBUaGUgbWFnbGV2IGNvbnNpc3RlbnQgaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBwcm92aWRlcyB0aGVcbiAyMzQ6XHRcdCAgR29vZ2xlJiMzOTtzIE1hZ2xldiBoYXNoaW5nIGFsZ29yaXRobSBhcyBhIElQVlMgc2NoZWR1bGVyLiBJdCBhc3NpZ25zXG4gMjM1Olx0XHQgIG5ldHdvcmsgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseVxuIDIzNjpcdFx0ICBhc3NpZ25lZCBzcGVjaWFsIGhhc2ggdGFibGUgY2FsbGVkIHRoZSBsb29rdXAgdGFibGUuIE1hZ2xldiBoYXNoaW5nXG4gMjM3Olx0XHQgIGlzIHRvIGFzc2lnbiBhIHByZWZlcmVuY2UgbGlzdCBvZiBhbGwgdGhlIGxvb2t1cCB0YWJsZSBwb3NpdGlvbnNcbiAyMzg6XHRcdCAgdG8gZWFjaCBkZXN0aW5hdGlvbi5cbiAyMzk6XHRcbiAyNDA6XHRcdCAgVGhyb3VnaCB0aGlzIG9wZXJhdGlvbiwgVGhlIG1hZ2xldiBoYXNoaW5nIGdpdmVzIGFuIGFsbW9zdCBlcXVhbFxuIDI0MTpcdFx0ICBzaGFyZSBvZiB0aGUgbG9va3VwIHRhYmxlIHRvIGVhY2ggb2YgdGhlIGRlc3RpbmF0aW9ucyBhbmQgcHJvdmlkZXNcbiAyNDI6XHRcdCAgbWluaW1hbCBkaXNydXB0aW9uIGJ5IHVzaW5nIHRoZSBsb29rdXAgdGFibGUuIFdoZW4gdGhlIHNldCBvZlxuIDI0MzpcdFx0ICBkZXN0aW5hdGlvbnMgY2hhbmdlcywgYSBjb25uZWN0aW9uIHdpbGwgbGlrZWx5IGJlIHNlbnQgdG8gdGhlIHNhbWVcbiAyNDQ6XHRcdCAgZGVzdGluYXRpb24gYXMgaXQgd2FzIGJlZm9yZS5cbiAyNDU6XHRcbiAyNDY6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNDc6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI0ODpcdFxuIDI0OTpcdGNvbmZpZ1x0SVBfVlNfU0VEXG4gMjUwOlx0XHR0cmlzdGF0ZSBcJiMzNDtzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nXCYjMzQ7XG4gMjUxOlx0XHRoZWxwXG4gMjUyOlx0XHQgIFRoZSBzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcbiAyNTM6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBzaG9ydGVzdCBleHBlY3RlZCBkZWxheS4gVGhlIFxuIDI1NDpcdFx0ICBleHBlY3RlZCBkZWxheSB0aGF0IHRoZSBqb2Igd2lsbCBleHBlcmllbmNlIGlzIChDaSAmIzQzOyAxKSAvIFVpIGlmIFxuIDI1NTpcdFx0ICBzZW50IHRvIHRoZSBpdGggc2VydmVyLCBpbiB3aGljaCBDaSBpcyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zXG4gMjU2Olx0XHQgIG9uIHRoZSBpdGggc2VydmVyIGFuZCBVaSBpcyB0aGUgZml4ZWQgc2VydmljZSByYXRlICh3ZWlnaHQpXG4gMjU3Olx0XHQgIG9mIHRoZSBpdGggc2VydmVyLlxuIDI1ODpcdFxuIDI1OTpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI2MDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjYxOlx0XG4gMjYyOlx0Y29uZmlnXHRJUF9WU19OUVxuIDI2MzpcdFx0dHJpc3RhdGUgXCYjMzQ7bmV2ZXIgcXVldWUgc2NoZWR1bGluZ1wmIzM0O1xuIDI2NDpcdFx0aGVscFxuIDI2NTpcdFx0ICBUaGUgbmV2ZXIgcXVldWUgc2NoZWR1bGluZyBhbGdvcml0aG0gYWRvcHRzIGEgdHdvLXNwZWVkIG1vZGVsLlxuIDI2NjpcdFx0ICBXaGVuIHRoZXJlIGlzIGFuIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG9cbiAyNjc6XHRcdCAgdGhlIGlkbGUgc2VydmVyLCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgZmFzdCBvbmUuIFdoZW4gdGhlcmVcbiAyNjg6XHRcdCAgaXMgbm8gaWRsZSBzZXJ2ZXIgYXZhaWxhYmxlLCB0aGUgam9iIHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyXG4gMjY5Olx0XHQgIHRoYXQgbWluaW1pemUgaXRzIGV4cGVjdGVkIGRlbGF5IChUaGUgU2hvcnRlc3QgRXhwZWN0ZWQgRGVsYXlcbiAyNzA6XHRcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0pLlxuIDI3MTpcdFxuIDI3MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI3MzpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjc0Olx0XG4gMjc1Olx0Y29uZmlnXHRJUF9WU19UV09TXG4gMjc2Olx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMjc3Olx0XHRoZWxwXG4gMjc4Olx0XHQgIFRoZSB3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXG4gMjc5Olx0XHQgIGFsZ29yaXRobSBwaWNrcyB0d28gcmFuZG9tIHJlYWwgc2VydmVycyBhbmQgZGlyZWN0cyBuZXR3b3JrXG4gMjgwOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgYWN0aXZlIGNvbm5lY3Rpb25zXG4gMjgxOlx0XHQgIG5vcm1hbGl6ZWQgYnkgdGhlIHNlcnZlciB3ZWlnaHQuXG4gMjgyOlx0XG4gMjgzOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMjg0Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAyODU6XHRcbiAyODY6XHRjb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xuIDI4OTpcdFx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuIDI5MDpcdFx0cmFuZ2UgNCAyMFxuIDI5MTpcdFx0ZGVmYXVsdCA4XG4gMjkyOlx0XHRoZWxwXG4gMjkzOlx0XHQgIFRoZSBzb3VyY2UgaGFzaGluZyBzY2hlZHVsZXIgbWFwcyBzb3VyY2UgSVBzIHRvIGRlc3RpbmF0aW9uc1xuIDI5NDpcdFx0ICBzdG9yZWQgaW4gYSBoYXNoIHRhYmxlLiBUaGlzIHRhYmxlIGlzIHRpbGVkIGJ5IGVhY2ggZGVzdGluYXRpb25cbiAyOTU6XHRcdCAgdW50aWwgYWxsIHNsb3RzIGluIHRoZSB0YWJsZSBhcmUgZmlsbGVkLiBXaGVuIHVzaW5nIHdlaWdodHMgdG9cbiAyOTY6XHRcdCAgYWxsb3cgZGVzdGluYXRpb25zIHRvIHJlY2VpdmUgbW9yZSBjb25uZWN0aW9ucywgdGhlIHRhYmxlIGlzXG4gMjk3Olx0XHQgIHRpbGVkIGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIHdlaWdodHMgc3BlY2lmaWVkLiBUaGUgdGFibGVcbiAyOTg6XHRcdCAgbmVlZHMgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGVmZmVjdGl2ZWx5IGZpdCBhbGwgdGhlIGRlc3RpbmF0aW9uc1xuIDI5OTpcdFx0ICBtdWx0aXBsaWVkIGJ5IHRoZWlyIHJlc3BlY3RpdmUgd2VpZ2h0cy5cbiAzMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBgSVBfVlNfVFdPU2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmZWF0dXJlcyBlbmFibGVkIGluIHRoZSBJUCBWaXJ0dWFsIFNlcnZlci4gTm93LCBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIHJlbGV2YW50IHRvIHRoaXMgYXJlYS4KCkFscmlnaHQsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgc2VlbiBjaGFuZ2VzIGFjcm9zcyB0aGUgY29kZWJhc2UsIHBhcnRpY3VsYXJseSBpbiBgaXBfdnNfY29ubi5jYCwgYGlwX3ZzX2NvcmUuY2AsIGBpcF92c19jdGwuY2AsIGBpcF92c19kaC5jYCwgYGlwX3ZzX2ZvLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19taC5jYCwgYGlwX3ZzX25xLmNgLCBgaXBfdnNfb3ZmLmNgLCBgaXBfdnNfcnIuY2AsIGBpcF92c19zZWQuY2AsIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3MuY2AsIGBpcF92c193bGMuY2AsIGBpcF92c193cnIuY2AsIGFuZCBgaXBfdnNfeG1pdC5jYC4KClRoZXNlIGFyZSBkZWZpbml0ZWx5IGNydWNpYWwga2VybmVsIGVsZW1lbnRzLCBlc3BlY2lhbGx5IHRoZSBzY2hlZHVsZXJzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGVtIGFuZCBzb21lIGtleSBjb3JlIGZ1bmN0aW9ucyBmb3IgZnVydGhlciBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhlc2UgYXMgZm9jdXMgc3ltYm9sczogYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBpcF92c19jaGVja190ZW1wbGF0ZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCB0aGUgc2NoZWR1bGVyIGZ1bmN0aW9uczogYGlwX3ZzX2RoX3NjaGVkdWxlYCwgYGlwX3ZzX2ZvX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYW5kIGBpcF92c193cnJfc2NoZWR1bGVgLgoKSnVzdCB0byByZWl0ZXJhdGUsIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IHNlZW0gdG8gYmUgcGVydGluZW50IGFyZSBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLgoKV2FpdCwgcXVpY2sgdGhvdWdodDogYGlwX3ZzX2luX2hvb2tgIGlzIGEgaG90IHBhdGgsIHNvIEkmIzM5O2xsIHByb2JhYmx5IHdhbnQgdG8gYXZvaWQgdGhhdC4gU2FtZSB3aXRoIGBpcF92c19pbl9zdGF0c2AgYW5kIGBpcF92c19vdXRfc3RhdHNgLiBJIHNob3VsZCBwcmlvcml0aXplIGV4cGxvcmluZyB0aGUgb3RoZXIgZnVuY3Rpb25zLCBzdWNoIGFzIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBfX2lwX3ZzX3VubGlua19kZXN0YCwgYW5kIHRoZSBzY2hlZHVsZXJzLCBvZiBjb3Vyc2UuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpcF92c190d29zX3NjaGVkdWxlYCBzcGVjaWZpY2FsbHkuIE9oLCB5ZXMsIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBPa2F5LCBzbyBzaW5jZSBpdCYjMzk7cyByZWFjaGFibGUsIGl0ICpjb3VsZCogYmUgZnV6emVkIGJ5IHN5emthbGxlci4gSG93ZXZlciwgSSB1c3VhbGx5IGZvY3VzIG9uIG5vbi1zdGF0aWMgb25lcyBvciBzdGF0aWMgb25lcyBpZiB0aGV5IGFyZSB2ZXJ5IHdlbGwtZGVmaW5lZC4gQWgsIHJpZ2h0ISBJdCYjMzk7cyBhc3NpZ25lZCB0byBhIHN0cnVjdCEKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2RoX3NjaGVkdWxlYCBmb3IgZnVydGhlciBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19kaF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTIxMT1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjEyOmlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yMTMtXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQxLSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjQyOnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2RoX3NjaGVkdWxlciA9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0Ni1cdC5tb2R1bGUgPVx0XHRUSElTX01PRFVMRSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI0NzpcdC5uX2xpc3QgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19kaF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0OC1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19kaF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTEtXHQuZGVsX2Rlc3QgPVx0XHRpcF92c19kaF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNTI6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19kaF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1My19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jPTI1Nj1zdGF0aWMgaW50IF9faW5pdCBpcF92c19kaF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTcte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjU4Olx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjU5LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2RoX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI2My17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNjQ6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjY1LVx0c3luY2hyb25pemVfcmN1KCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2Ugc2NoZWR1bGluZyBmdW5jdGlvbnMsIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGFuIGV4cGVydDoKCioqQW5hbHl6aW5nIElQVlMgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGAuc2NoZWR1bGVgIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyYC4gVGhlc2UgYXJlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBhc3NpZ25pbmcgbmV3IGNvbm5lY3Rpb25zLiBTZWVtcyBzdHJhaWdodGZvcndhcmQg4oCTIHRoZXkmIzM5O3JlIHRoZSBjb3JlIG9mIHRoZSBzY2hlZHVsaW5nIGxvZ2ljLiBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIHRoZXNlIGludG8gbXkgRm9jdXNTeW1ib2xzIHRvIGtlZXAgdGhlbSB0b3Atb2YtbWluZC4KCk5vdywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGVuYWJsZSB0aGVzZSB2YXJpb3VzIHNjaGVkdWxpbmcgYWxnb3JpdGhtcy4gV2UgaGF2ZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBJUF9WU2AsIHRoZW4gYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGFuZCB0aGUgcmVzdCDigJMgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCB0aGUgTEJMIGZhbWlseSAoYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgKSwgYW5kIHRoZSBoYXNoaW5nIGFsZ29yaXRobXMgKGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBgSVBfVlNfVFdPU2ApLiBHb3QgaXQuCgpJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoYSwgcmlnaHQsIGBJUF9WU19JUFY2YCBjb21lcyB0byBtaW5kLiBUaGF0IG9uZSBjb3VsZCBiZSBlc3NlbnRpYWwgZm9yIHRoZSBgX19pcF92c19nZXRfb3V0X3J0X3Y2YCBmdW5jdGlvbiDigJMgY2FuJiMzOTt0IGZvcmdldCBhYm91dCBJUHY2LiBOZWVkIHRvIGVuc3VyZSB0aGF0JiMzOTtzIGFjY291bnRlZCBmb3IgYXBwcm9wcmlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBNdXNpbmdzKioKCk9rYXksIG5vdyBsZXQgbWUgc2VlLi4uIEkgd2FzIGp1c3QgbG9va2luZyB0aHJvdWdoIHRoYXQgS2NvbmZpZyBmaWxlLCBhbmQgc29tZXRoaW5nIGp1c3QgY2xpY2tlZC4gSXQgd2FzIHRoYXQgYElQX1ZTX0lQVjZgIHN5bWJvbC4gU2VlaW5nIHRoYXQgdHJpZ2dlcmVkIGEgbWVtb3J5IGFuZCBhIHBvdGVudGlhbCBjb25uZWN0aW9uLiBOb3cgSSBoYXZlIHRvIHRoaW5rLCAqd2h5KiBkaWQgdGhhdCBqdW1wIG91dD8gV2hhdCBkb2VzIGl0IGltcGx5IGluIHJlbGF0aW9uIHRvIHRoZSBwcm9ibGVtIEkmIzM5O20gd29ya2luZyBvbj8gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhhdCBicmVhZGNydW1iIGFuZCBzZWUgaWYgaXQgbGVhZHMgYW55d2hlcmUgdXNlZnVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19JUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjk6Y29uZmlnXHRJUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7SVB2NiBzdXBwb3J0IGZvciBJUFZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjA1CgkJCQkJCQlvdXRwdXQ6IDQ3NAoJCQkJCQkJdGhvdWdodHM6IDk4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSVBWUyBEZXN0aW5hdGlvbiBGbGFnIFVwZGF0ZXMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IG5vdGljZSB0aGUgY2hhbmdlIGZyb20gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYGF0b21pY190YCBmb3IgdGhlIGBmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YC4gUmlnaHQgYXdheSwgdGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IGRlc3RpbmF0aW9uIGZsYWdzIGFyZSBoYW5kbGVkIGZvciByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgdGhyZWFkLXNhZmV0eS4gVGhpcyB0b3VjaGVzIHRoZSBjb3JlIHJlYWNoYWJsZSBsb2dpYyBvZiB0aGUgSVBWUywgdGhlIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gaXQsIGFuZCwgaW1wb3J0YW50bHksIGFsbCBvZiB0aGUgc2NoZWR1bGVycy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgdGhlIGNvbnNpc3RlbmN5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHRyYW5zaXRpb24uCgpGaXJzdCwgSSBpZGVudGlmaWVkIGBJUF9WU19JUFY2YCBhcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzaW5jZSBpdCYjMzk7cyBsaXN0ZWQgYWZ0ZXIgdGhlIGBjb25maWdgLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgb3V0IHRoZSBmdW5jdGlvbiBzeW1ib2xzIHRoYXQgYXJlIGdvaW5nIHRvIG5lZWQgbW9yZSBzY3J1dGlueSBpbiBteSBmdXp6aW5nIGNhbXBhaWduLgoKSSBuZWVkIGEgbGlzdCBvZiB0aGUgRm9jdXNTeW1ib2xzLiBJIGFtIGNvbnNpZGVyaW5nIHRoZXNlIGZ1bmN0aW9uczoKCiogICBgaXBfdnNfYmluZF9kZXN0YAoqICAgYGlwX3ZzX3VuYmluZF9kZXN0YAoqICAgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYAoqICAgYF9faXBfdnNfdXBkYXRlX2Rlc3RgCiogICBgX19pcF92c191bmxpbmtfZGVzdGAKKiAgIGBpcF92c19kaF9zY2hlZHVsZWAKKiAgIGBpcF92c19mb19zY2hlZHVsZWAKKiAgIGBpcF92c19sYmxjX3NjaGVkdWxlYAoqICAgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgCiogICBgaXBfdnNfbGNfc2NoZWR1bGVgCiogICBgaXBfdnNfbnFfc2NoZWR1bGVgCiogICBgaXBfdnNfb3ZmX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3JyX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3NlZF9zY2hlZHVsZWAKKiAgIGBpcF92c190d29zX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3dsY19zY2hlZHVsZWAKKiAgIGBpcF92c193cnJfc2NoZWR1bGVgCiogICBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYAoKSSBhbHNvIGFkZGVkOgoKKiAgIGBfX2lwX3ZzX2dldF9vdXRfcnRgCiogICBgX19pcF92c19nZXRfb3V0X3J0X3Y2YAoKU2luY2UgdGhleSBhcmUgdGhlIGhvdCBwYXRocyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLCBJJiMzOTtsbCBpbmNsdWRlIHRoZW0uIFRoZSBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuCgpJIGFsc28gaGF2ZSBpZGVudGlmaWVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIHN5c3RlbToKCiogICBgSVBfVlNgCiogICBgSVBfVlNfSVBWNmAKKiAgIGBJUF9WU19SUmAKKiAgIGBJUF9WU19XUlJgCiogICBgSVBfVlNfTENgCiogICBgSVBfVlNfV0xDYAoqICAgYElQX1ZTX0ZPYAoqICAgYElQX1ZTX09WRmAKKiAgIGBJUF9WU19MQkxDYAoqICAgYElQX1ZTX0xCTENSYAoqICAgYElQX1ZTX0RIYAoqICAgYElQX1ZTX1NIYAoqICAgYElQX1ZTX01IYAoqICAgYElQX1ZTX1NFRGAKKiAgIGBJUF9WU19OUWAKKiAgIGBJUF9WU19UV09TYAoKTXkgYW5hbHlzaXMgaXMgdGhhdCBiZWNhdXNlIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGRlc3RpbmF0aW9uIGZsYWdzIHRvIGJlIGF0b21pYyBvcGVyYXRpb25zLCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgYW5kIHRoZSB1cGRhdGUgdG8gdGhlIGNvcmUgcmVhY2hhYmxlIGxvZ2ljIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBNeSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgZm9jdXMgb24gaGl0dGluZyB0aGVzZSBmdW5jdGlvbnMgd2l0aCBhIHZhcmlldHkgb2YgdHJhZmZpYyBwYXR0ZXJucyBhbmQgY29uZmlndXJhdGlvbnMsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBhIHRocmVhZC1zYWZlIHVwZGF0ZSwgYW5kIGl0IG5lZWRzIHByb3BlciBmdXp6aW5nLgoKTm93LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0lQVjYmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoJiMzNDssCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19JUFY2JiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfY2hlY2tfdGVtcGxhdGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaCYjMzQ7LAogICAgJiMzNDtpcF92c19kaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19mb19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY190YCkgaW5zdGVhZCBvZiBhIGB2b2xhdGlsZSB1bnNpZ25lZCBpbnRgLiBUaGlzIGFmZmVjdHMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIChsaWtlIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhbmQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGApIGFyZSByZWFkIGFuZCB1cGRhdGVkIGFjcm9zcyB0aGUgSVBWUyBjb3JlLCBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIGFuZCBhbGwgSVBWUyBzY2hlZHVsZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSByZWFjaGFibGUgbG9naWMsIG1ha2luZyBpdCB0aHJlYWQtc2FmZSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjEwLjc4MDg2NDMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxOTM4NDE1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0lQVjZcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sYmxjX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxMC43ODA4NzExMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MTgzMzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1NmU3ZGNhODIyMzZiYzZhMDBmZmYyMzhhOWMwYzJlNTcyOWZmMzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNjowNzowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbkBAIC05NzIsNyArOTcyLDcgQEAgc3RydWN0IGlwX3ZzX2Rlc3Qge1xcbiBcXHR1MTZcXHRcXHRcXHRhZjtcXHRcXHQvKiBhZGRyZXNzIGZhbWlseSAqL1xcbiBcXHRfX2JlMTZcXHRcXHRcXHRwb3J0O1xcdFxcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyXFx0YWRkcjtcXHRcXHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cXG4tXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRmbGFncztcXHRcXHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdGNvbm5fZmxhZ3M7XFx0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXFxuIFxcdGF0b21pY190XFx0XFx0d2VpZ2h0O1xcdFxcdC8qIHNlcnZlciB3ZWlnaHQgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsYXN0X3dlaWdodDtcXHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi41MzlmNjAzZjM4Yjc0NSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFxuIFxcdGlmIChkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAhPSAwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzZT0gZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gXFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG4gXFxuIFxcdGlmIChkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCAhPSAwKSB7XFxuIFxcdFxcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXFx1MDAzYyBkZXN0LVxcdTAwM2VsX3RocmVzaG9sZClcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9IGVsc2UgaWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcXG4gXFx0XFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXFx1MDAzYyBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCAqIDMpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdFxcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9XFxuIFxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxcbiBcXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XFxuLVxcdCAgICAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4rXFx0ICAgICEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XFxuIFxcdCAgICBleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlKGlwdnMsIGRlc3QpIHx8XFxuIFxcdCAgICAoY2Rlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xcbiBcXHRcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJjaGVja190ZW1wbGF0ZTogZGVzdCBub3QgYXZhaWxhYmxlIGZvciBcXFwiXFxuQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiBcXHRcXHRcXHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcXG4gXFx0XFx0XFx0cmVzY2hlZF9zY29yZSsrO1xcbiBcXHRcXHRcXHRkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdFxcdGlmICghZGVzdCB8fCAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4rXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjcC1cXHUwMDNlbl9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4gXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC1cXHUwMDNlaXB2cztcXG4gXFxuLVxcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuK1xcdGlmIChkZXN0IFxcdTAwMjZcXHUwMDI2IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcXG4gXFx0XFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcXG4gXFxuQEAgLTMzOCw3ICszMzgsNyBAQCBpcF92c19vdXRfc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVxcdTAwM2VkZXN0O1xcbiBcXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVxcdTAwM2VpcHZzO1xcbiBcXG4tXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xcbiBcXG5AQCAtMjIwNCw3ICsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcXG4gXFx0fVxcbiBcXG4gXFx0LyogQ2hlY2sgdGhlIHNlcnZlciBzdGF0dXMgKi9cXG4tXFx0aWYgKGNwIFxcdTAwMjZcXHUwMDI2IGNwLVxcdTAwM2VkZXN0IFxcdTAwMjZcXHUwMDI2ICEoY3AtXFx1MDAzZWRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGNwIFxcdTAwMjZcXHUwMDI2IGNwLVxcdTAwM2VkZXN0IFxcdTAwMjZcXHUwMDI2ICEoYXRvbWljX3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHQvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi9cXG4gXFx0XFx0aWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHtcXG4gXFx0XFx0XFx0Ym9vbCBvbGRfY3QgPSBpcF92c19jb25uX3VzZXNfb2xkX2Nvbm50cmFjayhjcCwgc2tiKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuaW5kZXggYmNmNDBiOGM0MWNmMjYuLjY4NWIyNjc1YjZlMDNhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0xMzY4LDEwICsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4tXFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcXG4rXFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAodWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkIFxcdTAwM2UgZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpXFxuLVxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFx0ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQ7XFxuIFxcdGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkO1xcbiBcXG5AQCAtMTYxMyw3ICsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0XFx0XFx0XFx0aW50IHN2Y3VwZClcXG4ge1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcXG4rXFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2ZGVzdC1cXHUwMDNlZHN0X2xvY2spO1xcbiBcXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbmluZGV4IGUxZjYyZjZiMjVlMjExLi4zOTA2OWE5YzNkMGM5MiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgaW50IGlwX3ZzX2RoX2Rlc3RfY2hhbmdlZChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiAgKi9cXG4gc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4ge1xcbi1cXHRyZXR1cm4gZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbiB9XFxuIFxcbiBcXG5AQCAtMjIwLDcgKzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cXHUwMDNlc2NoZWRfZGF0YTtcXG4gXFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXFx1MDAzZWFmLCBzLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkcik7XFxuIFxcdGlmICghZGVzdFxcbi1cXHQgICAgfHwgIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdCAgICB8fCAhKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHQgICAgfHwgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzYz0gMFxcbiBcXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xcbiBcXHRcXHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXFxcIm5vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVxcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIGh3KSB7XFxuIFxcdFxcdFxcdGh3ZWlnaHQgPSBkZXN0O1xcbiBcXHRcXHRcXHRodyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuQEAgLTUwMiw3ICs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdCAqL1xcbiBcXG4gXFx0XFx0ZGVzdCA9IGVuLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLmY2NDg4MWI4NDU2OTY5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDExICsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFxcdTAwM2UgMCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxlYXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGxlYXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHQgICAgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcXG4gXFx0XFx0XFx0Z290byBuZXh0c3RhZ2U7XFxuIFxcdFxcdH1cXG5AQCAtMTgxLDEzICsxODEsMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRkZXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG4gXFx0XFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpKVxcbi1cXHRcXHQgICAgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBkb2g7XFxuIFxcdFxcdH1cXG5AQCAtNTc3LDcgKzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICogbmV3IGNvbm5lY3Rpb24uXFxuIFxcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li42YWNiM2M5MDRhZjU3ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXFxuQEAgLTM4LDcgKzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gLyogUmV0dXJucyBoYXNoIHZhbHVlIGZvciBJUFZTIE1IIGVudHJ5ICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbiBcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XFxuIFxcdFxcdCAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbkBAIC0zMyw3ICszMyw3IEBAIGlwX3ZzX292Zl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbiBcXHRcXHR3ID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCk7XFxuLVxcdFxcdGlmICgoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuK1xcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VhY3RpdmVjb25ucykgXFx1MDAzZSB3IHx8XFxuIFxcdFxcdCAgICB3ID09IDApXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgbl9saXN0KSB7XFxuLVxcdFxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHQvKiBISVQgKi9cXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wMjQ5MDYyZDEzNjA1NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRsZWFzdCA9IGRlc3Q7XFxuIFxcdFxcdFxcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcXG5AQCAtOTAsNyArOTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuaW5kZXggY2Q2NzA2NmUzYjI2MTIuLjM0Mzc4MGI4MmM5NWYxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcXG5AQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4gfVxcbiBcXG4gLypcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG5AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4gXFxuIFxcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XFxuIFxcdFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbiBcXHRcXHRcXHRpZiAod2VpZ2h0IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRcXHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xcbkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uYzJkMDlhYzk2ZmU4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuQEAgLTQ3LDcgKzQ3LDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC02Miw3ICs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uZjIxYTc1Mjg0OTcxZTUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuQEAgLTE3Niw3ICsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2U9IG1hcmstXFx1MDAzZWN3KVxcbiBcXHRcXHRcXHRcXHRnb3RvIGZvdW5kO1xcbiBcXHRcXHRcXHRpZiAoZGVzdCA9PSBzdG9wKVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QpKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAgZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbitcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuIFxcdFxcdFxcdFxcdF9faXBfdnNfZHN0X3NldChkZXN0LCBkZXN0X2RzdCwgXFx1MDAyNnJ0LVxcdTAwM2Vkc3QsIDApO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdG5vcmVmID0gMDtcXG5AQCAtNTMwLDcgKzUzMCw3IEBAIF9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCBjb29raWUpO1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdG5vcmVmID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTEuNzI0MjQ4NzU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzI1MDQ0NDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfSVBWNlwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiX19pcF92c191bmxpbmtfZGVzdFwiLFxuICAgIFwiaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoXCIsXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c190d29zX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193bGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dycl9zY2hlZHVsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfdGApIGluc3RlYWQgb2YgYSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YC4gVGhpcyBhZmZlY3RzIGhvdyBkZXN0aW5hdGlvbiBmbGFncyAobGlrZSBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYW5kIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgKSBhcmUgcmVhZCBhbmQgdXBkYXRlZCBhY3Jvc3MgdGhlIElQVlMgY29yZSwgY29ubmVjdGlvbiBtYW5hZ2VtZW50LCBhbmQgYWxsIElQVlMgc2NoZWR1bGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgcmVhY2hhYmxlIGxvZ2ljLCBtYWtpbmcgaXQgdGhyZWFkLXNhZmUsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzU2ZTdkY2E4MjIzNmJjNmEwMGZmZjIzOGE5YzBjMmU1NzI5ZmYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTY6MDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR1MTZcdFx0XHRhZjtcdFx0LyogYWRkcmVzcyBmYW1pbHkgKi9cbiBcdF9fYmUxNlx0XHRcdHBvcnQ7XHRcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cbiBcdHVuaW9uIG5mX2luZXRfYWRkclx0YWRkcjtcdFx0LyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovXG4tXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuK1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFxuIFx0aWYgKGRlc3QtXHUwMDNldV90aHJlc2hvbGQgIT0gMCBcdTAwMjZcdTAwMjZcbiBcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXHUwMDNlPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwiY2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgXCJcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlKys7XG4gXHRcdFx0ZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4tXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbitcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTIyMDQsNyArMjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGF0b21pY19vcihJUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzkwNjlhOWMzZDBjOTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gXG5AQCAtMjIwLDcgKzIyMCw3IEBAIGlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzID0gKHN0cnVjdCBpcF92c19kaF9zdGF0ZSAqKSBzdmMtXHUwMDNlc2NoZWRfZGF0YTtcbiBcdGRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLVx1MDAzZWFmLCBzLCBcdTAwMjZpcGgtXHUwMDNlZGFkZHIpO1xuIFx0aWYgKCFkZXN0XG4tXHQgICAgfHwgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuK1x0ICAgIHx8ICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuIFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXCIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuQEAgLTI5LDcgKzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIEZpbmQgdmlydHVhbCBzZXJ2ZXIgd2l0aCBoaWdoZXN0IHdlaWdodCBhbmQgc2VuZCBpdCB0cmFmZmljXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgaHcpIHtcbiBcdFx0XHRod2VpZ2h0ID0gZGVzdDtcbiBcdFx0XHRodyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmQyZWI1ZGRhNWI2ODZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuQEAgLTQxNCw3ICs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG5AQCAtNDI5LDcgKzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbkBAIC01MDIsNyArNTAyLDcgQEAgaXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgKi9cbiBcbiBcdFx0ZGVzdCA9IGVuLVx1MDAzZWRlc3Q7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxuIFx0XHRcdGdvdG8gb3V0O1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGM5MGVhODk3YzNmNzU2Li5mNjQ4ODFiODQ1Njk2OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2NiwxMSArMTY2LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiBcdC8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgXHUwMDNlIDAgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGxlYXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAobGVhc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuK1x0XHQgICAgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4MSwxMyArMTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2VcbiBcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0ICAgIFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuIFx0XHQgICAgIWF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xuQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbmluZGV4IDlkYTQ0NWNhMDlhMTRjLi5jMmQwOWFjOTZmZTg0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5AQCAtNDcsNyArNDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyArNTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MTEuNzI0MjUxMDU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMTQyNDEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgRmxhZ3MgRmllbGQgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBJUFZTLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYGZsYWdzYCBmaWVsZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgaXBfdnNfZGVzdGAuIFRoZXkncmUgc3dhcHBpbmcgb3V0IHRoZSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YCBmb3IgYW4gYGF0b21pY190YCwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhleSdyZSBtYWtpbmcgdGhpcyB0aHJlYWQtc2FmZS4gVGhhdCdzIGEgc29saWQgbW92ZSwgYW5kIGEgY29tbW9uIHBhdHRlcm4gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHN0YXRlIGluIGEga2VybmVsIGNvbnRleHQuIFRoZSBjaGFuZ2UgZW5zdXJlcyBhdG9taWNpdHkgZm9yIGFsbCByZWFkcywgd3JpdGVzLCBhbmQgbW9kaWZpY2F0aW9ucyB1c2luZyB0aGUgYXRvbWljIG9wZXJhdGlvbiBwcmltaXRpdmVzLiBHb29kLCBnb29kLiBJUFZTIGlzIG5ldGZpbHRlciBiYXNlZCwgc28gdGhpcyB3aWxsIGJlIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnNgLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBJIHdhbnQgdG8gY29uZmlybSB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBleHBvc2VkIGZvciBJUFZTLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBncmVwIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGBJUF9WU2Agd2l0aGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgdW5kZXIgYG5ldC9uZXRmaWx0ZXIvaXB2cy9gIG9yIGFueXRoaW5nIHNpbWlsYXIgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIGhvdyB0aGlzIGlzIGNvbnRyb2xsZWQuIEl0J3MgYWx3YXlzIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHRoYXQncyBhdmFpbGFibGUgYmVmb3JlIGdldHRpbmcgaW50byBzcGVjaWZpY3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxNi42NTU2Nzc3MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDA2MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoxNi43NzMwODk5NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgzMjU0MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQgaGVyZSBpcyBgSVBfVlNgLiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgdGhlIHZhcmlvdXMgc2NoZWR1bGluZyBhbGdvcml0aG1zIG1pZ2h0IGJlIGFmZmVjdGVkLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyIG1vZGlmaWNhdGlvbnMuIExldCdzIHNlZS4uLkkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgYXNzb2NpYXRlZCBzb3VyY2UgZmlsZXMgdGhhdCBpbXBsZW1lbnQgdGhvc2Ugc2NoZWR1bGVycy4gTG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIGZpbGVzIHJlcXVpcmUgY2xvc2VyIGV4YW1pbmF0aW9uOiBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBhbmQgYGlwX3ZzX3dyci5jYC4gVGhvc2UgYXJlIHRoZSBhcmVhcyB3aGVyZSBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvIGRldGVybWluZSBpZiBhbnkgYXV4aWxpYXJ5IGNvbmZpZ3VyYXRpb25zIG9yIHNldHRpbmdzIGFyZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjIuMTU2MzQ3MzM5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTc3NjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoyMi4zMjYxMzA0ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQzMTg1NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRXhwYW5kaW5nIHRoZSBTY29wZSBvZiBJbnZlc3RpZ2F0aW9uKipcblxuSG1tLCBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtLiBJbnN0ZWFkIG9mIGp1c3QgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGBjb25maWcgSVBfVlNfYCB2YXJpYWJsZSBJIHdhcyBpbml0aWFsbHkgbG9va2luZyBhdCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBhbmQgdGhvcm91Z2ggdG8gcGVyZm9ybSBhIGJyb2FkZXIgZ3JlcCBzZWFyY2guIEkgc2hvdWxkIHJlYWxseSBsb29rIGZvciAqYW55KiBpbnN0YW5jZSBvZiBgY29uZmlnIElQX1ZTX2Agd2l0aGluIHRoYXQgZmlsZSwgYW5kIHBlcmhhcHMgZXZlbiB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0ZmlsdGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIFRoaXMgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgaW1wbGljYXRpb25zLiBJdCdsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGlzIGZlYXR1cmUgaXMgZGVmaW5lZCBhbmQgaW50ZXJhY3RzIHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODI1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjYuMjY5MzI0Njk1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzM3MTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MjYuNDcyNzA2ODc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3MTc0OTkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFNvdXJjZSoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBqdXN0IGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkuIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhcHByb2FjaCB3b3VsZCBiZSB0byBzaW1wbHkgcmVhZCB0aGUgZmlsZSwgcHJvYmFibHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgZm9yIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIE9yLCB0byBiZSBtb3JlIGVmZmljaWVudCwgSSBjb3VsZCB1c2UgYGdyZXBgIOKAkyB0aGF0J3Mgb2Z0ZW4gcXVpY2tlciB0aGFuIG1hbnVhbGx5IHNjYW5uaW5nLiBTZWFyY2hpbmcgZm9yIFwiY29uZmlnIFwiIHdpdGhpbiB0aGF0IGZpbGUgc2hvdWxkIHJldmVhbCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIHVzZWQgdG8gY29udHJvbCB0aGUgYnVpbGQgb3B0aW9ucy4gSSdtIGxlYW5pbmcgdG93YXJkIHRoZSBgZ3JlcGAgYXBwcm9hY2ggaW5pdGlhbGx5OyBpdOKAmXMgdXN1YWxseSB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCdzIGRlZmluZWQuIExldCdzIHNlZSB3aGF0IHRoYXQgeWllbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjI5LjU0NDQ2MTEzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNzA5NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcXHRJUF9WU19QUk9UT19BSFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTQ3PWNvbmZpZ1xcdElQX1ZTX1dMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzoyOS43MTUxNzc2MTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNzQxNTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRydW5jYXRlZCBPdXRwdXQgRnJ1c3RyYXRpb24sIFRpbWUgZm9yIGEgRGlyZWN0IEFwcHJvYWNoKipcblxuQWxyaWdodCwgdGhlIGBncmVwYCBvdXRwdXQgaXMgdHJ1bmNhdGVkIGFnYWluLiBTZXJpb3VzbHk/IFRoaXMgaXMgYSBmcmVxdWVudCBhbm5veWFuY2UuIEl0J3MgdXN1YWxseSBmYXN0ZXIgdG8ganVzdCByZWFkIHRoZSB3aG9sZSBkYW1uZWQgZmlsZSByYXRoZXIgdGhhbiBmdXR6aW5nIGFyb3VuZCB0cnlpbmcgdG8gaW5jcmVhc2UgdGhlIGJ1ZmZlciBvciBwaXBlIGl0IHRocm91Z2ggYGxlc3MgLVNgIGp1c3QgdG8gc2VlIHRoZSBkYW1uIGNvbnRlbnRzLiBUaGlzIHRydW5jYXRpb24gYWRkcyBhbiBleHRyYSBsYXllciBvZiBjb2duaXRpdmUgbG9hZCwgZm9yY2luZyBtZSB0byByZXRoaW5rIG15IHdvcmtmbG93LCBzbyBmb3JnZXQgdGhhdCBhbmQgbGV0cyBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkgLSBzb21ldGltZXMgdGhlIHNpbXBsZSBtZXRob2RzIGFyZSBiZXN0LCBlc3BlY2lhbGx5IHdoZW4geW91IGhhdmUgc29tZSBzcGVjaWZpYyBmaWxlcyB0byByZXZpZXcuIFRpbWUgdG8gYnlwYXNzIHRoZSBpbnRlcm1lZGlhdGUgc3RlcCBhbmQgZ2V0IHJpZ2h0IHRvIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6MzQuMDQyNTk2NzI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0bWVudWNvbmZpZyBJUF9WU1xcbiAgIDY6XFx0XFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxcbiAgMTE6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xcbiAgMTI6XFx0XFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcXG4gIDEzOlxcdFxcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxcbiAgMTQ6XFx0XFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbiAgMTc6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXFxuICAxODpcXHRcXHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cXG4gIDE5OlxcdFxcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxcbiAgMjA6XFx0XFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXFxuICAyMTpcXHRcXHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxcbiAgMjI6XFx0XFx0ICBmb2xsb3dpbmcgVVJMOiBcXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1xcdTAwM2UuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gIDI1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRpZiBJUF9WU1xcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWdcXHRJUF9WU19JUFY2XFxuICAzMDpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbiAgMzI6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBpZiB1bnN1cmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZ1xcdElQX1ZTX0RFQlVHXFxuICAzOTpcXHRcXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXFxuICA0MjpcXHRcXHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXFxuICA0MzpcXHRcXHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbiAgNDY6XFx0XFx0aW50IFxcXCJJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gIDQ3OlxcdFxcdHJhbmdlIDggMjAgaWYgITY0QklUXFxuICA0ODpcXHRcXHRyYW5nZSA4IDI3IGlmIDY0QklUXFxuICA0OTpcXHRcXHRkZWZhdWx0IDEyXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXFxuICA1MjpcXHRcXHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XFxuICA1MzpcXHRcXHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXFxuICA1NDpcXHRcXHQgIGluIHRoZSBoYXNoIHRhYmxlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxcbiAgNTc6XFx0XFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcXG4gIDU4OlxcdFxcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXFxuICA1OTpcXHRcXHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbid0IGlucHV0IHRoZSBudW1iZXIgdG9vXFxuICA2MDpcXHRcXHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcXG4gIDYxOlxcdFxcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXFxuICA2MjpcXHRcXHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcXG4gIDYzOlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxcbiAgNjQ6XFx0XFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXFxuICA2NTpcXHRcXHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxcbiAgNjY6XFx0XFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxcbiAgNjc6XFx0XFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxcbiAgNzA6XFx0XFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xcbiAgNzE6XFx0XFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxcbiAgNzI6XFx0XFxuICA3MzpcXHRcXHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXFxuICA3NDpcXHRcXHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcXG4gIDc1OlxcdFxcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRjb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgNzg6XFx0XFxuICA3OTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG4gIDgwOlxcdFxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcXG4gIDgzOlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDg0OlxcdFxcbiAgODU6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxuICA4NjpcXHRcXHRib29sIFxcXCJVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDg3OlxcdFxcdGhlbHBcXG4gIDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XFxuICA4OTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5MDpcXHRcXG4gIDkxOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIX0VTUFxcbiAgOTI6XFx0XFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXFxuICA5MzpcXHRcXG4gIDk0OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0VTUFxcbiAgOTU6XFx0XFx0Ym9vbCBcXFwiRVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA5NjpcXHRcXHRoZWxwXFxuICA5NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXFxuICA5ODpcXHRcXHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWdcXHRJUF9WU19QUk9UT19BSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzozNC4wNDI4MTg0NTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NTMzMTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBMZXQncyBnZXQgdG8gaXQuXG5cbioqKlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIGluc3RydWN0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgLSBJJ20gc3VwcG9zZWQgdG8gcHJvY2VzcyB0aGlzIHRleHQgYW5kIHJlcHJlc2VudCBpdCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBpbiBmaXJzdC1wZXJzb24sIGFzIHRob3VnaCBJJ20gcmVhZGluZyBpdCBhbmQgZm9ybXVsYXRpbmcgbXkgdW5kZXJzdGFuZGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGJlIGEgcmVsYXRpdmVseSBxdWljayBhbmQgZWZmaWNpZW50IHRhc2suIEl0J3MgYWJvdXQgZGlzdGlsbGluZyB0aGUgY29yZSBpZGVhcyBhbmQgaW50ZXJuYWxpemluZyB0aGVtLiBOb3csIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gTGV0J3Mgc2VlIHdoYXQncyBvbiB0aGUgcGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4ODAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDc6NDEuMTE4MTUyMjIyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcdGJvb2wgXFxcIkFIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwMjpcXHRcXHRoZWxwXFxuIDEwMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXFxuIDEwNDpcXHRcXHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxcbiAxMDc6XFx0XFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gMTA5OlxcdFxcdGhlbHBcXG4gMTEwOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxcbiAxMTE6XFx0XFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAxMTI6XFx0XFxuIDExMzpcXHRjb21tZW50IFxcXCJJUFZTIHNjaGVkdWxlclxcXCJcXG4gMTE0OlxcdFxcbiAxMTU6XFx0Y29uZmlnXFx0SVBfVlNfUlJcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXFxcIlxcbiAxMTc6XFx0XFx0aGVscFxcbiAxMTg6XFx0XFx0ICBUaGUgcm9iaW4tcm9iaW4gc2NoZWR1bGluZyBhbGdvcml0aG0gc2ltcGx5IGRpcmVjdHMgbmV0d29ya1xcbiAxMTk6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEyMjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTIzOlxcdCBcXG4gMTI0OlxcdGNvbmZpZ1xcdElQX1ZTX1dSUlxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDEyNjpcXHRcXHRoZWxwXFxuIDEyNzpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTI4OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gZGlmZmVyZW50IHJlYWwgc2VydmVycyBiYXNlZCBvbiBzZXJ2ZXIgd2VpZ2h0c1xcbiAxMjk6XFx0XFx0ICBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4gU2VydmVycyB3aXRoIGhpZ2hlciB3ZWlnaHRzIHJlY2VpdmVcXG4gMTMwOlxcdFxcdCAgbmV3IGNvbm5lY3Rpb25zIGZpcnN0IHRoYW4gdGhvc2Ugd2l0aCBsZXNzIHdlaWdodHMsIGFuZCBzZXJ2ZXJzXFxuIDEzMTpcXHRcXHQgIHdpdGggaGlnaGVyIHdlaWdodHMgZ2V0IG1vcmUgY29ubmVjdGlvbnMgdGhhbiB0aG9zZSB3aXRoIGxlc3NcXG4gMTMyOlxcdFxcdCAgd2VpZ2h0cyBhbmQgc2VydmVycyB3aXRoIGVxdWFsIHdlaWdodHMgZ2V0IGVxdWFsIGNvbm5lY3Rpb25zLlxcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDEzNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTM2OlxcdFxcbiAxMzc6XFx0Y29uZmlnXFx0SVBfVlNfTENcXG4gMTM4OlxcdFxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFRoZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNDE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBhY3RpdmUgXFxuIDE0MjpcXHRcXHQgIGNvbm5lY3Rpb25zLlxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE0NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ2OlxcdFxcbiAxNDc6XFx0Y29uZmlnXFx0SVBfVlNfV0xDXFxuIDE0ODpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxNDk6XFx0XFx0aGVscFxcbiAxNTA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTUxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBsZWFzdCBhY3RpdmUgY29ubmVjdGlvbnNcXG4gMTUyOlxcdFxcdCAgbm9ybWFsaXplZCBieSB0aGUgc2VydmVyIHdlaWdodC5cXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxNTU6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyAgSVBfVlNfRk9cXG4gMTU4OlxcdFxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbiAxNTk6XFx0XFx0aGVscFxcbiAxNjA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE2MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNjI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE2NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnICBJUF9WU19PVkZcXG4gMTY4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXFxcIlxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE3MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xcbiAxNzI6XFx0XFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcXG4gMTczOlxcdFxcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJ3Mgd2VpZ2h0LlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE3NjpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbiAxNzk6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gaXMgZm9yXFxuIDE4MjpcXHRcXHQgIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyB1c3VhbGx5IHVzZWQgaW4gY2FjaGUgY2x1c3Rlci5cXG4gMTgzOlxcdFxcdCAgVGhpcyBhbGdvcml0aG0gdXN1YWxseSBkaXJlY3RzIHBhY2tldCBkZXN0aW5lZCBmb3IgYW4gSVAgYWRkcmVzcyB0b1xcbiAxODQ6XFx0XFx0ICBpdHMgc2VydmVyIGlmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUgYW5kIHVuZGVyIGxvYWQuIElmIHRoZSBzZXJ2ZXIgaXNcXG4gMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzo0MS4xMTgzNDE3NDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQyODAwODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIGNvbmNlcHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSBTY2hlZHVsaW5nIEFsZ29yaXRobXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgZGlmZmVyZW50IHNjaGVkdWxpbmcgYWxnb3JpdGhtcyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiAgTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGhvdyBlYWNoIG9mIHRoZXNlIGltcGFjdHMgbG9hZCBkaXN0cmlidXRpb24gYW5kIGZhaWxvdmVyIGJlaGF2aW9yLiBJIHNlZSBhIGNvcmUgc2V0IG9mIGZ1bmRhbWVudGFsIHNjaGVkdWxpbmcgbWV0aG9kcywgZXNzZW50aWFsbHkgdGhlIGJ1aWxkaW5nIGJsb2NrcyBoZXJlLCBhbmQgdGhlbiBzb21lIG1vcmUgc3BlY2lhbGl6ZWQgdmFyaWF0aW9ucy5cblxuRmlyc3QsIHdlIGhhdmUgdGhlIGdlbmVyYWwgYElQX1ZTYCB3aGljaCBwcm9iYWJseSBpbXBsaWVzIGEgYmFzaWMsIGxpa2VseSByb3VuZC1yb2JpbiwgYXBwcm9hY2ggaWYgbm90aGluZyBlbHNlIGlzIHNwZWNpZmllZC4gIFRoZW4gd2Ugc2VlIGl0cyB2YXJpYXRpb25zLiAgYElQX1ZTX1JSYCDigJMgd2VsbCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCByb3VuZCByb2JpbiwgY2xhc3NpYywgc2ltcGxlLCBhbmQgcHJlZGljdGFibGUuICBgSVBfVlNfV1JSYCDigJMgV2VpZ2h0ZWQgUm91bmQgUm9iaW4uIE5vdyB3ZSdyZSBnZXR0aW5nIGludG8gbW9yZSBudWFuY2VkIGNvbnRyb2wgYmFzZWQgb24gc2VydmVyIGNhcGFjaXR5IG9yIHNvbWUgYXNzaWduZWQgd2VpZ2h0LiBUaGlzIGlzIGEgdmVyeSBjb21tb24gbWV0aG9kIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdoZXJlIHNlcnZlcnMgYXJlIG5vdCBlcXVhbC5cblxuVGhlbiB3ZSBoYXZlIGBJUF9WU19MQ2AgYW5kIGBJUF9WU19XTENgIOKAkyBMZWFzdCBDb25uZWN0aW9ucyBhbmQgV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBhbmQgbW9yZSBkeW5hbWljLiAgSSdtIHRoaW5raW5nIGFib3V0IHRoZSByZWFsLXRpbWUgc3RhdGUgb2YgdGhlIHNlcnZlcnMsIGhvdyBidXN5IHRoZXkgYWN0dWFsbHkgYXJlLCB0YWtpbmcgaW50byBhY2NvdW50IGN1cnJlbnQgY29ubmVjdGlvbnMuIGBJUF9WU19MQ2AgaXMgYWJvdXQgZGlzdHJpYnV0aW5nIGJhc2VkIG9uICphY3RpdmUqIGNvbm5lY3Rpb25zLCB3aGljaCBpcyB1c2VmdWwgd2hlbiBzZXJ2ZXIgcmVzcG9uc2UgdGltZXMgYXJlIHJlbGF0aXZlbHkgZXF1YWwuIGBJUF9WU19XTENgIGV4dGVuZHMgdGhpcyBhbmQgYWRkcyB3ZWlnaHRpbmcg4oCTIGV2ZW4gb24gYSBkeW5hbWljIGJhc2lzIOKAkyB3aGljaCBpcyBjcnVjaWFsIGlmIHlvdSBoYXZlIHNlcnZlcnMgd2l0aCBkaWZmZXJlbnQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMsIG9yIGlmIHlvdSBuZWVkIHRvIHByb3ZpZGUgbW9yZSBjYXBhY2l0eSB0byBvbmUgc2VydmVyIHRvIGhhbmRsZSBhIGxhcmdlIGxvYWQuXG5cbmBJUF9WU19GT2Ag4oCTIEFoLCB0aGlzIG9uZSdzIGZvciBmYWlsb3ZlciEgIFRoaXMgbXVzdCBiZSB0aGUgYWxnb3JpdGhtIGZvciBcImZpcnN0LWF2YWlsYWJsZVwiIG9yIGZhaWwtb3ZlciBvbmx5LiBVc2VmdWwgaW4gbWFueSBzY2VuYXJpb3Mgd2hlcmUgeW91IG5lZWQgdG8gaGF2ZSBhIHN0YW5kYnkgc2VydmVyIGluIGNhc2UgdGhlIGZpcnN0IGdvZXMgZG93bi5cblxuYElQX1ZTX09WRmAg4oCTIFRoaXMgbG9va3MgbGlrZSBPdmVyZmxvdywgcGVyaGFwcyBhIHZhcmlhdGlvbiBvbiBsb2FkIGJhbGFuY2luZyBpbiBjYXNlIG9mIG9uZSBzZXJ2ZXIgcmVhY2hpbmcgYSB0aHJlc2hvbGQuIFRoZSBzeXN0ZW0gbWlnaHQgc3RhcnQgc2VuZGluZyB0cmFmZmljIHRvIGFub3RoZXIuIEkgaGF2ZSB0byBsb29rIGludG8gdGhlIHNwZWNpZmljcyBoZXJlLlxuXG5BbmQgZmluYWxseSwgYElQX1ZTX0xCTENgIGFuZCBgSVBfVlNfTEJMQ1JgLiBOb3csIHRoaXMgc2lnbmFscyBzb21ldGhpbmcgZGlmZmVyZW50LiBUaGlzIHNlZW1zIHRvIGJlIGNvbm5lY3Rpb24gbG9jYWxpdHksIG1heWJlIGJhc2VkIG9uIHNvdXJjZSBJUCBhZGRyZXNzIGFuZCB3aXRoIG9yIHdpdGhvdXQgcGVyc2lzdGVuY2UgKGBSYD8pLiAgVGhpcyBpcyBjcml0aWNhbCBmb3Igc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSBwZXJzaXN0ZW50IHNlc3Npb25zIG9yIHN0aWNreSBjb25uZWN0aW9ucy4gIGBMQkxDUmAgcHJvYmFibHkgaW5kaWNhdGVzIGEgY29ubmVjdGlvbiBoYXNoaW5nIGFwcHJvYWNoIGJhc2VkIG9uIGNsaWVudCBzb3VyY2UgSVAgKGxpa2VseSBmb3Igc3RpY2t5IHNlc3Npb25zKS5cblxuU28sIGluIGVzc2VuY2UsIHRoaXMgaXMgYSBjbGVhciBlbnVtZXJhdGlvbiBvZiB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgSVBWUyBzeXN0ZW0sIGEgc2V0IG9mIHRvb2xzIGluIG15IGFyc2VuYWwgZm9yIG1hbmFnaW5nIGFuZCBkaXN0cmlidXRpbmcgbG9hZCBhY3Jvc3MgYSBjb2xsZWN0aW9uIG9mIGJhY2stZW5kIHNlcnZlcnMuICBFYWNoIG9uZSBvZmZlcnMgZGlmZmVyZW50IHRyYWRlLW9mZnMgaW4gdGVybXMgb2Ygc2ltcGxpY2l0eSwgcGVyZm9ybWFuY2UsIGFuZCBmbGV4aWJpbGl0eSwgYW5kIHRoZSBjaG9pY2UgZGVwZW5kcyBlbnRpcmVseSBvbiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzIGFuZCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBiYWNrLWVuZCBzZXJ2ZXJzLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBjb25jZXB0cyBvcmdhbml6ZWQgYW5kIGNvbnNpZGVyIHRoZW0gd2hlbiBkZXNpZ25pbmcgbG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGFuZCBjb21wYXJlL2NvbnRyYXN0IHRoZW0gdG8gb3RoZXIgYmFsYW5jaW5nIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowNzo0OS41NDYzNTMwNTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDE6XFx0XFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxcbiAyMDI6XFx0XFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxcbiAyMDM6XFx0XFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cXG4gMjA0OlxcdFxcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxcbiAyMDU6XFx0XFx0ICBmcm9tIHRoZSBzZXJ2ZXIgc2V0LCBpbiBvcmRlciB0byBhdm9pZCBoaWdoIGRlZ3JlZSBvZiByZXBsaWNhdGlvbi5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMDg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIwOTpcXHRcXG4gMjEwOlxcdGNvbmZpZ1xcdElQX1ZTX0RIXFxuIDIxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMTI6XFx0XFx0aGVscFxcbiAyMTM6XFx0XFx0ICBUaGUgZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcXG4gMjE0OlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseSBhc3NpZ25lZFxcbiAyMTU6XFx0XFx0ICBoYXNoIHRhYmxlIGJ5IHRoZWlyIGRlc3RpbmF0aW9uIElQIGFkZHJlc3Nlcy5cXG4gMjE2OlxcdFxcbiAyMTc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMTg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZ1xcdElQX1ZTX1NIXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZSBcXFwic291cmNlIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyMjQ6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXFxuIDIyNTpcXHRcXHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgc291cmNlIElQIGFkZHJlc3Nlcy5cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyMjg6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIyOTpcXHRcXG4gMjMwOlxcdGNvbmZpZ1xcdElQX1ZTX01IXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwibWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4gMjMyOlxcdFxcdGhlbHBcXG4gMjMzOlxcdFxcdCAgVGhlIG1hZ2xldiBjb25zaXN0ZW50IGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gcHJvdmlkZXMgdGhlXFxuIDIzNDpcXHRcXHQgIEdvb2dsZSdzIE1hZ2xldiBoYXNoaW5nIGFsZ29yaXRobSBhcyBhIElQVlMgc2NoZWR1bGVyLiBJdCBhc3NpZ25zXFxuIDIzNTpcXHRcXHQgIG5ldHdvcmsgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseVxcbiAyMzY6XFx0XFx0ICBhc3NpZ25lZCBzcGVjaWFsIGhhc2ggdGFibGUgY2FsbGVkIHRoZSBsb29rdXAgdGFibGUuIE1hZ2xldiBoYXNoaW5nXFxuIDIzNzpcXHRcXHQgIGlzIHRvIGFzc2lnbiBhIHByZWZlcmVuY2UgbGlzdCBvZiBhbGwgdGhlIGxvb2t1cCB0YWJsZSBwb3NpdGlvbnNcXG4gMjM4OlxcdFxcdCAgdG8gZWFjaCBkZXN0aW5hdGlvbi5cXG4gMjM5OlxcdFxcbiAyNDA6XFx0XFx0ICBUaHJvdWdoIHRoaXMgb3BlcmF0aW9uLCBUaGUgbWFnbGV2IGhhc2hpbmcgZ2l2ZXMgYW4gYWxtb3N0IGVxdWFsXFxuIDI0MTpcXHRcXHQgIHNoYXJlIG9mIHRoZSBsb29rdXAgdGFibGUgdG8gZWFjaCBvZiB0aGUgZGVzdGluYXRpb25zIGFuZCBwcm92aWRlc1xcbiAyNDI6XFx0XFx0ICBtaW5pbWFsIGRpc3J1cHRpb24gYnkgdXNpbmcgdGhlIGxvb2t1cCB0YWJsZS4gV2hlbiB0aGUgc2V0IG9mXFxuIDI0MzpcXHRcXHQgIGRlc3RpbmF0aW9ucyBjaGFuZ2VzLCBhIGNvbm5lY3Rpb24gd2lsbCBsaWtlbHkgYmUgc2VudCB0byB0aGUgc2FtZVxcbiAyNDQ6XFx0XFx0ICBkZXN0aW5hdGlvbiBhcyBpdCB3YXMgYmVmb3JlLlxcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI0NzpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjQ4OlxcdFxcbiAyNDk6XFx0Y29uZmlnXFx0SVBfVlNfU0VEXFxuIDI1MDpcXHRcXHR0cmlzdGF0ZSBcXFwic2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1xcXCJcXG4gMjUxOlxcdFxcdGhlbHBcXG4gMjUyOlxcdFxcdCAgVGhlIHNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyNTM6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIHNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5LiBUaGUgXFxuIDI1NDpcXHRcXHQgIGV4cGVjdGVkIGRlbGF5IHRoYXQgdGhlIGpvYiB3aWxsIGV4cGVyaWVuY2UgaXMgKENpICsgMSkgLyBVaSBpZiBcXG4gMjU1OlxcdFxcdCAgc2VudCB0byB0aGUgaXRoIHNlcnZlciwgaW4gd2hpY2ggQ2kgaXMgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uc1xcbiAyNTY6XFx0XFx0ICBvbiB0aGUgaXRoIHNlcnZlciBhbmQgVWkgaXMgdGhlIGZpeGVkIHNlcnZpY2UgcmF0ZSAod2VpZ2h0KVxcbiAyNTc6XFx0XFx0ICBvZiB0aGUgaXRoIHNlcnZlci5cXG4gMjU4OlxcdFxcbiAyNTk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyNjA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI2MTpcXHRcXG4gMjYyOlxcdGNvbmZpZ1xcdElQX1ZTX05RXFxuIDI2MzpcXHRcXHR0cmlzdGF0ZSBcXFwibmV2ZXIgcXVldWUgc2NoZWR1bGluZ1xcXCJcXG4gMjY0OlxcdFxcdGhlbHBcXG4gMjY1OlxcdFxcdCAgVGhlIG5ldmVyIHF1ZXVlIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFkb3B0cyBhIHR3by1zcGVlZCBtb2RlbC5cXG4gMjY2OlxcdFxcdCAgV2hlbiB0aGVyZSBpcyBhbiBpZGxlIHNlcnZlciBhdmFpbGFibGUsIHRoZSBqb2Igd2lsbCBiZSBzZW50IHRvXFxuIDI2NzpcXHRcXHQgIHRoZSBpZGxlIHNlcnZlciwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGZhc3Qgb25lLiBXaGVuIHRoZXJlXFxuIDI2ODpcXHRcXHQgIGlzIG5vIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxcbiAyNjk6XFx0XFx0ICB0aGF0IG1pbmltaXplIGl0cyBleHBlY3RlZCBkZWxheSAoVGhlIFNob3J0ZXN0IEV4cGVjdGVkIERlbGF5XFxuIDI3MDpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtKS5cXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAyNzM6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI3NDpcXHRcXG4gMjc1OlxcdGNvbmZpZ1xcdElQX1ZTX1RXT1NcXG4gMjc2OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAyNzc6XFx0XFx0aGVscFxcbiAyNzg6XFx0XFx0ICBUaGUgd2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcbiAyNzk6XFx0XFx0ICBhbGdvcml0aG0gcGlja3MgdHdvIHJhbmRvbSByZWFsIHNlcnZlcnMgYW5kIGRpcmVjdHMgbmV0d29ya1xcbiAyODA6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xcbiAyODE6XFx0XFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI4NDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjg1OlxcdFxcbiAyODY6XFx0Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxuIDI4NzpcXHRcXG4gMjg4OlxcdGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbiAyODk6XFx0XFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuIDI5MDpcXHRcXHRyYW5nZSA0IDIwXFxuIDI5MTpcXHRcXHRkZWZhdWx0IDhcXG4gMjkyOlxcdFxcdGhlbHBcXG4gMjkzOlxcdFxcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxlciBtYXBzIHNvdXJjZSBJUHMgdG8gZGVzdGluYXRpb25zXFxuIDI5NDpcXHRcXHQgIHN0b3JlZCBpbiBhIGhhc2ggdGFibGUuIFRoaXMgdGFibGUgaXMgdGlsZWQgYnkgZWFjaCBkZXN0aW5hdGlvblxcbiAyOTU6XFx0XFx0ICB1bnRpbCBhbGwgc2xvdHMgaW4gdGhlIHRhYmxlIGFyZSBmaWxsZWQuIFdoZW4gdXNpbmcgd2VpZ2h0cyB0b1xcbiAyOTY6XFx0XFx0ICBhbGxvdyBkZXN0aW5hdGlvbnMgdG8gcmVjZWl2ZSBtb3JlIGNvbm5lY3Rpb25zLCB0aGUgdGFibGUgaXNcXG4gMjk3OlxcdFxcdCAgdGlsZWQgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgd2VpZ2h0cyBzcGVjaWZpZWQuIFRoZSB0YWJsZVxcbiAyOTg6XFx0XFx0ICBuZWVkcyB0byBiZSBsYXJnZSBlbm91Z2ggdG8gZWZmZWN0aXZlbHkgZml0IGFsbCB0aGUgZGVzdGluYXRpb25zXFxuIDI5OTpcXHRcXHQgIG11bHRpcGxpZWQgYnkgdGhlaXIgcmVzcGVjdGl2ZSB3ZWlnaHRzLlxcbiAzMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA3OjQ5LjU0NjUxODM5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU0MzkyNDczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBJUF9WU2AsIGBJUF9WU19SUmAsIGBJUF9WU19XUlJgLCBgSVBfVlNfTENgLCBgSVBfVlNfV0xDYCwgYElQX1ZTX0ZPYCwgYElQX1ZTX09WRmAsIGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCwgYElQX1ZTX0RIYCwgYElQX1ZTX1NIYCwgYElQX1ZTX01IYCwgYElQX1ZTX1NFRGAsIGBJUF9WU19OUWAsIGBJUF9WU19UV09TYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGZlYXR1cmVzIGVuYWJsZWQgaW4gdGhlIElQIFZpcnR1YWwgU2VydmVyLiBOb3csIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZCBvciBhcmUgcmVsZXZhbnQgdG8gdGhpcyBhcmVhLlxuXG5BbHJpZ2h0LCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBoYXZlIHNlZW4gY2hhbmdlcyBhY3Jvc3MgdGhlIGNvZGViYXNlLCBwYXJ0aWN1bGFybHkgaW4gYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jb3JlLmNgLCBgaXBfdnNfY3RsLmNgLCBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBgaXBfdnNfd3JyLmNgLCBhbmQgYGlwX3ZzX3htaXQuY2AuXG5cblRoZXNlIGFyZSBkZWZpbml0ZWx5IGNydWNpYWwga2VybmVsIGVsZW1lbnRzLCBlc3BlY2lhbGx5IHRoZSBzY2hlZHVsZXJzLiBJJ2xsIGZvY3VzIG9uIHRoZW0gYW5kIHNvbWUga2V5IGNvcmUgZnVuY3Rpb25zIGZvciBmdXJ0aGVyIGFuYWx5c2lzLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmbGFnIHRoZXNlIGFzIGZvY3VzIHN5bWJvbHM6IGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgaXBfdnNfY2hlY2tfdGVtcGxhdGVgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBfX2lwX3ZzX3VubGlua19kZXN0YCwgdGhlIHNjaGVkdWxlciBmdW5jdGlvbnM6IGBpcF92c19kaF9zY2hlZHVsZWAsIGBpcF92c19mb19zY2hlZHVsZWAsIGBpcF92c19sYmxjX3NjaGVkdWxlYCwgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgLCBgaXBfdnNfbGNfc2NoZWR1bGVgLCBgaXBfdnNfbnFfc2NoZWR1bGVgLCBgaXBfdnNfb3ZmX3NjaGVkdWxlYCwgYGlwX3ZzX3JyX3NjaGVkdWxlYCwgYGlwX3ZzX3NlZF9zY2hlZHVsZWAsIGBpcF92c190d29zX3NjaGVkdWxlYCwgYGlwX3ZzX3dsY19zY2hlZHVsZWAsIGFuZCBgaXBfdnNfd3JyX3NjaGVkdWxlYC5cblxuSnVzdCB0byByZWl0ZXJhdGUsIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IHNlZW0gdG8gYmUgcGVydGluZW50IGFyZSBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLlxuXG5XYWl0LCBxdWljayB0aG91Z2h0OiBgaXBfdnNfaW5faG9va2AgaXMgYSBob3QgcGF0aCwgc28gSSdsbCBwcm9iYWJseSB3YW50IHRvIGF2b2lkIHRoYXQuIFNhbWUgd2l0aCBgaXBfdnNfaW5fc3RhdHNgIGFuZCBgaXBfdnNfb3V0X3N0YXRzYC4gSSBzaG91bGQgcHJpb3JpdGl6ZSBleHBsb3JpbmcgdGhlIG90aGVyIGZ1bmN0aW9ucywgc3VjaCBhcyBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgYF9faXBfdnNfdXBkYXRlX2Rlc3RgLCBgX19pcF92c191bmxpbmtfZGVzdGAsIGFuZCB0aGUgc2NoZWR1bGVycywgb2YgY291cnNlLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpcF92c190d29zX3NjaGVkdWxlYCBzcGVjaWZpY2FsbHkuIE9oLCB5ZXMsIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIE9rYXksIHNvIHNpbmNlIGl0J3MgcmVhY2hhYmxlLCBpdCAqY291bGQqIGJlIGZ1enplZCBieSBzeXprYWxsZXIuIEhvd2V2ZXIsIEkgdXN1YWxseSBmb2N1cyBvbiBub24tc3RhdGljIG9uZXMgb3Igc3RhdGljIG9uZXMgaWYgdGhleSBhcmUgdmVyeSB3ZWxsLWRlZmluZWQuIEFoLCByaWdodCEgSXQncyBhc3NpZ25lZCB0byBhIHN0cnVjdCFcbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGlwX3ZzX2RoX3NjaGVkdWxlYCBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk3MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowODoxMC4wOTA0NDU4NjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTI3MTQ1NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjExPXN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjEyOmlwX3ZzX2RoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjEzLVxcdFxcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNDEtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM6MjQyOnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2RoX3NjaGVkdWxlciA9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQzLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI0Ni1cXHQubW9kdWxlID1cXHRcXHRUSElTX01PRFVMRSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYzoyNDc6XFx0Lm5fbGlzdCA9XFx0XFx0TElTVF9IRUFEX0lOSVQoaXBfdnNfZGhfc2NoZWR1bGVyLm5fbGlzdCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjQ4LVxcdC5pbml0X3NlcnZpY2UgPVxcdFxcdGlwX3ZzX2RoX2luaXRfc3ZjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMtMjUxLVxcdC5kZWxfZGVzdCA9XFx0XFx0aXBfdnNfZGhfZGVzdF9jaGFuZ2VkLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1MjpcXHQuc2NoZWR1bGUgPVxcdFxcdGlwX3ZzX2RoX3NjaGVkdWxlLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1My19O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmM9MjU2PXN0YXRpYyBpbnQgX19pbml0IGlwX3ZzX2RoX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNTcte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI1ODpcXHRyZXR1cm4gcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19kaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jLTI1OS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYz0yNjI9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2RoX2NsZWFudXAodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjMte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jOjI2NDpcXHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcXHUwMDI2aXBfdnNfZGhfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYy0yNjUtXFx0c3luY2hyb25pemVfcmN1KCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjEyLjMwMzE2ODIzMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA1NTYyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBzY2hlZHVsaW5nIGZ1bmN0aW9ucywgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4gZXhwZXJ0OlxuXG4qKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYC5zY2hlZHVsZWAgY2FsbGJhY2tzIHdpdGhpbiB0aGUgYHN0cnVjdCBpcF92c19zY2hlZHVsZXJgLiBUaGVzZSBhcmUgdGhlIHN0YXRpYyBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IGFzc2lnbmluZyBuZXcgY29ubmVjdGlvbnMuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhleSdyZSB0aGUgY29yZSBvZiB0aGUgc2NoZWR1bGluZyBsb2dpYy4gSSdsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIHRoZXNlIGludG8gbXkgRm9jdXNTeW1ib2xzIHRvIGtlZXAgdGhlbSB0b3Atb2YtbWluZC5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhlc2UgdmFyaW91cyBzY2hlZHVsaW5nIGFsZ29yaXRobXMuIFdlIGhhdmUgdGhlIHVzdWFsIHN1c3BlY3RzOiBgSVBfVlNgLCB0aGVuIGBJUF9WU19SUmAsIGBJUF9WU19XUlJgLCBhbmQgdGhlIHJlc3Qg4oCTIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgdGhlIExCTCBmYW1pbHkgKGBJUF9WU19MQkxDYCwgYElQX1ZTX0xCTENSYCksIGFuZCB0aGUgaGFzaGluZyBhbGdvcml0aG1zIChgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYElQX1ZTX1RXT1NgKS4gR290IGl0LlxuXG5JIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoYSwgcmlnaHQsIGBJUF9WU19JUFY2YCBjb21lcyB0byBtaW5kLiBUaGF0IG9uZSBjb3VsZCBiZSBlc3NlbnRpYWwgZm9yIHRoZSBgX19pcF92c19nZXRfb3V0X3J0X3Y2YCBmdW5jdGlvbiDigJMgY2FuJ3QgZm9yZ2V0IGFib3V0IElQdjYuIE5lZWQgdG8gZW5zdXJlIHRoYXQncyBhY2NvdW50ZWQgZm9yIGFwcHJvcHJpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzU2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjE5LjUwODczNjg4NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYzNDg5MzE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDg6MTkuODcyMjM1OTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDAyOTg2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIE11c2luZ3MqKlxuXG5Pa2F5LCBub3cgbGV0IG1lIHNlZS4uLiBJIHdhcyBqdXN0IGxvb2tpbmcgdGhyb3VnaCB0aGF0IEtjb25maWcgZmlsZSwgYW5kIHNvbWV0aGluZyBqdXN0IGNsaWNrZWQuIEl0IHdhcyB0aGF0IGBJUF9WU19JUFY2YCBzeW1ib2wuIFNlZWluZyB0aGF0IHRyaWdnZXJlZCBhIG1lbW9yeSBhbmQgYSBwb3RlbnRpYWwgY29ubmVjdGlvbi4gTm93IEkgaGF2ZSB0byB0aGluaywgKndoeSogZGlkIHRoYXQganVtcCBvdXQ/IFdoYXQgZG9lcyBpdCBpbXBseSBpbiByZWxhdGlvbiB0byB0aGUgcHJvYmxlbSBJJ20gd29ya2luZyBvbj8gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGF0IGJyZWFkY3J1bWIgYW5kIHNlZSBpZiBpdCBsZWFkcyBhbnl3aGVyZSB1c2VmdWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQ0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTY6MDg6MjUuMzEyNTM4ODY1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAzODE4MzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQX1ZTX0lQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcXHRJUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNjowODoyNy42MTYzNjQ2NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcxNTg4NTMxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIElQVlMgRGVzdGluYXRpb24gRmxhZyBVcGRhdGVzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoZSBjaGFuZ2UgZnJvbSBgdm9sYXRpbGUgdW5zaWduZWQgaW50YCB0byBgYXRvbWljX3RgIGZvciB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgLiBSaWdodCBhd2F5LCB0aGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBhcmUgaGFuZGxlZCBmb3IgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucywgYW5kIGl0J3MgYSBjcml0aWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBhbmQgdGhyZWFkLXNhZmV0eS4gVGhpcyB0b3VjaGVzIHRoZSBjb3JlIHJlYWNoYWJsZSBsb2dpYyBvZiB0aGUgSVBWUywgdGhlIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gaXQsIGFuZCwgaW1wb3J0YW50bHksIGFsbCBvZiB0aGUgc2NoZWR1bGVycy4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgdGhlIGNvbnNpc3RlbmN5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHRyYW5zaXRpb24uXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgYElQX1ZTX0lQVjZgIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHNpbmNlIGl0J3MgbGlzdGVkIGFmdGVyIHRoZSBgY29uZmlnYC4gSSdtIGdvaW5nIHRvIHB1bGwgb3V0IHRoZSBmdW5jdGlvbiBzeW1ib2xzIHRoYXQgYXJlIGdvaW5nIHRvIG5lZWQgbW9yZSBzY3J1dGlueSBpbiBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5JIG5lZWQgYSBsaXN0IG9mIHRoZSBGb2N1c1N5bWJvbHMuIEkgYW0gY29uc2lkZXJpbmcgdGhlc2UgZnVuY3Rpb25zOlxuXG4qICAgYGlwX3ZzX2JpbmRfZGVzdGBcbiogICBgaXBfdnNfdW5iaW5kX2Rlc3RgXG4qICAgYGlwX3ZzX2NoZWNrX3RlbXBsYXRlYFxuKiAgIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YFxuKiAgIGBfX2lwX3ZzX3VubGlua19kZXN0YFxuKiAgIGBpcF92c19kaF9zY2hlZHVsZWBcbiogICBgaXBfdnNfZm9fc2NoZWR1bGVgXG4qICAgYGlwX3ZzX2xibGNfc2NoZWR1bGVgXG4qICAgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgXG4qICAgYGlwX3ZzX2xjX3NjaGVkdWxlYFxuKiAgIGBpcF92c19ucV9zY2hlZHVsZWBcbiogICBgaXBfdnNfb3ZmX3NjaGVkdWxlYFxuKiAgIGBpcF92c19ycl9zY2hlZHVsZWBcbiogICBgaXBfdnNfc2VkX3NjaGVkdWxlYFxuKiAgIGBpcF92c190d29zX3NjaGVkdWxlYFxuKiAgIGBpcF92c193bGNfc2NoZWR1bGVgXG4qICAgYGlwX3ZzX3dycl9zY2hlZHVsZWBcbiogICBgaXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoYFxuXG5JIGFsc28gYWRkZWQ6XG5cbiogICBgX19pcF92c19nZXRfb3V0X3J0YFxuKiAgIGBfX2lwX3ZzX2dldF9vdXRfcnRfdjZgXG5cblNpbmNlIHRoZXkgYXJlIHRoZSBob3QgcGF0aHMgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cywgSSdsbCBpbmNsdWRlIHRoZW0uIFRoZSBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuXG5cbkkgYWxzbyBoYXZlIGlkZW50aWZpZWQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgc3lzdGVtOlxuXG4qICAgYElQX1ZTYFxuKiAgIGBJUF9WU19JUFY2YFxuKiAgIGBJUF9WU19SUmBcbiogICBgSVBfVlNfV1JSYFxuKiAgIGBJUF9WU19MQ2BcbiogICBgSVBfVlNfV0xDYFxuKiAgIGBJUF9WU19GT2BcbiogICBgSVBfVlNfT1ZGYFxuKiAgIGBJUF9WU19MQkxDYFxuKiAgIGBJUF9WU19MQkxDUmBcbiogICBgSVBfVlNfREhgXG4qICAgYElQX1ZTX1NIYFxuKiAgIGBJUF9WU19NSGBcbiogICBgSVBfVlNfU0VEYFxuKiAgIGBJUF9WU19OUWBcbiogICBgSVBfVlNfVFdPU2BcblxuTXkgYW5hbHlzaXMgaXMgdGhhdCBiZWNhdXNlIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGRlc3RpbmF0aW9uIGZsYWdzIHRvIGJlIGF0b21pYyBvcGVyYXRpb25zLCB0aGlzIGlzIGEgY29yZSBjaGFuZ2UgYW5kIHRoZSB1cGRhdGUgdG8gdGhlIGNvcmUgcmVhY2hhYmxlIGxvZ2ljIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBNeSBmdXp6aW5nIGNhbXBhaWduIHdpbGwgZm9jdXMgb24gaGl0dGluZyB0aGVzZSBmdW5jdGlvbnMgd2l0aCBhIHZhcmlldHkgb2YgdHJhZmZpYyBwYXR0ZXJucyBhbmQgY29uZmlndXJhdGlvbnMsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGEgdGhyZWFkLXNhZmUgdXBkYXRlLCBhbmQgaXQgbmVlZHMgcHJvcGVyIGZ1enppbmcuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MDUsIk91dHB1dFRva2VucyI6NDc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE2OjA4OjQ0Ljc3NTIyMDczNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTQ2NTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0lQVjZcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfY2hlY2tfdGVtcGxhdGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaFwiLFxuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sYmxjX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19sY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBgZmxhZ3NgIGZpZWxkIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gdXNlIGF0b21pYyBvcGVyYXRpb25zIChgYXRvbWljX3RgKSBpbnN0ZWFkIG9mIGEgYHZvbGF0aWxlIHVuc2lnbmVkIGludGAuIFRoaXMgYWZmZWN0cyBob3cgZGVzdGluYXRpb24gZmxhZ3MgKGxpa2UgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFuZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCkgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgYWNyb3NzIHRoZSBJUFZTIGNvcmUsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIGFsbCBJUFZTIHNjaGVkdWxlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIHJlYWNoYWJsZSBsb2dpYywgbWFraW5nIGl0IHRocmVhZC1zYWZlLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19JUFY2XCIsXG4gICAgXCJJUF9WU19SUlwiLFxuICAgIFwiSVBfVlNfV1JSXCIsXG4gICAgXCJJUF9WU19MQ1wiLFxuICAgIFwiSVBfVlNfV0xDXCIsXG4gICAgXCJJUF9WU19GT1wiLFxuICAgIFwiSVBfVlNfT1ZGXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX1NIXCIsXG4gICAgXCJJUF9WU19NSFwiLFxuICAgIFwiSVBfVlNfU0VEXCIsXG4gICAgXCJJUF9WU19OUVwiLFxuICAgIFwiSVBfVlNfVFdPU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VubGlua19kZXN0XCIsXG4gICAgXCJpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2hcIixcbiAgICBcImlwX3ZzX2RoX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19mb19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX25xX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19vdmZfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3JyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zZWRfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3R3b3Nfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd3JyX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZsYWdzYCBmaWVsZCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY190YCkgaW5zdGVhZCBvZiBhIGB2b2xhdGlsZSB1bnNpZ25lZCBpbnRgLiBUaGlzIGFmZmVjdHMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIChsaWtlIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhbmQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGApIGFyZSByZWFkIGFuZCB1cGRhdGVkIGFjcm9zcyB0aGUgSVBWUyBjb3JlLCBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIGFuZCBhbGwgSVBWUyBzY2hlZHVsZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSByZWFjaGFibGUgbG9naWMsIG1ha2luZyBpdCB0aHJlYWQtc2FmZSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowln298[1] Phase: Succeeded StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 16:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 16:08:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2] Phase: Succeeded StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 16:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 16:08:56 +0000 UTC FinishedAt: 2026-07-07 16:10:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowln298/series-workflowln298-convert-artifact-3803639724/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 16:10:28 +0000 UTC FinishedAt: 2026-07-07 16:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 16:10:28 +0000 UTC FinishedAt: 2026-07-07 16:52:40 +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:*c7db3d8d-5f06-445b-b81d-6591ec83b675,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-workflowln298/series-workflowln298-convert-artifact-3803639724/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": "ac934e97-e14c-426d-845e-01a48d0adbf7", "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-workflowln298/series-workflowln298-build-action-2893673946/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 16:10:28 +0000 UTC FinishedAt: 2026-07-07 16:52:09 +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:*c7db3d8d-5f06-445b-b81d-6591ec83b675,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-workflowln298/series-workflowln298-convert-artifact-3803639724/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": "ac934e97-e14c-426d-845e-01a48d0adbf7", "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-workflowln298/series-workflowln298-build-action-2893673946/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 16:52:40 +0000 UTC FinishedAt: 2026-07-07 16:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 16:52:40 +0000 UTC FinishedAt: 2026-07-07 16:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 16:52:40 +0000 UTC FinishedAt: 2026-07-07 16:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 16:52:40 +0000 UTC FinishedAt: 2026-07-07 16:53:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowln298/series-workflowln298-convert-artifact-1891878763/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 16:53:48 +0000 UTC FinishedAt: 2026-07-07 16:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 16:53:48 +0000 UTC FinishedAt: 2026-07-07 16:55:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ac934e97-e14c-426d-845e-01a48d0adbf7,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-workflowln298/series-workflowln298-build-action-2893673946/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-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 16:55:54 +0000 UTC FinishedAt: 2026-07-07 16:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 16:55:54 +0000 UTC FinishedAt: 2026-07-07 16:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 16:55:54 +0000 UTC FinishedAt: 2026-07-07 17:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 16:55:54 +0000 UTC FinishedAt: 2026-07-07 17:27:22 +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:*c7db3d8d-5f06-445b-b81d-6591ec83b675,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-workflowln298/series-workflowln298-convert-artifact-1891878763/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": "eac249b0-1b78-448f-965a-dd0cf9d58927", "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-workflowln298/series-workflowln298-build-action-3472426127/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 16:55:54 +0000 UTC FinishedAt: 2026-07-07 17:27:12 +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:*c7db3d8d-5f06-445b-b81d-6591ec83b675,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-workflowln298/series-workflowln298-convert-artifact-1891878763/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": "eac249b0-1b78-448f-965a-dd0cf9d58927", "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-workflowln298/series-workflowln298-build-action-3472426127/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 17:27:22 +0000 UTC FinishedAt: 2026-07-07 17:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 17:27:22 +0000 UTC FinishedAt: 2026-07-07 17:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 17:27:22 +0000 UTC FinishedAt: 2026-07-07 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 17:27:22 +0000 UTC FinishedAt: 2026-07-07 17:29:12 +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:*eac249b0-1b78-448f-965a-dd0cf9d58927,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-workflowln298/series-workflowln298-build-action-3472426127/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-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +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_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"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:*ac934e97-e14c-426d-845e-01a48d0adbf7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eac249b0-1b78-448f-965a-dd0cf9d58927,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-workflowln298/series-workflowln298-build-action-2893673946/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-workflowln298/series-workflowln298-build-action-3472426127/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 17:29:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 17:29:29 +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_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"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-workflowln298/series-workflowln298-convert-artifact-1997960836/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 17:29:22 +0000 UTC FinishedAt: 2026-07-07 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 17:29:32 +0000 UTC FinishedAt: 2026-07-07 20:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowln298[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_expire_nodest_conn_flush","ip_vs_dh_schedule","ip_vs_fo_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d63611cbe8af99dd61b118ee6e5b5e3e518250b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_IPV6","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"e31dad56-9b90-4f17-99f3-8d1232be23a2","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 17:29:32 +0000 UTC FinishedAt: 2026-07-07 20:32:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ac934e97-e14c-426d-845e-01a48d0adbf7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eac249b0-1b78-448f-965a-dd0cf9d58927,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-workflowln298/series-workflowln298-build-action-2893673946/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-workflowln298/series-workflowln298-build-action-3472426127/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-workflowln298/series-workflowln298-convert-artifact-1997960836/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,}