Name: series-workflowgch7v Phase: Succeeded StartedAt: 2026-08-03 02:33:54 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[0] Phase: Succeeded StartedAt: 2026-08-03 02:33:54 +0000 UTC FinishedAt: 2026-08-03 02:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 02:33:54 +0000 UTC FinishedAt: 2026-08-03 02:47:42 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NETFILTER_NETLINK_QUEUE", "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NETFILTER_NETLINK_QUEUE", "NF_TABLES" ], "series_id": "0ecbcd70-2a77-48ac-a160-b2044708e4ec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfqnl_recv_verdict", "nft_payload_set_eval" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjZjZjExZDYwYjdjODRjY2RjN2U4MGUxOGQyMmNkZWZjM2UyYzNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDI6NDY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcbmluZGV4IGI4YWFmMzljYjRkOGUuLmUxMzVlZDc2MmI1YzggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5AQCAtMjgsMTAgJiM0MzsyOCwxNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaWNtcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXB2Ni5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2dyb3VwLWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JoYXNodGFibGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2poYXNoLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2dyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2dzby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3Bfc3RhdGVzLmhcdTAwM2VcbkBAIC0xMjA2LDkgJiM0MzsxMjEzLDYxIEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXG4gXHRyZXR1cm4gbWVtY21wKGlwaF9uZXcgJiM0MzsgMSwgaXBfaGRyKGUtXHUwMDNlc2tiKSAmIzQzOyAxLCBpaGwgLSBzaXplb2YoKmlwaF9vcmlnKSkgPT0gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgZnJhZ21lbnQpXG4mIzQzO3tcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbiYjNDM7XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1xuJiM0MztcdGN0ID0gbmZfY3RfZ2V0KGUtXHUwMDNlc2tiLCBcdTAwMjZjdGluZm8pO1xuJiM0MztcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkge1xuJiM0MztcdFx0aWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bylcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdGlmIChmcmFnbWVudClcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHByb3RvKSB7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX1RDUDoge1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgdGhsZW47XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRhdGFfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRcdHRobGVuID0gX190Y3BfaGRybGVuKHRoKTtcbiYjNDM7XHRcdGlmICh0aGxlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgZGF0YV9sZW4gXHUwMDNjIHRobGVuKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0fVxuJiM0MztcdGNhc2UgSVBQUk9UT19VRFA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX0lDTVA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19JQ01QVjY6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fU0NUUDpcbiYjNDM7XHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX0dSRTpcbiYjNDM7XHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgZ3JlX2Jhc2VfaGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fQUg6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGlwX2F1dGhfaGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fRVNQOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpcF9lc3BfaGRyKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuIFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4ge1xuJiM0MztcdGJvb2wgZnJhZ21lbnQ7XG4gXHR1bnNpZ25lZCBpbnQgaWhsO1xuIFxuIFx0aWYgKGRhdGFfbGVuIFx1MDAzYyBzaXplb2YoKmlwaCkpXG5AQCAtMTIyNiwxMCAmIzQzOzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRpZiAobnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzQzO1x0ZnJhZ21lbnQgPSBpcGgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX01GIHwgSVBfT0ZGU0VUKTtcbiYjNDM7XG4gXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxuIFx0ICogcmVjb21waWxlICYjNDM7IHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cbiBcdCAqL1xuLVx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpO1xuJiM0MztcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICYjNDM7IGlobCwgZGF0YV9sZW4gLSBpaGwsIGUsXG4mIzQzO1x0XHRcdFx0IGlwaC1cdTAwM2Vwcm90b2NvbCwgZnJhZ21lbnQpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLFxuQEAgLTEyNzMsNiAmIzQzOzEzMzYsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRjb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7XG4gXHR1OCBvcmlnX25leHRoZHIgPSBpcDZfb3JpZy1cdTAwM2VuZXh0aGRyO1xuIFx0dTggbmV3X25leHRoZHIgPSBpcDZfbmV3LVx1MDAzZW5leHRoZHI7XG4mIzQzO1x0Ym9vbCBmcmFnbWVudCA9IGZhbHNlO1xuIFxuIFx0aWYgKG5ld19uZXh0aGRyICE9IG9yaWdfbmV4dGhkcilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyODYsNyAmIzQzOzEzNTAsOCBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRcdGludCBoZHJsZW47XG4gXG4gXHRcdGlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdFx0XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsXG4mIzQzO1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCYjNDM7JiM0MzsgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyOTcsNiAmIzQzOzEzNjIsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXG4gXHRcdHN3aXRjaCAob3JpZ19uZXh0aGRyKSB7XG4gXHRcdGNhc2UgTkVYVEhEUl9GUkFHTUVOVDpcbiYjNDM7XHRcdFx0ZnJhZ21lbnQgPSB0cnVlO1xuIFx0XHRcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5FWFRIRFJfQVVUSDpcbkBAIC0xMzIzLDcgJiM0MzsxMzg5LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0XHRkYXRhICYjNDM7PSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsIG5ld19uZXh0aGRyLCBmcmFnbWVudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5pbmRleCA4YTQ0NzJmZDc3ZDlmLi5lMzE1ZDM1ZjczZDRhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbkBAIC0xMDY3LDYgJiM0MzsxMDY3LDE3IEBAIHN0YXRpYyBib29sIG5mdF9wYXlsb2FkX2NzdW1fd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4mIzQzO1x0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSAmIzQzOyBzaXplb2YoX19iZTMyKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBrdC1cdTAwM2V0cHJvdCAhPSBJUFBST1RPX1RDUClcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcHJpdi1cdTAwM2VvZmZzZXQgXHUwMDNlIGRvZmYgfHwgcHJpdi1cdTAwM2VvZmZzZXQgJiM0MzsgcHJpdi1cdTAwM2VsZW4gXHUwMDNjPSBkb2ZmO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTEwNSw2ICYjNDM7MTExNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdGNhc2UgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUjpcbiBcdFx0aWYgKCEocGt0LVx1MDAzZWZsYWdzIFx1MDAyNiBORlRfUEtUSU5GT19MNFBST1RPKSB8fCBwa3QtXHUwMDNlZnJhZ29mZilcbiBcdFx0XHRnb3RvIGVycjtcbiYjNDM7XHRcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXG4mIzQzO1x0XHRcdGdvdG8gZXJyO1xuIFx0XHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mcW5sX3JlY3ZfdmVyZGljdCYjMzQ7LAogICAgJiMzNDtuZnRfcGF5bG9hZF9zZXRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNmNmMTFkNjBiN2M4NGNjZGM3ZTgwZTE4ZDIyY2RlZmMzZTJjM2NlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwMjo0NjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCmluZGV4IGI4YWFmMzljYjRkOGUuLmUxMzVlZDc2MmI1YzggMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwpAQCAtMjgsMTAgJiM0MzsyOCwxNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaWNtcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pY21wdjYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NjdHAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jZ3JvdXAtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JoYXNodGFibGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9qaGFzaC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90Y3AuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdWRwLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9ncmUuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZ3NvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NvY2suaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwX3N0YXRlcy5oJmd0OwpAQCAtMTIwNiw5ICYjNDM7MTIxMyw2MSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LAogCXJldHVybiBtZW1jbXAoaXBoX25ldyAmIzQzOyAxLCBpcF9oZHIoZS0mZ3Q7c2tiKSAmIzQzOyAxLCBpaGwgLSBzaXplb2YoKmlwaF9vcmlnKSkgPT0gMDsKIH0KIAomIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sCiYjNDM7CQkJICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplLCB1OCBwcm90bywKJiM0MzsJCQkgICAgICBib29sIGZyYWdtZW50KQomIzQzO3sKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKQomIzQzOwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwomIzQzOwljdCA9IG5mX2N0X2dldChlLSZndDtza2IsICZhbXA7Y3RpbmZvKTsKJiM0MzsJaWYgKGN0ICZhbXA7JmFtcDsgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkgewomIzQzOwkJaWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bykKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJaWYgKGZyYWdtZW50KQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXN3aXRjaCAocHJvdG8pIHsKJiM0MzsJY2FzZSBJUFBST1RPX1RDUDogewomIzQzOwkJY29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7CiYjNDM7CQl1bnNpZ25lZCBpbnQgdGhsZW47CiYjNDM7CiYjNDM7CQlpZiAoZGF0YV9sZW4gJmx0OyBzaXplb2YoKnRoKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQl0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7CiYjNDM7CQlpZiAodGhsZW4gJmx0OyBzaXplb2YoKnRoKSB8fCBkYXRhX2xlbiAmbHQ7IHRobGVuKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CWNhc2UgSVBQUk9UT19VRFA6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fSUNNUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IGljbXBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fSUNNUFY2OgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fU0NUUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fR1JFOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgZ3JlX2Jhc2VfaGRyKTsKJiM0MzsJY2FzZSBJUFBST1RPX0FIOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaXBfYXV0aF9oZHIpOwomIzQzOwljYXNlIElQUFJPVE9fRVNQOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaXBfZXNwX2hkcik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKQogewomIzQzOwlib29sIGZyYWdtZW50OwogCXVuc2lnbmVkIGludCBpaGw7CiAKIAlpZiAoZGF0YV9sZW4gJmx0OyBzaXplb2YoKmlwaCkpCkBAIC0xMjI2LDEwICYjNDM7MTI4NSwxNCBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDQoY29uc3Qgc3RydWN0IGlwaGRyICppcGgsIHVuc2lnbmVkIGludCBkYXRhX2xlbiwKIAlpZiAobnRvaHMoaXBoLSZndDt0b3RfbGVuKSAhPSBkYXRhX2xlbikKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWZyYWdtZW50ID0gaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9NRiB8IElQX09GRlNFVCk7CiYjNDM7CiAJLyogc3VwcG9ydCBmb3IgaXBvcHRzIG1hbmdsaW5nIHdvdWxkIHJlcXVpcmUKIAkgKiByZWNvbXBpbGUgJiM0Mzsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLgogCSAqLwotCXJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKTsKJiM0MzsJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIG5mcW5sX3ZhbGlkYXRlX2w0KChjb25zdCB1OCAqKWlwaCAmIzQzOyBpaGwsIGRhdGFfbGVuIC0gaWhsLCBlLAomIzQzOwkJCQkgaXBoLSZndDtwcm90b2NvbCwgZnJhZ21lbnQpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLApAQCAtMTI3Myw2ICYjNDM7MTMzNiw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldywKIAljb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7CiAJdTggb3JpZ19uZXh0aGRyID0gaXA2X29yaWctJmd0O25leHRoZHI7CiAJdTggbmV3X25leHRoZHIgPSBpcDZfbmV3LSZndDtuZXh0aGRyOwomIzQzOwlib29sIGZyYWdtZW50ID0gZmFsc2U7CiAKIAlpZiAobmV3X25leHRoZHIgIT0gb3JpZ19uZXh0aGRyKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMjg2LDcgJiM0MzsxMzUwLDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCQlpbnQgaGRybGVuOwogCiAJCWlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKQotCQkJcmV0dXJuIHRydWU7CiYjNDM7CQkJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLAomIzQzOwkJCQkJCSBuZXdfbmV4dGhkciwgZnJhZ21lbnQpOwogCiAJCWlmICh1bmxpa2VseShleHRoZHJfY250JiM0MzsmIzQzOyAmZ3Q7PSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0xMjk3LDYgJiM0MzsxMzYyLDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCiAJCXN3aXRjaCAob3JpZ19uZXh0aGRyKSB7CiAJCWNhc2UgTkVYVEhEUl9GUkFHTUVOVDoKJiM0MzsJCQlmcmFnbWVudCA9IHRydWU7CiAJCQloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGZyYWdfaGRyKTsKIAkJCWJyZWFrOwogCQljYXNlIE5FWFRIRFJfQVVUSDoKQEAgLTEzMjMsNyAmIzQzOzEzODksNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsCiAJCWRhdGEgJiM0Mzs9IGhkcmxlbjsKIAl9CiAKLQlyZXR1cm4gdHJ1ZTsKJiM0MzsJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jCmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMKQEAgLTEwNjcsNiAmIzQzOzEwNjcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsCiYjNDM7CQkJICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICYjNDM7IHNpemVvZihfX2JlMzIpOwomIzQzOwomIzQzOwlpZiAocGt0LSZndDt0cHJvdCAhPSBJUFBST1RPX1RDUCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b2Zmc2V0ICZndDsgZG9mZiB8fCBwcml2LSZndDtvZmZzZXQgJiM0MzsgcHJpdi0mZ3Q7bGVuICZsdDs9IGRvZmY7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCQkJCSBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTEwNSw2ICYjNDM7MTExNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwciwKIAljYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6CiAJCWlmICghKHBrdC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LSZndDtmcmFnb2ZmKQogCQkJZ290byBlcnI7CiYjNDM7CQlpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKQomIzQzOwkJCWdvdG8gZXJyOwogCQlvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTsKIAkJYnJlYWs7CiAJY2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCYjMzk7cyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNgLCB3aGljaCB0ZWxscyBtZSBpdOKAmXMgbWVzc2luZyB3aXRoIHRoZSBjb3JlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIHNvbWUgYWRkZWQgdmFsaWRhdGlvbiBnb2luZyBvbi4gSW4gYG5mbmV0bGlua19xdWV1ZS5jYCwgdGhlcmUmIzM5O3MgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyBmb3IgTGF5ZXIgNCBoZWFkZXIgdmFsaWRhdGlvbi4gQW5kIHRoZW4gaW4gYG5mdF9wYXlsb2FkLmNgLCBgbmZ0X3RoX3dyaXRlX29rYCBzb3VuZHMgbGlrZSBhIGNoZWNrIHRvIHNlZSBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYXJlIGFsbG93ZWQuIEZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIG5ldGZpbHRlciBjaGFuZ2VzLCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLgoKTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGFuZCBmb2N1cyBvbiB0aGUgY29uZmlnIG9wdGlvbnMgYW5kIHN5bWJvbHMgaW52b2x2ZWQuIEZpcnN0LCBJ4oCZbGwgbG9vayBhdCBgbmZuZXRsaW5rX3F1ZXVlLmNgLiBJIHNlZSBgbmZxbmxfdmFsaWRhdGVfbDRgIGlzIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfaXA0YCBhbmQgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIHdoaWNoIGlzIGl0c2VsZiBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNmAuIEhtbSwgYW5kIHRoZXNlIHVsdGltYXRlbHkgYXJlIHRyaWdnZXJlZCBieSBgbmZxbmxfcmVjdl92ZXJkaWN0YCAtJmd0OyBgbmZxbmxfbWFuZ2xlYCAtJmd0OyBgbmZxbmxfdmFsaWRhdGVfaXA0YCAvIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIYW5nIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2sgYG5mbmV0bGlua19xdWV1ZS5jYCBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBleGFjdGx5IHdoZXJlIGBuZnFubF92YWxpZGF0ZV9pcDRgIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YCBhcmUgY2FsbGVkLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwYXRoIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSB2YWxpZGF0aW9ucywgYW5kIEkmIzM5O20gbm90IGdvaW5nIHRvIG1pc3MgYSBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX3ZhbGlkYXRlX2lwNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMjE2PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY2LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMjY3OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY4LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDExPXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTUtXHRjYXNlIE5GUFJPVE9fSVBWNDpcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNjpcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwNChkYXRhLCBkYXRhX2xlbiwgZSk7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTctXHRjYXNlIE5GUFJPVE9fSVBWNjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgKioKCk9rYXksIHNvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY3VycmVudGx5IG9uIHRoZSBzdGFjay4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkICpmcm9tKi4gVGhhdCBpcywgSSB3YW50IHRvIHRyYWNlIGJhY2sgdXAgdGhlIGNhbGwgY2hhaW4gdG8gc2VlIHdoYXQgZnVuY3Rpb24mIzM5O3MgdHJpZ2dlcmluZyBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgY2FsbDsgd2hlcmUgZG9lcyB0aGlzIHZhbGlkYXRpb24gZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnFubF92YWxpZGF0ZV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk1PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDEwLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDExOnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQxMi1cdFx0XHRcdCBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDI5PW5mcW5sX21hbmdsZSh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sIHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgaW50IGRpZmYpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDM1LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDM2Olx0aWYgKCFuZnFubF92YWxpZGF0ZV93cml0ZShkYXRhLCBkYXRhX2xlbiwgZSkpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MzctXHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgYG5mcW5sX21hbmdsZWAgQ2FsbGVycyoqCgpPa2F5LCBzbyBgbmZxbmxfbWFuZ2xlYCBpcyB0aGUgZnVuY3Rpb24gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGguIFRoYXQmIzM5O3Mgb3VyIGZvY2FsIHBvaW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBpcyB0byBpbW1lZGlhdGVseSBpZGVudGlmeSBpdHMgY2FsbGVycy4gV2hvJiMzOTtzIGluaXRpYXRpbmcgdGhpcyBmdW5jdGlvbj8gV2hhdCBjb250ZXh0cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIGBuZnFubF9tYW5nbGVgLiBGcm9tIHRoZXJlIEkgd2lsbCBsaWtlbHkgYmUgYWJsZSB0byBtb3ZlIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyZ3VtZW50cywgYW5kIHB1cnBvc2UsIG9mIHRoZSBjYWxsLiBJIHdpbGwgdGhlbiBwcm9iYWJseSBiZSBhYmxlIHRvIHN0YXJ0IHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX21hbmdsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDI4PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyOTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDMwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3ODU9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE4MzQtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MzU6XHRcdGlmIChuZnFubF9tYW5nbGUobmxhX2RhdGEobmZxYVtORlFBX1BBWUxPQURdKSxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgzNi1cdFx0XHRcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHBpZWNlZCB0b2dldGhlciBhcyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggaXQ6CgoqKkRlY29kaW5nIHRoZSBORlFVRVVFIFZlcmRpY3QgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIHBhdGggb2YgaG93IGEgdmVyZGljdCBnZXRzIGFwcGxpZWQgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZS4gIFRoZSBjcnVjaWFsIHBhcnQgc3RhcnRzIHdpdGggYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCwgaXMgdGhlIGhhbmRsZXIgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgbmV0bGluayBtZXNzYWdlcyBvZiB0aGUgdHlwZSBgTkZRTkxfTVNHX1ZFUkRJQ1RgLiAgQW5kLCBpZiBJJiMzOTttIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhpcyBpcyBhIHBhdGggdGhhdCBjb21lcyBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBTbywgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gc2VuZHMgYSBtZXNzYWdlIHdpdGggYSB2ZXJkaWN0LCBhbmQgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSByZWNlaXZlcyBhbmQgaW50ZXJwcmV0cyBpdC4KCk5vdywgaW5zaWRlIHRoaXMgYG5mcW5sX3JlY3ZfdmVyZGljdGAgZnVuY3Rpb24gSSBjYW4gc2VlIHRoYXQgaXQgdGhlbiBjYWxscyBgbmZxbmxfbWFuZ2xlYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIGBuZnFubF9tYW5nbGVgLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3R1YWwgcGFja2V0IG1hbmdsaW5nIGhhcHBlbnMsIHJpZ2h0PwoKVGhpbmtpbmcgbW9yZSBicm9hZGx5IGFib3V0IHRoaXMsIEkgc2VlIHRoYXQgSSYjMzk7bSBlbmRpbmcgdXAgaW4gYG5mdF9wYXlsb2FkLmNgLCBhbmQgSSYjMzk7bSByZW1pbmRlZCB0aGF0IGl0IGlzIHdoZXJlIGBuZnRfdGhfd3JpdGVfb2tgIGlzIGNhbGxlZCBieSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcGF5bG9hZF9zZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM9MTA3MD1zdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwODAtXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM6MTA4MTpzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA4Mi1cdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEyNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3BheWxvYWRfc2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3Ni1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9wYXlsb2FkX3NldCkpLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEyNzc6XHQuZXZhbFx0XHQ9IG5mdF9wYXlsb2FkX3NldF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEyNzgtXHQuaW5pdFx0XHQ9IG5mdF9wYXlsb2FkX3NldF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDk0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBuZnRhYmxlcyBFeHByZXNzaW9uIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IGBuZnRhYmxlc2AgaGFuZGxlcyB0aGUgYG5mdF9wYXlsb2FkX3NldGAgZXhwcmVzc2lvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgZnVuY3Rpb24sIHdoaWNoIEkgdW5kZXJzdGFuZCBpcyB0aGUgY29yZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIGV4cHJlc3Npb24uIFRoZXJlZm9yZSwgdGhhdCBmdW5jdGlvbiwgYW5kIGFsc28gdGhlIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGZ1bmN0aW9uIGFyZSB0aGUgZm9jdXMgaGVyZS4KCkluaXRpYWxseSwgYG5mcW5sX3JlY3ZfdmVyZGljdGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIGl0JiMzOTtzIGEgbmV0bGluayBoYW5kbGVyLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHNpZ24gaW4gdGhpcyBjb250ZXh0LiBIb3dldmVyLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIGEgZmxhZyBnaXZlbiB0aGUgcHJvbXB0JiMzOTtzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMgZW50cnlwb2ludHMgdG8gdGhlIEFQSS4gVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBmdW5jdGlvbnMuIFN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgZG9uJiMzOTt0IGdldCBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXQsICp3YWl0KiwgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCwgd2hpbGUgc3RhdGljLCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZnRfZXhwcl9vcHMuZXZhbGAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCwgZGVzcGl0ZSBiZWluZyBzdGF0aWMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYW4gb3BzIGNhbGxiYWNrIGNoYW5nZXMgZXZlcnl0aGluZyEgSXQmIzM5O3MgYSBrZXkgZW50cnlwb2ludCwgZXZlbiBpZiBpdCBoYXMgdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24uCgpTbyBub3cgSSYjMzk7bSBiYWNrIHRvIHNxdWFyZSBvbmUuIElzIHRoZXJlIGEgbm9uLXN0YXRpYywgZXF1aXZhbGVudCBmdW5jdGlvbj8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgaW5kZWVkIHN0YXRpYy4gT2theSwgeWVzLCBpdCAqaXMqIHN0YXRpYy4gQnV0IGl0IGlzIGFuIG9wcyBjYWxsYmFjay4gQW5kLCBqdXN0IHRvIGNvbmZpcm0sIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIGFsc28gc3RhdGljLiBSaWdodCwgdGhhdCBtYWtlcyB0aGluZ3MgZXZlbiBtb3JlIGludGVyZXN0aW5nLCBiZWNhdXNlIHRoZSBwcm9tcHQgc3VnZ2VzdHMgdGhhdCB0aGUgc3RhdGljIG5hdHVyZSBpcyBub3Qgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX3JlY3ZfdmVyZGljdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNjY5PXN0YXRpYyBpbnQgbmZxX2lkX2FmdGVyKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IG1heClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NzMtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE2NzQ6c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY3NS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTc1MD1zdGF0aWMgaW50IG5mcWFfcGFyc2VfYnJpZGdlKHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzg0LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNzg1OnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE3ODYtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IG5mcWFbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE5OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mcW5sX2NiW05GUU5MX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cdFtORlFOTF9NU0dfVkVSRElDVF1cdD0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk4Olx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5OS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTIwMDktXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoyMDEwOlx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAxMS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ2FsbGJhY2sgU3ltYm9scyBpbiB0aGUgS2VybmVsJiMzOTtzIE5ldGZpbHRlciBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlc2Ugc3RhdGljIHN5bWJvbHMgdXNlZCBhcyBjYWxsYmFja3Mgd2l0aGluIHRoZSBvcGVyYXRpb24gc3RydWN0dXJlcywgcmlnaHQ/IFRoZXkmIzM5O3JlIHN0YXRpYywgc28gdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcGVyZmVjdCBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBsb2dpYyB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbi4gTm8gaXNzdWVzIHRoZXJlIGZyb20gYSBzeW1ib2wgcGVyc3BlY3RpdmUuIE1ha2VzIHNlbnNlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb25maWcgb3B0aW9ucyB0aWVkIHRvIHRoZXNlLiBPa2F5LCBzbyBmb3IgYG5mbmV0bGlua19xdWV1ZS5jYCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBHb3QgaXQuIEFuZCBmb3IgYG5mdF9wYXlsb2FkLmNgLCBpdCYjMzk7cyB0aGUgYENPTkZJR19ORlRfUEFZTE9BRGAgb3B0aW9uIHdlIG5lZWQgdG8gY29uZmlybS4gRWFzeSBlbm91Z2guCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgZ28gYmFjayBpbnRvIEtjb25maWcgYW5kIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBmb3IgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYC4gR290dGEgZG90IGFsbCB0aGUgJiMzNDtpJiMzNDtzIGFuZCBjcm9zcyBhbGwgdGhlICYjMzQ7dCYjMzQ7cyB3aGVuIGRlYWxpbmcgd2l0aCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00Nj1jb25maWcgTkVURklMVEVSX05FVExJTktfQUNDVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NDpjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBoZXJlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIGl0cyByZWxhdGlvbnNoaXBzIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSBrbm93IHRoaXMgaXMgYSBjb3JlIHBpZWNlIG9mIHRoZSBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLCBzbyB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGlzIHBhcmFtb3VudC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciBhbGwgdGhlIGRpZmZlcmVudCBxdWV1aW5nIG9wdGlvbnMgYXZhaWxhYmxlLCBhbmQgdGhpcyBwYXJ0aWN1bGFyIG5ldGxpbmstYmFzZWQgYXBwcm9hY2ggd2lsbCBkZWZpbml0ZWx5IGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBjb21wb25lbnRzIGl0IG5lZWRzIHRvIGludGVncmF0ZSB3aXRoLCBvciBjb252ZXJzZWx5LCBkb2VzIGl0IHN1cGVyc2VkZSBvbGRlciBtZXRob2RzPyBUaGUgcG90ZW50aWFsIGZvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBpcyBhbHdheXMgYSBmYWN0b3IuIFRoZW4sIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZWdyYXRpb24sIGxpa2UgdXNlciBzcGFjZSB0b29scywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgYW5kIHRoZSB2YXJpb3VzIGhvb2tzIG5ldGZpbHRlciBvZmZlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBkZXByZWNhdGlvbiBvciBwbGFubmVkIGZ1dHVyZSBjaGFuZ2VzLCB3aGljaCBtaWdodCBuZWNlc3NpdGF0ZSBhbHRlcmluZyBjdXJyZW50IGNvbmZpZ3VyYXRpb25zLiBGaW5hbGx5LCBJ4oCZbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBkZXBlbmRlbmNpZXMgYWdhaW5zdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlY2VudCBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gYmUgc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgaW50cmljYWNpZXMuIFRoaXMgdGhvcm91Z2ggcmV2aWV3IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIGNvbmZpZ3VyYXRpb25zIGludm9sdmluZyB0aGlzIGtlcm5lbCBmZWF0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ2PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdyoqCgpSaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSBuZWVkIHRvIHBhdXNlIGFuZCB0YWtlIGEgc3RlcCBiYWNrLiBJIGhhdmUgdG8gcmVtaW5kIG15c2VsZiB0aGF0LCB3aXRoIGNvbXBsZXggZW1iZWRkZWQgc3lzdGVtcyBhbmQga2VybmVsIGNvbmZpZ3VyYXRpb24sIEkgc2hvdWxkbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSAqdGhvcm91Z2hseSogcmVhZCB0aGUgYEtjb25maWdgIGZpbGUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIGNydWNpYWwgcGllY2UuIEl0IGRpY3RhdGVzIGFsbCB0aGUgZmVhdHVyZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCB3aXRob3V0IHRoYXQgZGV0YWlsZWQgdW5kZXJzdGFuZGluZywgYW55IGFzc3VtcHRpb25zIEkgbWFrZSBhcmUgcHJvYmFibHkgZ29pbmcgdG8gYmUgd3JvbmcuIEkga25vdyBJJiMzOTttIGFscmVhZHkgZGVlcCBpbiB0aGUgd2VlZHMgd2l0aCB0aGlzIHByb2JsZW0sIGJ1dCBJIGhhdmUgdG8gdHJ1c3QgdGhlIHByb2Nlc3MuIFJlYWRpbmcgdGhlIGBLY29uZmlnYCBub3cgd2lsbCBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIGVmZm9ydCBpbiB0aGUgbG9uZyBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDUyOlx0XHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gIDU3Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2MDpcdFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxuICA2MTpcdFxuICA2MjpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbiAgNjM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDY0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgNjU6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuICA2NjpcdFx0aGVscFxuICA2NzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDY4Olx0XHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgbWFwIG9mIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoZSBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIGZlYXR1cmUsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBnb3QgaXRzIGhvb2tzIGluIHRoZSBhZHZhbmNlZCBuZXRmaWx0ZXIgY2FwYWJpbGl0aWVzLiBJdCYjMzk7cyBhbG1vc3QgYSBnaXZlbiwgYnV0IEkgd2FudCB0byBleHBsaWNpdGx5IGNvbmZpcm0gdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZS4gQmVzdCBwcmFjdGljZSB0byBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIGRlcGVuZGVuY2llczsgeW91IGRvbiYjMzk7dCB3YW50IHRvIGJlIGRlYnVnZ2luZyBhIG1pc2NvbmZpZ3VyYXRpb24gbGF0ZXIuIE5vdyB0aGF0IEkgaGF2ZSB2ZXJpZmllZCB0aGF0LCBJIHdhbnQgdG8gZXhwbG9yZSBgTkZUX1BBWUxPQURgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GVF9QQVlMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgbGlrZWx5IG5lc3RsZWQgd2l0aGluIG9uZSBvZiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSBlaXRoZXIgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2Agb3IsIHBlcmhhcHMgbW9yZSBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJUHY0LCBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBMZXQmIzM5O3MgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB3aGVyZSB0aGUgcmVsYXRlZCBjb2RlIGlzIGRlZmluZWQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBgTWFrZWZpbGVgIGFzc29jaWF0ZWQgd2l0aCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgYXMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGVkdWNlIHRoZSByZWxldmFudCBtb2R1bGUgYW5kIGNvbmZpZ3VyYXRpb24gaGllcmFyY2h5LiBIb3BlZnVsbHkgdGhhdCBnaXZlcyBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcGF5bG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4OTpcdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MC1cdFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjYxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3BheWxvYWQub2Agb2JqZWN0IGZpbGUsIGFuZCBpdCYjMzk7cyBjbGVhcmx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AgYnVpbGQgdGFyZ2V0LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCAmIzM0O09rYXksIHdoYXQmIzM5O3MgZHJpdmluZyB0aGUgaW5jbHVzaW9uIG9mIGBuZl90YWJsZXNgIGluIHRoZSBmaXJzdCBwbGFjZT8mIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBrZXJuZWwgdGhhdCBlbmFibGUgdGhpcyBjb21wb25lbnQuIEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiB0byBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIGBuZl90YWJsZXNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXMtb2JqcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcdCYjNDM7PSBuZl9kdXBfbmV0ZGV2Lm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg2LSMgbmZfdGFibGVzXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cdFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X2N0X2Zhc3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGUgY2x1ZSBpcyByaWdodCB0aGVyZTogYG9iai0kKENPTkZJR19ORl9UQUJMRVMpICYjNDM7PSBuZl90YWJsZXMub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29tcGlsYXRpb24gb2YgdGhlIGBuZl90YWJsZXMub2Agb2JqZWN0IGZpbGUgaXMgY29uZGl0aW9uYWwsIGRlcGVuZGVudCBvbiB0aGUgYENPTkZJR19ORl9UQUJMRVNgIEtjb25maWcgb3B0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCBzb3VuZHMgbGlrZSBgQ09ORklHX05GX1RBQkxFU2AgbWF5IGJlIHRpZWQgaW50byBhIGJ1aWxkIG9wdGlvbiwgc28gaWYgaXQmIzM5O3Mgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIG9iamVjdCBmaWxlIHdpbGwgYmUgaW5jbHVkZWQsIGFuZCBvdGhlcndpc2UsIGl0IHdvbiYjMzk7dCBiZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBtb2R1bGFyaXppbmcga2VybmVsIGNvbXBvbmVudHMuIEtub3dpbmcgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIGRlYnVnZ2luZyBidWlsZCBpc3N1ZXMsIHVuZGVyc3RhbmRpbmcgbW9kdWxlIGRlcGVuZGVuY2llcywgb3Igb3B0aW1pemluZyBrZXJuZWwgc2l6ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlcy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg0PW9iai0kKENPTkZJR19ORl9EVVBfTkVUREVWKVx0JiM0Mzs9IG5mX2R1cF9uZXRkZXYub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODc6bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVx0XHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVx0XHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlx0XHQgIG5mdF9jaGFpbl9yb3V0ZS5vIG5mX3RhYmxlc19vZmZsb2FkLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTMtXHRcdCAgbmZ0X3NldF9oYXNoLm8gbmZ0X3NldF9iaXRtYXAubyBuZnRfc2V0X3JidHJlZS5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X2N0X2Zhc3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA2PWVuZGlmXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNy1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19ORl9UQUJMRVMpXHRcdCYjNDM7PSBuZl90YWJsZXMub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDktb2JqLSQoQ09ORklHX05GVF9DT01QQVQpXHQmIzQzOz0gbmZ0X2NvbXBhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODM1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5GX1RBQkxFUyBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyB3aG9sZSB0aGluZyBpcyBgQ09ORklHX05GX1RBQkxFU2AuIFRoYXQmIzM5O3MgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIG5pdHR5LWdyaXR0eSwgbXkgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgc2NvcGUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIGBORl9UQUJMRVNgIGlzIHJhcmVseSBhbiBpc2xhbmQsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24uIFdoYXQgb3RoZXIgY29uZmlncywgc3ViLW9wdGlvbnMgb3Iga2NvbmZpZyBkZWZpbml0aW9ucyBhcmUgdHJpZ2dlcmVkIGJ5IGl0cyBpbmNsdXNpb24uIElzIGl0IGRlcGVuZGVudCBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZmVhdHVyZXMsIHN1Y2ggYXMgbmV0ZmlsdGVyLCBpcHNldHMgb3IgY29ubnRyYWNrLiBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlLgoKSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgZW5hYmxlZCBjb3JyZWN0bHksIGFuZCBob3cgYE5GX1RBQkxFU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldGZpbHRlciBmcmFtZXdvcmsuIEFuZCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGN1c3RvbSBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcGFydGljdWxhcmx5IGFyb3VuZCBsaW5lIDQ1NS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgc29tZSBrZXkgZGVjaXNpb25zIGFyZSBtYWRlIGluIHRlcm1zIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcywgYW5kIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBtaWdodCBiZSByZWxldmFudCB0byB0aGUgaXNzdWUgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIHRoaXMgc2VjdGlvbiwgZm9jdXNpbmcgb24gdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NTA6XHRjb25maWcgTkVURklMVEVSX1NZTlBST1hZXG4gNDUxOlx0XHR0cmlzdGF0ZVxuIDQ1MjpcdFxuIDQ1MzpcdGVuZGlmICMgTkZfQ09OTlRSQUNLXG4gNDU0Olx0XG4gNDU1Olx0Y29uZmlnIE5GX1RBQkxFU1xuIDQ1NjpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gNDU3Olx0XHRzZWxlY3QgTkVUX0NSQzMyQ1xuIDQ1ODpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4gNDU5Olx0XHRoZWxwXG4gNDYwOlx0XHQgIG5mdGFibGVzIGlzIHRoZSBuZXcgcGFja2V0IGNsYXNzaWZpY2F0aW9uIGZyYW1ld29yayB0aGF0IGludGVuZHMgdG9cbiA0NjE6XHRcdCAgcmVwbGFjZSB0aGUgZXhpc3Rpbmcge2lwLGlwNixhcnAsZWJ9X3RhYmxlcyBpbmZyYXN0cnVjdHVyZS4gSXRcbiA0NjI6XHRcdCAgcHJvdmlkZXMgYSBwc2V1ZG8tc3RhdGUgbWFjaGluZSB3aXRoIGFuIGV4dGVuc2libGUgaW5zdHJ1Y3Rpb24tc2V0XG4gNDYzOlx0XHQgIChhbHNvIGtub3duIGFzIGV4cHJlc3Npb25zKSB0aGF0IHRoZSB1c2Vyc3BhY2UgJiMzOTtuZnQmIzM5OyB1dGlsaXR5XG4gNDY0Olx0XHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxuIDQ2NTpcdFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XG4gNDY2Olx0XHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXG4gNDY3Olx0XHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxuIDQ2ODpcdFxuIDQ2OTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBTbywgZnJvbSB3aGF0IEkmIzM5O20gZ2F0aGVyaW5nLCBgTkZfVEFCTEVTYCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgdXN1YWwgbmV0ZmlsdGVyIGNvcmUgY29tcG9uZW50cy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGtlZXBzIHRoaW5ncyBzdHJlYW1saW5lZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLCBzb21ldGhpbmcmIzM5O3MgcGluZ2luZyBpbiB0aGUgYmFjayBvZiBteSBtaW5kLiBBaCwgcmlnaHQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgcmVseWluZyBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYD8gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQuIFllcywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGF0IGJyYW5jaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwOTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQga2VybmVsIGRldmVsb3BtZW50LCBsaWtlbHkgd29ya2luZyB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKCioqS2NvbmZpZyBDaGVja3BvaW50KioKCkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSYjMzk7bSBkcmF3aW5nIGEgYmxhbmsgb24gdGhlIGV4YWN0IGZpbGUgSSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IHBhcnRpY3VsYXIgb3B0aW9uLiBJdCYjMzk7cyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRoaW5nLCBzbyB0aGUgZmlyc3QgcGxhY2UgdGhhdCBzcHJpbmdzIHRvIG1pbmQsIGFsbW9zdCByZWZsZXhpdmVseSwgaXMgYG5ldC9LY29uZmlnYC4gSXQmIzM5O3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGF0IGZpbGUgYXMgbXkgZmlyc3Qgc3RvcC4gSXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNvbmZpcm0gb3IgcnVsZSBpdCBvdXQgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcbm5ldC9LY29uZmlnLTIxOS1cbm5ldC9LY29uZmlnOjIyMDpjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0FkdmFuY2VkIG5ldGZpbHRlciBjb25maWd1cmF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzQ0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkNoZWNraW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZmxhZ2dlZCBhcyBhIGJvb2xlYW4uIE5vdywgZ2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgc2V0dGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLiBUaGV5IG1pZ2h0IGJlIGluZGVwZW5kZW50LCBvciBvbmUgY291bGQgaW5mbHVlbmNlIHRoZSBvdGhlci4gVGltZSB0byBjb25maXJtIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA1MjpcdFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDU2Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuICA1NzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gIDU4Olx0XHRoZWxwXG4gIDU5Olx0XHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcbiAgNjA6XHRcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjE6XHRcbiAgNjI6XHRjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXG4gIDYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuICA2NDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gIDY1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNjY6XHRcdGhlbHBcbiAgNjc6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2ODpcdFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXG4gIDY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzkwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIGNvbnNpZGVyYXRpb25zOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSYjMzk7bSB0aGlua2luZyB3ZSBkZWZpbml0ZWx5IG5lZWQgYE5FVEZJTFRFUl9BRFZBTkNFRGAgYW5kIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAuIFRob3NlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBhZHZhbmNlZCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eSwgcGFydGljdWxhcmx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV0bGluay1iYXNlZCBxdWV1aW5nLCB3aGljaCBzZWVtcyBsaWtlbHkgZ2l2ZW4gdGhlIGNvbnRleHQuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSBhbHNvIG5lZWQgYE5GX1RBQkxFU2AsIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbmZ0YWJsZXMgZnJhbWV3b3JrLCBhbmQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYG5mdF9wYXlsb2FkLmNgLgoKSG9sZCBvbi4uLiBzb21ldGhpbmcmIzM5O3MgbmFnZ2luZyBhdCBtZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBhYm91dCBgTkZfVEFCTEVTYCBhbmQgYG5mdF9wYXlsb2FkLmNgLiBSaWdodCwgb2YgY291cnNlLCB0aGUgY29tcGlsYXRpb24gb2YgYG5mdF9wYXlsb2FkLmNgIGlzIGNvbmRpdGlvbmFsOyBpdCYjMzk7cyAqb25seSogY29tcGlsZWQgd2hlbiBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCYjMzk7cyBhIGRlcGVuZGVuY3kuIFNvLCB5ZWFoLCBgTkZfVEFCTEVTYCBpcyBkZWZpbml0ZWx5IGVzc2VudGlhbCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxuIDQ1MTpcdFx0dHJpc3RhdGVcbiA0NTI6XHRcbiA0NTM6XHRlbmRpZiAjIE5GX0NPTk5UUkFDS1xuIDQ1NDpcdFxuIDQ1NTpcdGNvbmZpZyBORl9UQUJMRVNcbiA0NTY6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuIDQ1NzpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiA0NTg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuIDQ1OTpcdFx0aGVscFxuIDQ2MDpcdFx0ICBuZnRhYmxlcyBpcyB0aGUgbmV3IHBhY2tldCBjbGFzc2lmaWNhdGlvbiBmcmFtZXdvcmsgdGhhdCBpbnRlbmRzIHRvXG4gNDYxOlx0XHQgIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHtpcCxpcDYsYXJwLGVifV90YWJsZXMgaW5mcmFzdHJ1Y3R1cmUuIEl0XG4gNDYyOlx0XHQgIHByb3ZpZGVzIGEgcHNldWRvLXN0YXRlIG1hY2hpbmUgd2l0aCBhbiBleHRlbnNpYmxlIGluc3RydWN0aW9uLXNldFxuIDQ2MzpcdFx0ICAoYWxzbyBrbm93biBhcyBleHByZXNzaW9ucykgdGhhdCB0aGUgdXNlcnNwYWNlICYjMzk7bmZ0JiMzOTsgdXRpbGl0eVxuIDQ2NDpcdFx0ICAoaHR0cHM6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9uZnRhYmxlcykgdXNlcyB0byBidWlsZCB0aGVcbiA0NjU6XHRcdCAgcnVsZS1zZXQuIEl0IGFsc28gY29tZXMgd2l0aCB0aGUgZ2VuZXJpYyBzZXQgaW5mcmFzdHJ1Y3R1cmUgdGhhdFxuIDQ2NjpcdFx0ICBhbGxvd3MgeW91IHRvIGNvbnN0cnVjdCBtYXBwaW5ncyBiZXR3ZWVuIG1hdGNoaW5ncyBhbmQgYWN0aW9uc1xuIDQ2NzpcdFx0ICBmb3IgcGVyZm9ybWFuY2UgbG9va3Vwcy5cbiA0Njg6XHRcbiA0Njk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NDEKCQkJCQkJCW91dHB1dDogMTE1CgkJCQkJCQl0aG91Z2h0czogNjUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQcmlvcml0aXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgdGhyb3VnaCB0aGlzIHBhdGNoLCBhbmQgaXQgc2VlbXMgbGlrZSBgTkZfVEFCTEVTYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBzZWUgdGhhdCBgTkVURklMVEVSYCBpcyByZXF1aXJlZCwgd2hpY2ggaXMgc3RhbmRhcmQuIEFsc28sIHRoZSBwYXRjaCBtZW50aW9ucyBgTkVURklMVEVSX0FEVkFOQ0VEYCBhcyBhIGRlcGVuZGVuY3ksIHNvIHdlJiMzOTtsbCBuZWVkIHRoYXQgZW5hYmxlZCBhcyB3ZWxsLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGNvZGUgbW9kaWZpZXMgYG5mbmV0bGlua19xdWV1ZS5jYCBhbmQgYG5mdF9wYXlsb2FkLmNgLiBJbiBgbmZuZXRsaW5rX3F1ZXVlLmNgLCB0aGUgbmV3IGZ1bmN0aW9uIGBuZnFubF92YWxpZGF0ZV9sNGAgaXMgaW50cm9kdWNlZCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfaXA0YCBhbmQgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAuIFRoZXNlIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAuICBUaGF0IHVsdGltYXRlbHkgbGVhZHMgdG8gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFNvLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhcHBlYXJzIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIHBhcnQgb2YgdGhlIHBhdGNoLgoKT24gdGhlIGBuZnRfcGF5bG9hZC5jYCBzaWRlLCBhIGZ1bmN0aW9uIGNhbGxlZCBgbmZ0X3RoX3dyaXRlX29rYCBpcyBhZGRlZCwgYW5kIHRoaXMgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBoZXJlLgoKQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgcmVwcmVzZW50IGZ1bmN0aW9uYWwgY2hhbmdlcywgd2hpY2ggc3VnZ2VzdHMgdGhleSYjMzk7cmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZXkgYXJlIG5vdCBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIHNlZS4uLiBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWNsYXJlZCBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBwYXJ0IG9mIGFuIG9wZXJhdGlvbiBjYWxsYmFjay4gSXQmIzM5O3MgcGFzc2VkIHRvIHRoZSBgbmZxbmxfY2JgIGFycmF5LCBzbyBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLgoKVGhlIHNhbWUgYXBwbGllcyB0byBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJdCBpcyBwYXJ0IG9mIGBuZnRfZXhwcl9vcHNgIHN0cnVjdHVyZS4gU28gaXQmIzM5O3MgKm5vdCogaW5saW5lZCBlaXRoZXIuCgpBbHJpZ2h0LCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEkmIzM5O2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEZvciB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgZW5hYmxlIGBORVRGSUxURVJfQURWQU5DRURgLCBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIChzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgcXVldWUgZnVuY3Rpb25hbGl0eSksIGFuZCBgTkZfVEFCTEVTYCAodGhlIHByaW1hcnkgZW5hYmxpbmcgb3B0aW9uKS4gIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gcmVsYXRlZCB0byBMNCBoZWFkZXJzIHdpdGhpbiBgbmZuZXRsaW5rX3F1ZXVlYCBhbmQgdmFsaWRhdGVzIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIHdpdGhpbiBgbmZ0X3BheWxvYWRgLiBCb3RoIGZ1bmN0aW9uYWxpdGllcyBhcmUgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHRoZSBuZnRhYmxlcyBpbmZyYXN0cnVjdHVyZSwgbWFraW5nIHRoZW0gY3JpdGljYWwgdGFyZ2V0cyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0JiMzNDssCiAgICAmIzM0O25mdF9wYXlsb2FkX3NldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBuZm5ldGxpbmtfcXVldWUgYW5kIGNoZWNrcyBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiBpcyB2YWxpZCBpbiBuZnRfcGF5bG9hZC4gQm90aCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIGFuZCBuZnRhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA2Ljc1MzQyNTA5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDUxMjgwNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA2Ljc1MzQzMTI3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyODg2Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjZjZjExZDYwYjdjODRjY2RjN2U4MGUxOGQyMmNkZWZjM2UyYzNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjQ2OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXFxuaW5kZXggYjhhYWYzOWNiNGQ4ZS4uZTEzNWVkNzYyYjVjOCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbkBAIC0yOCwxMCArMjgsMTcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pY21wLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pY21wdjYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY3RwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZ3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvZ3NvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2VcXG5AQCAtMTIwNiw5ICsxMjEzLDYxIEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXFxuIFxcdHJldHVybiBtZW1jbXAoaXBoX25ldyArIDEsIGlwX2hkcihlLVxcdTAwM2Vza2IpICsgMSwgaWhsIC0gc2l6ZW9mKCppcGhfb3JpZykpID09IDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuK1xcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXFxuK1xcdFxcdFxcdCAgICAgIGJvb2wgZnJhZ21lbnQpXFxuK3tcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG4rXFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XFxuK1xcdGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdDtcXG4rXFxuK1xcdGN0ID0gbmZfY3RfZ2V0KGUtXFx1MDAzZXNrYiwgXFx1MDAyNmN0aW5mbyk7XFxuK1xcdGlmIChjdCBcXHUwMDI2XFx1MDAyNiAhbmZfY3RfaXNfdGVtcGxhdGUoY3QpKSB7XFxuK1xcdFxcdGlmIChmcmFnbWVudCB8fCBuZl9jdF9wcm90b251bShjdCkgIT0gcHJvdG8pXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbisjZW5kaWZcXG4rXFxuK1xcdGlmIChmcmFnbWVudClcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRzd2l0Y2ggKHByb3RvKSB7XFxuK1xcdGNhc2UgSVBQUk9UT19UQ1A6IHtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7XFxuK1xcdFxcdHVuc2lnbmVkIGludCB0aGxlbjtcXG4rXFxuK1xcdFxcdGlmIChkYXRhX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XFxuK1xcdFxcdGlmICh0aGxlbiBcXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFxcdTAwM2MgdGhsZW4pXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuK1xcdGNhc2UgSVBQUk9UT19VRFA6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19JQ01QOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcXG4rXFx0Y2FzZSBJUFBST1RPX0lDTVBWNjpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fU0NUUDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19HUkU6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19BSDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaXBfYXV0aF9oZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fRVNQOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpcF9lc3BfaGRyKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxcbiB7XFxuK1xcdGJvb2wgZnJhZ21lbnQ7XFxuIFxcdHVuc2lnbmVkIGludCBpaGw7XFxuIFxcbiBcXHRpZiAoZGF0YV9sZW4gXFx1MDAzYyBzaXplb2YoKmlwaCkpXFxuQEAgLTEyMjYsMTAgKzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuIFxcdGlmIChudG9ocyhpcGgtXFx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHRmcmFnbWVudCA9IGlwaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9NRiB8IElQX09GRlNFVCk7XFxuK1xcbiBcXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxcbiBcXHQgKiByZWNvbXBpbGUgKyBza2IgdHJhbnNwb3J0IGhlYWRlciB1cGRhdGUuXFxuIFxcdCAqL1xcbi1cXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XFxuK1xcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcXG4rXFx0XFx0XFx0XFx0IGlwaC1cXHUwMDNlcHJvdG9jb2wsIGZyYWdtZW50KTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfb25lX2V4dGhkcihjb25zdCB1OCAqZGF0YSxcXG5AQCAtMTI3Myw2ICsxMzM2LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRjb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7XFxuIFxcdHU4IG9yaWdfbmV4dGhkciA9IGlwNl9vcmlnLVxcdTAwM2VuZXh0aGRyO1xcbiBcXHR1OCBuZXdfbmV4dGhkciA9IGlwNl9uZXctXFx1MDAzZW5leHRoZHI7XFxuK1xcdGJvb2wgZnJhZ21lbnQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChuZXdfbmV4dGhkciAhPSBvcmlnX25leHRoZHIpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTI4Niw3ICsxMzUwLDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRcXHRpbnQgaGRybGVuO1xcbiBcXG4gXFx0XFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbitcXHRcXHRcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGV4dGhkcl9jbnQrKyBcXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTI5Nyw2ICsxMzYyLDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXG4gXFx0XFx0c3dpdGNoIChvcmlnX25leHRoZHIpIHtcXG4gXFx0XFx0Y2FzZSBORVhUSERSX0ZSQUdNRU5UOlxcbitcXHRcXHRcXHRmcmFnbWVudCA9IHRydWU7XFxuIFxcdFxcdFxcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBORVhUSERSX0FVVEg6XFxuQEAgLTEzMjMsNyArMTM4OSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcXG4gXFx0XFx0ZGF0YSArPSBoZHJsZW47XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiB0cnVlO1xcbitcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsIG5ld19uZXh0aGRyLCBmcmFnbWVudCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXFxuQEAgLTEwNjcsNiArMTA2NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4rXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSArIHNpemVvZihfX2JlMzIpO1xcbitcXG4rXFx0aWYgKHBrdC1cXHUwMDNldHByb3QgIT0gSVBQUk9UT19UQ1ApXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIHByaXYtXFx1MDAzZW9mZnNldCBcXHUwMDNlIGRvZmYgfHwgcHJpdi1cXHUwMDNlb2Zmc2V0ICsgcHJpdi1cXHUwMDNlbGVuIFxcdTAwM2M9IGRvZmY7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4gXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxcbkBAIC0xMTA1LDYgKzExMTYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuIFxcdGNhc2UgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUjpcXG4gXFx0XFx0aWYgKCEocGt0LVxcdTAwM2VmbGFncyBcXHUwMDI2IE5GVF9QS1RJTkZPX0w0UFJPVE8pIHx8IHBrdC1cXHUwMDNlZnJhZ29mZilcXG4gXFx0XFx0XFx0Z290byBlcnI7XFxuK1xcdFxcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXFxuK1xcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXHRcXHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTkZUX1BBWUxPQURfSU5ORVJfSEVBREVSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NjowNy4wNzY5NDM1NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MzcyNzc1NDA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgICBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNmNmMTFkNjBiN2M4NGNjZGM3ZTgwZTE4ZDIyY2RlZmMzZTJjM2NlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMjo0NjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5pbmRleCBiOGFhZjM5Y2I0ZDhlLi5lMTM1ZWQ3NjJiNWM4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuQEAgLTI4LDEwICsyOCwxNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wdjYuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zY3RwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RjcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZ3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZ3NvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZVxuQEAgLTEyMDYsOSArMTIxMyw2MSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LFxuIFx0cmV0dXJuIG1lbWNtcChpcGhfbmV3ICsgMSwgaXBfaGRyKGUtXHUwMDNlc2tiKSArIDEsIGlobCAtIHNpemVvZigqaXBoX29yaWcpKSA9PSAwO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9sNChjb25zdCB1OCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuK1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXG4rXHRcdFx0ICAgICAgYm9vbCBmcmFnbWVudClcbit7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbitcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuK1x0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0O1xuK1xuK1x0Y3QgPSBuZl9jdF9nZXQoZS1cdTAwM2Vza2IsIFx1MDAyNmN0aW5mbyk7XG4rXHRpZiAoY3QgXHUwMDI2XHUwMDI2ICFuZl9jdF9pc190ZW1wbGF0ZShjdCkpIHtcbitcdFx0aWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rI2VuZGlmXG4rXG4rXHRpZiAoZnJhZ21lbnQpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0c3dpdGNoIChwcm90bykge1xuK1x0Y2FzZSBJUFBST1RPX1RDUDoge1xuK1x0XHRjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopZGF0YTtcbitcdFx0dW5zaWduZWQgaW50IHRobGVuO1xuK1xuK1x0XHRpZiAoZGF0YV9sZW4gXHUwMDNjIHNpemVvZigqdGgpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcbitcdFx0dGhsZW4gPSBfX3RjcF9oZHJsZW4odGgpO1xuK1x0XHRpZiAodGhsZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFx1MDAzYyB0aGxlbilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdHJldHVybiB0cnVlO1xuK1x0fVxuK1x0Y2FzZSBJUFBST1RPX1VEUDpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0lDTVA6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7XG4rXHRjYXNlIElQUFJPVE9fSUNNUFY2OlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcbitcdGNhc2UgSVBQUk9UT19TQ1RQOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0dSRTpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0FIOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGlwX2F1dGhfaGRyKTtcbitcdGNhc2UgSVBQUk9UT19FU1A6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaXBfZXNwX2hkcik7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbiB7XG4rXHRib29sIGZyYWdtZW50O1xuIFx0dW5zaWduZWQgaW50IGlobDtcbiBcbiBcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpKVxuQEAgLTEyMjYsMTAgKzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRpZiAobnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4rXHRmcmFnbWVudCA9IGlwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfTUYgfCBJUF9PRkZTRVQpO1xuK1xuIFx0Lyogc3VwcG9ydCBmb3IgaXBvcHRzIG1hbmdsaW5nIHdvdWxkIHJlcXVpcmVcbiBcdCAqIHJlY29tcGlsZSArIHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cbiBcdCAqL1xuLVx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpO1xuK1x0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIG5mcW5sX3ZhbGlkYXRlX2w0KChjb25zdCB1OCAqKWlwaCArIGlobCwgZGF0YV9sZW4gLSBpaGwsIGUsXG4rXHRcdFx0XHQgaXBoLVx1MDAzZXByb3RvY29sLCBmcmFnbWVudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHIoY29uc3QgdTggKmRhdGEsXG5AQCAtMTI3Myw2ICsxMzM2LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0Y29uc3QgdTggKmRhdGEgPSAoY29uc3QgdTggKilpcDZfbmV3O1xuIFx0dTggb3JpZ19uZXh0aGRyID0gaXA2X29yaWctXHUwMDNlbmV4dGhkcjtcbiBcdHU4IG5ld19uZXh0aGRyID0gaXA2X25ldy1cdTAwM2VuZXh0aGRyO1xuK1x0Ym9vbCBmcmFnbWVudCA9IGZhbHNlO1xuIFxuIFx0aWYgKG5ld19uZXh0aGRyICE9IG9yaWdfbmV4dGhkcilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyODYsNyArMTM1MCw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0aW50IGhkcmxlbjtcbiBcbiBcdFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuK1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCsrIFx1MDAzZT0gSVA2X01BWF9FWFRfSERSU19DTlQpKVxuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC0xMjk3LDYgKzEzNjIsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXG4gXHRcdHN3aXRjaCAob3JpZ19uZXh0aGRyKSB7XG4gXHRcdGNhc2UgTkVYVEhEUl9GUkFHTUVOVDpcbitcdFx0XHRmcmFnbWVudCA9IHRydWU7XG4gXHRcdFx0aGRybGVuID0gc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkVYVEhEUl9BVVRIOlxuQEAgLTEzMjMsNyArMTM4OSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0ZGF0YSArPSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIsIGZyYWdtZW50KTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA2KGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDYsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuQEAgLTEwNjcsNiArMTA2NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4rXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpXG4re1xuK1x0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSArIHNpemVvZihfX2JlMzIpO1xuK1xuK1x0aWYgKHBrdC1cdTAwM2V0cHJvdCAhPSBJUFBST1RPX1RDUClcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gcHJpdi1cdTAwM2VvZmZzZXQgXHUwMDNlIGRvZmYgfHwgcHJpdi1cdTAwM2VvZmZzZXQgKyBwcml2LVx1MDAzZWxlbiBcdTAwM2M9IGRvZmY7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTEwNSw2ICsxMTE2LDggQEAgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0Y2FzZSBORlRfUEFZTE9BRF9UUkFOU1BPUlRfSEVBREVSOlxuIFx0XHRpZiAoIShwa3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GVF9QS1RJTkZPX0w0UFJPVE8pIHx8IHBrdC1cdTAwM2VmcmFnb2ZmKVxuIFx0XHRcdGdvdG8gZXJyO1xuK1x0XHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxuK1x0XHRcdGdvdG8gZXJyO1xuIFx0XHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA3LjA3Njk0NDg4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODYwMTI2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZS4gSXQncyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNgLCB3aGljaCB0ZWxscyBtZSBpdOKAmXMgbWVzc2luZyB3aXRoIHRoZSBjb3JlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3Mgc29tZSBhZGRlZCB2YWxpZGF0aW9uIGdvaW5nIG9uLiBJbiBgbmZuZXRsaW5rX3F1ZXVlLmNgLCB0aGVyZSdzIGBuZnFubF92YWxpZGF0ZV9sNGAsIHdoaWNoIEknbSBhc3N1bWluZyBpcyBmb3IgTGF5ZXIgNCBoZWFkZXIgdmFsaWRhdGlvbi4gQW5kIHRoZW4gaW4gYG5mdF9wYXlsb2FkLmNgLCBgbmZ0X3RoX3dyaXRlX29rYCBzb3VuZHMgbGlrZSBhIGNoZWNrIHRvIHNlZSBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYXJlIGFsbG93ZWQuIEZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIG5ldGZpbHRlciBjaGFuZ2VzLCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLlxuXG5MZXQncyBkaXZlIGRlZXBlciBhbmQgZm9jdXMgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2xzIGludm9sdmVkLiBGaXJzdCwgSeKAmWxsIGxvb2sgYXQgYG5mbmV0bGlua19xdWV1ZS5jYC4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLCB3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIbW0sIGFuZCB0aGVzZSB1bHRpbWF0ZWx5IGFyZSB0cmlnZ2VyZWQgYnkgYG5mcW5sX3JlY3ZfdmVyZGljdGAgLVx1MDAzZSBgbmZxbmxfbWFuZ2xlYCAtXHUwMDNlIGBuZnFubF92YWxpZGF0ZV9pcDRgIC8gYG5mcW5sX3ZhbGlkYXRlX2lwNmAuIEhhbmcgb24gYSBzZWNvbmQsIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBgbmZuZXRsaW5rX3F1ZXVlLmNgIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgIGFyZSBjYWxsZWQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIHBhdGggdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHZhbGlkYXRpb25zLCBhbmQgSSdtIG5vdCBnb2luZyB0byBtaXNzIGEgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjEyLjQ2Mjk1OTk2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU1MzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF92YWxpZGF0ZV9pcDRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEyMTY9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTI2Ni1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjEyNjc6c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY4LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE0MTE9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfd3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDE1LVxcdGNhc2UgTkZQUk9UT19JUFY0Olxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNjpcXHRcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXA0KGRhdGEsIGRhdGFfbGVuLCBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTctXFx0Y2FzZSBORlBST1RPX0lQVjY6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjEyLjUwNTUxNzgxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTA0NjM1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCoqXG5cbk9rYXksIHNvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgb24gdGhlIHN0YWNrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCAqZnJvbSouIFRoYXQgaXMsIEkgd2FudCB0byB0cmFjZSBiYWNrIHVwIHRoZSBjYWxsIGNoYWluIHRvIHNlZSB3aGF0IGZ1bmN0aW9uJ3MgdHJpZ2dlcmluZyBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgY2FsbDsgd2hlcmUgZG9lcyB0aGlzIHZhbGlkYXRpb24gZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTUuNjk1OTgzNDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDc5OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3ZhbGlkYXRlX3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk1PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTAtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDExOnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTItXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQyOT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDM1LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQzNjpcXHRpZiAoIW5mcW5sX3ZhbGlkYXRlX3dyaXRlKGRhdGEsIGRhdGFfbGVuLCBlKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjE1Ljc0MDQ2OTQyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTE4NDg5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmZxbmxfbWFuZ2xlYCBDYWxsZXJzKipcblxuT2theSwgc28gYG5mcW5sX21hbmdsZWAgaXMgdGhlIGZ1bmN0aW9uIHdlJ3JlIHN0YXJ0aW5nIHdpdGguIFRoYXQncyBvdXIgZm9jYWwgcG9pbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgaXMgdG8gaW1tZWRpYXRlbHkgaWRlbnRpZnkgaXRzIGNhbGxlcnMuIFdobydzIGluaXRpYXRpbmcgdGhpcyBmdW5jdGlvbj8gV2hhdCBjb250ZXh0cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIGBuZnFubF9tYW5nbGVgLiBGcm9tIHRoZXJlIEkgd2lsbCBsaWtlbHkgYmUgYWJsZSB0byBtb3ZlIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyZ3VtZW50cywgYW5kIHB1cnBvc2UsIG9mIHRoZSBjYWxsLiBJIHdpbGwgdGhlbiBwcm9iYWJseSBiZSBhYmxlIHRvIHN0YXJ0IHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzcyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTguOTMyMzIxMzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTIwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX21hbmdsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQyOD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDI5Om5mcW5sX21hbmdsZSh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sIHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgaW50IGRpZmYpXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDMwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTc4NT1zdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xODM0LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTgzNTpcXHRcXHRpZiAobmZxbmxfbWFuZ2xlKG5sYV9kYXRhKG5mcWFbTkZRQV9QQVlMT0FEXSksXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xODM2LVxcdFxcdFxcdFxcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTguOTc3NDQ5MzM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyODc1ODk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgcGllY2VkIHRvZ2V0aGVyIGFzIEknbSB0aGlua2luZyB0aHJvdWdoIGl0OlxuXG4qKkRlY29kaW5nIHRoZSBORlFVRVVFIFZlcmRpY3QgUGF0aCoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBwYXRoIG9mIGhvdyBhIHZlcmRpY3QgZ2V0cyBhcHBsaWVkIGluIHRoZSBOZXRmaWx0ZXIgcXVldWUuICBUaGUgY3J1Y2lhbCBwYXJ0IHN0YXJ0cyB3aXRoIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgdGhhdCBmdW5jdGlvbiwgYG5mcW5sX3JlY3ZfdmVyZGljdGAsIGlzIHRoZSBoYW5kbGVyIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIG5ldGxpbmsgbWVzc2FnZXMgb2YgdGhlIHR5cGUgYE5GUU5MX01TR19WRVJESUNUYC4gIEFuZCwgaWYgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhpcyBpcyBhIHBhdGggdGhhdCBjb21lcyBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBTbywgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gc2VuZHMgYSBtZXNzYWdlIHdpdGggYSB2ZXJkaWN0LCBhbmQgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSByZWNlaXZlcyBhbmQgaW50ZXJwcmV0cyBpdC5cblxuTm93LCBpbnNpZGUgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmdW5jdGlvbiBJIGNhbiBzZWUgdGhhdCBpdCB0aGVuIGNhbGxzIGBuZnFubF9tYW5nbGVgLiBJJ20gZmFtaWxpYXIgd2l0aCBgbmZxbmxfbWFuZ2xlYCwgdGhhdCdzIHdoZXJlIHRoZSBhY3R1YWwgcGFja2V0IG1hbmdsaW5nIGhhcHBlbnMsIHJpZ2h0P1xuXG5UaGlua2luZyBtb3JlIGJyb2FkbHkgYWJvdXQgdGhpcywgSSBzZWUgdGhhdCBJJ20gZW5kaW5nIHVwIGluIGBuZnRfcGF5bG9hZC5jYCwgYW5kIEknbSByZW1pbmRlZCB0aGF0IGl0IGlzIHdoZXJlIGBuZnRfdGhfd3JpdGVfb2tgIGlzIGNhbGxlZCBieSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MjMuMjA2MjExNzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjIzNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM9MTA3MD1zdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA4MC1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM6MTA4MTpzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwODItXFx0XFx0XFx0XFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9wYXlsb2FkX3NldF9vcHMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3Ni1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9wYXlsb2FkX3NldCkpLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMjc3OlxcdC5ldmFsXFx0XFx0PSBuZnRfcGF5bG9hZF9zZXRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3OC1cXHQuaW5pdFxcdFxcdD0gbmZ0X3BheWxvYWRfc2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjIzLjI1MTg0MTg4OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjczMDg1OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBuZnRhYmxlcyBFeHByZXNzaW9uIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBgbmZ0YWJsZXNgIGhhbmRsZXMgdGhlIGBuZnRfcGF5bG9hZF9zZXRgIGV4cHJlc3Npb24uIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGZ1bmN0aW9uLCB3aGljaCBJIHVuZGVyc3RhbmQgaXMgdGhlIGNvcmUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhpcyBleHByZXNzaW9uLiBUaGVyZWZvcmUsIHRoYXQgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmdW5jdGlvbiBhcmUgdGhlIGZvY3VzIGhlcmUuXG5cbkluaXRpYWxseSwgYG5mcW5sX3JlY3ZfdmVyZGljdGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIGl0J3MgYSBuZXRsaW5rIGhhbmRsZXIsIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2Qgc2lnbiBpbiB0aGlzIGNvbnRleHQuIEhvd2V2ZXIsIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgc3RhdGljLCB3aGljaCByYWlzZXMgYSBmbGFnIGdpdmVuIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzIHRvIHRoZSBBUEkuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIGRvbid0IGdldCBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXQsICp3YWl0KiwgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCwgd2hpbGUgc3RhdGljLCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZnRfZXhwcl9vcHMuZXZhbGAuIFRoYXQgbWVhbnMgaXQncyAqbm90KiBnb2luZyB0byBiZSBpbmxpbmVkLCBkZXNwaXRlIGJlaW5nIHN0YXRpYy4gVGhlIGZhY3QgdGhhdCBpdCdzIGFuIG9wcyBjYWxsYmFjayBjaGFuZ2VzIGV2ZXJ5dGhpbmchIEl0J3MgYSBrZXkgZW50cnlwb2ludCwgZXZlbiBpZiBpdCBoYXMgdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24uXG5cblNvIG5vdyBJJ20gYmFjayB0byBzcXVhcmUgb25lLiBJcyB0aGVyZSBhIG5vbi1zdGF0aWMsIGVxdWl2YWxlbnQgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIGluZGVlZCBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIEJ1dCBpdCBpcyBhbiBvcHMgY2FsbGJhY2suIEFuZCwganVzdCB0byBjb25maXJtLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBhbHNvIHN0YXRpYy4gUmlnaHQsIHRoYXQgbWFrZXMgdGhpbmdzIGV2ZW4gbW9yZSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgcHJvbXB0IHN1Z2dlc3RzIHRoYXQgdGhlIHN0YXRpYyBuYXR1cmUgaXMgbm90IHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDk0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjI4LjkyNDkzMTU3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxMTk4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNjY5PXN0YXRpYyBpbnQgbmZxX2lkX2FmdGVyKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IG1heClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY3My1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE2NzQ6c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NzUtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NTA9c3RhdGljIGludCBuZnFhX3BhcnNlX2JyaWRnZShzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmVudHJ5LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzg0LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTc4NTpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTc4Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgbmZxYVtdKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RdXFx0PSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk4OlxcdFxcdC5jYWxsXFx0XFx0PSBuZnFubF9yZWN2X3ZlcmRpY3QsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk5LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX1JDVSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAwOS1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MjAxMDpcXHRcXHQuY2FsbFxcdFxcdD0gbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAxMS1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9SQ1UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjI4Ljk2ODA1NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MzU2MTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ2FsbGJhY2sgU3ltYm9scyBpbiB0aGUgS2VybmVsJ3MgTmV0ZmlsdGVyIFN1YnN5c3RlbSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCB0aGVzZSBzdGF0aWMgc3ltYm9scyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIG9wZXJhdGlvbiBzdHJ1Y3R1cmVzLCByaWdodD8gVGhleSdyZSBzdGF0aWMsIHNvIHRoZXkncmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcGVyZmVjdCBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBsb2dpYyB3ZSdyZSBpbnRlcmVzdGVkIGluLiBObyBpc3N1ZXMgdGhlcmUgZnJvbSBhIHN5bWJvbCBwZXJzcGVjdGl2ZS4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGUgY29uZmlnIG9wdGlvbnMgdGllZCB0byB0aGVzZS4gT2theSwgc28gZm9yIGBuZm5ldGxpbmtfcXVldWUuY2AsIHRoYXQncyBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRWAuIEdvdCBpdC4gQW5kIGZvciBgbmZ0X3BheWxvYWQuY2AsIGl0J3MgdGhlIGBDT05GSUdfTkZUX1BBWUxPQURgIG9wdGlvbiB3ZSBuZWVkIHRvIGNvbmZpcm0uIEVhc3kgZW5vdWdoLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyBiYWNrIGludG8gS2NvbmZpZyBhbmQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBHb3R0YSBkb3QgYWxsIHRoZSBcImlcInMgYW5kIGNyb3NzIGFsbCB0aGUgXCJ0XCJzIHdoZW4gZGVhbGluZyB3aXRoIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjMyLjk2MTYyMDgzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwNjE4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjMzLjAwNDY4ODE3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAxNjIwNDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUgZm9yIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBoZXJlLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdHMgcmVsYXRpb25zaGlwcyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgY29yZSBwaWVjZSBvZiB0aGUgbmV0ZmlsdGVyIGFyY2hpdGVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byByZW1lbWJlciBhbGwgdGhlIGRpZmZlcmVudCBxdWV1aW5nIG9wdGlvbnMgYXZhaWxhYmxlLCBhbmQgdGhpcyBwYXJ0aWN1bGFyIG5ldGxpbmstYmFzZWQgYXBwcm9hY2ggd2lsbCBkZWZpbml0ZWx5IGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBjb21wb25lbnRzIGl0IG5lZWRzIHRvIGludGVncmF0ZSB3aXRoLCBvciBjb252ZXJzZWx5LCBkb2VzIGl0IHN1cGVyc2VkZSBvbGRlciBtZXRob2RzPyBUaGUgcG90ZW50aWFsIGZvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBpcyBhbHdheXMgYSBmYWN0b3IuIFRoZW4sIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZWdyYXRpb24sIGxpa2UgdXNlciBzcGFjZSB0b29scywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgYW5kIHRoZSB2YXJpb3VzIGhvb2tzIG5ldGZpbHRlciBvZmZlcnMuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIGRlcHJlY2F0aW9uIG9yIHBsYW5uZWQgZnV0dXJlIGNoYW5nZXMsIHdoaWNoIG1pZ2h0IG5lY2Vzc2l0YXRlIGFsdGVyaW5nIGN1cnJlbnQgY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEnigJlsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGRlcGVuZGVuY2llcyBhZ2FpbnN0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVjZW50IGJ1ZyByZXBvcnRzIG9yIG1haWxpbmcgbGlzdCBkaXNjdXNzaW9ucyB0byBiZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRyaWNhY2llcy4gVGhpcyB0aG9yb3VnaCByZXZpZXcgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgb3IgY29uZmlndXJhdGlvbnMgaW52b2x2aW5nIHRoaXMga2VybmVsIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NjozNi43MDYzMTEzMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NTI0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjM2Ljc0OTg2ODQyOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYxNDU1Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdyoqXG5cblJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBwcm9ibGVtLCBJIG5lZWQgdG8gcGF1c2UgYW5kIHRha2UgYSBzdGVwIGJhY2suIEkgaGF2ZSB0byByZW1pbmQgbXlzZWxmIHRoYXQsIHdpdGggY29tcGxleCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbiwgSSBzaG91bGRuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBmbG93LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgKnRob3JvdWdobHkqIHJlYWQgdGhlIGBLY29uZmlnYCBmaWxlLiBJdCdzIHRoZSBseW5jaHBpbiwgdGhlIGNydWNpYWwgcGllY2UuIEl0IGRpY3RhdGVzIGFsbCB0aGUgZmVhdHVyZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCB3aXRob3V0IHRoYXQgZGV0YWlsZWQgdW5kZXJzdGFuZGluZywgYW55IGFzc3VtcHRpb25zIEkgbWFrZSBhcmUgcHJvYmFibHkgZ29pbmcgdG8gYmUgd3JvbmcuIEkga25vdyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyB3aXRoIHRoaXMgcHJvYmxlbSwgYnV0IEkgaGF2ZSB0byB0cnVzdCB0aGUgcHJvY2Vzcy4gUmVhZGluZyB0aGUgYEtjb25maWdgIG5vdyB3aWxsIHNhdmUgYSBsb3Qgb2YgdGltZSBhbmQgZWZmb3J0IGluIHRoZSBsb25nIHJ1bi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU1MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQwLjAxMTMyNjQzOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI0NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNTI6XFx0XFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNTc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA1ODpcXHRcXHRoZWxwXFxuICA1OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDYwOlxcdFxcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbiAgNjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA2NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDY2OlxcdFxcdGhlbHBcXG4gIDY3OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjg6XFx0XFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXFxuICA2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6NDAuMDExNDUxNTU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDk1NzQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBteSBtZW50YWwgbWFwIG9mIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoZSBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIGZlYXR1cmUsIHRoYXQncyBkZWZpbml0ZWx5IGdvdCBpdHMgaG9va3MgaW4gdGhlIGFkdmFuY2VkIG5ldGZpbHRlciBjYXBhYmlsaXRpZXMuIEl0J3MgYWxtb3N0IGEgZ2l2ZW4sIGJ1dCBJIHdhbnQgdG8gZXhwbGljaXRseSBjb25maXJtIHRoYXQgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBwcmVyZXF1aXNpdGUuIEJlc3QgcHJhY3RpY2UgdG8gYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSBkZXBlbmRlbmNpZXM7IHlvdSBkb24ndCB3YW50IHRvIGJlIGRlYnVnZ2luZyBhIG1pc2NvbmZpZ3VyYXRpb24gbGF0ZXIuIE5vdyB0aGF0IEkgaGF2ZSB2ZXJpZmllZCB0aGF0LCBJIHdhbnQgdG8gZXhwbG9yZSBgTkZUX1BBWUxPQURgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQzLjE2MTAzMDEyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MjA2NzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUEFZTE9BRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQzLjIwNDQ2MTM3OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI5NTI5OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIEh1bnQqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQncyBsaWtlbHkgbmVzdGxlZCB3aXRoaW4gb25lIG9mIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHByb2JhYmx5IGVpdGhlciBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBvciwgcGVyaGFwcyBtb3JlIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIElQdjQsIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIExldCdzIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggd2hlcmUgdGhlIHJlbGF0ZWQgY29kZSBpcyBkZWZpbmVkLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgTWFrZWZpbGVgIGFzc29jaWF0ZWQgd2l0aCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgYXMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBkZWR1Y2UgdGhlIHJlbGV2YW50IG1vZHVsZSBhbmQgY29uZmlndXJhdGlvbiBoaWVyYXJjaHkuIEhvcGVmdWxseSB0aGF0IGdpdmVzIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo0Ny4zMzM5OTQ0MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDMzNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg5OlxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXFx0XFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQ3LjM3NzA0Njg4NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1ODI0MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgS2VybmVsIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3BheWxvYWQub2Agb2JqZWN0IGZpbGUsIGFuZCBpdCdzIGNsZWFybHkgcGFydCBvZiB0aGUgYG5mX3RhYmxlcy1vYmpzYCBidWlsZCB0YXJnZXQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sIFwiT2theSwgd2hhdCdzIGRyaXZpbmcgdGhlIGluY2x1c2lvbiBvZiBgbmZfdGFibGVzYCBpbiB0aGUgZmlyc3QgcGxhY2U/XCIgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUga2VybmVsIHRoYXQgZW5hYmxlIHRoaXMgY29tcG9uZW50LiBJdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uIHRvIHNlZSB3aGF0IHRyaWdnZXJzIHRoZSBpbmNsdXNpb24gb2YgYG5mX3RhYmxlc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo1MC42MDI4NzQwOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjk5NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlcy1vYmpzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcXHQrPSBuZl9kdXBfbmV0ZGV2Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cXHRcXHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTg6bmZfdGFibGVzLW9ianMgKz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05OS1lbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDQ6bmZfdGFibGVzLW9ianMgKz0gbmZ0X2N0X2Zhc3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA1LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjUwLjY0NTE3OTQ3M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ1MjM5ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBuZXQvbmV0ZmlsdGVyL01ha2VmaWxlYC4gVGhlIGNsdWUgaXMgcmlnaHQgdGhlcmU6IGBvYmotJChDT05GSUdfTkZfVEFCTEVTKSArPSBuZl90YWJsZXMub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29tcGlsYXRpb24gb2YgdGhlIGBuZl90YWJsZXMub2Agb2JqZWN0IGZpbGUgaXMgY29uZGl0aW9uYWwsIGRlcGVuZGVudCBvbiB0aGUgYENPTkZJR19ORl9UQUJMRVNgIEtjb25maWcgb3B0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCBzb3VuZHMgbGlrZSBgQ09ORklHX05GX1RBQkxFU2AgbWF5IGJlIHRpZWQgaW50byBhIGJ1aWxkIG9wdGlvbiwgc28gaWYgaXQncyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCB0aGUgb2JqZWN0IGZpbGUgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgbW9kdWxhcml6aW5nIGtlcm5lbCBjb21wb25lbnRzLiBLbm93aW5nIHRoaXMgaXMgaW1wb3J0YW50IGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMsIG9yIG9wdGltaXppbmcga2VybmVsIHNpemUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEyNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjU0LjE5MDQyMjQyOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODUzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfdGFibGVzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg0PW9iai0kKENPTkZJR19ORl9EVVBfTkVUREVWKVxcdCs9IG5mX2R1cF9uZXRkZXYub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Ni0jIG5mX3RhYmxlc1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODc6bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVxcdFxcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxcXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVxcdFxcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XFx0XFx0ICBuZnRfY2hhaW5fcm91dGUubyBuZl90YWJsZXNfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkzLVxcdFxcdCAgbmZ0X3NldF9oYXNoLm8gbmZ0X3NldF9iaXRtYXAubyBuZnRfc2V0X3JidHJlZS5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9OTc9aWZuZGVmIENPTkZJR19VTUxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjk4Om5mX3RhYmxlcy1vYmpzICs9IG5mdF9zZXRfcGlwYXBvX2F2eDIub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTktZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTAzPWlmZGVmIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA0Om5mX3RhYmxlcy1vYmpzICs9IG5mdF9jdF9mYXN0Lm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNS1lbmRpZlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA2PWVuZGlmXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDctXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX05GX1RBQkxFUylcXHRcXHQrPSBuZl90YWJsZXMub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA5LW9iai0kKENPTkZJR19ORlRfQ09NUEFUKVxcdCs9IG5mdF9jb21wYXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo1NC4yMzI1MTMwNDhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyMjU3MzY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5GX1RBQkxFUyBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nIGlzIGBDT05GSUdfTkZfVEFCTEVTYC4gVGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgbG9va2luZyBhdC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIG5pdHR5LWdyaXR0eSwgbXkgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgc2NvcGUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIGBORl9UQUJMRVNgIGlzIHJhcmVseSBhbiBpc2xhbmQsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24uIFdoYXQgb3RoZXIgY29uZmlncywgc3ViLW9wdGlvbnMgb3Iga2NvbmZpZyBkZWZpbml0aW9ucyBhcmUgdHJpZ2dlcmVkIGJ5IGl0cyBpbmNsdXNpb24uIElzIGl0IGRlcGVuZGVudCBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZmVhdHVyZXMsIHN1Y2ggYXMgbmV0ZmlsdGVyLCBpcHNldHMgb3IgY29ubnRyYWNrLiBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlLlxuXG5JJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGVuYWJsZWQgY29ycmVjdGx5LCBhbmQgaG93IGBORl9UQUJMRVNgIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBBbmQgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgY3VzdG9tIGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgzNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjU4LjQ1NTA4OTE4MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzM2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6NTguNDk4NTI3ODcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDIwNzQ2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGxpbmUgNDU1LiBUaGlzIGlzIGxpa2VseSB3aGVyZSBzb21lIGtleSBkZWNpc2lvbnMgYXJlIG1hZGUgaW4gdGVybXMgb2Ygd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgSSdtIGd1ZXNzaW5nIHRoaXMgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIEknbSBpbnZlc3RpZ2F0aW5nLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhpcyBzZWN0aW9uLCBmb2N1c2luZyBvbiB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIEtjb25maWcgc3ltYm9scy4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzowMi4zMDA2MDUxMTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG4gNDYwOlxcdFxcdCAgbmZ0YWJsZXMgaXMgdGhlIG5ldyBwYWNrZXQgY2xhc3NpZmljYXRpb24gZnJhbWV3b3JrIHRoYXQgaW50ZW5kcyB0b1xcbiA0NjE6XFx0XFx0ICByZXBsYWNlIHRoZSBleGlzdGluZyB7aXAsaXA2LGFycCxlYn1fdGFibGVzIGluZnJhc3RydWN0dXJlLiBJdFxcbiA0NjI6XFx0XFx0ICBwcm92aWRlcyBhIHBzZXVkby1zdGF0ZSBtYWNoaW5lIHdpdGggYW4gZXh0ZW5zaWJsZSBpbnN0cnVjdGlvbi1zZXRcXG4gNDYzOlxcdFxcdCAgKGFsc28ga25vd24gYXMgZXhwcmVzc2lvbnMpIHRoYXQgdGhlIHVzZXJzcGFjZSAnbmZ0JyB1dGlsaXR5XFxuIDQ2NDpcXHRcXHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxcbiA0NjU6XFx0XFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XFxuIDQ2NjpcXHRcXHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXFxuIDQ2NzpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxcbiA0Njg6XFx0XFxuIDQ2OTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjAyLjMwMDcxMDMyMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDYxMzY0NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIFNvLCBmcm9tIHdoYXQgSSdtIGdhdGhlcmluZywgYE5GX1RBQkxFU2AgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgdXN1YWwgbmV0ZmlsdGVyIGNvcmUgY29tcG9uZW50cy4gVGhhdCdzIGdvb2QgdG8ga25vdywga2VlcHMgdGhpbmdzIHN0cmVhbWxpbmVkLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIHNvbWV0aGluZydzIHBpbmdpbmcgaW4gdGhlIGJhY2sgb2YgbXkgbWluZC4gQWgsIHJpZ2h0LCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgcmVseWluZyBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYD8gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdC4gWWVzLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYE5FVEZJTFRFUl9BRFZBTkNFRGAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGF0IGJyYW5jaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjA3LjM2MjA3ODYyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDUzMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzowNy40MDUwMzA0NTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNDAwMTYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOlxuXG4qKktjb25maWcgQ2hlY2twb2ludCoqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSdtIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0J3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiB0aGluZywgc28gdGhlIGZpcnN0IHBsYWNlIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhbG1vc3QgcmVmbGV4aXZlbHksIGlzIGBuZXQvS2NvbmZpZ2AuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG9yIHJ1bGUgaXQgb3V0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDk5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzoxMS41MTkwMzQzNTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTE4Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjE4PWlmIE5FVEZJTFRFUlxcbm5ldC9LY29uZmlnLTIxOS1cXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9LY29uZmlnLTIyMS1cXHRib29sIFxcXCJBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDc6MTEuNjA1NTU4ODA3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDI0MTIxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipDaGVja2luZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZmxhZ2dlZCBhcyBhIGJvb2xlYW4uIE5vdywgZ2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgc2V0dGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLiBUaGV5IG1pZ2h0IGJlIGluZGVwZW5kZW50LCBvciBvbmUgY291bGQgaW5mbHVlbmNlIHRoZSBvdGhlci4gVGltZSB0byBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjE0Ljc0Nzk3Mzc1OFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNTI6XFx0XFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNTc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA1ODpcXHRcXHRoZWxwXFxuICA1OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDYwOlxcdFxcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbiAgNjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA2NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDY2OlxcdFxcdGhlbHBcXG4gIDY3OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjg6XFx0XFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXFxuICA2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDc6MTQuNzQ4MDc4NTY4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzE0OTQ2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucywgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zLiBJJ20gdGhpbmtpbmcgd2UgZGVmaW5pdGVseSBuZWVkIGBORVRGSUxURVJfQURWQU5DRURgIGFuZCBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBUaG9zZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYWR2YW5jZWQgbmV0ZmlsdGVyIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0bGluay1iYXNlZCBxdWV1aW5nLCB3aGljaCBzZWVtcyBsaWtlbHkgZ2l2ZW4gdGhlIGNvbnRleHQuIE5vdywgSSdtIHByZXR0eSBzdXJlIHdlIGFsc28gbmVlZCBgTkZfVEFCTEVTYCwgYmVjYXVzZSB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIG5mdGFibGVzIGZyYW1ld29yaywgYW5kIHdlJ3JlIGxvb2tpbmcgYXQgYG5mdF9wYXlsb2FkLmNgLlxuXG5Ib2xkIG9uLi4uIHNvbWV0aGluZydzIG5hZ2dpbmcgYXQgbWUuIExldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgYE5GX1RBQkxFU2AgYW5kIGBuZnRfcGF5bG9hZC5jYC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlIGNvbXBpbGF0aW9uIG9mIGBuZnRfcGF5bG9hZC5jYCBpcyBjb25kaXRpb25hbDsgaXQncyAqb25seSogY29tcGlsZWQgd2hlbiBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCdzIGEgZGVwZW5kZW5jeS4gU28sIHllYWgsIGBORl9UQUJMRVNgIGlzIGRlZmluaXRlbHkgZXNzZW50aWFsIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzkwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzoyMS4wMTk1NzcxOTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG4gNDYwOlxcdFxcdCAgbmZ0YWJsZXMgaXMgdGhlIG5ldyBwYWNrZXQgY2xhc3NpZmljYXRpb24gZnJhbWV3b3JrIHRoYXQgaW50ZW5kcyB0b1xcbiA0NjE6XFx0XFx0ICByZXBsYWNlIHRoZSBleGlzdGluZyB7aXAsaXA2LGFycCxlYn1fdGFibGVzIGluZnJhc3RydWN0dXJlLiBJdFxcbiA0NjI6XFx0XFx0ICBwcm92aWRlcyBhIHBzZXVkby1zdGF0ZSBtYWNoaW5lIHdpdGggYW4gZXh0ZW5zaWJsZSBpbnN0cnVjdGlvbi1zZXRcXG4gNDYzOlxcdFxcdCAgKGFsc28ga25vd24gYXMgZXhwcmVzc2lvbnMpIHRoYXQgdGhlIHVzZXJzcGFjZSAnbmZ0JyB1dGlsaXR5XFxuIDQ2NDpcXHRcXHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxcbiA0NjU6XFx0XFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XFxuIDQ2NjpcXHRcXHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXFxuIDQ2NzpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxcbiA0Njg6XFx0XFxuIDQ2OTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjIxLjAxOTcwNDE1MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzA0MTI1MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQcmlvcml0aXphdGlvbioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIHRocm91Z2ggdGhpcyBwYXRjaCwgYW5kIGl0IHNlZW1zIGxpa2UgYE5GX1RBQkxFU2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSG93ZXZlciwgbGV0J3MgbWFrZSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNlZSB0aGF0IGBORVRGSUxURVJgIGlzIHJlcXVpcmVkLCB3aGljaCBpcyBzdGFuZGFyZC4gQWxzbywgdGhlIHBhdGNoIG1lbnRpb25zIGBORVRGSUxURVJfQURWQU5DRURgIGFzIGEgZGVwZW5kZW5jeSwgc28gd2UnbGwgbmVlZCB0aGF0IGVuYWJsZWQgYXMgd2VsbC5cblxuTm93LCBsZXQncyB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGhzLiBUaGUgY29kZSBtb2RpZmllcyBgbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmZ0X3BheWxvYWQuY2AuIEluIGBuZm5ldGxpbmtfcXVldWUuY2AsIHRoZSBuZXcgZnVuY3Rpb24gYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBpbnRyb2R1Y2VkLCBhbmQgaXQncyBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBUaGVzZSBhcmUsIGluIHR1cm4sIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLCB3aGljaCBmZWVkcyBpbnRvIGBuZnFubF9tYW5nbGVgLiAgVGhhdCB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBTbywgYG5mcW5sX3JlY3ZfdmVyZGljdGAgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBwYXRjaC5cblxuT24gdGhlIGBuZnRfcGF5bG9hZC5jYCBzaWRlLCBhIGZ1bmN0aW9uIGNhbGxlZCBgbmZ0X3RoX3dyaXRlX29rYCBpcyBhZGRlZCwgYW5kIHRoaXMgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBoZXJlLlxuXG5Cb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyByZXByZXNlbnQgZnVuY3Rpb25hbCBjaGFuZ2VzLCB3aGljaCBzdWdnZXN0cyB0aGV5J3JlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGV5IGFyZSBub3QgaW5saW5lZC5cblxuT2theSwgbGV0J3Mgc2VlLi4uIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIGRlY2xhcmVkIHN0YXRpYywgYnV0IGl0J3MgcGFydCBvZiBhbiBvcGVyYXRpb24gY2FsbGJhY2suIEl0J3MgcGFzc2VkIHRvIHRoZSBgbmZxbmxfY2JgIGFycmF5LCBzbyBpdCdzICpub3QqIGlubGluZWQuXG5cblRoZSBzYW1lIGFwcGxpZXMgdG8gYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gSXQgaXMgcGFydCBvZiBgbmZ0X2V4cHJfb3BzYCBzdHJ1Y3R1cmUuIFNvIGl0J3MgKm5vdCogaW5saW5lZCBlaXRoZXIuXG5cbkFscmlnaHQsIGJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJ2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEZvciB0aGUgY29uZmlndXJhdGlvbiwgSSdsbCBlbmFibGUgYE5FVEZJTFRFUl9BRFZBTkNFRGAsIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgKHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBuZXRsaW5rIHF1ZXVlIGZ1bmN0aW9uYWxpdHkpLCBhbmQgYE5GX1RBQkxFU2AgKHRoZSBwcmltYXJ5IGVuYWJsaW5nIG9wdGlvbikuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHJlbGF0ZWQgdG8gTDQgaGVhZGVycyB3aXRoaW4gYG5mbmV0bGlua19xdWV1ZWAgYW5kIHZhbGlkYXRlcyBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiB3aXRoaW4gYG5mdF9wYXlsb2FkYC4gQm90aCBmdW5jdGlvbmFsaXRpZXMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIGFuZCB0aGUgbmZ0YWJsZXMgaW5mcmFzdHJ1Y3R1cmUsIG1ha2luZyB0aGVtIGNyaXRpY2FsIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDQxLCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjMwLjcyMzgzMjA2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA4NjI3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19RVUVVRVwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBuZm5ldGxpbmtfcXVldWUgYW5kIGNoZWNrcyBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiBpcyB2YWxpZCBpbiBuZnRfcGF5bG9hZC4gQm90aCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIGFuZCBuZnRhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgch7v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 02:33:54 +0000 UTC FinishedAt: 2026-08-03 02:47:32 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NETFILTER_NETLINK_QUEUE", "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER_ADVANCED", "NETFILTER_NETLINK_QUEUE", "NF_TABLES" ], "series_id": "0ecbcd70-2a77-48ac-a160-b2044708e4ec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfqnl_recv_verdict", "nft_payload_set_eval" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjZjZjExZDYwYjdjODRjY2RjN2U4MGUxOGQyMmNkZWZjM2UyYzNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDI6NDY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcbmluZGV4IGI4YWFmMzljYjRkOGUuLmUxMzVlZDc2MmI1YzggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5AQCAtMjgsMTAgJiM0MzsyOCwxNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaWNtcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ljbXB2Ni5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2dyb3VwLWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JoYXNodGFibGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2poYXNoLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2dyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2dzby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3Bfc3RhdGVzLmhcdTAwM2VcbkBAIC0xMjA2LDkgJiM0MzsxMjEzLDYxIEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXG4gXHRyZXR1cm4gbWVtY21wKGlwaF9uZXcgJiM0MzsgMSwgaXBfaGRyKGUtXHUwMDNlc2tiKSAmIzQzOyAxLCBpaGwgLSBzaXplb2YoKmlwaF9vcmlnKSkgPT0gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXG4mIzQzO1x0XHRcdCAgICAgIGJvb2wgZnJhZ21lbnQpXG4mIzQzO3tcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbiYjNDM7XHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1xuJiM0MztcdGN0ID0gbmZfY3RfZ2V0KGUtXHUwMDNlc2tiLCBcdTAwMjZjdGluZm8pO1xuJiM0MztcdGlmIChjdCBcdTAwMjZcdTAwMjYgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkge1xuJiM0MztcdFx0aWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bylcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdGlmIChmcmFnbWVudClcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHByb3RvKSB7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX1RDUDoge1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgdGhsZW47XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRhdGFfbGVuIFx1MDAzYyBzaXplb2YoKnRoKSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRcdHRobGVuID0gX190Y3BfaGRybGVuKHRoKTtcbiYjNDM7XHRcdGlmICh0aGxlbiBcdTAwM2Mgc2l6ZW9mKCp0aCkgfHwgZGF0YV9sZW4gXHUwMDNjIHRobGVuKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0fVxuJiM0MztcdGNhc2UgSVBQUk9UT19VRFA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX0lDTVA6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXBoZHIpO1xuJiM0MztcdGNhc2UgSVBQUk9UT19JQ01QVjY6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fU0NUUDpcbiYjNDM7XHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XG4mIzQzO1x0Y2FzZSBJUFBST1RPX0dSRTpcbiYjNDM7XHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgZ3JlX2Jhc2VfaGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fQUg6XG4mIzQzO1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGlwX2F1dGhfaGRyKTtcbiYjNDM7XHRjYXNlIElQUFJPVE9fRVNQOlxuJiM0MztcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpcF9lc3BfaGRyKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuIFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4ge1xuJiM0MztcdGJvb2wgZnJhZ21lbnQ7XG4gXHR1bnNpZ25lZCBpbnQgaWhsO1xuIFxuIFx0aWYgKGRhdGFfbGVuIFx1MDAzYyBzaXplb2YoKmlwaCkpXG5AQCAtMTIyNiwxMCAmIzQzOzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRpZiAobnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzQzO1x0ZnJhZ21lbnQgPSBpcGgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX01GIHwgSVBfT0ZGU0VUKTtcbiYjNDM7XG4gXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxuIFx0ICogcmVjb21waWxlICYjNDM7IHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cbiBcdCAqL1xuLVx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpO1xuJiM0MztcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICYjNDM7IGlobCwgZGF0YV9sZW4gLSBpaGwsIGUsXG4mIzQzO1x0XHRcdFx0IGlwaC1cdTAwM2Vwcm90b2NvbCwgZnJhZ21lbnQpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLFxuQEAgLTEyNzMsNiAmIzQzOzEzMzYsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRjb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7XG4gXHR1OCBvcmlnX25leHRoZHIgPSBpcDZfb3JpZy1cdTAwM2VuZXh0aGRyO1xuIFx0dTggbmV3X25leHRoZHIgPSBpcDZfbmV3LVx1MDAzZW5leHRoZHI7XG4mIzQzO1x0Ym9vbCBmcmFnbWVudCA9IGZhbHNlO1xuIFxuIFx0aWYgKG5ld19uZXh0aGRyICE9IG9yaWdfbmV4dGhkcilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyODYsNyAmIzQzOzEzNTAsOCBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXHRcdGludCBoZHJsZW47XG4gXG4gXHRcdGlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdFx0XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsXG4mIzQzO1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCYjNDM7JiM0MzsgXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyOTcsNiAmIzQzOzEzNjIsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXG4gXHRcdHN3aXRjaCAob3JpZ19uZXh0aGRyKSB7XG4gXHRcdGNhc2UgTkVYVEhEUl9GUkFHTUVOVDpcbiYjNDM7XHRcdFx0ZnJhZ21lbnQgPSB0cnVlO1xuIFx0XHRcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5FWFRIRFJfQVVUSDpcbkBAIC0xMzIzLDcgJiM0MzsxMzg5LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0XHRkYXRhICYjNDM7PSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsIG5ld19uZXh0aGRyLCBmcmFnbWVudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG5pbmRleCA4YTQ0NzJmZDc3ZDlmLi5lMzE1ZDM1ZjczZDRhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbkBAIC0xMDY3LDYgJiM0MzsxMDY3LDE3IEBAIHN0YXRpYyBib29sIG5mdF9wYXlsb2FkX2NzdW1fd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4mIzQzO1x0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZ0X3BheWxvYWRfc2V0ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSAmIzQzOyBzaXplb2YoX19iZTMyKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBrdC1cdTAwM2V0cHJvdCAhPSBJUFBST1RPX1RDUClcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcHJpdi1cdTAwM2VvZmZzZXQgXHUwMDNlIGRvZmYgfHwgcHJpdi1cdTAwM2VvZmZzZXQgJiM0MzsgcHJpdi1cdTAwM2VsZW4gXHUwMDNjPSBkb2ZmO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTEwNSw2ICYjNDM7MTExNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdGNhc2UgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUjpcbiBcdFx0aWYgKCEocGt0LVx1MDAzZWZsYWdzIFx1MDAyNiBORlRfUEtUSU5GT19MNFBST1RPKSB8fCBwa3QtXHUwMDNlZnJhZ29mZilcbiBcdFx0XHRnb3RvIGVycjtcbiYjNDM7XHRcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXG4mIzQzO1x0XHRcdGdvdG8gZXJyO1xuIFx0XHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mcW5sX3JlY3ZfdmVyZGljdCYjMzQ7LAogICAgJiMzNDtuZnRfcGF5bG9hZF9zZXRfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNmNmMTFkNjBiN2M4NGNjZGM3ZTgwZTE4ZDIyY2RlZmMzZTJjM2NlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwMjo0NjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCmluZGV4IGI4YWFmMzljYjRkOGUuLmUxMzVlZDc2MmI1YzggMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwpAQCAtMjgsMTAgJiM0MzsyOCwxNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb21tb24uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaWNtcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pY21wdjYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NjdHAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jZ3JvdXAtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JoYXNodGFibGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9qaGFzaC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90Y3AuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdWRwLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9ncmUuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZ3NvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NvY2suaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwX3N0YXRlcy5oJmd0OwpAQCAtMTIwNiw5ICYjNDM7MTIxMyw2MSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LAogCXJldHVybiBtZW1jbXAoaXBoX25ldyAmIzQzOyAxLCBpcF9oZHIoZS0mZ3Q7c2tiKSAmIzQzOyAxLCBpaGwgLSBzaXplb2YoKmlwaF9vcmlnKSkgPT0gMDsKIH0KIAomIzQzO3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sCiYjNDM7CQkJICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplLCB1OCBwcm90bywKJiM0MzsJCQkgICAgICBib29sIGZyYWdtZW50KQomIzQzO3sKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKQomIzQzOwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsKJiM0MzsJY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwomIzQzOwljdCA9IG5mX2N0X2dldChlLSZndDtza2IsICZhbXA7Y3RpbmZvKTsKJiM0MzsJaWYgKGN0ICZhbXA7JmFtcDsgIW5mX2N0X2lzX3RlbXBsYXRlKGN0KSkgewomIzQzOwkJaWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bykKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJaWYgKGZyYWdtZW50KQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXN3aXRjaCAocHJvdG8pIHsKJiM0MzsJY2FzZSBJUFBST1RPX1RDUDogewomIzQzOwkJY29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7CiYjNDM7CQl1bnNpZ25lZCBpbnQgdGhsZW47CiYjNDM7CiYjNDM7CQlpZiAoZGF0YV9sZW4gJmx0OyBzaXplb2YoKnRoKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQl0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7CiYjNDM7CQlpZiAodGhsZW4gJmx0OyBzaXplb2YoKnRoKSB8fCBkYXRhX2xlbiAmbHQ7IHRobGVuKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CWNhc2UgSVBQUk9UT19VRFA6CiYjNDM7CQlyZXR1cm4gZGF0YV9sZW4gJmd0Oz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fSUNNUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IGljbXBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fSUNNUFY2OgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fU0NUUDoKJiM0MzsJCXJldHVybiBkYXRhX2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwomIzQzOwljYXNlIElQUFJPVE9fR1JFOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgZ3JlX2Jhc2VfaGRyKTsKJiM0MzsJY2FzZSBJUFBST1RPX0FIOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaXBfYXV0aF9oZHIpOwomIzQzOwljYXNlIElQUFJPVE9fRVNQOgomIzQzOwkJcmV0dXJuIGRhdGFfbGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaXBfZXNwX2hkcik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKQogewomIzQzOwlib29sIGZyYWdtZW50OwogCXVuc2lnbmVkIGludCBpaGw7CiAKIAlpZiAoZGF0YV9sZW4gJmx0OyBzaXplb2YoKmlwaCkpCkBAIC0xMjI2LDEwICYjNDM7MTI4NSwxNCBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDQoY29uc3Qgc3RydWN0IGlwaGRyICppcGgsIHVuc2lnbmVkIGludCBkYXRhX2xlbiwKIAlpZiAobnRvaHMoaXBoLSZndDt0b3RfbGVuKSAhPSBkYXRhX2xlbikKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWZyYWdtZW50ID0gaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9NRiB8IElQX09GRlNFVCk7CiYjNDM7CiAJLyogc3VwcG9ydCBmb3IgaXBvcHRzIG1hbmdsaW5nIHdvdWxkIHJlcXVpcmUKIAkgKiByZWNvbXBpbGUgJiM0Mzsgc2tiIHRyYW5zcG9ydCBoZWFkZXIgdXBkYXRlLgogCSAqLwotCXJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKTsKJiM0MzsJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIG5mcW5sX3ZhbGlkYXRlX2w0KChjb25zdCB1OCAqKWlwaCAmIzQzOyBpaGwsIGRhdGFfbGVuIC0gaWhsLCBlLAomIzQzOwkJCQkgaXBoLSZndDtwcm90b2NvbCwgZnJhZ21lbnQpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9vbmVfZXh0aGRyKGNvbnN0IHU4ICpkYXRhLApAQCAtMTI3Myw2ICYjNDM7MTMzNiw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldywKIAljb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7CiAJdTggb3JpZ19uZXh0aGRyID0gaXA2X29yaWctJmd0O25leHRoZHI7CiAJdTggbmV3X25leHRoZHIgPSBpcDZfbmV3LSZndDtuZXh0aGRyOwomIzQzOwlib29sIGZyYWdtZW50ID0gZmFsc2U7CiAKIAlpZiAobmV3X25leHRoZHIgIT0gb3JpZ19uZXh0aGRyKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMjg2LDcgJiM0MzsxMzUwLDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCQlpbnQgaGRybGVuOwogCiAJCWlmIChvcmlnX25leHRoZHIgPT0gTkVYVEhEUl9OT05FKQotCQkJcmV0dXJuIHRydWU7CiYjNDM7CQkJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLAomIzQzOwkJCQkJCSBuZXdfbmV4dGhkciwgZnJhZ21lbnQpOwogCiAJCWlmICh1bmxpa2VseShleHRoZHJfY250JiM0MzsmIzQzOyAmZ3Q7PSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0xMjk3LDYgJiM0MzsxMzYyLDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LAogCiAJCXN3aXRjaCAob3JpZ19uZXh0aGRyKSB7CiAJCWNhc2UgTkVYVEhEUl9GUkFHTUVOVDoKJiM0MzsJCQlmcmFnbWVudCA9IHRydWU7CiAJCQloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGZyYWdfaGRyKTsKIAkJCWJyZWFrOwogCQljYXNlIE5FWFRIRFJfQVVUSDoKQEAgLTEzMjMsNyAmIzQzOzEzODksNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsCiAJCWRhdGEgJiM0Mzs9IGhkcmxlbjsKIAl9CiAKLQlyZXR1cm4gdHJ1ZTsKJiM0MzsJcmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpOwogfQogCiBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcDYoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNiwgdW5zaWduZWQgaW50IGRhdGFfbGVuLApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jCmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMKQEAgLTEwNjcsNiAmIzQzOzEwNjcsMTcgQEAgc3RhdGljIGJvb2wgbmZ0X3BheWxvYWRfY3N1bV93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsCiYjNDM7CQkJICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgZG9mZiA9IG9mZnNldG9mKHN0cnVjdCB0Y3BoZHIsIGFja19zZXEpICYjNDM7IHNpemVvZihfX2JlMzIpOwomIzQzOwomIzQzOwlpZiAocGt0LSZndDt0cHJvdCAhPSBJUFBST1RPX1RDUCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7b2Zmc2V0ICZndDsgZG9mZiB8fCBwcml2LSZndDtvZmZzZXQgJiM0MzsgcHJpdi0mZ3Q7bGVuICZsdDs9IGRvZmY7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCQkJCSBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KQpAQCAtMTEwNSw2ICYjNDM7MTExNiw4IEBAIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwciwKIAljYXNlIE5GVF9QQVlMT0FEX1RSQU5TUE9SVF9IRUFERVI6CiAJCWlmICghKHBrdC0mZ3Q7ZmxhZ3MgJmFtcDsgTkZUX1BLVElORk9fTDRQUk9UTykgfHwgcGt0LSZndDtmcmFnb2ZmKQogCQkJZ290byBlcnI7CiYjNDM7CQlpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKQomIzQzOwkJCWdvdG8gZXJyOwogCQlvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTsKIAkJYnJlYWs7CiAJY2FzZSBORlRfUEFZTE9BRF9JTk5FUl9IRUFERVI6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCYjMzk7cyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNgLCB3aGljaCB0ZWxscyBtZSBpdOKAmXMgbWVzc2luZyB3aXRoIHRoZSBjb3JlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIHNvbWUgYWRkZWQgdmFsaWRhdGlvbiBnb2luZyBvbi4gSW4gYG5mbmV0bGlua19xdWV1ZS5jYCwgdGhlcmUmIzM5O3MgYG5mcW5sX3ZhbGlkYXRlX2w0YCwgd2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyBmb3IgTGF5ZXIgNCBoZWFkZXIgdmFsaWRhdGlvbi4gQW5kIHRoZW4gaW4gYG5mdF9wYXlsb2FkLmNgLCBgbmZ0X3RoX3dyaXRlX29rYCBzb3VuZHMgbGlrZSBhIGNoZWNrIHRvIHNlZSBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYXJlIGFsbG93ZWQuIEZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIG5ldGZpbHRlciBjaGFuZ2VzLCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLgoKTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGFuZCBmb2N1cyBvbiB0aGUgY29uZmlnIG9wdGlvbnMgYW5kIHN5bWJvbHMgaW52b2x2ZWQuIEZpcnN0LCBJ4oCZbGwgbG9vayBhdCBgbmZuZXRsaW5rX3F1ZXVlLmNgLiBJIHNlZSBgbmZxbmxfdmFsaWRhdGVfbDRgIGlzIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfaXA0YCBhbmQgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAsIHdoaWNoIGlzIGl0c2VsZiBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNmAuIEhtbSwgYW5kIHRoZXNlIHVsdGltYXRlbHkgYXJlIHRyaWdnZXJlZCBieSBgbmZxbmxfcmVjdl92ZXJkaWN0YCAtJmd0OyBgbmZxbmxfbWFuZ2xlYCAtJmd0OyBgbmZxbmxfdmFsaWRhdGVfaXA0YCAvIGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIYW5nIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2sgYG5mbmV0bGlua19xdWV1ZS5jYCBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBleGFjdGx5IHdoZXJlIGBuZnFubF92YWxpZGF0ZV9pcDRgIGFuZCBgbmZxbmxfdmFsaWRhdGVfaXA2YCBhcmUgY2FsbGVkLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBwYXRoIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSB2YWxpZGF0aW9ucywgYW5kIEkmIzM5O20gbm90IGdvaW5nIHRvIG1pc3MgYSBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX3ZhbGlkYXRlX2lwNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMjE2PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY2LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxMjY3OnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY4LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDExPXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTUtXHRjYXNlIE5GUFJPVE9fSVBWNDpcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNjpcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwNChkYXRhLCBkYXRhX2xlbiwgZSk7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTctXHRjYXNlIE5GUFJPVE9fSVBWNjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgKioKCk9rYXksIHNvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY3VycmVudGx5IG9uIHRoZSBzdGFjay4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkICpmcm9tKi4gVGhhdCBpcywgSSB3YW50IHRvIHRyYWNlIGJhY2sgdXAgdGhlIGNhbGwgY2hhaW4gdG8gc2VlIHdoYXQgZnVuY3Rpb24mIzM5O3MgdHJpZ2dlcmluZyBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgY2FsbDsgd2hlcmUgZG9lcyB0aGlzIHZhbGlkYXRpb24gZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnFubF92YWxpZGF0ZV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk1PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDEwLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDExOnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTQxMi1cdFx0XHRcdCBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDI5PW5mcW5sX21hbmdsZSh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sIHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgaW50IGRpZmYpXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDM1LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDM2Olx0aWYgKCFuZnFubF92YWxpZGF0ZV93cml0ZShkYXRhLCBkYXRhX2xlbiwgZSkpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MzctXHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgYG5mcW5sX21hbmdsZWAgQ2FsbGVycyoqCgpPa2F5LCBzbyBgbmZxbmxfbWFuZ2xlYCBpcyB0aGUgZnVuY3Rpb24gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGguIFRoYXQmIzM5O3Mgb3VyIGZvY2FsIHBvaW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBpcyB0byBpbW1lZGlhdGVseSBpZGVudGlmeSBpdHMgY2FsbGVycy4gV2hvJiMzOTtzIGluaXRpYXRpbmcgdGhpcyBmdW5jdGlvbj8gV2hhdCBjb250ZXh0cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIGBuZnFubF9tYW5nbGVgLiBGcm9tIHRoZXJlIEkgd2lsbCBsaWtlbHkgYmUgYWJsZSB0byBtb3ZlIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyZ3VtZW50cywgYW5kIHB1cnBvc2UsIG9mIHRoZSBjYWxsLiBJIHdpbGwgdGhlbiBwcm9iYWJseSBiZSBhYmxlIHRvIHN0YXJ0IHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX21hbmdsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNDI4PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQyOTpuZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDMwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3ODU9c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE4MzQtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE4MzU6XHRcdGlmIChuZnFubF9tYW5nbGUobmxhX2RhdGEobmZxYVtORlFBX1BBWUxPQURdKSxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTgzNi1cdFx0XHRcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHBpZWNlZCB0b2dldGhlciBhcyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggaXQ6CgoqKkRlY29kaW5nIHRoZSBORlFVRVVFIFZlcmRpY3QgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIHBhdGggb2YgaG93IGEgdmVyZGljdCBnZXRzIGFwcGxpZWQgaW4gdGhlIE5ldGZpbHRlciBxdWV1ZS4gIFRoZSBjcnVjaWFsIHBhcnQgc3RhcnRzIHdpdGggYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCwgaXMgdGhlIGhhbmRsZXIgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgbmV0bGluayBtZXNzYWdlcyBvZiB0aGUgdHlwZSBgTkZRTkxfTVNHX1ZFUkRJQ1RgLiAgQW5kLCBpZiBJJiMzOTttIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhpcyBpcyBhIHBhdGggdGhhdCBjb21lcyBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBTbywgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gc2VuZHMgYSBtZXNzYWdlIHdpdGggYSB2ZXJkaWN0LCBhbmQgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSByZWNlaXZlcyBhbmQgaW50ZXJwcmV0cyBpdC4KCk5vdywgaW5zaWRlIHRoaXMgYG5mcW5sX3JlY3ZfdmVyZGljdGAgZnVuY3Rpb24gSSBjYW4gc2VlIHRoYXQgaXQgdGhlbiBjYWxscyBgbmZxbmxfbWFuZ2xlYC4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIGBuZnFubF9tYW5nbGVgLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3R1YWwgcGFja2V0IG1hbmdsaW5nIGhhcHBlbnMsIHJpZ2h0PwoKVGhpbmtpbmcgbW9yZSBicm9hZGx5IGFib3V0IHRoaXMsIEkgc2VlIHRoYXQgSSYjMzk7bSBlbmRpbmcgdXAgaW4gYG5mdF9wYXlsb2FkLmNgLCBhbmQgSSYjMzk7bSByZW1pbmRlZCB0aGF0IGl0IGlzIHdoZXJlIGBuZnRfdGhfd3JpdGVfb2tgIGlzIGNhbGxlZCBieSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcGF5bG9hZF9zZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM9MTA3MD1zdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwODAtXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM6MTA4MTpzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA4Mi1cdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jPTEyNzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3BheWxvYWRfc2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3Ni1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9wYXlsb2FkX3NldCkpLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jOjEyNzc6XHQuZXZhbFx0XHQ9IG5mdF9wYXlsb2FkX3NldF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEyNzgtXHQuaW5pdFx0XHQ9IG5mdF9wYXlsb2FkX3NldF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDk0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBuZnRhYmxlcyBFeHByZXNzaW9uIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IGBuZnRhYmxlc2AgaGFuZGxlcyB0aGUgYG5mdF9wYXlsb2FkX3NldGAgZXhwcmVzc2lvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgZnVuY3Rpb24sIHdoaWNoIEkgdW5kZXJzdGFuZCBpcyB0aGUgY29yZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIGV4cHJlc3Npb24uIFRoZXJlZm9yZSwgdGhhdCBmdW5jdGlvbiwgYW5kIGFsc28gdGhlIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGZ1bmN0aW9uIGFyZSB0aGUgZm9jdXMgaGVyZS4KCkluaXRpYWxseSwgYG5mcW5sX3JlY3ZfdmVyZGljdGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIGl0JiMzOTtzIGEgbmV0bGluayBoYW5kbGVyLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHNpZ24gaW4gdGhpcyBjb250ZXh0LiBIb3dldmVyLCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIGEgZmxhZyBnaXZlbiB0aGUgcHJvbXB0JiMzOTtzIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMgZW50cnlwb2ludHMgdG8gdGhlIEFQSS4gVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBmdW5jdGlvbnMuIFN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgZG9uJiMzOTt0IGdldCBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXQsICp3YWl0KiwgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCwgd2hpbGUgc3RhdGljLCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZnRfZXhwcl9vcHMuZXZhbGAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCwgZGVzcGl0ZSBiZWluZyBzdGF0aWMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYW4gb3BzIGNhbGxiYWNrIGNoYW5nZXMgZXZlcnl0aGluZyEgSXQmIzM5O3MgYSBrZXkgZW50cnlwb2ludCwgZXZlbiBpZiBpdCBoYXMgdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24uCgpTbyBub3cgSSYjMzk7bSBiYWNrIHRvIHNxdWFyZSBvbmUuIElzIHRoZXJlIGEgbm9uLXN0YXRpYywgZXF1aXZhbGVudCBmdW5jdGlvbj8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgaW5kZWVkIHN0YXRpYy4gT2theSwgeWVzLCBpdCAqaXMqIHN0YXRpYy4gQnV0IGl0IGlzIGFuIG9wcyBjYWxsYmFjay4gQW5kLCBqdXN0IHRvIGNvbmZpcm0sIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIGFsc28gc3RhdGljLiBSaWdodCwgdGhhdCBtYWtlcyB0aGluZ3MgZXZlbiBtb3JlIGludGVyZXN0aW5nLCBiZWNhdXNlIHRoZSBwcm9tcHQgc3VnZ2VzdHMgdGhhdCB0aGUgc3RhdGljIG5hdHVyZSBpcyBub3Qgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mcW5sX3JlY3ZfdmVyZGljdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNjY5PXN0YXRpYyBpbnQgbmZxX2lkX2FmdGVyKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IG1heClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NzMtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE2NzQ6c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY3NS1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTc1MD1zdGF0aWMgaW50IG5mcWFfcGFyc2VfYnJpZGdlKHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnksXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzg0LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNzg1OnN0YXRpYyBpbnQgbmZxbmxfcmVjdl92ZXJkaWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE3ODYtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IG5mcWFbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE5OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mcW5sX2NiW05GUU5MX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cdFtORlFOTF9NU0dfVkVSRElDVF1cdD0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk4Olx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5OS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTIwMDktXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoyMDEwOlx0XHQuY2FsbFx0XHQ9IG5mcW5sX3JlY3ZfdmVyZGljdF9iYXRjaCxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAxMS1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX1JDVSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ2FsbGJhY2sgU3ltYm9scyBpbiB0aGUgS2VybmVsJiMzOTtzIE5ldGZpbHRlciBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlc2Ugc3RhdGljIHN5bWJvbHMgdXNlZCBhcyBjYWxsYmFja3Mgd2l0aGluIHRoZSBvcGVyYXRpb24gc3RydWN0dXJlcywgcmlnaHQ/IFRoZXkmIzM5O3JlIHN0YXRpYywgc28gdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcGVyZmVjdCBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBsb2dpYyB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbi4gTm8gaXNzdWVzIHRoZXJlIGZyb20gYSBzeW1ib2wgcGVyc3BlY3RpdmUuIE1ha2VzIHNlbnNlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb25maWcgb3B0aW9ucyB0aWVkIHRvIHRoZXNlLiBPa2F5LCBzbyBmb3IgYG5mbmV0bGlua19xdWV1ZS5jYCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBHb3QgaXQuIEFuZCBmb3IgYG5mdF9wYXlsb2FkLmNgLCBpdCYjMzk7cyB0aGUgYENPTkZJR19ORlRfUEFZTE9BRGAgb3B0aW9uIHdlIG5lZWQgdG8gY29uZmlybS4gRWFzeSBlbm91Z2guCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgZ28gYmFjayBpbnRvIEtjb25maWcgYW5kIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBmb3IgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYC4gR290dGEgZG90IGFsbCB0aGUgJiMzNDtpJiMzNDtzIGFuZCBjcm9zcyBhbGwgdGhlICYjMzQ7dCYjMzQ7cyB3aGVuIGRlYWxpbmcgd2l0aCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00Nj1jb25maWcgTkVURklMVEVSX05FVExJTktfQUNDVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NDpjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBoZXJlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIGl0cyByZWxhdGlvbnNoaXBzIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSBrbm93IHRoaXMgaXMgYSBjb3JlIHBpZWNlIG9mIHRoZSBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLCBzbyB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGlzIHBhcmFtb3VudC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciBhbGwgdGhlIGRpZmZlcmVudCBxdWV1aW5nIG9wdGlvbnMgYXZhaWxhYmxlLCBhbmQgdGhpcyBwYXJ0aWN1bGFyIG5ldGxpbmstYmFzZWQgYXBwcm9hY2ggd2lsbCBkZWZpbml0ZWx5IGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBjb21wb25lbnRzIGl0IG5lZWRzIHRvIGludGVncmF0ZSB3aXRoLCBvciBjb252ZXJzZWx5LCBkb2VzIGl0IHN1cGVyc2VkZSBvbGRlciBtZXRob2RzPyBUaGUgcG90ZW50aWFsIGZvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBpcyBhbHdheXMgYSBmYWN0b3IuIFRoZW4sIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZWdyYXRpb24sIGxpa2UgdXNlciBzcGFjZSB0b29scywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgYW5kIHRoZSB2YXJpb3VzIGhvb2tzIG5ldGZpbHRlciBvZmZlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBkZXByZWNhdGlvbiBvciBwbGFubmVkIGZ1dHVyZSBjaGFuZ2VzLCB3aGljaCBtaWdodCBuZWNlc3NpdGF0ZSBhbHRlcmluZyBjdXJyZW50IGNvbmZpZ3VyYXRpb25zLiBGaW5hbGx5LCBJ4oCZbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBkZXBlbmRlbmNpZXMgYWdhaW5zdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlY2VudCBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gYmUgc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgaW50cmljYWNpZXMuIFRoaXMgdGhvcm91Z2ggcmV2aWV3IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIGNvbmZpZ3VyYXRpb25zIGludm9sdmluZyB0aGlzIGtlcm5lbCBmZWF0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ2PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdyoqCgpSaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSBuZWVkIHRvIHBhdXNlIGFuZCB0YWtlIGEgc3RlcCBiYWNrLiBJIGhhdmUgdG8gcmVtaW5kIG15c2VsZiB0aGF0LCB3aXRoIGNvbXBsZXggZW1iZWRkZWQgc3lzdGVtcyBhbmQga2VybmVsIGNvbmZpZ3VyYXRpb24sIEkgc2hvdWxkbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSAqdGhvcm91Z2hseSogcmVhZCB0aGUgYEtjb25maWdgIGZpbGUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIGNydWNpYWwgcGllY2UuIEl0IGRpY3RhdGVzIGFsbCB0aGUgZmVhdHVyZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCB3aXRob3V0IHRoYXQgZGV0YWlsZWQgdW5kZXJzdGFuZGluZywgYW55IGFzc3VtcHRpb25zIEkgbWFrZSBhcmUgcHJvYmFibHkgZ29pbmcgdG8gYmUgd3JvbmcuIEkga25vdyBJJiMzOTttIGFscmVhZHkgZGVlcCBpbiB0aGUgd2VlZHMgd2l0aCB0aGlzIHByb2JsZW0sIGJ1dCBJIGhhdmUgdG8gdHJ1c3QgdGhlIHByb2Nlc3MuIFJlYWRpbmcgdGhlIGBLY29uZmlnYCBub3cgd2lsbCBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIGVmZm9ydCBpbiB0aGUgbG9uZyBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDUyOlx0XHQgIGZvciBleHRlbmRlZCBhY2NvdW50aW5nIHZpYSBORk5FVExJTksuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gIDU3Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2MDpcdFx0ICBmb3IgcXVldWVpbmcgcGFja2V0cyB2aWEgTkZORVRMSU5LLlxuICA2MTpcdFxuICA2MjpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbiAgNjM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDY0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgNjU6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuICA2NjpcdFx0aGVscFxuICA2NzpcdFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUga2VybmVsIHdpbGwgaW5jbHVkZSBzdXBwb3J0XG4gIDY4Olx0XHQgIGZvciBsb2dnaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgbWFwIG9mIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoZSBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIGZlYXR1cmUsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBnb3QgaXRzIGhvb2tzIGluIHRoZSBhZHZhbmNlZCBuZXRmaWx0ZXIgY2FwYWJpbGl0aWVzLiBJdCYjMzk7cyBhbG1vc3QgYSBnaXZlbiwgYnV0IEkgd2FudCB0byBleHBsaWNpdGx5IGNvbmZpcm0gdGhhdCBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBhIHByZXJlcXVpc2l0ZS4gQmVzdCBwcmFjdGljZSB0byBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIGRlcGVuZGVuY2llczsgeW91IGRvbiYjMzk7dCB3YW50IHRvIGJlIGRlYnVnZ2luZyBhIG1pc2NvbmZpZ3VyYXRpb24gbGF0ZXIuIE5vdyB0aGF0IEkgaGF2ZSB2ZXJpZmllZCB0aGF0LCBJIHdhbnQgdG8gZXhwbG9yZSBgTkZUX1BBWUxPQURgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GVF9QQVlMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgbGlrZWx5IG5lc3RsZWQgd2l0aGluIG9uZSBvZiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSBlaXRoZXIgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2Agb3IsIHBlcmhhcHMgbW9yZSBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJUHY0LCBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBMZXQmIzM5O3MgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB3aGVyZSB0aGUgcmVsYXRlZCBjb2RlIGlzIGRlZmluZWQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBgTWFrZWZpbGVgIGFzc29jaWF0ZWQgd2l0aCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgYXMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGVkdWNlIHRoZSByZWxldmFudCBtb2R1bGUgYW5kIGNvbmZpZ3VyYXRpb24gaGllcmFyY2h5LiBIb3BlZnVsbHkgdGhhdCBnaXZlcyBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcGF5bG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4OTpcdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MC1cdFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjYxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3BheWxvYWQub2Agb2JqZWN0IGZpbGUsIGFuZCBpdCYjMzk7cyBjbGVhcmx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AgYnVpbGQgdGFyZ2V0LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvLCAmIzM0O09rYXksIHdoYXQmIzM5O3MgZHJpdmluZyB0aGUgaW5jbHVzaW9uIG9mIGBuZl90YWJsZXNgIGluIHRoZSBmaXJzdCBwbGFjZT8mIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBrZXJuZWwgdGhhdCBlbmFibGUgdGhpcyBjb21wb25lbnQuIEl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiB0byBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIGBuZl90YWJsZXNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXMtb2JqcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcdCYjNDM7PSBuZl9kdXBfbmV0ZGV2Lm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg2LSMgbmZfdGFibGVzXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cdFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X2N0X2Zhc3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGUgY2x1ZSBpcyByaWdodCB0aGVyZTogYG9iai0kKENPTkZJR19ORl9UQUJMRVMpICYjNDM7PSBuZl90YWJsZXMub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29tcGlsYXRpb24gb2YgdGhlIGBuZl90YWJsZXMub2Agb2JqZWN0IGZpbGUgaXMgY29uZGl0aW9uYWwsIGRlcGVuZGVudCBvbiB0aGUgYENPTkZJR19ORl9UQUJMRVNgIEtjb25maWcgb3B0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCBzb3VuZHMgbGlrZSBgQ09ORklHX05GX1RBQkxFU2AgbWF5IGJlIHRpZWQgaW50byBhIGJ1aWxkIG9wdGlvbiwgc28gaWYgaXQmIzM5O3Mgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIG9iamVjdCBmaWxlIHdpbGwgYmUgaW5jbHVkZWQsIGFuZCBvdGhlcndpc2UsIGl0IHdvbiYjMzk7dCBiZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBtb2R1bGFyaXppbmcga2VybmVsIGNvbXBvbmVudHMuIEtub3dpbmcgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIGRlYnVnZ2luZyBidWlsZCBpc3N1ZXMsIHVuZGVyc3RhbmRpbmcgbW9kdWxlIGRlcGVuZGVuY2llcywgb3Igb3B0aW1pemluZyBrZXJuZWwgc2l6ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlcy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg0PW9iai0kKENPTkZJR19ORl9EVVBfTkVUREVWKVx0JiM0Mzs9IG5mX2R1cF9uZXRkZXYub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODc6bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVx0XHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVx0XHQgIG5mdF9jb3VudGVyLm8gbmZ0X29ianJlZi5vIG5mdF9pbm5lci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjkyOlx0XHQgIG5mdF9jaGFpbl9yb3V0ZS5vIG5mX3RhYmxlc19vZmZsb2FkLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTMtXHRcdCAgbmZ0X3NldF9oYXNoLm8gbmZ0X3NldF9iaXRtYXAubyBuZnRfc2V0X3JidHJlZS5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5ODpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTk5LWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwNDpuZl90YWJsZXMtb2JqcyAmIzQzOz0gbmZ0X2N0X2Zhc3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDUtZW5kaWZcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA2PWVuZGlmXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNy1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19ORl9UQUJMRVMpXHRcdCYjNDM7PSBuZl90YWJsZXMub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDktb2JqLSQoQ09ORklHX05GVF9DT01QQVQpXHQmIzQzOz0gbmZ0X2NvbXBhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODM1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5GX1RBQkxFUyBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyB3aG9sZSB0aGluZyBpcyBgQ09ORklHX05GX1RBQkxFU2AuIFRoYXQmIzM5O3MgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIG5pdHR5LWdyaXR0eSwgbXkgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgc2NvcGUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIGBORl9UQUJMRVNgIGlzIHJhcmVseSBhbiBpc2xhbmQsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24uIFdoYXQgb3RoZXIgY29uZmlncywgc3ViLW9wdGlvbnMgb3Iga2NvbmZpZyBkZWZpbml0aW9ucyBhcmUgdHJpZ2dlcmVkIGJ5IGl0cyBpbmNsdXNpb24uIElzIGl0IGRlcGVuZGVudCBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZmVhdHVyZXMsIHN1Y2ggYXMgbmV0ZmlsdGVyLCBpcHNldHMgb3IgY29ubnRyYWNrLiBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlLgoKSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgZW5hYmxlZCBjb3JyZWN0bHksIGFuZCBob3cgYE5GX1RBQkxFU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldGZpbHRlciBmcmFtZXdvcmsuIEFuZCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGN1c3RvbSBrZXJuZWwgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcGFydGljdWxhcmx5IGFyb3VuZCBsaW5lIDQ1NS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgc29tZSBrZXkgZGVjaXNpb25zIGFyZSBtYWRlIGluIHRlcm1zIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcywgYW5kIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBtaWdodCBiZSByZWxldmFudCB0byB0aGUgaXNzdWUgSSYjMzk7bSBpbnZlc3RpZ2F0aW5nLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZWFkIHRoaXMgc2VjdGlvbiwgZm9jdXNpbmcgb24gdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NTA6XHRjb25maWcgTkVURklMVEVSX1NZTlBST1hZXG4gNDUxOlx0XHR0cmlzdGF0ZVxuIDQ1MjpcdFxuIDQ1MzpcdGVuZGlmICMgTkZfQ09OTlRSQUNLXG4gNDU0Olx0XG4gNDU1Olx0Y29uZmlnIE5GX1RBQkxFU1xuIDQ1NjpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gNDU3Olx0XHRzZWxlY3QgTkVUX0NSQzMyQ1xuIDQ1ODpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4gNDU5Olx0XHRoZWxwXG4gNDYwOlx0XHQgIG5mdGFibGVzIGlzIHRoZSBuZXcgcGFja2V0IGNsYXNzaWZpY2F0aW9uIGZyYW1ld29yayB0aGF0IGludGVuZHMgdG9cbiA0NjE6XHRcdCAgcmVwbGFjZSB0aGUgZXhpc3Rpbmcge2lwLGlwNixhcnAsZWJ9X3RhYmxlcyBpbmZyYXN0cnVjdHVyZS4gSXRcbiA0NjI6XHRcdCAgcHJvdmlkZXMgYSBwc2V1ZG8tc3RhdGUgbWFjaGluZSB3aXRoIGFuIGV4dGVuc2libGUgaW5zdHJ1Y3Rpb24tc2V0XG4gNDYzOlx0XHQgIChhbHNvIGtub3duIGFzIGV4cHJlc3Npb25zKSB0aGF0IHRoZSB1c2Vyc3BhY2UgJiMzOTtuZnQmIzM5OyB1dGlsaXR5XG4gNDY0Olx0XHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxuIDQ2NTpcdFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XG4gNDY2Olx0XHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXG4gNDY3Olx0XHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxuIDQ2ODpcdFxuIDQ2OTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBTbywgZnJvbSB3aGF0IEkmIzM5O20gZ2F0aGVyaW5nLCBgTkZfVEFCTEVTYCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgdXN1YWwgbmV0ZmlsdGVyIGNvcmUgY29tcG9uZW50cy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGtlZXBzIHRoaW5ncyBzdHJlYW1saW5lZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLCBzb21ldGhpbmcmIzM5O3MgcGluZ2luZyBpbiB0aGUgYmFjayBvZiBteSBtaW5kLiBBaCwgcmlnaHQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgcmVseWluZyBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYD8gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQuIFllcywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGF0IGJyYW5jaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwOTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQga2VybmVsIGRldmVsb3BtZW50LCBsaWtlbHkgd29ya2luZyB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKCioqS2NvbmZpZyBDaGVja3BvaW50KioKCkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSYjMzk7bSBkcmF3aW5nIGEgYmxhbmsgb24gdGhlIGV4YWN0IGZpbGUgSSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IHBhcnRpY3VsYXIgb3B0aW9uLiBJdCYjMzk7cyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHRoaW5nLCBzbyB0aGUgZmlyc3QgcGxhY2UgdGhhdCBzcHJpbmdzIHRvIG1pbmQsIGFsbW9zdCByZWZsZXhpdmVseSwgaXMgYG5ldC9LY29uZmlnYC4gSXQmIzM5O3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGF0IGZpbGUgYXMgbXkgZmlyc3Qgc3RvcC4gSXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNvbmZpcm0gb3IgcnVsZSBpdCBvdXQgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTIxOD1pZiBORVRGSUxURVJcbm5ldC9LY29uZmlnLTIxOS1cbm5ldC9LY29uZmlnOjIyMDpjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0FkdmFuY2VkIG5ldGZpbHRlciBjb25maWd1cmF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzQ0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkNoZWNraW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZmxhZ2dlZCBhcyBhIGJvb2xlYW4uIE5vdywgZ2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgc2V0dGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLiBUaGV5IG1pZ2h0IGJlIGluZGVwZW5kZW50LCBvciBvbmUgY291bGQgaW5mbHVlbmNlIHRoZSBvdGhlci4gVGltZSB0byBjb25maXJtIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdGhlbHBcbiAgNTE6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA1MjpcdFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDU2Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuICA1NzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gIDU4Olx0XHRoZWxwXG4gIDU5Olx0XHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcbiAgNjA6XHRcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cbiAgNjE6XHRcbiAgNjI6XHRjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXG4gIDYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuICA2NDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gIDY1Olx0XHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbiAgNjY6XHRcdGhlbHBcbiAgNjc6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxuICA2ODpcdFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXG4gIDY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzkwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIGNvbnNpZGVyYXRpb25zOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSYjMzk7bSB0aGlua2luZyB3ZSBkZWZpbml0ZWx5IG5lZWQgYE5FVEZJTFRFUl9BRFZBTkNFRGAgYW5kIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAuIFRob3NlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBhZHZhbmNlZCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eSwgcGFydGljdWxhcmx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV0bGluay1iYXNlZCBxdWV1aW5nLCB3aGljaCBzZWVtcyBsaWtlbHkgZ2l2ZW4gdGhlIGNvbnRleHQuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSBhbHNvIG5lZWQgYE5GX1RBQkxFU2AsIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbmZ0YWJsZXMgZnJhbWV3b3JrLCBhbmQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYG5mdF9wYXlsb2FkLmNgLgoKSG9sZCBvbi4uLiBzb21ldGhpbmcmIzM5O3MgbmFnZ2luZyBhdCBtZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBhYm91dCBgTkZfVEFCTEVTYCBhbmQgYG5mdF9wYXlsb2FkLmNgLiBSaWdodCwgb2YgY291cnNlLCB0aGUgY29tcGlsYXRpb24gb2YgYG5mdF9wYXlsb2FkLmNgIGlzIGNvbmRpdGlvbmFsOyBpdCYjMzk7cyAqb25seSogY29tcGlsZWQgd2hlbiBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCYjMzk7cyBhIGRlcGVuZGVuY3kuIFNvLCB5ZWFoLCBgTkZfVEFCTEVTYCBpcyBkZWZpbml0ZWx5IGVzc2VudGlhbCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxuIDQ1MTpcdFx0dHJpc3RhdGVcbiA0NTI6XHRcbiA0NTM6XHRlbmRpZiAjIE5GX0NPTk5UUkFDS1xuIDQ1NDpcdFxuIDQ1NTpcdGNvbmZpZyBORl9UQUJMRVNcbiA0NTY6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuIDQ1NzpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiA0NTg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuIDQ1OTpcdFx0aGVscFxuIDQ2MDpcdFx0ICBuZnRhYmxlcyBpcyB0aGUgbmV3IHBhY2tldCBjbGFzc2lmaWNhdGlvbiBmcmFtZXdvcmsgdGhhdCBpbnRlbmRzIHRvXG4gNDYxOlx0XHQgIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHtpcCxpcDYsYXJwLGVifV90YWJsZXMgaW5mcmFzdHJ1Y3R1cmUuIEl0XG4gNDYyOlx0XHQgIHByb3ZpZGVzIGEgcHNldWRvLXN0YXRlIG1hY2hpbmUgd2l0aCBhbiBleHRlbnNpYmxlIGluc3RydWN0aW9uLXNldFxuIDQ2MzpcdFx0ICAoYWxzbyBrbm93biBhcyBleHByZXNzaW9ucykgdGhhdCB0aGUgdXNlcnNwYWNlICYjMzk7bmZ0JiMzOTsgdXRpbGl0eVxuIDQ2NDpcdFx0ICAoaHR0cHM6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9uZnRhYmxlcykgdXNlcyB0byBidWlsZCB0aGVcbiA0NjU6XHRcdCAgcnVsZS1zZXQuIEl0IGFsc28gY29tZXMgd2l0aCB0aGUgZ2VuZXJpYyBzZXQgaW5mcmFzdHJ1Y3R1cmUgdGhhdFxuIDQ2NjpcdFx0ICBhbGxvd3MgeW91IHRvIGNvbnN0cnVjdCBtYXBwaW5ncyBiZXR3ZWVuIG1hdGNoaW5ncyBhbmQgYWN0aW9uc1xuIDQ2NzpcdFx0ICBmb3IgcGVyZm9ybWFuY2UgbG9va3Vwcy5cbiA0Njg6XHRcbiA0Njk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NDEKCQkJCQkJCW91dHB1dDogMTE1CgkJCQkJCQl0aG91Z2h0czogNjUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQcmlvcml0aXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgdGhyb3VnaCB0aGlzIHBhdGNoLCBhbmQgaXQgc2VlbXMgbGlrZSBgTkZfVEFCTEVTYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBzZWUgdGhhdCBgTkVURklMVEVSYCBpcyByZXF1aXJlZCwgd2hpY2ggaXMgc3RhbmRhcmQuIEFsc28sIHRoZSBwYXRjaCBtZW50aW9ucyBgTkVURklMVEVSX0FEVkFOQ0VEYCBhcyBhIGRlcGVuZGVuY3ksIHNvIHdlJiMzOTtsbCBuZWVkIHRoYXQgZW5hYmxlZCBhcyB3ZWxsLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRocy4gVGhlIGNvZGUgbW9kaWZpZXMgYG5mbmV0bGlua19xdWV1ZS5jYCBhbmQgYG5mdF9wYXlsb2FkLmNgLiBJbiBgbmZuZXRsaW5rX3F1ZXVlLmNgLCB0aGUgbmV3IGZ1bmN0aW9uIGBuZnFubF92YWxpZGF0ZV9sNGAgaXMgaW50cm9kdWNlZCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfaXA0YCBhbmQgYG5mcW5sX3ZhbGlkYXRlX2V4dGhkcmAuIFRoZXNlIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV93cml0ZWAsIHdoaWNoIGZlZWRzIGludG8gYG5mcW5sX21hbmdsZWAuICBUaGF0IHVsdGltYXRlbHkgbGVhZHMgdG8gYG5mcW5sX3JlY3ZfdmVyZGljdGAuIFNvLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBhcHBlYXJzIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIHBhcnQgb2YgdGhlIHBhdGNoLgoKT24gdGhlIGBuZnRfcGF5bG9hZC5jYCBzaWRlLCBhIGZ1bmN0aW9uIGNhbGxlZCBgbmZ0X3RoX3dyaXRlX29rYCBpcyBhZGRlZCwgYW5kIHRoaXMgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBoZXJlLgoKQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgcmVwcmVzZW50IGZ1bmN0aW9uYWwgY2hhbmdlcywgd2hpY2ggc3VnZ2VzdHMgdGhleSYjMzk7cmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZXkgYXJlIG5vdCBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIHNlZS4uLiBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBkZWNsYXJlZCBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBwYXJ0IG9mIGFuIG9wZXJhdGlvbiBjYWxsYmFjay4gSXQmIzM5O3MgcGFzc2VkIHRvIHRoZSBgbmZxbmxfY2JgIGFycmF5LCBzbyBpdCYjMzk7cyAqbm90KiBpbmxpbmVkLgoKVGhlIHNhbWUgYXBwbGllcyB0byBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLiBJdCBpcyBwYXJ0IG9mIGBuZnRfZXhwcl9vcHNgIHN0cnVjdHVyZS4gU28gaXQmIzM5O3MgKm5vdCogaW5saW5lZCBlaXRoZXIuCgpBbHJpZ2h0LCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEkmIzM5O2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEZvciB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgZW5hYmxlIGBORVRGSUxURVJfQURWQU5DRURgLCBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIChzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgcXVldWUgZnVuY3Rpb25hbGl0eSksIGFuZCBgTkZfVEFCTEVTYCAodGhlIHByaW1hcnkgZW5hYmxpbmcgb3B0aW9uKS4gIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gcmVsYXRlZCB0byBMNCBoZWFkZXJzIHdpdGhpbiBgbmZuZXRsaW5rX3F1ZXVlYCBhbmQgdmFsaWRhdGVzIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIHdpdGhpbiBgbmZ0X3BheWxvYWRgLiBCb3RoIGZ1bmN0aW9uYWxpdGllcyBhcmUgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHRoZSBuZnRhYmxlcyBpbmZyYXN0cnVjdHVyZSwgbWFraW5nIHRoZW0gY3JpdGljYWwgdGFyZ2V0cyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfTkVUTElOS19RVUVVRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnFubF9yZWN2X3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7bmZ0X3BheWxvYWRfc2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX05FVExJTktfUVVFVUUmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZxbmxfcmVjdl92ZXJkaWN0JiMzNDssCiAgICAmIzM0O25mdF9wYXlsb2FkX3NldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBuZm5ldGxpbmtfcXVldWUgYW5kIGNoZWNrcyBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiBpcyB2YWxpZCBpbiBuZnRfcGF5bG9hZC4gQm90aCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIGFuZCBuZnRhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA2Ljc1MzQyNTA5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDUxMjgwNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA2Ljc1MzQzMTI3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyODg2Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjZjZjExZDYwYjdjODRjY2RjN2U4MGUxOGQyMmNkZWZjM2UyYzNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAyOjQ2OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXFxuaW5kZXggYjhhYWYzOWNiNGQ4ZS4uZTEzNWVkNzYyYjVjOCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xcbkBAIC0yOCwxMCArMjgsMTcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pY21wLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pY21wdjYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY3RwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZ3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvZ3NvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2VcXG5AQCAtMTIwNiw5ICsxMjEzLDYxIEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaF9uZXcsXFxuIFxcdHJldHVybiBtZW1jbXAoaXBoX25ldyArIDEsIGlwX2hkcihlLVxcdTAwM2Vza2IpICsgMSwgaWhsIC0gc2l6ZW9mKCppcGhfb3JpZykpID09IDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2w0KGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuK1xcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXFxuK1xcdFxcdFxcdCAgICAgIGJvb2wgZnJhZ21lbnQpXFxuK3tcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG4rXFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XFxuK1xcdGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdDtcXG4rXFxuK1xcdGN0ID0gbmZfY3RfZ2V0KGUtXFx1MDAzZXNrYiwgXFx1MDAyNmN0aW5mbyk7XFxuK1xcdGlmIChjdCBcXHUwMDI2XFx1MDAyNiAhbmZfY3RfaXNfdGVtcGxhdGUoY3QpKSB7XFxuK1xcdFxcdGlmIChmcmFnbWVudCB8fCBuZl9jdF9wcm90b251bShjdCkgIT0gcHJvdG8pXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbisjZW5kaWZcXG4rXFxuK1xcdGlmIChmcmFnbWVudClcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRzd2l0Y2ggKHByb3RvKSB7XFxuK1xcdGNhc2UgSVBQUk9UT19UQ1A6IHtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IHRjcGhkciAqdGggPSAoY29uc3Qgc3RydWN0IHRjcGhkciAqKWRhdGE7XFxuK1xcdFxcdHVuc2lnbmVkIGludCB0aGxlbjtcXG4rXFxuK1xcdFxcdGlmIChkYXRhX2xlbiBcXHUwMDNjIHNpemVvZigqdGgpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHR0aGxlbiA9IF9fdGNwX2hkcmxlbih0aCk7XFxuK1xcdFxcdGlmICh0aGxlbiBcXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFxcdTAwM2MgdGhsZW4pXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuK1xcdGNhc2UgSVBQUk9UT19VRFA6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19JQ01QOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpY21waGRyKTtcXG4rXFx0Y2FzZSBJUFBST1RPX0lDTVBWNjpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fU0NUUDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19HUkU6XFxuK1xcdFxcdHJldHVybiBkYXRhX2xlbiBcXHUwMDNlPSBzaXplb2Yoc3RydWN0IGdyZV9iYXNlX2hkcik7XFxuK1xcdGNhc2UgSVBQUk9UT19BSDpcXG4rXFx0XFx0cmV0dXJuIGRhdGFfbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaXBfYXV0aF9oZHIpO1xcbitcXHRjYXNlIElQUFJPVE9fRVNQOlxcbitcXHRcXHRyZXR1cm4gZGF0YV9sZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpcF9lc3BfaGRyKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplKVxcbiB7XFxuK1xcdGJvb2wgZnJhZ21lbnQ7XFxuIFxcdHVuc2lnbmVkIGludCBpaGw7XFxuIFxcbiBcXHRpZiAoZGF0YV9sZW4gXFx1MDAzYyBzaXplb2YoKmlwaCkpXFxuQEAgLTEyMjYsMTAgKzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuIFxcdGlmIChudG9ocyhpcGgtXFx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbitcXHRmcmFnbWVudCA9IGlwaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9NRiB8IElQX09GRlNFVCk7XFxuK1xcbiBcXHQvKiBzdXBwb3J0IGZvciBpcG9wdHMgbWFuZ2xpbmcgd291bGQgcmVxdWlyZVxcbiBcXHQgKiByZWNvbXBpbGUgKyBza2IgdHJhbnNwb3J0IGhlYWRlciB1cGRhdGUuXFxuIFxcdCAqL1xcbi1cXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXBvcHRzKGlwaCwgZSk7XFxuK1xcdHJldHVybiBuZnFubF92YWxpZGF0ZV9pcG9wdHMoaXBoLCBlKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgbmZxbmxfdmFsaWRhdGVfbDQoKGNvbnN0IHU4ICopaXBoICsgaWhsLCBkYXRhX2xlbiAtIGlobCwgZSxcXG4rXFx0XFx0XFx0XFx0IGlwaC1cXHUwMDNlcHJvdG9jb2wsIGZyYWdtZW50KTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfb25lX2V4dGhkcihjb25zdCB1OCAqZGF0YSxcXG5AQCAtMTI3Myw2ICsxMzM2LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRjb25zdCB1OCAqZGF0YSA9IChjb25zdCB1OCAqKWlwNl9uZXc7XFxuIFxcdHU4IG9yaWdfbmV4dGhkciA9IGlwNl9vcmlnLVxcdTAwM2VuZXh0aGRyO1xcbiBcXHR1OCBuZXdfbmV4dGhkciA9IGlwNl9uZXctXFx1MDAzZW5leHRoZHI7XFxuK1xcdGJvb2wgZnJhZ21lbnQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChuZXdfbmV4dGhkciAhPSBvcmlnX25leHRoZHIpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTI4Niw3ICsxMzUwLDggQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXHRcXHRpbnQgaGRybGVuO1xcbiBcXG4gXFx0XFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbitcXHRcXHRcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xcbiBcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGV4dGhkcl9jbnQrKyBcXHUwMDNlPSBJUDZfTUFYX0VYVF9IRFJTX0NOVCkpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTI5Nyw2ICsxMzYyLDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxcbiBcXG4gXFx0XFx0c3dpdGNoIChvcmlnX25leHRoZHIpIHtcXG4gXFx0XFx0Y2FzZSBORVhUSERSX0ZSQUdNRU5UOlxcbitcXHRcXHRcXHRmcmFnbWVudCA9IHRydWU7XFxuIFxcdFxcdFxcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBORVhUSERSX0FVVEg6XFxuQEAgLTEzMjMsNyArMTM4OSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcXG4gXFx0XFx0ZGF0YSArPSBoZHJsZW47XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiB0cnVlO1xcbitcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfbDQoZGF0YSwgZGF0YV9sZW4sIGUsIG5ld19uZXh0aGRyLCBmcmFnbWVudCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xcbmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jXFxuQEAgLTEwNjcsNiArMTA2NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mdF90aF93cml0ZV9vayhjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4rXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSArIHNpemVvZihfX2JlMzIpO1xcbitcXG4rXFx0aWYgKHBrdC1cXHUwMDNldHByb3QgIT0gSVBQUk9UT19UQ1ApXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIHByaXYtXFx1MDAzZW9mZnNldCBcXHUwMDNlIGRvZmYgfHwgcHJpdi1cXHUwMDNlb2Zmc2V0ICsgcHJpdi1cXHUwMDNlbGVuIFxcdTAwM2M9IGRvZmY7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4gXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxcbkBAIC0xMTA1LDYgKzExMTYsOCBAQCBzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuIFxcdGNhc2UgTkZUX1BBWUxPQURfVFJBTlNQT1JUX0hFQURFUjpcXG4gXFx0XFx0aWYgKCEocGt0LVxcdTAwM2VmbGFncyBcXHUwMDI2IE5GVF9QS1RJTkZPX0w0UFJPVE8pIHx8IHBrdC1cXHUwMDNlZnJhZ29mZilcXG4gXFx0XFx0XFx0Z290byBlcnI7XFxuK1xcdFxcdGlmICghbmZ0X3RoX3dyaXRlX29rKHBrdCwgcHJpdikpXFxuK1xcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXHRcXHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTkZUX1BBWUxPQURfSU5ORVJfSEVBREVSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NjowNy4wNzY5NDM1NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MzcyNzc1NDA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnFubF9yZWN2X3ZlcmRpY3RcIixcbiAgICBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBMNCBoZWFkZXJzIGluIG5mbmV0bGlua19xdWV1ZSBhbmQgY2hlY2tzIGlmIFRDUCBoZWFkZXIgbW9kaWZpY2F0aW9uIGlzIHZhbGlkIGluIG5mdF9wYXlsb2FkLiBCb3RoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgYW5kIG5mdGFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNmNmMTFkNjBiN2M4NGNjZGM3ZTgwZTE4ZDIyY2RlZmMzZTJjM2NlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMjo0NjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXG5pbmRleCBiOGFhZjM5Y2I0ZDhlLi5lMTM1ZWQ3NjJiNWM4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1xuQEAgLTI4LDEwICsyOCwxNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pY21wdjYuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zY3RwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jZ3JvdXAtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmhhc2h0YWJsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RjcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZ3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZ3NvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZVxuQEAgLTEyMDYsOSArMTIxMyw2MSBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9pcG9wdHMoY29uc3Qgc3RydWN0IGlwaGRyICppcGhfbmV3LFxuIFx0cmV0dXJuIG1lbWNtcChpcGhfbmV3ICsgMSwgaXBfaGRyKGUtXHUwMDNlc2tiKSArIDEsIGlobCAtIHNpemVvZigqaXBoX29yaWcpKSA9PSAwO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9sNChjb25zdCB1OCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxuK1x0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgdTggcHJvdG8sXG4rXHRcdFx0ICAgICAgYm9vbCBmcmFnbWVudClcbit7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcbitcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuK1x0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0O1xuK1xuK1x0Y3QgPSBuZl9jdF9nZXQoZS1cdTAwM2Vza2IsIFx1MDAyNmN0aW5mbyk7XG4rXHRpZiAoY3QgXHUwMDI2XHUwMDI2ICFuZl9jdF9pc190ZW1wbGF0ZShjdCkpIHtcbitcdFx0aWYgKGZyYWdtZW50IHx8IG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBwcm90bylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rI2VuZGlmXG4rXG4rXHRpZiAoZnJhZ21lbnQpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0c3dpdGNoIChwcm90bykge1xuK1x0Y2FzZSBJUFBST1RPX1RDUDoge1xuK1x0XHRjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopZGF0YTtcbitcdFx0dW5zaWduZWQgaW50IHRobGVuO1xuK1xuK1x0XHRpZiAoZGF0YV9sZW4gXHUwMDNjIHNpemVvZigqdGgpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcbitcdFx0dGhsZW4gPSBfX3RjcF9oZHJsZW4odGgpO1xuK1x0XHRpZiAodGhsZW4gXHUwMDNjIHNpemVvZigqdGgpIHx8IGRhdGFfbGVuIFx1MDAzYyB0aGxlbilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdHJldHVybiB0cnVlO1xuK1x0fVxuK1x0Y2FzZSBJUFBST1RPX1VEUDpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0lDTVA6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWNtcGhkcik7XG4rXHRjYXNlIElQUFJPVE9fSUNNUFY2OlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGljbXA2aGRyKTtcbitcdGNhc2UgSVBQUk9UT19TQ1RQOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0dSRTpcbitcdFx0cmV0dXJuIGRhdGFfbGVuIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBncmVfYmFzZV9oZHIpO1xuK1x0Y2FzZSBJUFBST1RPX0FIOlxuK1x0XHRyZXR1cm4gZGF0YV9sZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGlwX2F1dGhfaGRyKTtcbitcdGNhc2UgSVBQUk9UT19FU1A6XG4rXHRcdHJldHVybiBkYXRhX2xlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaXBfZXNwX2hkcik7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcbiB7XG4rXHRib29sIGZyYWdtZW50O1xuIFx0dW5zaWduZWQgaW50IGlobDtcbiBcbiBcdGlmIChkYXRhX2xlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpKVxuQEAgLTEyMjYsMTAgKzEyODUsMTQgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXG4gXHRpZiAobnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pICE9IGRhdGFfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4rXHRmcmFnbWVudCA9IGlwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfTUYgfCBJUF9PRkZTRVQpO1xuK1xuIFx0Lyogc3VwcG9ydCBmb3IgaXBvcHRzIG1hbmdsaW5nIHdvdWxkIHJlcXVpcmVcbiBcdCAqIHJlY29tcGlsZSArIHNrYiB0cmFuc3BvcnQgaGVhZGVyIHVwZGF0ZS5cbiBcdCAqL1xuLVx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpO1xuK1x0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2lwb3B0cyhpcGgsIGUpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIG5mcW5sX3ZhbGlkYXRlX2w0KChjb25zdCB1OCAqKWlwaCArIGlobCwgZGF0YV9sZW4gLSBpaGwsIGUsXG4rXHRcdFx0XHQgaXBoLVx1MDAzZXByb3RvY29sLCBmcmFnbWVudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX29uZV9leHRoZHIoY29uc3QgdTggKmRhdGEsXG5AQCAtMTI3Myw2ICsxMzM2LDcgQEAgc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfZXh0aGRyKGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDZfbmV3LFxuIFx0Y29uc3QgdTggKmRhdGEgPSAoY29uc3QgdTggKilpcDZfbmV3O1xuIFx0dTggb3JpZ19uZXh0aGRyID0gaXA2X29yaWctXHUwMDNlbmV4dGhkcjtcbiBcdHU4IG5ld19uZXh0aGRyID0gaXA2X25ldy1cdTAwM2VuZXh0aGRyO1xuK1x0Ym9vbCBmcmFnbWVudCA9IGZhbHNlO1xuIFxuIFx0aWYgKG5ld19uZXh0aGRyICE9IG9yaWdfbmV4dGhkcilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyODYsNyArMTM1MCw4IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0aW50IGhkcmxlbjtcbiBcbiBcdFx0aWYgKG9yaWdfbmV4dGhkciA9PSBORVhUSERSX05PTkUpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdFx0cmV0dXJuIG5mcW5sX3ZhbGlkYXRlX2w0KGRhdGEsIGRhdGFfbGVuLCBlLFxuK1x0XHRcdFx0XHRcdCBuZXdfbmV4dGhkciwgZnJhZ21lbnQpO1xuIFxuIFx0XHRpZiAodW5saWtlbHkoZXh0aGRyX2NudCsrIFx1MDAzZT0gSVA2X01BWF9FWFRfSERSU19DTlQpKVxuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC0xMjk3LDYgKzEzNjIsNyBAQCBzdGF0aWMgYm9vbCBuZnFubF92YWxpZGF0ZV9leHRoZHIoY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwNl9uZXcsXG4gXG4gXHRcdHN3aXRjaCAob3JpZ19uZXh0aGRyKSB7XG4gXHRcdGNhc2UgTkVYVEhEUl9GUkFHTUVOVDpcbitcdFx0XHRmcmFnbWVudCA9IHRydWU7XG4gXHRcdFx0aGRybGVuID0gc2l6ZW9mKHN0cnVjdCBmcmFnX2hkcik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkVYVEhEUl9BVVRIOlxuQEAgLTEzMjMsNyArMTM4OSw3IEBAIHN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2V4dGhkcihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2X25ldyxcbiBcdFx0ZGF0YSArPSBoZHJsZW47XG4gXHR9XG4gXG4tXHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBuZnFubF92YWxpZGF0ZV9sNChkYXRhLCBkYXRhX2xlbiwgZSwgbmV3X25leHRoZHIsIGZyYWdtZW50KTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA2KGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcDYsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbmluZGV4IDhhNDQ3MmZkNzdkOWYuLmUzMTVkMzVmNzNkNGEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1xuQEAgLTEwNjcsNiArMTA2NywxNyBAQCBzdGF0aWMgYm9vbCBuZnRfcGF5bG9hZF9jc3VtX3dyaXRlX29rKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4rXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZnRfcGF5bG9hZF9zZXQgKnByaXYpXG4re1xuK1x0dW5zaWduZWQgaW50IGRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCBhY2tfc2VxKSArIHNpemVvZihfX2JlMzIpO1xuK1xuK1x0aWYgKHBrdC1cdTAwM2V0cHJvdCAhPSBJUFBST1RPX1RDUClcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gcHJpdi1cdTAwM2VvZmZzZXQgXHUwMDNlIGRvZmYgfHwgcHJpdi1cdTAwM2VvZmZzZXQgKyBwcml2LVx1MDAzZWxlbiBcdTAwM2M9IGRvZmY7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5mdF9wYXlsb2FkX3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbiBcdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTEwNSw2ICsxMTE2LDggQEAgc3RhdGljIHZvaWQgbmZ0X3BheWxvYWRfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0Y2FzZSBORlRfUEFZTE9BRF9UUkFOU1BPUlRfSEVBREVSOlxuIFx0XHRpZiAoIShwa3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GVF9QS1RJTkZPX0w0UFJPVE8pIHx8IHBrdC1cdTAwM2VmcmFnb2ZmKVxuIFx0XHRcdGdvdG8gZXJyO1xuK1x0XHRpZiAoIW5mdF90aF93cml0ZV9vayhwa3QsIHByaXYpKVxuK1x0XHRcdGdvdG8gZXJyO1xuIFx0XHRvZmZzZXQgPSBuZnRfdGhvZmYocGt0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5GVF9QQVlMT0FEX0lOTkVSX0hFQURFUjpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjA3LjA3Njk0NDg4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODYwMTI2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGF0IGZpcnN0IGdsYW5jZS4gSXQncyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmNgLCB3aGljaCB0ZWxscyBtZSBpdOKAmXMgbWVzc2luZyB3aXRoIHRoZSBjb3JlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3Mgc29tZSBhZGRlZCB2YWxpZGF0aW9uIGdvaW5nIG9uLiBJbiBgbmZuZXRsaW5rX3F1ZXVlLmNgLCB0aGVyZSdzIGBuZnFubF92YWxpZGF0ZV9sNGAsIHdoaWNoIEknbSBhc3N1bWluZyBpcyBmb3IgTGF5ZXIgNCBoZWFkZXIgdmFsaWRhdGlvbi4gQW5kIHRoZW4gaW4gYG5mdF9wYXlsb2FkLmNgLCBgbmZ0X3RoX3dyaXRlX29rYCBzb3VuZHMgbGlrZSBhIGNoZWNrIHRvIHNlZSBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYXJlIGFsbG93ZWQuIEZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIG5ldGZpbHRlciBjaGFuZ2VzLCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZXkgYXJlIGltcGxlbWVudGVkLlxuXG5MZXQncyBkaXZlIGRlZXBlciBhbmQgZm9jdXMgb24gdGhlIGNvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2xzIGludm9sdmVkLiBGaXJzdCwgSeKAmWxsIGxvb2sgYXQgYG5mbmV0bGlua19xdWV1ZS5jYC4gSSBzZWUgYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLCB3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBuZnFubF92YWxpZGF0ZV9pcDZgLiBIbW0sIGFuZCB0aGVzZSB1bHRpbWF0ZWx5IGFyZSB0cmlnZ2VyZWQgYnkgYG5mcW5sX3JlY3ZfdmVyZGljdGAgLVx1MDAzZSBgbmZxbmxfbWFuZ2xlYCAtXHUwMDNlIGBuZnFubF92YWxpZGF0ZV9pcDRgIC8gYG5mcW5sX3ZhbGlkYXRlX2lwNmAuIEhhbmcgb24gYSBzZWNvbmQsIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBgbmZuZXRsaW5rX3F1ZXVlLmNgIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9pcDZgIGFyZSBjYWxsZWQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIHBhdGggdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHZhbGlkYXRpb25zLCBhbmQgSSdtIG5vdCBnb2luZyB0byBtaXNzIGEgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjEyLjQ2Mjk1OTk2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU1MzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnFubF92YWxpZGF0ZV9pcDRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTEyMTY9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfbDQoY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTI2Ni1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjEyNjc6c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfaXA0KGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xMjY4LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE0MTE9c3RhdGljIGJvb2wgbmZxbmxfdmFsaWRhdGVfd3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDE1LVxcdGNhc2UgTkZQUk9UT19JUFY0Olxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQxNjpcXHRcXHRyZXR1cm4gbmZxbmxfdmFsaWRhdGVfaXA0KGRhdGEsIGRhdGFfbGVuLCBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTctXFx0Y2FzZSBORlBST1RPX0lQVjY6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjEyLjUwNTUxNzgxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTA0NjM1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG5mcW5sX3ZhbGlkYXRlX3dyaXRlYCoqXG5cbk9rYXksIHNvIGBuZnFubF92YWxpZGF0ZV93cml0ZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgb24gdGhlIHN0YWNrLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCAqZnJvbSouIFRoYXQgaXMsIEkgd2FudCB0byB0cmFjZSBiYWNrIHVwIHRoZSBjYWxsIGNoYWluIHRvIHNlZSB3aGF0IGZ1bmN0aW9uJ3MgdHJpZ2dlcmluZyBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgY2FsbDsgd2hlcmUgZG9lcyB0aGlzIHZhbGlkYXRpb24gZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTUuNjk1OTgzNDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDc5OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX3ZhbGlkYXRlX3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xMzk1PXN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX2lwNihjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXA2LCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTAtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDExOnN0YXRpYyBib29sIG5mcW5sX3ZhbGlkYXRlX3dyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhX2xlbixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MTItXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQyOT1uZnFubF9tYW5nbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGRhdGFfbGVuLCBzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmUsIGludCBkaWZmKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDM1LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTQzNjpcXHRpZiAoIW5mcW5sX3ZhbGlkYXRlX3dyaXRlKGRhdGEsIGRhdGFfbGVuLCBlKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE0MzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjE1Ljc0MDQ2OTQyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTE4NDg5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmZxbmxfbWFuZ2xlYCBDYWxsZXJzKipcblxuT2theSwgc28gYG5mcW5sX21hbmdsZWAgaXMgdGhlIGZ1bmN0aW9uIHdlJ3JlIHN0YXJ0aW5nIHdpdGguIFRoYXQncyBvdXIgZm9jYWwgcG9pbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgaXMgdG8gaW1tZWRpYXRlbHkgaWRlbnRpZnkgaXRzIGNhbGxlcnMuIFdobydzIGluaXRpYXRpbmcgdGhpcyBmdW5jdGlvbj8gV2hhdCBjb250ZXh0cyBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIGBuZnFubF9tYW5nbGVgLiBGcm9tIHRoZXJlIEkgd2lsbCBsaWtlbHkgYmUgYWJsZSB0byBtb3ZlIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyZ3VtZW50cywgYW5kIHB1cnBvc2UsIG9mIHRoZSBjYWxsLiBJIHdpbGwgdGhlbiBwcm9iYWJseSBiZSBhYmxlIHRvIHN0YXJ0IHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzcyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTguOTMyMzIxMzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTIwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mcW5sX21hbmdsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTQyOD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxNDI5Om5mcW5sX21hbmdsZSh2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YV9sZW4sIHN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZSwgaW50IGRpZmYpXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNDMwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9MTc4NT1zdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xODM0LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTgzNTpcXHRcXHRpZiAobmZxbmxfbWFuZ2xlKG5sYV9kYXRhKG5mcWFbTkZRQV9QQVlMT0FEXSksXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xODM2LVxcdFxcdFxcdFxcdCBwYXlsb2FkX2xlbiwgZW50cnksIGRpZmYpIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MTguOTc3NDQ5MzM2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyODc1ODk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgcGllY2VkIHRvZ2V0aGVyIGFzIEknbSB0aGlua2luZyB0aHJvdWdoIGl0OlxuXG4qKkRlY29kaW5nIHRoZSBORlFVRVVFIFZlcmRpY3QgUGF0aCoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBwYXRoIG9mIGhvdyBhIHZlcmRpY3QgZ2V0cyBhcHBsaWVkIGluIHRoZSBOZXRmaWx0ZXIgcXVldWUuICBUaGUgY3J1Y2lhbCBwYXJ0IHN0YXJ0cyB3aXRoIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBSaWdodCwgdGhhdCBmdW5jdGlvbiwgYG5mcW5sX3JlY3ZfdmVyZGljdGAsIGlzIHRoZSBoYW5kbGVyIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIG5ldGxpbmsgbWVzc2FnZXMgb2YgdGhlIHR5cGUgYE5GUU5MX01TR19WRVJESUNUYC4gIEFuZCwgaWYgSSdtIHJlbWVtYmVyaW5nIGNvcnJlY3RseSwgdGhpcyBpcyBhIHBhdGggdGhhdCBjb21lcyBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBTbywgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gc2VuZHMgYSBtZXNzYWdlIHdpdGggYSB2ZXJkaWN0LCBhbmQgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSByZWNlaXZlcyBhbmQgaW50ZXJwcmV0cyBpdC5cblxuTm93LCBpbnNpZGUgdGhpcyBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmdW5jdGlvbiBJIGNhbiBzZWUgdGhhdCBpdCB0aGVuIGNhbGxzIGBuZnFubF9tYW5nbGVgLiBJJ20gZmFtaWxpYXIgd2l0aCBgbmZxbmxfbWFuZ2xlYCwgdGhhdCdzIHdoZXJlIHRoZSBhY3R1YWwgcGFja2V0IG1hbmdsaW5nIGhhcHBlbnMsIHJpZ2h0P1xuXG5UaGlua2luZyBtb3JlIGJyb2FkbHkgYWJvdXQgdGhpcywgSSBzZWUgdGhhdCBJJ20gZW5kaW5nIHVwIGluIGBuZnRfcGF5bG9hZC5jYCwgYW5kIEknbSByZW1pbmRlZCB0aGF0IGl0IGlzIHdoZXJlIGBuZnRfdGhfd3JpdGVfb2tgIGlzIGNhbGxlZCBieSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6MjMuMjA2MjExNzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjIzNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkX3NldF9ldmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM9MTA3MD1zdGF0aWMgYm9vbCBuZnRfdGhfd3JpdGVfb2soY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTA4MC1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmM6MTA4MTpzdGF0aWMgdm9pZCBuZnRfcGF5bG9hZF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxubmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jLTEwODItXFx0XFx0XFx0XFx0IHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYz0xMjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9wYXlsb2FkX3NldF9vcHMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3Ni1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9wYXlsb2FkX3NldCkpLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3BheWxvYWQuYzoxMjc3OlxcdC5ldmFsXFx0XFx0PSBuZnRfcGF5bG9hZF9zZXRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9wYXlsb2FkLmMtMTI3OC1cXHQuaW5pdFxcdFxcdD0gbmZ0X3BheWxvYWRfc2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjIzLjI1MTg0MTg4OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjczMDg1OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBuZnRhYmxlcyBFeHByZXNzaW9uIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBgbmZ0YWJsZXNgIGhhbmRsZXMgdGhlIGBuZnRfcGF5bG9hZF9zZXRgIGV4cHJlc3Npb24uIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGZ1bmN0aW9uLCB3aGljaCBJIHVuZGVyc3RhbmQgaXMgdGhlIGNvcmUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhpcyBleHByZXNzaW9uLiBUaGVyZWZvcmUsIHRoYXQgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgbmZxbmxfcmVjdl92ZXJkaWN0YCBmdW5jdGlvbiBhcmUgdGhlIGZvY3VzIGhlcmUuXG5cbkluaXRpYWxseSwgYG5mcW5sX3JlY3ZfdmVyZGljdGAgY2F1Z2h0IG15IGV5ZSBiZWNhdXNlIGl0J3MgYSBuZXRsaW5rIGhhbmRsZXIsIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2Qgc2lnbiBpbiB0aGlzIGNvbnRleHQuIEhvd2V2ZXIsIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAgaXMgc3RhdGljLCB3aGljaCByYWlzZXMgYSBmbGFnIGdpdmVuIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzIHRvIHRoZSBBUEkuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgZnVuY3Rpb25zLiBTdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIGRvbid0IGdldCBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXQsICp3YWl0KiwgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCwgd2hpbGUgc3RhdGljLCBpcyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZnRfZXhwcl9vcHMuZXZhbGAuIFRoYXQgbWVhbnMgaXQncyAqbm90KiBnb2luZyB0byBiZSBpbmxpbmVkLCBkZXNwaXRlIGJlaW5nIHN0YXRpYy4gVGhlIGZhY3QgdGhhdCBpdCdzIGFuIG9wcyBjYWxsYmFjayBjaGFuZ2VzIGV2ZXJ5dGhpbmchIEl0J3MgYSBrZXkgZW50cnlwb2ludCwgZXZlbiBpZiBpdCBoYXMgdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24uXG5cblNvIG5vdyBJJ20gYmFjayB0byBzcXVhcmUgb25lLiBJcyB0aGVyZSBhIG5vbi1zdGF0aWMsIGVxdWl2YWxlbnQgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgbmZ0X3BheWxvYWRfc2V0X2V2YWxgIGlzIGluZGVlZCBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIEJ1dCBpdCBpcyBhbiBvcHMgY2FsbGJhY2suIEFuZCwganVzdCB0byBjb25maXJtLCBgbmZxbmxfcmVjdl92ZXJkaWN0YCBpcyBhbHNvIHN0YXRpYy4gUmlnaHQsIHRoYXQgbWFrZXMgdGhpbmdzIGV2ZW4gbW9yZSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgcHJvbXB0IHN1Z2dlc3RzIHRoYXQgdGhlIHN0YXRpYyBuYXR1cmUgaXMgbm90IHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDk0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjI4LjkyNDkzMTU3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxMTk4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xNjY5PXN0YXRpYyBpbnQgbmZxX2lkX2FmdGVyKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IG1heClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTY3My1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjE2NzQ6c3RhdGljIGludCBuZnFubF9yZWN2X3ZlcmRpY3RfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTE2NzUtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTE3NTA9c3RhdGljIGludCBuZnFhX3BhcnNlX2JyaWRnZShzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmVudHJ5LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xNzg0LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MTc4NTpzdGF0aWMgaW50IG5mcW5sX3JlY3ZfdmVyZGljdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTc4Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgbmZxYVtdKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYz0xOTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZnFubF9jYltORlFOTF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMTk5Ny1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RdXFx0PSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzoxOTk4OlxcdFxcdC5jYWxsXFx0XFx0PSBuZnFubF9yZWN2X3ZlcmRpY3QsXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy0xOTk5LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX1JDVSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAwOS1cXHRbTkZRTkxfTVNHX1ZFUkRJQ1RfQkFUQ0hdID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6MjAxMDpcXHRcXHQuY2FsbFxcdFxcdD0gbmZxbmxfcmVjdl92ZXJkaWN0X2JhdGNoLFxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtMjAxMS1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9SQ1UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjI4Ljk2ODA1NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MzU2MTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ2FsbGJhY2sgU3ltYm9scyBpbiB0aGUgS2VybmVsJ3MgTmV0ZmlsdGVyIFN1YnN5c3RlbSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCB0aGVzZSBzdGF0aWMgc3ltYm9scyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIG9wZXJhdGlvbiBzdHJ1Y3R1cmVzLCByaWdodD8gVGhleSdyZSBzdGF0aWMsIHNvIHRoZXkncmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gcGVyZmVjdCBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBsb2dpYyB3ZSdyZSBpbnRlcmVzdGVkIGluLiBObyBpc3N1ZXMgdGhlcmUgZnJvbSBhIHN5bWJvbCBwZXJzcGVjdGl2ZS4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGUgY29uZmlnIG9wdGlvbnMgdGllZCB0byB0aGVzZS4gT2theSwgc28gZm9yIGBuZm5ldGxpbmtfcXVldWUuY2AsIHRoYXQncyBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYENPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRWAuIEdvdCBpdC4gQW5kIGZvciBgbmZ0X3BheWxvYWQuY2AsIGl0J3MgdGhlIGBDT05GSUdfTkZUX1BBWUxPQURgIG9wdGlvbiB3ZSBuZWVkIHRvIGNvbmZpcm0uIEVhc3kgZW5vdWdoLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyBiYWNrIGludG8gS2NvbmZpZyBhbmQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBHb3R0YSBkb3QgYWxsIHRoZSBcImlcInMgYW5kIGNyb3NzIGFsbCB0aGUgXCJ0XCJzIHdoZW4gZGVhbGluZyB3aXRoIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjMyLjk2MTYyMDgzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwNjE4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjMzLjAwNDY4ODE3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAxNjIwNDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUgZm9yIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBoZXJlLiBMZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdHMgcmVsYXRpb25zaGlwcyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgY29yZSBwaWVjZSBvZiB0aGUgbmV0ZmlsdGVyIGFyY2hpdGVjdHVyZSwgc28gdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byByZW1lbWJlciBhbGwgdGhlIGRpZmZlcmVudCBxdWV1aW5nIG9wdGlvbnMgYXZhaWxhYmxlLCBhbmQgdGhpcyBwYXJ0aWN1bGFyIG5ldGxpbmstYmFzZWQgYXBwcm9hY2ggd2lsbCBkZWZpbml0ZWx5IGhhdmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBjb21wb25lbnRzIGl0IG5lZWRzIHRvIGludGVncmF0ZSB3aXRoLCBvciBjb252ZXJzZWx5LCBkb2VzIGl0IHN1cGVyc2VkZSBvbGRlciBtZXRob2RzPyBUaGUgcG90ZW50aWFsIGZvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBpcyBhbHdheXMgYSBmYWN0b3IuIFRoZW4sIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZWdyYXRpb24sIGxpa2UgdXNlciBzcGFjZSB0b29scywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgYW5kIHRoZSB2YXJpb3VzIGhvb2tzIG5ldGZpbHRlciBvZmZlcnMuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIGRlcHJlY2F0aW9uIG9yIHBsYW5uZWQgZnV0dXJlIGNoYW5nZXMsIHdoaWNoIG1pZ2h0IG5lY2Vzc2l0YXRlIGFsdGVyaW5nIGN1cnJlbnQgY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEnigJlsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGRlcGVuZGVuY2llcyBhZ2FpbnN0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVjZW50IGJ1ZyByZXBvcnRzIG9yIG1haWxpbmcgbGlzdCBkaXNjdXNzaW9ucyB0byBiZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRyaWNhY2llcy4gVGhpcyB0aG9yb3VnaCByZXZpZXcgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgb3IgY29uZmlndXJhdGlvbnMgaW52b2x2aW5nIHRoaXMga2VybmVsIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NjozNi43MDYzMTEzMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NTI0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDY9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjM2Ljc0OTg2ODQyOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYxNDU1Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRmxvdyoqXG5cblJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBwcm9ibGVtLCBJIG5lZWQgdG8gcGF1c2UgYW5kIHRha2UgYSBzdGVwIGJhY2suIEkgaGF2ZSB0byByZW1pbmQgbXlzZWxmIHRoYXQsIHdpdGggY29tcGxleCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbiwgSSBzaG91bGRuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBmbG93LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgKnRob3JvdWdobHkqIHJlYWQgdGhlIGBLY29uZmlnYCBmaWxlLiBJdCdzIHRoZSBseW5jaHBpbiwgdGhlIGNydWNpYWwgcGllY2UuIEl0IGRpY3RhdGVzIGFsbCB0aGUgZmVhdHVyZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMsIGFuZCB3aXRob3V0IHRoYXQgZGV0YWlsZWQgdW5kZXJzdGFuZGluZywgYW55IGFzc3VtcHRpb25zIEkgbWFrZSBhcmUgcHJvYmFibHkgZ29pbmcgdG8gYmUgd3JvbmcuIEkga25vdyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyB3aXRoIHRoaXMgcHJvYmxlbSwgYnV0IEkgaGF2ZSB0byB0cnVzdCB0aGUgcHJvY2Vzcy4gUmVhZGluZyB0aGUgYEtjb25maWdgIG5vdyB3aWxsIHNhdmUgYSBsb3Qgb2YgdGltZSBhbmQgZWZmb3J0IGluIHRoZSBsb25nIHJ1bi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU1MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQwLjAxMTMyNjQzOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI0NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNTI6XFx0XFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNTc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA1ODpcXHRcXHRoZWxwXFxuICA1OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDYwOlxcdFxcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbiAgNjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA2NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDY2OlxcdFxcdGhlbHBcXG4gIDY3OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjg6XFx0XFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXFxuICA2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6NDAuMDExNDUxNTU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDk1NzQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBteSBtZW50YWwgbWFwIG9mIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoZSBgTkVURklMVEVSX05FVExJTktfUVVFVUVgIGZlYXR1cmUsIHRoYXQncyBkZWZpbml0ZWx5IGdvdCBpdHMgaG9va3MgaW4gdGhlIGFkdmFuY2VkIG5ldGZpbHRlciBjYXBhYmlsaXRpZXMuIEl0J3MgYWxtb3N0IGEgZ2l2ZW4sIGJ1dCBJIHdhbnQgdG8gZXhwbGljaXRseSBjb25maXJtIHRoYXQgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBwcmVyZXF1aXNpdGUuIEJlc3QgcHJhY3RpY2UgdG8gYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSBkZXBlbmRlbmNpZXM7IHlvdSBkb24ndCB3YW50IHRvIGJlIGRlYnVnZ2luZyBhIG1pc2NvbmZpZ3VyYXRpb24gbGF0ZXIuIE5vdyB0aGF0IEkgaGF2ZSB2ZXJpZmllZCB0aGF0LCBJIHdhbnQgdG8gZXhwbG9yZSBgTkZUX1BBWUxPQURgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQzLjE2MTAzMDEyOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MjA2NzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUEFZTE9BRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQzLjIwNDQ2MTM3OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI5NTI5OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIEh1bnQqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQncyBsaWtlbHkgbmVzdGxlZCB3aXRoaW4gb25lIG9mIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHByb2JhYmx5IGVpdGhlciBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBvciwgcGVyaGFwcyBtb3JlIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIElQdjQsIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIExldCdzIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggd2hlcmUgdGhlIHJlbGF0ZWQgY29kZSBpcyBkZWZpbmVkLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgTWFrZWZpbGVgIGFzc29jaWF0ZWQgd2l0aCBgbmV0L25ldGZpbHRlci9uZnRfcGF5bG9hZC5jYCwgYXMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBkZWR1Y2UgdGhlIHJlbGV2YW50IG1vZHVsZSBhbmQgY29uZmlndXJhdGlvbiBoaWVyYXJjaHkuIEhvcGVmdWxseSB0aGF0IGdpdmVzIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo0Ny4zMzM5OTQ0MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDMzNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9wYXlsb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04Nz1uZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXFx0XFx0ICBuZl90YWJsZXNfdHJhY2UubyBuZnRfaW1tZWRpYXRlLm8gbmZ0X2NtcC5vIG5mdF9yYW5nZS5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg5OlxcdFxcdCAgbmZ0X2JpdHdpc2UubyBuZnRfYnl0ZW9yZGVyLm8gbmZ0X3BheWxvYWQubyBuZnRfbG9va3VwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTAtXFx0XFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjQ3LjM3NzA0Njg4NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1ODI0MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgS2VybmVsIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3BheWxvYWQub2Agb2JqZWN0IGZpbGUsIGFuZCBpdCdzIGNsZWFybHkgcGFydCBvZiB0aGUgYG5mX3RhYmxlcy1vYmpzYCBidWlsZCB0YXJnZXQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8sIFwiT2theSwgd2hhdCdzIGRyaXZpbmcgdGhlIGluY2x1c2lvbiBvZiBgbmZfdGFibGVzYCBpbiB0aGUgZmlyc3QgcGxhY2U/XCIgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUga2VybmVsIHRoYXQgZW5hYmxlIHRoaXMgY29tcG9uZW50LiBJdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uIHRvIHNlZSB3aGF0IHRyaWdnZXJzIHRoZSBpbmNsdXNpb24gb2YgYG5mX3RhYmxlc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo1MC42MDI4NzQwOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjk5NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlcy1vYmpzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcXHQrPSBuZl9kdXBfbmV0ZGV2Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cXHRcXHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcXFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT05Nz1pZm5kZWYgQ09ORklHX1VNTFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTg6bmZfdGFibGVzLW9ianMgKz0gbmZ0X3NldF9waXBhcG9fYXZ4Mi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05OS1lbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDM9aWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDQ6bmZfdGFibGVzLW9ianMgKz0gbmZ0X2N0X2Zhc3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA1LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjUwLjY0NTE3OTQ3M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ1MjM5ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBuZXQvbmV0ZmlsdGVyL01ha2VmaWxlYC4gVGhlIGNsdWUgaXMgcmlnaHQgdGhlcmU6IGBvYmotJChDT05GSUdfTkZfVEFCTEVTKSArPSBuZl90YWJsZXMub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29tcGlsYXRpb24gb2YgdGhlIGBuZl90YWJsZXMub2Agb2JqZWN0IGZpbGUgaXMgY29uZGl0aW9uYWwsIGRlcGVuZGVudCBvbiB0aGUgYENPTkZJR19ORl9UQUJMRVNgIEtjb25maWcgb3B0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCBzb3VuZHMgbGlrZSBgQ09ORklHX05GX1RBQkxFU2AgbWF5IGJlIHRpZWQgaW50byBhIGJ1aWxkIG9wdGlvbiwgc28gaWYgaXQncyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCB0aGUgb2JqZWN0IGZpbGUgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgbW9kdWxhcml6aW5nIGtlcm5lbCBjb21wb25lbnRzLiBLbm93aW5nIHRoaXMgaXMgaW1wb3J0YW50IGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMsIG9yIG9wdGltaXppbmcga2VybmVsIHNpemUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEyNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjU0LjE5MDQyMjQyOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODUzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfdGFibGVzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTg0PW9iai0kKENPTkZJR19ORl9EVVBfTkVUREVWKVxcdCs9IG5mX2R1cF9uZXRkZXYub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Ni0jIG5mX3RhYmxlc1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODc6bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTg4LVxcdFxcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxcXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVxcdFxcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6OTI6XFx0XFx0ICBuZnRfY2hhaW5fcm91dGUubyBuZl90YWJsZXNfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkzLVxcdFxcdCAgbmZ0X3NldF9oYXNoLm8gbmZ0X3NldF9iaXRtYXAubyBuZnRfc2V0X3JidHJlZS5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9OTc9aWZuZGVmIENPTkZJR19VTUxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjk4Om5mX3RhYmxlcy1vYmpzICs9IG5mdF9zZXRfcGlwYXBvX2F2eDIub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtOTktZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTAzPWlmZGVmIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA0Om5mX3RhYmxlcy1vYmpzICs9IG5mdF9jdF9mYXN0Lm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwNS1lbmRpZlxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA2PWVuZGlmXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDctXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX05GX1RBQkxFUylcXHRcXHQrPSBuZl90YWJsZXMub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTA5LW9iai0kKENPTkZJR19ORlRfQ09NUEFUKVxcdCs9IG5mdF9jb21wYXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0Njo1NC4yMzI1MTMwNDhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyMjU3MzY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5GX1RBQkxFUyBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nIGlzIGBDT05GSUdfTkZfVEFCTEVTYC4gVGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgbG9va2luZyBhdC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIG5pdHR5LWdyaXR0eSwgbXkgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgc2NvcGUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIGBORl9UQUJMRVNgIGlzIHJhcmVseSBhbiBpc2xhbmQsIHJpZ2h0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIHVwb24uIFdoYXQgb3RoZXIgY29uZmlncywgc3ViLW9wdGlvbnMgb3Iga2NvbmZpZyBkZWZpbml0aW9ucyBhcmUgdHJpZ2dlcmVkIGJ5IGl0cyBpbmNsdXNpb24uIElzIGl0IGRlcGVuZGVudCBvbiBzb21lIHNwZWNpZmljIGtlcm5lbCBtb2R1bGVzLCBvciBhbnkgb3RoZXIgZmVhdHVyZXMsIHN1Y2ggYXMgbmV0ZmlsdGVyLCBpcHNldHMgb3IgY29ubnRyYWNrLiBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlLlxuXG5JJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGVuYWJsZWQgY29ycmVjdGx5LCBhbmQgaG93IGBORl9UQUJMRVNgIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBBbmQgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMsIGVzcGVjaWFsbHkgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgY3VzdG9tIGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgzNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ2OjU4LjQ1NTA4OTE4MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzM2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDY6NTguNDk4NTI3ODcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDIwNzQ2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGxpbmUgNDU1LiBUaGlzIGlzIGxpa2VseSB3aGVyZSBzb21lIGtleSBkZWNpc2lvbnMgYXJlIG1hZGUgaW4gdGVybXMgb2Ygd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgSSdtIGd1ZXNzaW5nIHRoaXMgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIEknbSBpbnZlc3RpZ2F0aW5nLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhpcyBzZWN0aW9uLCBmb2N1c2luZyBvbiB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIEtjb25maWcgc3ltYm9scy4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzowMi4zMDA2MDUxMTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG4gNDYwOlxcdFxcdCAgbmZ0YWJsZXMgaXMgdGhlIG5ldyBwYWNrZXQgY2xhc3NpZmljYXRpb24gZnJhbWV3b3JrIHRoYXQgaW50ZW5kcyB0b1xcbiA0NjE6XFx0XFx0ICByZXBsYWNlIHRoZSBleGlzdGluZyB7aXAsaXA2LGFycCxlYn1fdGFibGVzIGluZnJhc3RydWN0dXJlLiBJdFxcbiA0NjI6XFx0XFx0ICBwcm92aWRlcyBhIHBzZXVkby1zdGF0ZSBtYWNoaW5lIHdpdGggYW4gZXh0ZW5zaWJsZSBpbnN0cnVjdGlvbi1zZXRcXG4gNDYzOlxcdFxcdCAgKGFsc28ga25vd24gYXMgZXhwcmVzc2lvbnMpIHRoYXQgdGhlIHVzZXJzcGFjZSAnbmZ0JyB1dGlsaXR5XFxuIDQ2NDpcXHRcXHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxcbiA0NjU6XFx0XFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XFxuIDQ2NjpcXHRcXHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXFxuIDQ2NzpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxcbiA0Njg6XFx0XFxuIDQ2OTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjAyLjMwMDcxMDMyMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDYxMzY0NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIFNvLCBmcm9tIHdoYXQgSSdtIGdhdGhlcmluZywgYE5GX1RBQkxFU2AgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgdXN1YWwgbmV0ZmlsdGVyIGNvcmUgY29tcG9uZW50cy4gVGhhdCdzIGdvb2QgdG8ga25vdywga2VlcHMgdGhpbmdzIHN0cmVhbWxpbmVkLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2gsIHNvbWV0aGluZydzIHBpbmdpbmcgaW4gdGhlIGJhY2sgb2YgbXkgbWluZC4gQWgsIHJpZ2h0LCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgcmVseWluZyBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYD8gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdC4gWWVzLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYE5FVEZJTFRFUl9BRFZBTkNFRGAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGF0IGJyYW5jaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjA3LjM2MjA3ODYyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDUzMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzowNy40MDUwMzA0NTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNDAwMTYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOlxuXG4qKktjb25maWcgQ2hlY2twb2ludCoqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSdtIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0J3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiB0aGluZywgc28gdGhlIGZpcnN0IHBsYWNlIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhbG1vc3QgcmVmbGV4aXZlbHksIGlzIGBuZXQvS2NvbmZpZ2AuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG9yIHJ1bGUgaXQgb3V0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDk5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzoxMS41MTkwMzQzNTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTE4Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjE4PWlmIE5FVEZJTFRFUlxcbm5ldC9LY29uZmlnLTIxOS1cXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9LY29uZmlnLTIyMS1cXHRib29sIFxcXCJBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDc6MTEuNjA1NTU4ODA3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDI0MTIxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzpcblxuKipDaGVja2luZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZmxhZ2dlZCBhcyBhIGJvb2xlYW4uIE5vdywgZ2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgc2V0dGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZCB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLiBUaGV5IG1pZ2h0IGJlIGluZGVwZW5kZW50LCBvciBvbmUgY291bGQgaW5mbHVlbmNlIHRoZSBvdGhlci4gVGltZSB0byBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjE0Ljc0Nzk3Mzc1OFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNTI6XFx0XFx0ICBmb3IgZXh0ZW5kZWQgYWNjb3VudGluZyB2aWEgTkZORVRMSU5LLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNTc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA1ODpcXHRcXHRoZWxwXFxuICA1OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDYwOlxcdFxcdCAgZm9yIHF1ZXVlaW5nIHBhY2tldHMgdmlhIE5GTkVUTElOSy5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0xPR1xcbiAgNjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbiAgNjQ6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA2NTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gIDY2OlxcdFxcdGhlbHBcXG4gIDY3OlxcdFxcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCB3aWxsIGluY2x1ZGUgc3VwcG9ydFxcbiAgNjg6XFx0XFx0ICBmb3IgbG9nZ2luZyBwYWNrZXRzIHZpYSBORk5FVExJTksuXFxuICA2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDI6NDc6MTQuNzQ4MDc4NTY4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzE0OTQ2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucywgYXMgaWYgdGhleSB3ZXJlIG15IG93biBpbW1lZGlhdGUgY29uc2lkZXJhdGlvbnM6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zLiBJJ20gdGhpbmtpbmcgd2UgZGVmaW5pdGVseSBuZWVkIGBORVRGSUxURVJfQURWQU5DRURgIGFuZCBgTkVURklMVEVSX05FVExJTktfUVVFVUVgLiBUaG9zZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYWR2YW5jZWQgbmV0ZmlsdGVyIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0bGluay1iYXNlZCBxdWV1aW5nLCB3aGljaCBzZWVtcyBsaWtlbHkgZ2l2ZW4gdGhlIGNvbnRleHQuIE5vdywgSSdtIHByZXR0eSBzdXJlIHdlIGFsc28gbmVlZCBgTkZfVEFCTEVTYCwgYmVjYXVzZSB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIG5mdGFibGVzIGZyYW1ld29yaywgYW5kIHdlJ3JlIGxvb2tpbmcgYXQgYG5mdF9wYXlsb2FkLmNgLlxuXG5Ib2xkIG9uLi4uIHNvbWV0aGluZydzIG5hZ2dpbmcgYXQgbWUuIExldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgYE5GX1RBQkxFU2AgYW5kIGBuZnRfcGF5bG9hZC5jYC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlIGNvbXBpbGF0aW9uIG9mIGBuZnRfcGF5bG9hZC5jYCBpcyBjb25kaXRpb25hbDsgaXQncyAqb25seSogY29tcGlsZWQgd2hlbiBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCdzIGEgZGVwZW5kZW5jeS4gU28sIHllYWgsIGBORl9UQUJMRVNgIGlzIGRlZmluaXRlbHkgZXNzZW50aWFsIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzkwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMjo0NzoyMS4wMTk1NzcxOTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG4gNDYwOlxcdFxcdCAgbmZ0YWJsZXMgaXMgdGhlIG5ldyBwYWNrZXQgY2xhc3NpZmljYXRpb24gZnJhbWV3b3JrIHRoYXQgaW50ZW5kcyB0b1xcbiA0NjE6XFx0XFx0ICByZXBsYWNlIHRoZSBleGlzdGluZyB7aXAsaXA2LGFycCxlYn1fdGFibGVzIGluZnJhc3RydWN0dXJlLiBJdFxcbiA0NjI6XFx0XFx0ICBwcm92aWRlcyBhIHBzZXVkby1zdGF0ZSBtYWNoaW5lIHdpdGggYW4gZXh0ZW5zaWJsZSBpbnN0cnVjdGlvbi1zZXRcXG4gNDYzOlxcdFxcdCAgKGFsc28ga25vd24gYXMgZXhwcmVzc2lvbnMpIHRoYXQgdGhlIHVzZXJzcGFjZSAnbmZ0JyB1dGlsaXR5XFxuIDQ2NDpcXHRcXHQgIChodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzKSB1c2VzIHRvIGJ1aWxkIHRoZVxcbiA0NjU6XFx0XFx0ICBydWxlLXNldC4gSXQgYWxzbyBjb21lcyB3aXRoIHRoZSBnZW5lcmljIHNldCBpbmZyYXN0cnVjdHVyZSB0aGF0XFxuIDQ2NjpcXHRcXHQgIGFsbG93cyB5b3UgdG8gY29uc3RydWN0IG1hcHBpbmdzIGJldHdlZW4gbWF0Y2hpbmdzIGFuZCBhY3Rpb25zXFxuIDQ2NzpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZSBsb29rdXBzLlxcbiA0Njg6XFx0XFxuIDQ2OTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjIxLjAxOTcwNDE1MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzA0MTI1MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQcmlvcml0aXphdGlvbioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIHRocm91Z2ggdGhpcyBwYXRjaCwgYW5kIGl0IHNlZW1zIGxpa2UgYE5GX1RBQkxFU2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSG93ZXZlciwgbGV0J3MgbWFrZSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNlZSB0aGF0IGBORVRGSUxURVJgIGlzIHJlcXVpcmVkLCB3aGljaCBpcyBzdGFuZGFyZC4gQWxzbywgdGhlIHBhdGNoIG1lbnRpb25zIGBORVRGSUxURVJfQURWQU5DRURgIGFzIGEgZGVwZW5kZW5jeSwgc28gd2UnbGwgbmVlZCB0aGF0IGVuYWJsZWQgYXMgd2VsbC5cblxuTm93LCBsZXQncyB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGhzLiBUaGUgY29kZSBtb2RpZmllcyBgbmZuZXRsaW5rX3F1ZXVlLmNgIGFuZCBgbmZ0X3BheWxvYWQuY2AuIEluIGBuZm5ldGxpbmtfcXVldWUuY2AsIHRoZSBuZXcgZnVuY3Rpb24gYG5mcW5sX3ZhbGlkYXRlX2w0YCBpcyBpbnRyb2R1Y2VkLCBhbmQgaXQncyBjYWxsZWQgYnkgYG5mcW5sX3ZhbGlkYXRlX2lwNGAgYW5kIGBuZnFubF92YWxpZGF0ZV9leHRoZHJgLiBUaGVzZSBhcmUsIGluIHR1cm4sIGNhbGxlZCBieSBgbmZxbmxfdmFsaWRhdGVfd3JpdGVgLCB3aGljaCBmZWVkcyBpbnRvIGBuZnFubF9tYW5nbGVgLiAgVGhhdCB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBuZnFubF9yZWN2X3ZlcmRpY3RgLiBTbywgYG5mcW5sX3JlY3ZfdmVyZGljdGAgYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBwYXRjaC5cblxuT24gdGhlIGBuZnRfcGF5bG9hZC5jYCBzaWRlLCBhIGZ1bmN0aW9uIGNhbGxlZCBgbmZ0X3RoX3dyaXRlX29rYCBpcyBhZGRlZCwgYW5kIHRoaXMgaXMgY2FsbGVkIGJ5IGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIFRoaXMgYG5mdF9wYXlsb2FkX3NldF9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBoZXJlLlxuXG5Cb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyByZXByZXNlbnQgZnVuY3Rpb25hbCBjaGFuZ2VzLCB3aGljaCBzdWdnZXN0cyB0aGV5J3JlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGV5IGFyZSBub3QgaW5saW5lZC5cblxuT2theSwgbGV0J3Mgc2VlLi4uIGBuZnFubF9yZWN2X3ZlcmRpY3RgIGlzIGRlY2xhcmVkIHN0YXRpYywgYnV0IGl0J3MgcGFydCBvZiBhbiBvcGVyYXRpb24gY2FsbGJhY2suIEl0J3MgcGFzc2VkIHRvIHRoZSBgbmZxbmxfY2JgIGFycmF5LCBzbyBpdCdzICpub3QqIGlubGluZWQuXG5cblRoZSBzYW1lIGFwcGxpZXMgdG8gYG5mdF9wYXlsb2FkX3NldF9ldmFsYC4gSXQgaXMgcGFydCBvZiBgbmZ0X2V4cHJfb3BzYCBzdHJ1Y3R1cmUuIFNvIGl0J3MgKm5vdCogaW5saW5lZCBlaXRoZXIuXG5cbkFscmlnaHQsIGJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJ2xsIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gYG5mcW5sX3JlY3ZfdmVyZGljdGAgYW5kIGBuZnRfcGF5bG9hZF9zZXRfZXZhbGAuIEZvciB0aGUgY29uZmlndXJhdGlvbiwgSSdsbCBlbmFibGUgYE5FVEZJTFRFUl9BRFZBTkNFRGAsIGBORVRGSUxURVJfTkVUTElOS19RVUVVRWAgKHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBuZXRsaW5rIHF1ZXVlIGZ1bmN0aW9uYWxpdHkpLCBhbmQgYE5GX1RBQkxFU2AgKHRoZSBwcmltYXJ5IGVuYWJsaW5nIG9wdGlvbikuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHJlbGF0ZWQgdG8gTDQgaGVhZGVycyB3aXRoaW4gYG5mbmV0bGlua19xdWV1ZWAgYW5kIHZhbGlkYXRlcyBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiB3aXRoaW4gYG5mdF9wYXlsb2FkYC4gQm90aCBmdW5jdGlvbmFsaXRpZXMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIGFuZCB0aGUgbmZ0YWJsZXMgaW5mcmFzdHJ1Y3R1cmUsIG1ha2luZyB0aGVtIGNyaXRpY2FsIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDQxLCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAyOjQ3OjMwLjcyMzgzMjA2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA4NjI3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiLFxuICAgIFwiTkVURklMVEVSX05FVExJTktfUVVFVUVcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mcW5sX3JlY3ZfdmVyZGljdFwiLFxuICAgIFwibmZ0X3BheWxvYWRfc2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIEw0IGhlYWRlcnMgaW4gbmZuZXRsaW5rX3F1ZXVlIGFuZCBjaGVja3MgaWYgVENQIGhlYWRlciBtb2RpZmljYXRpb24gaXMgdmFsaWQgaW4gbmZ0X3BheWxvYWQuIEJvdGggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBhbmQgbmZ0YWJsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORVRGSUxURVJfTkVUTElOS19RVUVVRVwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZxbmxfcmVjdl92ZXJkaWN0XCIsXG4gICAgXCJuZnRfcGF5bG9hZF9zZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgTDQgaGVhZGVycyBpbiBuZm5ldGxpbmtfcXVldWUgYW5kIGNoZWNrcyBpZiBUQ1AgaGVhZGVyIG1vZGlmaWNhdGlvbiBpcyB2YWxpZCBpbiBuZnRfcGF5bG9hZC4gQm90aCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIGFuZCBuZnRhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgch7v[1] Phase: Succeeded StartedAt: 2026-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 02:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 02:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2] Phase: Succeeded StartedAt: 2026-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 02:47:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:42 +0000 UTC FinishedAt: 2026-08-03 02:47:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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-workflowgch7v/series-workflowgch7v-convert-artifact-1835951904/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:52 +0000 UTC FinishedAt: 2026-08-03 03:06:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:52 +0000 UTC FinishedAt: 2026-08-03 03:06:12 +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:*5f61350e-af95-418b-9a1a-3b181e5d34a0,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-workflowgch7v/series-workflowgch7v-convert-artifact-1835951904/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": "264e481e-a617-42f1-b5ba-804ed5d0a170", "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-workflowgch7v/series-workflowgch7v-build-action-2229224934/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 02:47:52 +0000 UTC FinishedAt: 2026-08-03 03:06:02 +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:*5f61350e-af95-418b-9a1a-3b181e5d34a0,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-workflowgch7v/series-workflowgch7v-convert-artifact-1835951904/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": "264e481e-a617-42f1-b5ba-804ed5d0a170", "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-workflowgch7v/series-workflowgch7v-build-action-2229224934/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:12 +0000 UTC FinishedAt: 2026-08-03 03:06:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:12 +0000 UTC FinishedAt: 2026-08-03 03:06:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:12 +0000 UTC FinishedAt: 2026-08-03 03:06:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:12 +0000 UTC FinishedAt: 2026-08-03 03:06:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-workflowgch7v/series-workflowgch7v-convert-artifact-1962659143/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:23 +0000 UTC FinishedAt: 2026-08-03 03:08:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:06:23 +0000 UTC FinishedAt: 2026-08-03 03:08:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*264e481e-a617-42f1-b5ba-804ed5d0a170,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-workflowgch7v/series-workflowgch7v-build-action-2229224934/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-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:08:32 +0000 UTC FinishedAt: 2026-08-03 03:08:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:08:32 +0000 UTC FinishedAt: 2026-08-03 03:08:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:08:32 +0000 UTC FinishedAt: 2026-08-03 03:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:08:32 +0000 UTC FinishedAt: 2026-08-03 03:31:51 +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:*5f61350e-af95-418b-9a1a-3b181e5d34a0,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-workflowgch7v/series-workflowgch7v-convert-artifact-1962659143/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": "c0adbead-397f-4d70-ba34-eb0a089357f8", "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-workflowgch7v/series-workflowgch7v-build-action-1440222411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:08:32 +0000 UTC FinishedAt: 2026-08-03 03:31:41 +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:*5f61350e-af95-418b-9a1a-3b181e5d34a0,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-workflowgch7v/series-workflowgch7v-convert-artifact-1962659143/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": "c0adbead-397f-4d70-ba34-eb0a089357f8", "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-workflowgch7v/series-workflowgch7v-build-action-1440222411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:31:51 +0000 UTC FinishedAt: 2026-08-03 03:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:31:51 +0000 UTC FinishedAt: 2026-08-03 03:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:31:51 +0000 UTC FinishedAt: 2026-08-03 03:33:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:31:51 +0000 UTC FinishedAt: 2026-08-03 03:33:47 +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:*c0adbead-397f-4d70-ba34-eb0a089357f8,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-workflowgch7v/series-workflowgch7v-build-action-1440222411/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-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +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":["nfqnl_recv_verdict","nft_payload_set_eval"],"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:*264e481e-a617-42f1-b5ba-804ed5d0a170,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0adbead-397f-4d70-ba34-eb0a089357f8,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-workflowgch7v/series-workflowgch7v-build-action-2229224934/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-workflowgch7v/series-workflowgch7v-build-action-1440222411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 03:34:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 03:34:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfqnl_recv_verdict","nft_payload_set_eval"],"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-workflowgch7v/series-workflowgch7v-convert-artifact-3744411168/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 03:33:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:58 +0000 UTC FinishedAt: 2026-08-03 03:33:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:33:59 +0000 UTC FinishedAt: 2026-08-03 03:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:34:21 +0000 UTC FinishedAt: 2026-08-03 06:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgch7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"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":["nfqnl_recv_verdict","nft_payload_set_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER_ADVANCED","NETFILTER_NETLINK_QUEUE","NF_TABLES"],"series_id":"0ecbcd70-2a77-48ac-a160-b2044708e4ec","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-08-03 03:34:21 +0000 UTC FinishedAt: 2026-08-03 06:36:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*264e481e-a617-42f1-b5ba-804ed5d0a170,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0adbead-397f-4d70-ba34-eb0a089357f8,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-workflowgch7v/series-workflowgch7v-build-action-2229224934/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-workflowgch7v/series-workflowgch7v-build-action-1440222411/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-workflowgch7v/series-workflowgch7v-convert-artifact-3744411168/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,}