Name: series-workflowvkv7k Phase: Succeeded StartedAt: 2026-07-31 01:21:00 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[0] Phase: Succeeded StartedAt: 2026-07-31 01:21:00 +0000 UTC FinishedAt: 2026-07-31 01:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 01:21:00 +0000 UTC FinishedAt: 2026-07-31 01:47:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_CONNTRACK", "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_CONNTRACK", "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "73745fb3-5a23-445f-b89b-6da86198101a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_xdp_ct_alloc", "bpf_xdp_ct_lookup", "bpf_skb_ct_alloc", "bpf_skb_ct_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGI3ZWMwYmU0YzQ3ZmRkZjMzYzk3ODdlYzU1NzMxM2M4ODdmMjNmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjQ0OjA3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbkBAIC0xMjIsNiAmIzQzOzEyMiw3IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlIG90dXBsZSwgcnR1cGxlO1xuIFx0c3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1x0czMyIG5ldG5zX2lkO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghKG9wdHNfbGVuID09IE5GX0JQRl9DVF9PUFRTX1NaIHx8IG9wdHNfbGVuID09IDEyKSlcbkBAIC0xMzQsNyAmIzQzOzEzNSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXHR9XG4gXG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4mIzQzO1x0bmV0bnNfaWQgPSBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZCk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KG5ldG5zX2lkIFx1MDAzYyBCUEZfRl9DVVJSRU5UX05FVE5TKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4gXHRlcnIgPSBicGZfbmZfY3RfdHVwbGVfcGFyc2UoYnBmX3R1cGxlLCB0dXBsZV9sZW4sIG9wdHMtXHUwMDNlbDRwcm90byxcbkBAIC0xNDcsOCAmIzQzOzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbiYjNDM7XHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4mIzQzO1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMTcxLDcgJiM0MzsxNzMsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuIFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcbiBcbiBvdXQ6XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4mIzQzO1x0aWYgKG5ldG5zX2lkIFx1MDAzZT0gMClcbiBcdFx0cHV0X25ldChuZXQpO1xuIFxuIFx0cmV0dXJuIGN0O1xuQEAgLTE4Niw2ICYjNDM7MTg4LDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuIFx0c3RydWN0IG5mX2Nvbm50cmFja190dXBsZSB0dXBsZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSBjdF96b25lO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuJiM0MztcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIW9wdHMgfHwgIWJwZl90dXBsZSlcbkBAIC0yMDEsNyAmIzQzOzIwNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcdGlmICh1bmxpa2VseShvcHRzLVx1MDAzZWw0cHJvdG8gIT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2IG9wdHMtXHUwMDNlbDRwcm90byAhPSBJUFBST1RPX1VEUCkpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FUFJPVE8pO1xuLVx0aWYgKHVubGlrZWx5KG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxuJiM0MztcdG5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtXHUwMDNlbmV0bnNfaWQpO1xuJiM0MztcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMjA5LDggJiM0MzsyMTMsOCBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbiYjNDM7XHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4mIzQzO1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMjI1LDcgJiM0MzsyMjksNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHR9XG4gXG4gXHRoYXNoID0gbmZfY29ubnRyYWNrX2ZpbmRfZ2V0KG5ldCwgXHUwMDI2Y3Rfem9uZSwgXHUwMDI2dHVwbGUpO1xuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKVxuJiM0MztcdGlmIChuZXRuc19pZCBcdTAwM2U9IDApXG4gXHRcdHB1dF9uZXQobmV0KTtcbiBcdGlmICghaGFzaClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGI3ZWMwYmU0YzQ3ZmRkZjMzYzk3ODdlYzU1NzMxM2M4ODdmMjNmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjQ0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwppbmRleCBmOThkMWQ0YjQyYzNkLi44YjU0MDg0NmYyOTkyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwpAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLAogCXN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgb3R1cGxlLCBydHVwbGU7CiAJc3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7CiAJc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwlzMzIgbmV0bnNfaWQ7CiAJaW50IGVycjsKIAogCWlmICghKG9wdHNfbGVuID09IE5GX0JQRl9DVF9PUFRTX1NaIHx8IG9wdHNfbGVuID09IDEyKSkKQEAgLTEzNCw3ICYjNDM7MTM1LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSwKIAkJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCX0KIAotCWlmICh1bmxpa2VseShvcHRzLSZndDtuZXRuc19pZCAmbHQ7IEJQRl9GX0NVUlJFTlRfTkVUTlMpKQomIzQzOwluZXRuc19pZCA9IFJFQURfT05DRShvcHRzLSZndDtuZXRuc19pZCk7CiYjNDM7CWlmICh1bmxpa2VseShuZXRuc19pZCAmbHQ7IEJQRl9GX0NVUlJFTlRfTkVUTlMpKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIAogCWVyciA9IGJwZl9uZl9jdF90dXBsZV9wYXJzZShicGZfdHVwbGUsIHR1cGxlX2xlbiwgb3B0cy0mZ3Q7bDRwcm90bywKQEAgLTE0Nyw4ICYjNDM7MTQ5LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAotCWlmIChvcHRzLSZndDtuZXRuc19pZCAmZ3Q7PSAwKSB7Ci0JCW5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLSZndDtuZXRuc19pZCk7CiYjNDM7CWlmIChuZXRuc19pZCAmZ3Q7PSAwKSB7CiYjNDM7CQluZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpOwogCQlpZiAodW5saWtlbHkoIW5ldCkpCiAJCQlyZXR1cm4gRVJSX1BUUigtRU5PTkVUKTsKIAl9CkBAIC0xNzEsNyAmIzQzOzE3Myw3IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsCiAJX19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTsKIAogb3V0OgotCWlmIChvcHRzLSZndDtuZXRuc19pZCAmZ3Q7PSAwKQomIzQzOwlpZiAobmV0bnNfaWQgJmd0Oz0gMCkKIAkJcHV0X25ldChuZXQpOwogCiAJcmV0dXJuIGN0OwpAQCAtMTg2LDYgJiM0MzsxODgsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJc3RydWN0IG5mX2Nvbm50cmFja190dXBsZSB0dXBsZTsKIAlzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTsKIAlzdHJ1Y3QgbmZfY29ubiAqY3Q7CiYjNDM7CXMzMiBuZXRuc19pZDsKIAlpbnQgZXJyOwogCiAJaWYgKCFvcHRzIHx8ICFicGZfdHVwbGUpCkBAIC0yMDEsNyAmIzQzOzIwNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwKIAl9CiAJaWYgKHVubGlrZWx5KG9wdHMtJmd0O2w0cHJvdG8gIT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyBvcHRzLSZndDtsNHByb3RvICE9IElQUFJPVE9fVURQKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVQUk9UTyk7Ci0JaWYgKHVubGlrZWx5KG9wdHMtJmd0O25ldG5zX2lkICZsdDsgQlBGX0ZfQ1VSUkVOVF9ORVROUykpCiYjNDM7CW5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtJmd0O25ldG5zX2lkKTsKJiM0MzsJaWYgKHVubGlrZWx5KG5ldG5zX2lkICZsdDsgQlBGX0ZfQ1VSUkVOVF9ORVROUykpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCiAJZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLSZndDtsNHByb3RvLApAQCAtMjA5LDggJiM0MzsyMTMsOCBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGVyciAmbHQ7IDApCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAKLQlpZiAob3B0cy0mZ3Q7bmV0bnNfaWQgJmd0Oz0gMCkgewotCQluZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgb3B0cy0mZ3Q7bmV0bnNfaWQpOwomIzQzOwlpZiAobmV0bnNfaWQgJmd0Oz0gMCkgewomIzQzOwkJbmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTsKIAkJaWYgKHVubGlrZWx5KCFuZXQpKQogCQkJcmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7CiAJfQpAQCAtMjI1LDcgJiM0MzsyMjksNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJfQogCiAJaGFzaCA9IG5mX2Nvbm50cmFja19maW5kX2dldChuZXQsICZhbXA7Y3Rfem9uZSwgJmFtcDt0dXBsZSk7Ci0JaWYgKG9wdHMtJmd0O25ldG5zX2lkICZndDs9IDApCiYjNDM7CWlmIChuZXRuc19pZCAmZ3Q7PSAwKQogCQlwdXRfbmV0KG5ldCk7CiAJaWYgKCFoYXNoKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb25udHJhY2sgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYWRkaW5nIGBSRUFEX09OQ0Uob3B0cy0mZ3Q7bmV0bnNfaWQpYCBhbmQgdXNpbmcgYSBsb2NhbCB2YXJpYWJsZSwgYG5ldG5zX2lkYCwgd2l0aGluIHRoZSBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYCBmdW5jdGlvbnMuIEFoLCByaWdodCwgdGhpcyBpcyB0ZXh0Ym9vayBUT0NUT1UgcHJvdGVjdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB2dWxuZXJhYmxlIGJlY2F1c2UgYG9wdHMtJmd0O25ldG5zX2lkYCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZpZWQgY29uY3VycmVudGx5IGJ5IGEgQlBGIHByb2dyYW0gb3Igc29tZXRoaW5nIGluIHVzZXJzcGFjZSBiZXR3ZWVuIHRoZSBjaGVjayAobGlrZSBgb3B0cy0mZ3Q7bmV0bnNfaWQgJmd0Oz0gMGApIGFuZCB0aGUgYWN0dWFsIHVzYWdlIChlLmcuLCBpbiBgZ2V0X25ldF9uc19ieV9pZGAgb3IgYHB1dF9uZXRgKS4gVGhpcyBmaXggZW5zdXJlcyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGEgY29uc2lzdGVudCB2YWx1ZS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGZsdXNoIG91dCBhbnkgcmVtYWluaW5nIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIGlzc3VlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29uY3VycmVuY3kuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgY29kZS4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O2xsIGdyYWIgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGBuZl9jb25udHJhY2tfYnBmLmNgIGluIHRoZSBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkgY2FuIHJlcHJvZHVjZSB0aGlzIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfYnBmLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgJiM0Mzs9IG5mX2Nvbm50cmFja19icGYub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjE6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JwZi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTIyLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMsIHNwZWFraW5nIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIG5mX2Nvbm50cmFja19icGYubyBNb2R1bGUgQnVpbGQqKgoKUmlnaHQsIHNvIHRoZSB3YXkgSSYjMzk7bSBzZWVpbmcgaXQsIHRoaXMgYG5mX2Nvbm50cmFja19icGYub2Agb2JqZWN0IGZpbGUsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ2V0dGluZyBidWlsdCwgY29uZGl0aW9uYWxseSBvZiBjb3Vyc2UsIGlmIHdlJiMzOTt2ZSBnb3QgYENPTkZJR19ORl9DT05OVFJBQ0tgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQgbWFrZXMgc2Vuc2UsIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaXQgYWxzbyBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIG9yLCBwb3RlbnRpYWxseSwgYENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTYCBiZWluZyBlbmFibGVkIGFzIHdlbGwuIFNvIHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBvbiBCVEYgKEJURiAtIEJQRiBUeXBlIEZvcm1hdCkgZGVidWcgaW5mb3JtYXRpb24uIExldCBtZSBzZWUgaWYgSSBjYW4gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBtb2R1bGUuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY29uZmlybWF0aW9uIG9mIHRoaXMgbW9kdWxlJiMzOTtzIGJ1aWxkIHByZXJlcXVpc2l0ZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kIG9yIG5vdC4gVGhlbiBJIGNhbiBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LCBhbmQgaG93IGl0IGlzIGFsbCB0aWVkIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icGYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgJiM0Mzs9IG5mX2Nvbm50cmFja19icGYub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjE6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JwZi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTIyLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBCUEYgTmV0ZmlsdGVyIENvbm50cmFjayBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGdvdmVybiB0aGUgQlBGIHNpZGUgb2YgdGhlIG5ldGZpbHRlciBjb25udHJhY2suIEkmIzM5O20gcHJldHR5IHN1cmUgSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0JiMzOTtzIHNlZS4uLiByaWdodCwgKm5mXF9jb25udHJhY2tcX2JwZi5jKi4gVGhhdCYjMzk7cyB0aGUga2V5LgoKSG9sZCBvbi4uLiBJIHJlbWVtYmVyIG5vdy4gVGhhdCBjb2RlIGlzIGNvbXBpbGVkIGludG8gdGhlIGBuZl9jb25udHJhY2tgIG1vZHVsZSAob3IgYnVpbHQtaW4sIGlmIHlvdSYjMzk7dmUgZ290IGl0IHRoYXQgd2F5KSBvbmx5IGlmIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBzaW5jZSBCVEYgaXMgY2VudHJhbCB0byBhIGxvdCBvZiB0aGlzIEJQRiBzdHVmZi4gU28sIEkgZGVmaW5pdGVseSBuZWVkIGBORl9DT05OVFJBQ0tgIGVuYWJsZWQgKHRoYXQmIzM5O3MgZnVuZGFtZW50YWwpLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpXYWl0LCBpc24mIzM5O3QgYERFQlVHX0lORk9fQlRGYCBwcmV0dHkgbXVjaCBzdGFuZGFyZCBmb3IgQlBGIHNldHVwcz8gSSB0aGluayBpdCBpcywgYnV0IEkgc2hvdWxkIHZlcmlmeSwganVzdCBpbiBjYXNlLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gT2theSwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNgIGFuZCBzZWFyY2ggZm9yIGFueSBvdGhlciBgI2lmZGVmYCBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgY29udHJvbCBmZWF0dXJlcy4gTmVlZCB0byBiZSB0aG9yb3VnaCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XiNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIERpcmVjdGl2ZXMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hpY2ggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYXJlIGJlaW5nIGVtcGxveWVkIHRvIG1hbmFnZSBjb2RlIGluY2x1c2lvbiBvciBleGNsdXNpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBgI2lmYCBvciBgI2lmIGRlZmluZWRgLiBUaGVzZSBhcmUgdGhlIHdvcmtob3JzZXMgb2YgdGhpcyB0eXBlIG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciB1c2UgaXMgY3J1Y2lhbCB0byBncmFzcGluZyBob3cgdGhlIGNvZGViYXNlIGJlaGF2ZXMgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9yIHRhcmdldCBwbGF0Zm9ybXMuIEZpbmRpbmcgdGhlc2UgZWFybHkgaW4gdGhlIGludmVzdGlnYXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSYjMzk7cyBmbGV4aWJpbGl0eS4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14jaWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yNDg9c3RhdGljIGludCBfbmZfY29ubnRyYWNrX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjY2LVx0c3dpdGNoIChvZmYpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjI2NzojaWYgZGVmaW5lZChDT05GSUdfTkZfQ09OTlRSQUNLX01BUkspXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0yNjgtXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBuZl9jb25uLCBtYXJrKTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgUG90ZW50aWFsIEJQRiBDb25uZWN0aW9uIFRyYWNraW5nIEltcGFjdHMqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktgICpjb3VsZCogYmUgYSBmYWN0b3IgaGVyZSwgYnV0IHRoZSBjaGFuZ2VzIHNlZW0gZm9jdXNlZCBvbiBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWNhbGx5LgoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQ6CiogICBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgCiogICBgX19icGZfbmZfY3RfbG9va3VwYAoKUmlnaHQsIHRoZXNlIGFyZSBCUEYgaGVscGVycy4gU28sIGdpdmVuIHRoZSBjb250ZXh0LCB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIEJQRi1yZWxhdGVkIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoYXQgbWVhbnMgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCB1c2FnZXMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiBob3cgdGhlc2UgaGVscGVycyBhcmUgYmVpbmcgdXNlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBwYXRjaCBhcmUuIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhlc2UgQlBGIGhlbHBlcnMgYXJlIGRlcGxveWVkLiBUaGF0JiMzOTtsbCB0ZWxsIHRoZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfbmZfY3RfYWxsb2NfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0xMTc9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjExODpfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTE5LVx0XHRcdHUzMiB0dXBsZV9sZW4sIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMwNT1icGZfeGRwX2N0X2FsbG9jKHN0cnVjdCB4ZHBfbWQgKnhkcF9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjMxMTpcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShkZXZfbmV0KGN0eC1cdTAwM2VyeHEtXHUwMDNlZGV2KSwgYnBmX3R1cGxlLCB0dXBsZV9fc3osXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTItXHRcdFx0XHQgICAgICAgb3B0cywgb3B0c19fc3osIDEwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zNjE9YnBmX3NrYl9jdF9hbGxvYyhzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNjgtXHRuZXQgPSBza2ItXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNjk6XHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkobmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3osIDEwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM3MC1cdHJldHVybiAoc3RydWN0IG5mX2Nvbm5fX19pbml0ICopYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipSZWZsZWN0aW5nIG9uIENvbm5lY3Rpb24gVHJhY2tpbmcgYW5kIEJQRiBJbnRlZ3JhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIHBhdHRlcm4gaGVyZS4gYGJwZl94ZHBfY3RfYWxsb2NgIGFuZCBgYnBmX3NrYl9jdF9hbGxvY2AgYXJlIHV0aWxpemluZyB0aGVzZSBmdW5jdGlvbnMuIEFuZCB0aGVuLCBgX19icGZfbmZfY3RfbG9va3VwYCBpcyBjcnVjaWFsIGZvciB0aGUgbG9va3VwIGZ1bmN0aW9ucyBpbiBib3RoIFhEUCBhbmQgU0tCIGNvbnRleHRzIOKAkyBgYnBmX3hkcF9jdF9sb29rdXBgIGFuZCBgYnBmX3NrYl9jdF9sb29rdXBgLiBJIG5lZWQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgY29uZmlndXJlZCBwcm9wZXJseSB0byBlbmFibGUgdGhlc2UgY29ubmVjdGlvbiB0cmFja2luZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yay4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdlIGhhdmUgQlBGIGRlcGVuZGVuY2llcywgd2Uga25vdyB0aGF0LiBTbywgbmF0dXJhbGx5LCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIGdpdmVuIOKAkyB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBBbmQgY2xlYXJseSwgd2UmIzM5O2xsIG5lZWQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoaXMgaXMgYWxsIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcuIEZpbmFsbHksIEkga25vdyBJJiMzOTtsbCBiZSBuZWVkaW5nIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIHRvIGNvbXBpbGUgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgZWZmZWN0aXZlbHkuCgpKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgTkZfQ09OTlRSQUNLYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgY2F2ZWF0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGJlIHRob3JvdWdoIHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTExPWNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ6Y29uZmlnIE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY6Y29uZmlnIE5GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB6b25lcyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg6Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O1N1cHBseSBDVCBsaXN0IGluIHByb2NmcyAoT0JTT0xFVEUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVzdGFtcGluZyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODktXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTU6Y29uZmlnIE5GX0NPTk5UUkFDS19PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXHRib29sXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVx0dHJpc3RhdGUgXCYjMzQ7QW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjgtXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjU3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzUtXHR0cmlzdGF0ZVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cdHRyaXN0YXRlIFwmIzM0O1NOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7UFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzMwOmNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O1NBTkUgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtURlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkwMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIENvbm5lY3Rpb24gVHJhY2tpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gZW5hYmxlIGBORl9DT05OVFJBQ0tgIGFuZCBgREVCVUdfSU5GT19CVEZgLiBIb2xkIG9uLCBgREVCVUdfSU5GT19CVEZgIGlzIGRlZmluZWQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBSaWdodCwgbGV04oCZcyBkaWcgaW50byB0aGlzIGFuZCBjaGVjayBgQlBGX1NZU0NBTExgLgoKTm93LCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFuYWx5c2lzIGFyZSBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfbG9va3VwYCwgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCwgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLgoKSG1tLCBhIHdyaW5rbGUuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCBhbmQgYF9fYnBmX25mX2N0X2xvb2t1cGAuIFRoZXkgYXJlICpzdGF0aWMqIGZ1bmN0aW9ucy4gVGhhdCBjb3VsZCBpbXBhY3QgdGhlaXIgaW5saW5pbmcgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaWYgdGhleSBhcmUgbGFyZ2UsIGJ1dCB3YWl0Li4uIHRoZXkgYXJlIHN0YXRpYy4gSXQgd291bGQgc2VlbSB0aGVpciBpbmxpbmUgc3RhdHVzIGlzIHdvcnRoIGEgbG9vay4KTGV0JiMzOTtzIHNlZSBpZiB0aGV5IGFyZSBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYnBmX25mX2N0X2FsbG9jX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE3PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoxMTg6X19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTExOS1cdFx0XHR1MzIgdHVwbGVfbGVuLCBzdHJ1Y3QgYnBmX2N0X29wdHMgKm9wdHMsIHUzMiBvcHRzX2xlbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDU9YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMTE6XHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkoZGV2X25ldChjdHgtXHUwMDNlcnhxLVx1MDAzZWRldiksIGJwZl90dXBsZSwgdHVwbGVfX3N6LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEyLVx0XHRcdFx0ICAgICAgIG9wdHMsIG9wdHNfX3N6LCAxMCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzYxPWJwZl9za2JfY3RfYWxsb2Moc3RydWN0IF9fc2tfYnVmZiAqc2tiX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzY4LVx0bmV0ID0gc2tiLVx1MDAzZWRldiA/IGRldl9uZXQoc2tiLVx1MDAzZWRldikgOiBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzY5Olx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KG5ldCwgYnBmX3R1cGxlLCB0dXBsZV9fc3osIG9wdHMsIG9wdHNfX3N6LCAxMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNzAtXHRyZXR1cm4gKHN0cnVjdCBuZl9jb25uX19faW5pdCAqKWJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTdGF0aWMgTmF0dXJlIG9mIHRoZSBBUEkqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHN0YXRpYyBlbGVtZW50cyBoZXJlLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBtb3N0IG9mIHRoZSBBUEksIGF0IGxlYXN0IHRoZSBjb3JlIHBhcnQsIGlzIGluaGVyZW50bHkgc3RhdGljLiBJdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBleGNlcHRpb25zLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cy4gQWgsIHllcywgdGhlc2Ugc2VlbSB0byBiZSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFsbG93IGZvciBkeW5hbWljIGFsbG9jYXRpb24gYW5kIGxvb2t1cCB3aXRoaW4gdGhlIGNvbnRleHQgdHJhY2tpbmcgc3Vic3lzdGVtOiBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSBzdGF0ZSBpcyBsaWtlbHkgYmVpbmcgY3JlYXRlZCwgbW9kaWZpZWQsIGFuZCByZXRyaWV2ZWQgZHVyaW5nIHByb2dyYW0gZXhlY3V0aW9uLgoKVGhlIG5leHQgY3JpdGljYWwgcXVlc3Rpb24gaXMgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IGV4cG9ydGVkIGFzIEJQRiBoZWxwZXJzIGFuZCB1c2VkIGFzIHN1Y2guIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgdGhlaXIgZXhpc3RlbmNlIGJ1dCB0aGVpciBwcmFjdGljYWwgaW50ZWdyYXRpb24gd2l0aGluIEJQRiBwcm9ncmFtcy4gQXJlIHdlLCBhcyBkZXZlbG9wZXJzLCBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSBmcm9tIG91ciBCUEYgY29kZT8gVW5kZXJzdGFuZGluZyB0aGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiBzdGF0aWMgb3IgZHluYW1pYyBiZWhhdmlvciBvbiB0aGluZ3MgbGlrZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcHJvZ3JhbSBwZXJmb3JtYW5jZS4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl94ZHBfY3RfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yODc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjg4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6Mjg5Oi8qIGJwZl94ZHBfY3RfYWxsb2MgLSBBbGxvY2F0ZSBhIG5ldyBDVCBlbnRyeVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjkwLSAqXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA0PV9fYnBmX2tmdW5jIHN0cnVjdCBuZl9jb25uX19faW5pdCAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMDU6YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMwNi1cdFx0IHUzMiB0dXBsZV9fc3osIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfX3N6KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM5MD1icGZfc2tiX2N0X2xvb2t1cChzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00MDYtICogQG5mY3RcdCAtIFBvaW50ZXIgdG8gcmVmZXJlbmNlZCBuZl9jb25uX19faW5pdCBvYmplY3QsIG9idGFpbmVkXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo0MDc6ICpcdFx0ICAgdXNpbmcgYnBmX3hkcF9jdF9hbGxvYyBvciBicGZfc2tiX2N0X2FsbG9jLlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA4LSAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTQzNT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9jdF9yZWxlYXNlKHN0cnVjdCBuZl9jb25uICpuZmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ0Ni0gKiBAbmZjdFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDQ3OiAqICAgICAgICAgICAgICAgICBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NDgtICogQHRpbWVvdXQgICAgICAtIFRpbWVvdXQgaW4gbXNlY3MuXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDY1PV9fYnBmX2tmdW5jIGludCBicGZfY3RfY2hhbmdlX3RpbWVvdXQoc3RydWN0IG5mX2Nvbm4gKm5mY3QsIHUzMiB0aW1lb3V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ3Ni0gKiBAbmZjdFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDc3OiAqXHRcdCAgIGJwZl94ZHBfY3RfYWxsb2Mgb3IgYnBmX3NrYl9jdF9hbGxvYy5cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ3OC0gKiBAc3RhdHVzICAgICAgIC0gTmV3IHN0YXR1cyB2YWx1ZS5cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz01MDI9QlRGX0tGVU5DU19TVEFSVChuZl9jdF9rZnVuY19zZXQpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo1MDM6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl94ZHBfY3RfYWxsb2MsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTUwNC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3hkcF9jdF9sb29rdXAsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQlBGIENvbm5UcmFjayBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEJQRiBrZnVuY3MgaGVyZSwgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZy4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHplcm8gaW4gb24gYXJlIGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhvc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuCgpOb3csIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJiMzOTtsbCBuZWVkIGBORl9DT05OVFJBQ0tgLCBuYXR1cmFsbHksIGFuZCBhbHNvIGBERUJVR19JTkZPX0JURmAgc28gSSBjYW4gYWN0dWFsbHkgKnNlZSogd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBCUEYgcHJvZ3JhbXMsIGFuZCBgQlBGX1NZU0NBTExgIHNvIEkgY2FuIHVzZSBpdC4KCkhvbGQgb24sIGxldCBtZSBxdWlja2x5IG1ha2Ugc3VyZSBgTkZfQ09OTlRSQUNLYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgSSBtaWdodCBtaXNzLiBZZXAsIGxvb2tzIGxpa2UgaXQgcmVsaWVzIG9uIGBORVRGSUxURVJgLiBFYXN5IGVub3VnaC4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhhdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMgYWJvdXQgYE5GX0NPTk5UUkFDS2AgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZSBzcGVjaWZpYyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMsIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGFyb3VuZCBsaW5lIDgyOyBob3BlZnVsbHksIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIGxvY2F0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5hcmd1bWVudCAmIzM0O0ZpcnN0TGluZSYjMzQ7IGhhcyB3cm9uZyB0eXBlOiBnb3Qgc3RyaW5nLCB3YW50IGludDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAmIzM0Ozc1JiMzNDssCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogJiMzNDsyMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O2FyZ3VtZW50IFwmIzM0O0ZpcnN0TGluZVwmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgeW91ciBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlZHVjdGlvbiBCZWdpbnM6IFZhcmlhYmxlIElkZW50aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuICYjMzQ7Rmlyc3RMaW5lLi4uJiMzNDsgSG1tLCB0aGUgdmFyaWFibGUgbmFtZSAmIzM0O0ZpcnN0TGluZSYjMzQ7IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBxdWFudGl0YXRpdmUsIGxpa2VseSBhIGNvdW50LCBhbiBpbmRleCwgb3Igc29tZXRoaW5nIG51bWVyaWNhbC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIHBlcmhhcHMsIG9yIGZyb20gYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UpLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSBpdCB3b3VsZCByZXByZXNlbnQgYSBzdHJpbmcgb3IgYSBib29sZWFuLiBUaGUgdmVyeSBzdHJ1Y3R1cmUgb2YgdGhlIG5hbWUgc3Ryb25nbHkgaW1wbGllcyBpdCBtdXN0IGJlIGFuIGludGVnZXIuIEl0IGRvZXNuJiMzOTt0IHNjcmVhbSBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBlaXRoZXIsIHNvIGludGVnZXIgaXQgaXMsIGF0IGxlYXN0IGFzIGEgc3RhcnRpbmcgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIG9wZXJhdGUgdW5kZXIgdGhhdCBjb25zdHJhaW50IGFuZCBzZWUgd2hlcmUgaXQgdGFrZXMgdXMgaW4gdGhlIHN1YnNlcXVlbnQgc3RlcHMgb2YgdGhpcyBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzU6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBPU0Ygb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDc2Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuICA3NzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gIDc4Olx0XHRoZWxwXG4gIDc5Olx0XHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcbiAgODA6XHRcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cbiAgODE6XHRcbiAgODI6XHRjb25maWcgTkZfQ09OTlRSQUNLXG4gIDgzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxuICA4NjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxuICA4OTpcdFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxuICA5MDpcdFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxuICA5MTpcdFxuICA5MjpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIGRvIE1hc3F1ZXJhZGluZyBvciBvdGhlciBraW5kcyBvZiBOZXR3b3JrXG4gIDkzOlx0XHQgIEFkZHJlc3MgVHJhbnNsYXRpb24uICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuaGFuY2UgcGFja2V0XG4gIDk0Olx0XHQgIGZpbHRlcmluZyAoc2VlIGBDb25uZWN0aW9uIHN0YXRlIG1hdGNoIHN1cHBvcnQmIzM5OyBiZWxvdykuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjMzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gVGhvdWdodCBQcm9jZXNzKioKCkFscmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgTkZfQ09OTlRSQUNLYCDigJMgdGhhdCYjMzk7cyBlYXN5LCBpdCBsaXZlcyByaWdodCB3aXRoaW4gdGhlIG5ldGZpbHRlciBtZW51LCBzbyBpdCBqdXN0IG5lZWRzIGBORVRGSUxURVJgIHRvIGJlIGVuYWJsZWQsIGFuZCB3ZSYjMzk7cmUgZ29vZCB0byBnby4gTm8gb3RoZXIgaGVhZGFjaGVzIHRoZXJlLgoKTm93LCBmb3IgYERFQlVHX0lORk9fQlRGYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IHJpZ2h0LCBzaW5jZSB0aGF0JiMzOTtzIGEgbW9yZSBpbnRlcmVzdGluZyBvbmUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgaXQmIzM5O3MgY2xlYXI6IGBERUJVR19JTkZPYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgaXRzIHByZXJlcXVpc2l0ZXMuIE9rYXksIGdvdCBpdC4KClNvLCBqdXN0IHRvIHN1bW1hcml6ZSBmb3IgbXkgaW50ZXJuYWwgY2hlY2tsaXN0LCB0aGUgZXNzZW50aWFsIGNvbmZpZ3MgYXJlOgoKKiAgIGBORl9DT05OVFJBQ0tgCiogICBgREVCVUdfSU5GT19CVEZgCiogICBgQlBGX1NZU0NBTExgCgpXaXRoIHRoZXNlLCBhbGwgc2hvdWxkIGJlIHdlbGwuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBpdCBpczoKCiogICBgYnBmX3hkcF9jdF9hbGxvY2AKKiAgIGBicGZfeGRwX2N0X2xvb2t1cGAKKiAgIGBicGZfc2tiX2N0X2FsbG9jYAoqICAgYGJwZl9za2JfY3RfbG9va3VwYAoKSSBzaG91bGQgc2VlIHRob3NlIGZ1bmN0aW9ucy4KCkhtbSwgd2FpdC4gQXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGdvdCBtb2RpZmllZCBhcyBwYXJ0IG9mIHRoaXM/IExldCBtZSBxdWlja2x5IHJldmlldy4uLiBObywgaXQgbG9va3MgbGlrZSBvbmx5IGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgIHdlcmUgdG91Y2hlZCwgYW5kIHRoZXkmIzM5O3JlIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhlIGZvdXIgZm9jdXMgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoZW0uCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIG9uIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2JwZl9uZl9jdF9hbGxvY19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTExNz1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTE4Ol9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xMTktXHRcdFx0dTMyIHR1cGxlX2xlbiwgc3RydWN0IGJwZl9jdF9vcHRzICpvcHRzLCB1MzIgb3B0c19sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA1PWJwZl94ZHBfY3RfYWxsb2Moc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzExOlx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KGRldl9uZXQoY3R4LVx1MDAzZXJ4cS1cdTAwM2VkZXYpLCBicGZfdHVwbGUsIHR1cGxlX19zeixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMi1cdFx0XHRcdCAgICAgICBvcHRzLCBvcHRzX19zeiwgMTApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM2MT1icGZfc2tiX2N0X2FsbG9jKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM2OC1cdG5ldCA9IHNrYi1cdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cdTAwM2VkZXYpIDogc29ja19uZXQoc2tiLVx1MDAzZXNrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM2OTpcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShuZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeiwgMTApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzcwLVx0cmV0dXJuIChzdHJ1Y3QgbmZfY29ubl9fX2luaXQgKilicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgxMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWx2aW5nIGludG8gdGhlIGBfX2JwZl9uZl9jdF9sb29rdXBgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBfX2JwZl9uZl9jdF9sb29rdXBgLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgQlBGIGVjb3N5c3RlbSwgcGFydGljdWxhcmx5IGluIHRoZSBjb250ZXh0IG9mIG5ldHdvcmsgZmlsdGVyaW5nIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggdGhlIE5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbS4gSSYjMzk7bSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoZSBsb29rdXAgb2YgY29ubmVjdGlvbiB0cmFja2luZyBlbnRyaWVzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYWtpbmcgcG9saWN5IGRlY2lzaW9ucyBiYXNlZCBvbiBleGlzdGluZyBmbG93cy4KCk15IGluaXRpYWwgdGhvdWdodHMgcmV2b2x2ZSBhcm91bmQgdGhlIGNyaXRpY2FsIG5lZWQgZm9yIGVmZmljaWVuY3kgaGVyZS4gQlBGIHByb2dyYW1zIGFyZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBhIHNsb3cgY29ubmVjdGlvbiBsb29rdXAgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlLiBXZSBhcmUgYWltaW5nIGZvciBtaW5pbWFsIG92ZXJoZWFkIGFuZCBvcHRpbWFsIHNwZWVkIGFuZCBJJiMzOTttIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB3aXRoIHRoYXQgYXQgdGhlIGZvcmVmcm9udC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlcjogSG93IGRvZXMgaXQgaGFuZGxlIGhhc2ggY29sbGlzaW9ucz8gV2hhdCBhYm91dCBjb25jdXJyZW50IGFjY2Vzcz8gSXMgaXQgb3B0aW1pemVkIGZvciBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBjb25udHJhY2sgdGFibGU/IEhvdyBkb2VzIGl0IGhhbmRsZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKSSYjMzk7bSBwcm9iYWJseSB3b25kZXJpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uJiMzOTtzIGFyZ3VtZW50cy4gV2hhdCBrZXkgcGFyYW1ldGVycyBhcmUgdXNlZCBmb3IgdGhlIGxvb2t1cD8gQXJlIHRoZXkgc291cmNlZCBmcm9tIHBhY2tldCBoZWFkZXJzPyBJcyBpdCBhIGZ1bGx5IHNwZWNpZmllZCA1LXR1cGxlLCBvciBzb21lIGtpbmQgb2YgYWJicmV2aWF0ZWQga2V5PyBLbm93aW5nIHRoZSBhcmd1bWVudHMgd2lsbCBkaWN0YXRlIHdoYXQgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgaW4gZGVjaWRpbmcgcG9saWNpZXMuIEhvdyByb2J1c3QgaXMgaXQgdG8gaW5jb21wbGV0ZSBvciBmcmFnbWVudGVkIHBhY2tldHM/CgpGaW5hbGx5LCB0aGUgcmV0dXJuIHZhbHVlLi4uSSYjMzk7bSBndWVzc2luZyBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIGNvbm50cmFjayBlbnRyeSwgb3IgTlVMTCBpZiBubyBtYXRjaCBpcyBmb3VuZC4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlIG9yIGp1c3QgYSBudWxsIHBvaW50ZXI/IFdoYXQgc2lkZSBlZmZlY3RzIGRvZXMgaXQgaGF2ZSBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IGFjY2Vzc2VzPyBUaGVzZSBhc3BlY3RzIGFyZSBjcnVjaWFsIGZvciB0aGUgY29ycmVjdG5lc3MgYW5kIHN0YWJpbGl0eSBvZiBteSBCUEYgcHJvZ3JhbXMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNlbWFudGljcyB0byBhdm9pZCBzdWJ0bGUgYnVncyBhbmQgZW5zdXJlIHRoZSBwcmVkaWN0YWJsZSBiZWhhdmlvciBJIGRlcGVuZCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfbmZfY3RfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE4PV9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTgxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTgyOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTE4My1cdFx0XHRcdFx0ICBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMzM9YnBmX3hkcF9jdF9sb29rdXAoc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzQwLVx0Y2FsbGVyX25ldCA9IGRldl9uZXQoY3R4LVx1MDAzZXJ4cS1cdTAwM2VkZXYpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzQxOlx0bmZjdCA9IF9fYnBmX25mX2N0X2xvb2t1cChjYWxsZXJfbmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3opO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzQyLVx0cmV0dXJuIGJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzkwPWJwZl9za2JfY3RfbG9va3VwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM5Ny1cdGNhbGxlcl9uZXQgPSBza2ItXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozOTg6XHRuZmN0ID0gX19icGZfbmZfY3RfbG9va3VwKGNhbGxlcl9uZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeik7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zOTktXHRyZXR1cm4gYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyBmb3IgWERQL1NLQiBDb25uZWN0aW9uIFRyYWNraW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hcnJvd2VkIGl0IGRvd24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBqdXN0IHRob3NlIGZvdXIgY29ubmVjdGlvbiB0cmFja2luZyBmdW5jdGlvbnM6IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBCUEYgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCk5vdywgZm9yIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBlbnN1cmUgYSBtaW5pbWFsLCB5ZXQgZnVuY3Rpb25hbCwgZW52aXJvbm1lbnQuIEkmIzM5O20gZ29pbmcgd2l0aDogYE5GX0NPTk5UUkFDS2AsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX1NZU0NBTExgLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkuLi4gQWgsIGBORVRGSUxURVJgLiBJIGtub3cgYE5GX0NPTk5UUkFDS2AgZGVwZW5kcyBvbiBpdCwgc28gaWRlYWxseSwgaXQmIzM5O3MgZW5hYmxlZCBpbXBsaWNpdGx5LiBIb3dldmVyLCB0aGUgc3l6a2FsbGVyIGNvbmZpZyBnZW5lcmF0aW9uIG1pZ2h0IG5lZWQgaXQgZXhwbGljaXRseS4gVG8gYmUgY29tcGxldGVseSBzYWZlIGFuZCBhdm9pZCBhbnkgZG93bnN0cmVhbSBpc3N1ZXMsIEkmIzM5O2xsIGluY2x1ZGUgYE5FVEZJTFRFUmAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGJldHRlciB0byBiZSBleHBsaWNpdCBpbiB0aGlzIGNhc2UuIEFsc28gSSB3aWxsIHF1aWNrbHkgdmVyaWZ5IGBERUJVR19JTkZPX0JURmAgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX0lORk9fQlRGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9Mzc4PWNvbmZpZyBERUJVR19JTkZPX1NQTElUXG4tLVxubGliL0tjb25maWcuZGVidWctMzk3LVxubGliL0tjb25maWcuZGVidWc6Mzk4OmNvbmZpZyBERUJVR19JTkZPX0JURlxubGliL0tjb25maWcuZGVidWctMzk5LVx0Ym9vbCBcJiMzNDtHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvblwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnPTQxOT1jb25maWcgUEFIT0xFX0hBU19MQU5HX0VYQ0xVREVcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjctXG5saWIvS2NvbmZpZy5kZWJ1Zzo0Mjg6Y29uZmlnIERFQlVHX0lORk9fQlRGX01PRFVMRVNcbmxpYi9LY29uZmlnLmRlYnVnLTQyOS1cdGJvb2wgXCYjMzQ7R2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb24gZm9yIGtlcm5lbCBtb2R1bGVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTI0CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDI4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBQb3RlbnRpYWwgU2VjdXJpdHkgSW1wbGljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19JTkZPX0JURmAgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGJhY2sgaW50byB0aGlzIHBhdGNoLiBBbHJpZ2h0LCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgUkVBRF9PTkNFKG9wdHMtJmd0O25ldG5zX2lkKWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZXkgYXJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIGhlbHBlciBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIFRoaXMga2luZCBvZiBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiBjb3JlIGtlcm5lbCBsb2dpYywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgQlBGIG5ldGZpbHRlciBoZWxwZXJzLCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZm9jdXNlZCBmdXp6aW5nLiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaXggaXMgc29saWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHByb2JsZW1zLgoKTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb246IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpUbyB0ZXN0IHRoaXMgZWZmZWN0aXZlbHksIEkmIzM5O2xsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJQRl9TWVNDQUxMYCwgYW5kLCBvZiBjb3Vyc2UsIGBERUJVR19JTkZPX0JURmAgYXJlIGVuYWJsZWQgaW4gbXkgY29uZmlndXJhdGlvbi4KCkFscmlnaHQsIHdpdGggdGhpcyB1bmRlcnN0YW5kaW5nLCBJIHdpbGwgbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3hkcF9jdF9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfeGRwX2N0X2xvb2t1cCYjMzQ7LAogICAgJiMzNDticGZfc2tiX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIFRpbWUtb2YtQ2hlY2sgdG8gVGltZS1vZi1Vc2UgKFRPQ1RPVSkgdnVsbmVyYWJpbGl0eSBpbiBCUEYgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIGJ5IHVzaW5nIFJFQURfT05DRSgpIGZvciBvcHRzLVx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjA4LjEzNzE3NzczMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTM5OTU3MDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3hkcF9jdF9sb29rdXBcIixcbiAgICBcImJwZl9za2JfY3RfYWxsb2NcIixcbiAgICBcImJwZl9za2JfY3RfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXFx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDowOC4xMzcxODU3NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjk2NDc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRiN2VjMGJlNGM0N2ZkZGYzM2M5Nzg3ZWM1NTczMTNjODg3ZjIzZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6NDQ6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xcbkBAIC0xMjIsNiArMTIyLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja190dXBsZSBvdHVwbGUsIHJ0dXBsZTtcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdDtcXG4rXFx0czMyIG5ldG5zX2lkO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKCEob3B0c19sZW4gPT0gTkZfQlBGX0NUX09QVFNfU1ogfHwgb3B0c19sZW4gPT0gMTIpKVxcbkBAIC0xMzQsNyArMTM1LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShvcHRzLVxcdTAwM2VuZXRuc19pZCBcXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxcbitcXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVxcdTAwM2VuZXRuc19pZCk7XFxuK1xcdGlmICh1bmxpa2VseShuZXRuc19pZCBcXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gXFxuIFxcdGVyciA9IGJwZl9uZl9jdF90dXBsZV9wYXJzZShicGZfdHVwbGUsIHR1cGxlX2xlbiwgb3B0cy1cXHUwMDNlbDRwcm90byxcXG5AQCAtMTQ3LDggKzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2U9IDApIHtcXG4tXFx0XFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG9wdHMtXFx1MDAzZW5ldG5zX2lkKTtcXG4rXFx0aWYgKG5ldG5zX2lkIFxcdTAwM2U9IDApIHtcXG4rXFx0XFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KCFuZXQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTkVUKTtcXG4gXFx0fVxcbkBAIC0xNzEsNyArMTczLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcXG4gXFxuIG91dDpcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2U9IDApXFxuK1xcdGlmIChuZXRuc19pZCBcXHUwMDNlPSAwKVxcbiBcXHRcXHRwdXRfbmV0KG5ldCk7XFxuIFxcbiBcXHRyZXR1cm4gY3Q7XFxuQEAgLTE4Niw2ICsxODgsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgdHVwbGU7XFxuIFxcdHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSBjdF96b25lO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XFxuK1xcdHMzMiBuZXRuc19pZDtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdGlmICghb3B0cyB8fCAhYnBmX3R1cGxlKVxcbkBAIC0yMDEsNyArMjA0LDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHR9XFxuIFxcdGlmICh1bmxpa2VseShvcHRzLVxcdTAwM2VsNHByb3RvICE9IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IG9wdHMtXFx1MDAzZWw0cHJvdG8gIT0gSVBQUk9UT19VRFApKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST1RPKTtcXG4tXFx0aWYgKHVubGlrZWx5KG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXFxuK1xcdG5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtXFx1MDAzZW5ldG5zX2lkKTtcXG4rXFx0aWYgKHVubGlrZWx5KG5ldG5zX2lkIFxcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiBcXG4gXFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVxcdTAwM2VsNHByb3RvLFxcbkBAIC0yMDksOCArMjEzLDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFxuLVxcdGlmIChvcHRzLVxcdTAwM2VuZXRuc19pZCBcXHUwMDNlPSAwKSB7XFxuLVxcdFxcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVxcdTAwM2VuZXRuc19pZCk7XFxuK1xcdGlmIChuZXRuc19pZCBcXHUwMDNlPSAwKSB7XFxuK1xcdFxcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBuZXRuc19pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghbmV0KSlcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XFxuIFxcdH1cXG5AQCAtMjI1LDcgKzIyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0fVxcbiBcXG4gXFx0aGFzaCA9IG5mX2Nvbm50cmFja19maW5kX2dldChuZXQsIFxcdTAwMjZjdF96b25lLCBcXHUwMDI2dHVwbGUpO1xcbi1cXHRpZiAob3B0cy1cXHUwMDNlbmV0bnNfaWQgXFx1MDAzZT0gMClcXG4rXFx0aWYgKG5ldG5zX2lkIFxcdTAwM2U9IDApXFxuIFxcdFxcdHB1dF9uZXQobmV0KTtcXG4gXFx0aWYgKCFoYXNoKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MDguNjMyMTY0NTI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY0OTA0NTcxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfeGRwX2N0X2FsbG9jXCIsXG4gICAgXCJicGZfeGRwX2N0X2xvb2t1cFwiLFxuICAgIFwiYnBmX3NrYl9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3NrYl9jdF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBUaW1lLW9mLUNoZWNrIHRvIFRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdHkgaW4gQlBGIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyBieSB1c2luZyBSRUFEX09OQ0UoKSBmb3Igb3B0cy1cXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiN2VjMGJlNGM0N2ZkZGYzM2M5Nzg3ZWM1NTczMTNjODg3ZjIzZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo0NDowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbkBAIC0xMjIsNiArMTIyLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgb3R1cGxlLCBydHVwbGU7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTtcbiBcdHN0cnVjdCBuZl9jb25uICpjdDtcbitcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIShvcHRzX2xlbiA9PSBORl9CUEZfQ1RfT1BUU19TWiB8fCBvcHRzX2xlbiA9PSAxMikpXG5AQCAtMTM0LDcgKzEzNSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXHR9XG4gXG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4rXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMTQ3LDggKzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmIChuZXRuc19pZCBcdTAwM2U9IDApIHtcbitcdFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTtcbiBcdFx0aWYgKHVubGlrZWx5KCFuZXQpKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ORVQpO1xuIFx0fVxuQEAgLTE3MSw3ICsxNzMsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuIFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcbiBcbiBvdXQ6XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4rXHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKVxuIFx0XHRwdXRfbmV0KG5ldCk7XG4gXG4gXHRyZXR1cm4gY3Q7XG5AQCAtMTg2LDYgKzE4OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgdHVwbGU7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTtcbiBcdHN0cnVjdCBuZl9jb25uICpjdDtcbitcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIW9wdHMgfHwgIWJwZl90dXBsZSlcbkBAIC0yMDEsNyArMjA0LDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuIFx0fVxuIFx0aWYgKHVubGlrZWx5KG9wdHMtXHUwMDNlbDRwcm90byAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjYgb3B0cy1cdTAwM2VsNHByb3RvICE9IElQUFJPVE9fVURQKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9UTyk7XG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4rXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMjA5LDggKzIxMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApIHtcbi1cdFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG9wdHMtXHUwMDNlbmV0bnNfaWQpO1xuK1x0aWYgKG5ldG5zX2lkIFx1MDAzZT0gMCkge1xuK1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMjI1LDcgKzIyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdGhhc2ggPSBuZl9jb25udHJhY2tfZmluZF9nZXQobmV0LCBcdTAwMjZjdF96b25lLCBcdTAwMjZ0dXBsZSk7XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4rXHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKVxuIFx0XHRwdXRfbmV0KG5ldCk7XG4gXHRpZiAoIWhhc2gpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MDguNjMyMTY3MDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5MzA2MjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25udHJhY2sgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYWRkaW5nIGBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZClgIGFuZCB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLCBgbmV0bnNfaWRgLCB3aXRoaW4gdGhlIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgIGZ1bmN0aW9ucy4gQWgsIHJpZ2h0LCB0aGlzIGlzIHRleHRib29rIFRPQ1RPVSBwcm90ZWN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbGlrZWx5IHZ1bG5lcmFibGUgYmVjYXVzZSBgb3B0cy1cdTAwM2VuZXRuc19pZGAgY291bGQgaGF2ZSBiZWVuIG1vZGlmaWVkIGNvbmN1cnJlbnRseSBieSBhIEJQRiBwcm9ncmFtIG9yIHNvbWV0aGluZyBpbiB1c2Vyc3BhY2UgYmV0d2VlbiB0aGUgY2hlY2sgKGxpa2UgYG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwYCkgYW5kIHRoZSBhY3R1YWwgdXNhZ2UgKGUuZy4sIGluIGBnZXRfbmV0X25zX2J5X2lkYCBvciBgcHV0X25ldGApLiBUaGlzIGZpeCBlbnN1cmVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBhIGNvbnNpc3RlbnQgdmFsdWUuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGZsdXNoIG91dCBhbnkgcmVtYWluaW5nIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIGlzc3VlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29uY3VycmVuY3kuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBjb2RlLiBMZXQncyBzZWUuLi5JJ2xsIGdyYWIgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGBuZl9jb25udHJhY2tfYnBmLmNgIGluIHRoZSBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkgY2FuIHJlcHJvZHVjZSB0aGlzIGluIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjE0LjIyNTIzMjMxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1NzQ5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2JwZi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xOD1pZmVxICgkKENPTkZJR19ORl9DT05OVFJBQ0spLG0pXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgKz0gbmZfY29ubnRyYWNrX2JwZi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjIxOm5mX2Nvbm50cmFjay0kKENPTkZJR19ERUJVR19JTkZPX0JURikgKz0gbmZfY29ubnRyYWNrX2JwZi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMi1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDoxNC4zNDM4MTMyNTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgzMjg5MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcywgc3BlYWtpbmcgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBuZl9jb25udHJhY2tfYnBmLm8gTW9kdWxlIEJ1aWxkKipcblxuUmlnaHQsIHNvIHRoZSB3YXkgSSdtIHNlZWluZyBpdCwgdGhpcyBgbmZfY29ubnRyYWNrX2JwZi5vYCBvYmplY3QgZmlsZSwgaXQgbG9va3MgbGlrZSBpdCdzIGdldHRpbmcgYnVpbHQsIGNvbmRpdGlvbmFsbHkgb2YgY291cnNlLCBpZiB3ZSd2ZSBnb3QgYENPTkZJR19ORl9DT05OVFJBQ0tgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQgbWFrZXMgc2Vuc2UsIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBpdCBhbHNvIGRlcGVuZHMgb24gYENPTkZJR19ERUJVR19JTkZPX0JURmAgb3IsIHBvdGVudGlhbGx5LCBgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNgIGJlaW5nIGVuYWJsZWQgYXMgd2VsbC4gU28gdGhlcmUncyBhIGRlcGVuZGVuY3kgb24gQlRGIChCVEYgLSBCUEYgVHlwZSBGb3JtYXQpIGRlYnVnIGluZm9ybWF0aW9uLiBMZXQgbWUgc2VlIGlmIEkgY2FuIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoaXMgbW9kdWxlLlxuXG5CZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZS4gTGV0J3MgZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBjb25maXJtYXRpb24gb2YgdGhpcyBtb2R1bGUncyBidWlsZCBwcmVyZXF1aXNpdGVzLCBhbmQgY29uZmlybSB3aGV0aGVyIG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZCBvciBub3QuIFRoZW4gSSBjYW4gZmlndXJlIG91dCB0aGUgY29udGV4dCwgYW5kIGhvdyBpdCBpcyBhbGwgdGllZCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjE5LjQyNzEwNDgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM2NjAyMTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2JwZi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTk6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMpICs9IG5mX2Nvbm50cmFja19icGYub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjAtZWxzZSBpZmVxICgkKENPTkZJR19ORl9DT05OVFJBQ0spLHkpXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToyMTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEYpICs9IG5mX2Nvbm50cmFja19icGYub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjItZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MTkuNTUwNzc2OTk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4OTYwOTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgTmV0ZmlsdGVyIENvbm50cmFjayBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGljaCBjb25maWd1cmF0aW9ucyBnb3Zlcm4gdGhlIEJQRiBzaWRlIG9mIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrLiBJJ20gcHJldHR5IHN1cmUgSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0J3Mgc2VlLi4uIHJpZ2h0LCAqbmZcXF9jb25udHJhY2tcXF9icGYuYyouIFRoYXQncyB0aGUga2V5LlxuXG5Ib2xkIG9uLi4uIEkgcmVtZW1iZXIgbm93LiBUaGF0IGNvZGUgaXMgY29tcGlsZWQgaW50byB0aGUgYG5mX2Nvbm50cmFja2AgbW9kdWxlIChvciBidWlsdC1pbiwgaWYgeW91J3ZlIGdvdCBpdCB0aGF0IHdheSkgb25seSBpZiBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBpcyBlbmFibGVkLiBNYWtlcyBzZW5zZSwgc2luY2UgQlRGIGlzIGNlbnRyYWwgdG8gYSBsb3Qgb2YgdGhpcyBCUEYgc3R1ZmYuIFNvLCBJIGRlZmluaXRlbHkgbmVlZCBgTkZfQ09OTlRSQUNLYCBlbmFibGVkICh0aGF0J3MgZnVuZGFtZW50YWwpLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbldhaXQsIGlzbid0IGBERUJVR19JTkZPX0JURmAgcHJldHR5IG11Y2ggc3RhbmRhcmQgZm9yIEJQRiBzZXR1cHM/IEkgdGhpbmsgaXQgaXMsIGJ1dCBJIHNob3VsZCB2ZXJpZnksIGp1c3QgaW4gY2FzZS4gTGV0J3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gT2theSwgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY2AgYW5kIHNlYXJjaCBmb3IgYW55IG90aGVyIGAjaWZkZWZgIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBjb250cm9sIGZlYXR1cmVzLiBOZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MjYuMDQwMzg5MzI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTUxNDUxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MjYuMTY5OTExODQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEwOTY2MzQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIERpcmVjdGl2ZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGxhbmRzY2FwZSBvZiBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGRldGVybWluZSB3aGljaCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBhcmUgYmVpbmcgZW1wbG95ZWQgdG8gbWFuYWdlIGNvZGUgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbi4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYCNpZmAgb3IgYCNpZiBkZWZpbmVkYC4gVGhlc2UgYXJlIHRoZSB3b3JraG9yc2VzIG9mIHRoaXMgdHlwZSBvZiBjb25kaXRpb25hbCBsb2dpYywgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgdXNlIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgaG93IHRoZSBjb2RlYmFzZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBvciB0YXJnZXQgcGxhdGZvcm1zLiBGaW5kaW5nIHRoZXNlIGVhcmx5IGluIHRoZSBpbnZlc3RpZ2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBmbGV4aWJpbGl0eS4gTGV0J3Mgc2VlIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MzEuMjc5NTc4MjQ1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1NTY4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yNDg9c3RhdGljIGludCBfbmZfY29ubnRyYWNrX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0yNjYtXFx0c3dpdGNoIChvZmYpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoyNjc6I2lmIGRlZmluZWQoQ09ORklHX05GX0NPTk5UUkFDS19NQVJLKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTI2OC1cXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBuZl9jb25uLCBtYXJrKTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MzEuNDUyMTQxNDk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDYxMjkxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIEJQRiBDb25uZWN0aW9uIFRyYWNraW5nIEltcGFjdHMqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS2AgKmNvdWxkKiBiZSBhIGZhY3RvciBoZXJlLCBidXQgdGhlIGNoYW5nZXMgc2VlbSBmb2N1c2VkIG9uIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aG9zZSBzcGVjaWZpY2FsbHkuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQ6XG4qICAgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YFxuKiAgIGBfX2JwZl9uZl9jdF9sb29rdXBgXG5cblJpZ2h0LCB0aGVzZSBhcmUgQlBGIGhlbHBlcnMuIFNvLCBnaXZlbiB0aGUgY29udGV4dCwgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBCUEYtcmVsYXRlZCBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGF0IG1lYW5zIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBhbmQgdXNhZ2VzIG9mIHRoZXNlIGZ1bmN0aW9ucywgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogaG93IHRoZXNlIGhlbHBlcnMgYXJlIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcGF0Y2ggYXJlLiBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIEJQRiBoZWxwZXJzIGFyZSBkZXBsb3llZC4gVGhhdCdsbCB0ZWxsIHRoZSBzdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjM1LjE5ODI3MzMzN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNDk2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYnBmX25mX2N0X2FsbG9jX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTExNz1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjExODpfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTExOS1cXHRcXHRcXHR1MzIgdHVwbGVfbGVuLCBzdHJ1Y3QgYnBmX2N0X29wdHMgKm9wdHMsIHUzMiBvcHRzX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMwNT1icGZfeGRwX2N0X2FsbG9jKHN0cnVjdCB4ZHBfbWQgKnhkcF9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjMxMTpcXHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkoZGV2X25ldChjdHgtXFx1MDAzZXJ4cS1cXHUwMDNlZGV2KSwgYnBmX3R1cGxlLCB0dXBsZV9fc3osXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEyLVxcdFxcdFxcdFxcdCAgICAgICBvcHRzLCBvcHRzX19zeiwgMTApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzYxPWJwZl9za2JfY3RfYWxsb2Moc3RydWN0IF9fc2tfYnVmZiAqc2tiX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNjgtXFx0bmV0ID0gc2tiLVxcdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM2OTpcXHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkobmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3osIDEwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNzAtXFx0cmV0dXJuIChzdHJ1Y3QgbmZfY29ubl9fX2luaXQgKilicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDozNS4zNzk3NzY2NDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE3MzIyMzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqUmVmbGVjdGluZyBvbiBDb25uZWN0aW9uIFRyYWNraW5nIGFuZCBCUEYgSW50ZWdyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlLiBgYnBmX3hkcF9jdF9hbGxvY2AgYW5kIGBicGZfc2tiX2N0X2FsbG9jYCBhcmUgdXRpbGl6aW5nIHRoZXNlIGZ1bmN0aW9ucy4gQW5kIHRoZW4sIGBfX2JwZl9uZl9jdF9sb29rdXBgIGlzIGNydWNpYWwgZm9yIHRoZSBsb29rdXAgZnVuY3Rpb25zIGluIGJvdGggWERQIGFuZCBTS0IgY29udGV4dHMg4oCTIGBicGZfeGRwX2N0X2xvb2t1cGAgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZydzIGNvbmZpZ3VyZWQgcHJvcGVybHkgdG8gZW5hYmxlIHRoZXNlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gV2UgaGF2ZSBCUEYgZGVwZW5kZW5jaWVzLCB3ZSBrbm93IHRoYXQuIFNvLCBuYXR1cmFsbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4g4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gQW5kIGNsZWFybHksIHdlJ2xsIG5lZWQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoaXMgaXMgYWxsIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcuIEZpbmFsbHksIEkga25vdyBJJ2xsIGJlIG5lZWRpbmcgYENPTkZJR19ERUJVR19JTkZPX0JURmAgdG8gY29tcGlsZSB0aGlzIHBhcnRpY3VsYXIgZmlsZSBlZmZlY3RpdmVseS5cblxuSnVzdCB0byBiZSBjZXJ0YWluLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYE5GX0NPTk5UUkFDS2AgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgY2F2ZWF0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGJlIHRob3JvdWdoIHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTIxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjQxLjU1MzAwMzcwM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4ODUwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo0MS42MzY4OTQ1NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0OTM0MzI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIENvbm5lY3Rpb24gVHJhY2tpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoZSBCUEYgZnJhbWV3b3JrLiBGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgTkZfQ09OTlRSQUNLYCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSG9sZCBvbiwgYERFQlVHX0lORk9fQlRGYCBpcyBkZWZpbmVkIGluIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIGxldOKAmXMgZGlnIGludG8gdGhpcyBhbmQgY2hlY2sgYEJQRl9TWVNDQUxMYC5cblxuTm93LCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFuYWx5c2lzIGFyZSBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfbG9va3VwYCwgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCwgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLlxuXG5IbW0sIGEgd3JpbmtsZS4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgd2l0aCBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYC4gVGhleSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLiBUaGF0IGNvdWxkIGltcGFjdCB0aGVpciBpbmxpbmluZyBiZWhhdmlvciwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBsYXJnZSwgYnV0IHdhaXQuLi4gdGhleSBhcmUgc3RhdGljLiBJdCB3b3VsZCBzZWVtIHRoZWlyIGlubGluZSBzdGF0dXMgaXMgd29ydGggYSBsb29rLlxuTGV0J3Mgc2VlIGlmIHRoZXkgYXJlIHN0YXRpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkwMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo0Ni45ODYyNDE0NDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzUzNTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JwZl9uZl9jdF9hbGxvY19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0xMTc9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoxMTg6X19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xMTktXFx0XFx0XFx0dTMyIHR1cGxlX2xlbiwgc3RydWN0IGJwZl9jdF9vcHRzICpvcHRzLCB1MzIgb3B0c19sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDU9YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMTE6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KGRldl9uZXQoY3R4LVxcdTAwM2VyeHEtXFx1MDAzZWRldiksIGJwZl90dXBsZSwgdHVwbGVfX3N6LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMi1cXHRcXHRcXHRcXHQgICAgICAgb3B0cywgb3B0c19fc3osIDEwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM2MT1icGZfc2tiX2N0X2FsbG9jKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzY4LVxcdG5ldCA9IHNrYi1cXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXFx1MDAzZWRldikgOiBzb2NrX25ldChza2ItXFx1MDAzZXNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNjk6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KG5ldCwgYnBmX3R1cGxlLCB0dXBsZV9fc3osIG9wdHMsIG9wdHNfX3N6LCAxMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzcwLVxcdHJldHVybiAoc3RydWN0IG5mX2Nvbm5fX19pbml0ICopYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6NDcuMTAzNzgyOTE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDQ2MjUwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgU3RhdGljIE5hdHVyZSBvZiB0aGUgQVBJKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgc3RhdGljIGVsZW1lbnRzIGhlcmUuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IG1vc3Qgb2YgdGhlIEFQSSwgYXQgbGVhc3QgdGhlIGNvcmUgcGFydCwgaXMgaW5oZXJlbnRseSBzdGF0aWMuIEl0J3MgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgd2UgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhjZXB0aW9ucy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBBaCwgeWVzLCB0aGVzZSBzZWVtIHRvIGJlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYWxsb3cgZm9yIGR5bmFtaWMgYWxsb2NhdGlvbiBhbmQgbG9va3VwIHdpdGhpbiB0aGUgY29udGV4dCB0cmFja2luZyBzdWJzeXN0ZW06IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBgYnBmX3hkcF9jdF9sb29rdXBgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIHN0YXRlIGlzIGxpa2VseSBiZWluZyBjcmVhdGVkLCBtb2RpZmllZCwgYW5kIHJldHJpZXZlZCBkdXJpbmcgcHJvZ3JhbSBleGVjdXRpb24uXG5cblRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHRvIHNlZSBpZiB0aGV5J3JlIGFjdHVhbGx5IGV4cG9ydGVkIGFzIEJQRiBoZWxwZXJzIGFuZCB1c2VkIGFzIHN1Y2guIFRoaXMgaXNuJ3QganVzdCBhYm91dCB0aGVpciBleGlzdGVuY2UgYnV0IHRoZWlyIHByYWN0aWNhbCBpbnRlZ3JhdGlvbiB3aXRoaW4gQlBGIHByb2dyYW1zLiBBcmUgd2UsIGFzIGRldmVsb3BlcnMsIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gb3VyIEJQRiBjb2RlPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wbGljYXRpb25zIG9mIHN0YXRpYyBvciBkeW5hbWljIGJlaGF2aW9yIG9uIHRoaW5ncyBsaWtlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwcm9ncmFtIHBlcmZvcm1hbmNlLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjU1Ljc0ODQxMTQyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1MjkyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yODc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTI4OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoyODk6LyogYnBmX3hkcF9jdF9hbGxvYyAtIEFsbG9jYXRlIGEgbmV3IENUIGVudHJ5XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjkwLSAqXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDQ9X19icGZfa2Z1bmMgc3RydWN0IG5mX2Nvbm5fX19pbml0ICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMDU6YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMDYtXFx0XFx0IHUzMiB0dXBsZV9fc3osIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfX3N6KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzkwPWJwZl9za2JfY3RfbG9va3VwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA2LSAqIEBuZmN0XFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm5fX19pbml0IG9iamVjdCwgb2J0YWluZWRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo0MDc6ICpcXHRcXHQgICB1c2luZyBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA4LSAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDM1PV9fYnBmX2tmdW5jIHZvaWQgYnBmX2N0X3JlbGVhc2Uoc3RydWN0IG5mX2Nvbm4gKm5mY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NDYtICogQG5mY3RcXHQgLSBQb2ludGVyIHRvIHJlZmVyZW5jZWQgbmZfY29ubiBvYmplY3QsIG9idGFpbmVkIHVzaW5nXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDQ3OiAqICAgICAgICAgICAgICAgICBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDQ4LSAqIEB0aW1lb3V0ICAgICAgLSBUaW1lb3V0IGluIG1zZWNzLlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDY1PV9fYnBmX2tmdW5jIGludCBicGZfY3RfY2hhbmdlX3RpbWVvdXQoc3RydWN0IG5mX2Nvbm4gKm5mY3QsIHUzMiB0aW1lb3V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDc2LSAqIEBuZmN0XFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjQ3NzogKlxcdFxcdCAgIGJwZl94ZHBfY3RfYWxsb2Mgb3IgYnBmX3NrYl9jdF9hbGxvYy5cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NzgtICogQHN0YXR1cyAgICAgICAtIE5ldyBzdGF0dXMgdmFsdWUuXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz01MDI9QlRGX0tGVU5DU19TVEFSVChuZl9jdF9rZnVuY19zZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NTAzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfeGRwX2N0X2FsbG9jLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNTA0LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfeGRwX2N0X2xvb2t1cCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo1NS44NDU5NDczOTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwOTQ5MDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgQ29ublRyYWNrIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IEJQRiBrZnVuY3MgaGVyZSwgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZy4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHplcm8gaW4gb24gYXJlIGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhvc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuXG5cbk5vdywgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IEknbGwgbmVlZCBgTkZfQ09OTlRSQUNLYCwgbmF0dXJhbGx5LCBhbmQgYWxzbyBgREVCVUdfSU5GT19CVEZgIHNvIEkgY2FuIGFjdHVhbGx5ICpzZWUqIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBCUEYgcHJvZ3JhbXMsIGFuZCBgQlBGX1NZU0NBTExgIHNvIEkgY2FuIHVzZSBpdC5cblxuSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgbWFrZSBzdXJlIGBORl9DT05OVFJBQ0tgIGRvZXNuJ3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IEkgbWlnaHQgbWlzcy4gWWVwLCBsb29rcyBsaWtlIGl0IHJlbGllcyBvbiBgTkVURklMVEVSYC4gRWFzeSBlbm91Z2guIEknbGwgbmVlZCB0byBlbmFibGUgdGhhdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhYm91dCBgTkZfQ09OTlRSQUNLYCBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIxMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NTowMS4xNTU0NDEyNTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMwODQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ1OjAxLjI3Mjc1NTIwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDMzNDI0NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZSBzcGVjaWZpYyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMsIHNvIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBhcm91bmQgbGluZSA4MjsgaG9wZWZ1bGx5LCB0aGF0J3Mgd2hlcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgbG9jYXRlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQ2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDU6MDkuNzA2MTgzMjM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzQwLCJFcnJvciI6ImFyZ3VtZW50IFwiRmlyc3RMaW5lXCIgaGFzIHdyb25nIHR5cGU6IGdvdCBzdHJpbmcsIHdhbnQgaW50IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IFwiNzVcIixcbiAgXCJMaW5lQ291bnRcIjogXCIyMFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcImFyZ3VtZW50IFxcXCJGaXJzdExpbmVcXFwiIGhhcyB3cm9uZyB0eXBlOiBnb3Qgc3RyaW5nLCB3YW50IGludFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NTowOS43MDYyMjAyNjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk0MzQ3MTEyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgeW91ciBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVkdWN0aW9uIEJlZ2luczogVmFyaWFibGUgSWRlbnRpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFwiRmlyc3RMaW5lLi4uXCIgSG1tLCB0aGUgdmFyaWFibGUgbmFtZSBcIkZpcnN0TGluZVwiIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBxdWFudGl0YXRpdmUsIGxpa2VseSBhIGNvdW50LCBhbiBpbmRleCwgb3Igc29tZXRoaW5nIG51bWVyaWNhbC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIHBlcmhhcHMsIG9yIGZyb20gYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UpLCBpdCdzIGhpZ2hseSBpbXByb2JhYmxlIGl0IHdvdWxkIHJlcHJlc2VudCBhIHN0cmluZyBvciBhIGJvb2xlYW4uIFRoZSB2ZXJ5IHN0cnVjdHVyZSBvZiB0aGUgbmFtZSBzdHJvbmdseSBpbXBsaWVzIGl0IG11c3QgYmUgYW4gaW50ZWdlci4gSXQgZG9lc24ndCBzY3JlYW0gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgZWl0aGVyLCBzbyBpbnRlZ2VyIGl0IGlzLCBhdCBsZWFzdCBhcyBhIHN0YXJ0aW5nIGFzc3VtcHRpb24uIExldCdzIG9wZXJhdGUgdW5kZXIgdGhhdCBjb25zdHJhaW50IGFuZCBzZWUgd2hlcmUgaXQgdGFrZXMgdXMgaW4gdGhlIHN1YnNlcXVlbnQgc3RlcHMgb2YgdGhpcyBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEzNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoxOS4xNDA5MzQ2MjZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE9TRiBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNzc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA3ODpcXHRcXHRoZWxwXFxuICA3OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDgwOlxcdFxcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cXG4gIDgxOlxcdFxcbiAgODI6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS1xcbiAgODM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuICA4NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDg1OlxcdFxcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxcbiAgODY6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxcbiAgODc6XFx0XFx0aGVscFxcbiAgODg6XFx0XFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxcbiAgODk6XFx0XFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxcbiAgOTA6XFx0XFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gZG8gTWFzcXVlcmFkaW5nIG9yIG90aGVyIGtpbmRzIG9mIE5ldHdvcmtcXG4gIDkzOlxcdFxcdCAgQWRkcmVzcyBUcmFuc2xhdGlvbi4gIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZW5oYW5jZSBwYWNrZXRcXG4gIDk0OlxcdFxcdCAgZmlsdGVyaW5nIChzZWUgYENvbm5lY3Rpb24gc3RhdGUgbWF0Y2ggc3VwcG9ydCcgYmVsb3cpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoxOS4xNDExMDI4MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0OTI2MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIGxldCdzIG5haWwgZG93biB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBORl9DT05OVFJBQ0tgIOKAkyB0aGF0J3MgZWFzeSwgaXQgbGl2ZXMgcmlnaHQgd2l0aGluIHRoZSBuZXRmaWx0ZXIgbWVudSwgc28gaXQganVzdCBuZWVkcyBgTkVURklMVEVSYCB0byBiZSBlbmFibGVkLCBhbmQgd2UncmUgZ29vZCB0byBnby4gTm8gb3RoZXIgaGVhZGFjaGVzIHRoZXJlLlxuXG5Ob3csIGZvciBgREVCVUdfSU5GT19CVEZgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgcmlnaHQsIHNpbmNlIHRoYXQncyBhIG1vcmUgaW50ZXJlc3Rpbmcgb25lLiBMb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGl0J3MgY2xlYXI6IGBERUJVR19JTkZPYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgaXRzIHByZXJlcXVpc2l0ZXMuIE9rYXksIGdvdCBpdC5cblxuU28sIGp1c3QgdG8gc3VtbWFyaXplIGZvciBteSBpbnRlcm5hbCBjaGVja2xpc3QsIHRoZSBlc3NlbnRpYWwgY29uZmlncyBhcmU6XG5cbiogICBgTkZfQ09OTlRSQUNLYFxuKiAgIGBERUJVR19JTkZPX0JURmBcbiogICBgQlBGX1NZU0NBTExgXG5cbldpdGggdGhlc2UsIGFsbCBzaG91bGQgYmUgd2VsbC5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGZvY3VzIHN5bWJvbHMuIExvb2tzIGxpa2UgaXQgaXM6XG5cbiogICBgYnBmX3hkcF9jdF9hbGxvY2BcbiogICBgYnBmX3hkcF9jdF9sb29rdXBgXG4qICAgYGJwZl9za2JfY3RfYWxsb2NgXG4qICAgYGJwZl9za2JfY3RfbG9va3VwYFxuXG5JIHNob3VsZCBzZWUgdGhvc2UgZnVuY3Rpb25zLlxuXG5IbW0sIHdhaXQuIEFyZSB0aGVyZSAqYW55KiBvdGhlciBmdW5jdGlvbnMgdGhhdCBnb3QgbW9kaWZpZWQgYXMgcGFydCBvZiB0aGlzPyBMZXQgbWUgcXVpY2tseSByZXZpZXcuLi4gTm8sIGl0IGxvb2tzIGxpa2Ugb25seSBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYCB3ZXJlIHRvdWNoZWQsIGFuZCB0aGV5J3JlIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhlIGZvdXIgZm9jdXMgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoZW0uXG5cbk9rYXksIGxldCBtZSBkb3VibGUtY2hlY2sgb24gYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjMzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDY6MjQuMTkwMzY5NDc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwNDE0NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfbmZfY3RfYWxsb2NfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE3PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTE4Ol9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTE5LVxcdFxcdFxcdHUzMiB0dXBsZV9sZW4sIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfbGVuLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA1PWJwZl94ZHBfY3RfYWxsb2Moc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzExOlxcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShkZXZfbmV0KGN0eC1cXHUwMDNlcnhxLVxcdTAwM2VkZXYpLCBicGZfdHVwbGUsIHR1cGxlX19zeixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTItXFx0XFx0XFx0XFx0ICAgICAgIG9wdHMsIG9wdHNfX3N6LCAxMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zNjE9YnBmX3NrYl9jdF9hbGxvYyhzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM2OC1cXHRuZXQgPSBza2ItXFx1MDAzZWRldiA/IGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpIDogc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzY5OlxcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShuZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeiwgMTApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM3MC1cXHRyZXR1cm4gKHN0cnVjdCBuZl9jb25uX19faW5pdCAqKWJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjI0LjI5NjQxNzEwOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDUxMjM1OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIHRoZSBgX19icGZfbmZfY3RfbG9va3VwYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYF9fYnBmX25mX2N0X2xvb2t1cGAsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGp1bXBzIHRvIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBCUEYgZWNvc3lzdGVtLCBwYXJ0aWN1bGFybHkgaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBmaWx0ZXJpbmcgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCB0aGUgTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLiBJJ20gYXNzdW1pbmcgaXQgaGFuZGxlcyB0aGUgbG9va3VwIG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cmllcywgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFraW5nIHBvbGljeSBkZWNpc2lvbnMgYmFzZWQgb24gZXhpc3RpbmcgZmxvd3MuXG5cbk15IGluaXRpYWwgdGhvdWdodHMgcmV2b2x2ZSBhcm91bmQgdGhlIGNyaXRpY2FsIG5lZWQgZm9yIGVmZmljaWVuY3kgaGVyZS4gQlBGIHByb2dyYW1zIGFyZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBhIHNsb3cgY29ubmVjdGlvbiBsb29rdXAgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlLiBXZSBhcmUgYWltaW5nIGZvciBtaW5pbWFsIG92ZXJoZWFkIGFuZCBvcHRpbWFsIHNwZWVkIGFuZCBJJ20gc3VyZSB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHdpdGggdGhhdCBhdCB0aGUgZm9yZWZyb250LiBJIGltbWVkaWF0ZWx5IGJlZ2luIHRvIGNvbnNpZGVyOiBIb3cgZG9lcyBpdCBoYW5kbGUgaGFzaCBjb2xsaXNpb25zPyBXaGF0IGFib3V0IGNvbmN1cnJlbnQgYWNjZXNzPyBJcyBpdCBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGNvbm50cmFjayB0YWJsZT8gSG93IGRvZXMgaXQgaGFuZGxlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cbkknbSBwcm9iYWJseSB3b25kZXJpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLiBXaGF0IGtleSBwYXJhbWV0ZXJzIGFyZSB1c2VkIGZvciB0aGUgbG9va3VwPyBBcmUgdGhleSBzb3VyY2VkIGZyb20gcGFja2V0IGhlYWRlcnM/IElzIGl0IGEgZnVsbHkgc3BlY2lmaWVkIDUtdHVwbGUsIG9yIHNvbWUga2luZCBvZiBhYmJyZXZpYXRlZCBrZXk/IEtub3dpbmcgdGhlIGFyZ3VtZW50cyB3aWxsIGRpY3RhdGUgd2hhdCBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBpbiBkZWNpZGluZyBwb2xpY2llcy4gSG93IHJvYnVzdCBpcyBpdCB0byBpbmNvbXBsZXRlIG9yIGZyYWdtZW50ZWQgcGFja2V0cz9cblxuRmluYWxseSwgdGhlIHJldHVybiB2YWx1ZS4uLkknbSBndWVzc2luZyBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIGNvbm50cmFjayBlbnRyeSwgb3IgTlVMTCBpZiBubyBtYXRjaCBpcyBmb3VuZC4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlIG9yIGp1c3QgYSBudWxsIHBvaW50ZXI/IFdoYXQgc2lkZSBlZmZlY3RzIGRvZXMgaXQgaGF2ZSBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IGFjY2Vzc2VzPyBUaGVzZSBhc3BlY3RzIGFyZSBjcnVjaWFsIGZvciB0aGUgY29ycmVjdG5lc3MgYW5kIHN0YWJpbGl0eSBvZiBteSBCUEYgcHJvZ3JhbXMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNlbWFudGljcyB0byBhdm9pZCBzdWJ0bGUgYnVncyBhbmQgZW5zdXJlIHRoZSBwcmVkaWN0YWJsZSBiZWhhdmlvciBJIGRlcGVuZCBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoyOC43NDc2NTU4NjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTY0Njc3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JwZl9uZl9jdF9sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE4PV9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xODEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTgyOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMzMz1icGZfeGRwX2N0X2xvb2t1cChzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM0MC1cXHRjYWxsZXJfbmV0ID0gZGV2X25ldChjdHgtXFx1MDAzZXJ4cS1cXHUwMDNlZGV2KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNDE6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2xvb2t1cChjYWxsZXJfbmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3opO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM0Mi1cXHRyZXR1cm4gYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM5MD1icGZfc2tiX2N0X2xvb2t1cChzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM5Ny1cXHRjYWxsZXJfbmV0ID0gc2tiLVxcdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM5ODpcXHRuZmN0ID0gX19icGZfbmZfY3RfbG9va3VwKGNhbGxlcl9uZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeik7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzk5LVxcdHJldHVybiBicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoyOC44NzczMDc3NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg2NzE3NzE4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyBmb3IgWERQL1NLQiBDb25uZWN0aW9uIFRyYWNraW5nKipcblxuT2theSwgc28gSSd2ZSBuYXJyb3dlZCBpdCBkb3duLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24ganVzdCB0aG9zZSBmb3VyIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnVuY3Rpb25zOiBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfeGRwX2N0X2xvb2t1cGAsIGBicGZfc2tiX2N0X2FsbG9jYCwgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgQlBGIGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIHRoaXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uXG5cbk5vdywgZm9yIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBlbnN1cmUgYSBtaW5pbWFsLCB5ZXQgZnVuY3Rpb25hbCwgZW52aXJvbm1lbnQuIEknbSBnb2luZyB3aXRoOiBgTkZfQ09OTlRSQUNLYCwgYERFQlVHX0lORk9fQlRGYCwgYW5kIGBCUEZfU1lTQ0FMTGAuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5Li4uIEFoLCBgTkVURklMVEVSYC4gSSBrbm93IGBORl9DT05OVFJBQ0tgIGRlcGVuZHMgb24gaXQsIHNvIGlkZWFsbHksIGl0J3MgZW5hYmxlZCBpbXBsaWNpdGx5LiBIb3dldmVyLCB0aGUgc3l6a2FsbGVyIGNvbmZpZyBnZW5lcmF0aW9uIG1pZ2h0IG5lZWQgaXQgZXhwbGljaXRseS4gVG8gYmUgY29tcGxldGVseSBzYWZlIGFuZCBhdm9pZCBhbnkgZG93bnN0cmVhbSBpc3N1ZXMsIEknbGwgaW5jbHVkZSBgTkVURklMVEVSYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gSXQncyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQgaW4gdGhpcyBjYXNlLiBBbHNvIEkgd2lsbCBxdWlja2x5IHZlcmlmeSBgREVCVUdfSU5GT19CVEZgIGluIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODQwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjQ3LjU0OTA4Mjg0NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDg4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19JTkZPX0JURlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zNzg9Y29uZmlnIERFQlVHX0lORk9fU1BMSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTM5Ny1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozOTg6Y29uZmlnIERFQlVHX0lORk9fQlRGXFxubGliL0tjb25maWcuZGVidWctMzk5LVxcdGJvb2wgXFxcIkdlbmVyYXRlIEJURiB0eXBlIGluZm9ybWF0aW9uXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWc9NDE5PWNvbmZpZyBQQUhPTEVfSEFTX0xBTkdfRVhDTFVERVxcbi0tXFxubGliL0tjb25maWcuZGVidWctNDI3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjQyODpjb25maWcgREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmxpYi9LY29uZmlnLmRlYnVnLTQyOS1cXHRib29sIFxcXCJHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvbiBmb3Iga2VybmVsIG1vZHVsZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjQ4LjA3ODIzNDg4NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjcxOTA3MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBTZWN1cml0eSBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19JTkZPX0JURmAgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQncyBkaWcgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZClgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGV5IGFyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIFRpbWUtb2YtQ2hlY2sgdG8gVGltZS1vZi1Vc2UgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIEJQRiBoZWxwZXIgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLiBUaGlzIGtpbmQgb2YgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gaW4gY29yZSBrZXJuZWwgbG9naWMsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIEJQRiBuZXRmaWx0ZXIgaGVscGVycywgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZvY3VzZWQgZnV6emluZy4gV2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZml4IGlzIHNvbGlkIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHByb2JsZW1zLlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjogYGJwZl94ZHBfY3RfYWxsb2NgLCBgYnBmX3hkcF9jdF9sb29rdXBgLCBgYnBmX3NrYl9jdF9hbGxvY2AsIGFuZCBgYnBmX3NrYl9jdF9sb29rdXBgLiBUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS5cblxuVG8gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJ2xsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJQRl9TWVNDQUxMYCwgYW5kLCBvZiBjb3Vyc2UsIGBERUJVR19JTkZPX0JURmAgYXJlIGVuYWJsZWQgaW4gbXkgY29uZmlndXJhdGlvbi5cblxuQWxyaWdodCwgd2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgd2lsbCBub3cgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTUyNCwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDY6NTMuMzUwMTQ1MTUzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2NTg1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3hkcF9jdF9sb29rdXBcIixcbiAgICBcImJwZl9za2JfY3RfYWxsb2NcIixcbiAgICBcImJwZl9za2JfY3RfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXFx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfeGRwX2N0X2FsbG9jXCIsXG4gICAgXCJicGZfeGRwX2N0X2xvb2t1cFwiLFxuICAgIFwiYnBmX3NrYl9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3NrYl9jdF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBUaW1lLW9mLUNoZWNrIHRvIFRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdHkgaW4gQlBGIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyBieSB1c2luZyBSRUFEX09OQ0UoKSBmb3Igb3B0cy1cXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvkv7k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 01:21:00 +0000 UTC FinishedAt: 2026-07-31 01:46:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_CONNTRACK", "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_CONNTRACK", "BPF_SYSCALL", "DEBUG_INFO_BTF" ], "series_id": "73745fb3-5a23-445f-b89b-6da86198101a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_xdp_ct_alloc", "bpf_xdp_ct_lookup", "bpf_skb_ct_alloc", "bpf_skb_ct_lookup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGI3ZWMwYmU0YzQ3ZmRkZjMzYzk3ODdlYzU1NzMxM2M4ODdmMjNmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjQ0OjA3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbkBAIC0xMjIsNiAmIzQzOzEyMiw3IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlIG90dXBsZSwgcnR1cGxlO1xuIFx0c3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XG4mIzQzO1x0czMyIG5ldG5zX2lkO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghKG9wdHNfbGVuID09IE5GX0JQRl9DVF9PUFRTX1NaIHx8IG9wdHNfbGVuID09IDEyKSlcbkBAIC0xMzQsNyAmIzQzOzEzNSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXHR9XG4gXG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4mIzQzO1x0bmV0bnNfaWQgPSBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZCk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KG5ldG5zX2lkIFx1MDAzYyBCUEZfRl9DVVJSRU5UX05FVE5TKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4gXHRlcnIgPSBicGZfbmZfY3RfdHVwbGVfcGFyc2UoYnBmX3R1cGxlLCB0dXBsZV9sZW4sIG9wdHMtXHUwMDNlbDRwcm90byxcbkBAIC0xNDcsOCAmIzQzOzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbiYjNDM7XHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4mIzQzO1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMTcxLDcgJiM0MzsxNzMsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuIFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcbiBcbiBvdXQ6XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4mIzQzO1x0aWYgKG5ldG5zX2lkIFx1MDAzZT0gMClcbiBcdFx0cHV0X25ldChuZXQpO1xuIFxuIFx0cmV0dXJuIGN0O1xuQEAgLTE4Niw2ICYjNDM7MTg4LDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuIFx0c3RydWN0IG5mX2Nvbm50cmFja190dXBsZSB0dXBsZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSBjdF96b25lO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuJiM0MztcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIW9wdHMgfHwgIWJwZl90dXBsZSlcbkBAIC0yMDEsNyAmIzQzOzIwNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcdGlmICh1bmxpa2VseShvcHRzLVx1MDAzZWw0cHJvdG8gIT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2IG9wdHMtXHUwMDNlbDRwcm90byAhPSBJUFBST1RPX1VEUCkpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FUFJPVE8pO1xuLVx0aWYgKHVubGlrZWx5KG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxuJiM0MztcdG5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtXHUwMDNlbmV0bnNfaWQpO1xuJiM0MztcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMjA5LDggJiM0MzsyMTMsOCBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbiYjNDM7XHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4mIzQzO1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMjI1LDcgJiM0MzsyMjksNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHR9XG4gXG4gXHRoYXNoID0gbmZfY29ubnRyYWNrX2ZpbmRfZ2V0KG5ldCwgXHUwMDI2Y3Rfem9uZSwgXHUwMDI2dHVwbGUpO1xuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKVxuJiM0MztcdGlmIChuZXRuc19pZCBcdTAwM2U9IDApXG4gXHRcdHB1dF9uZXQobmV0KTtcbiBcdGlmICghaGFzaClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGI3ZWMwYmU0YzQ3ZmRkZjMzYzk3ODdlYzU1NzMxM2M4ODdmMjNmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjQ0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwppbmRleCBmOThkMWQ0YjQyYzNkLi44YjU0MDg0NmYyOTkyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYwpAQCAtMTIyLDYgJiM0MzsxMjIsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLAogCXN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgb3R1cGxlLCBydHVwbGU7CiAJc3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7CiAJc3RydWN0IG5mX2Nvbm4gKmN0OwomIzQzOwlzMzIgbmV0bnNfaWQ7CiAJaW50IGVycjsKIAogCWlmICghKG9wdHNfbGVuID09IE5GX0JQRl9DVF9PUFRTX1NaIHx8IG9wdHNfbGVuID09IDEyKSkKQEAgLTEzNCw3ICYjNDM7MTM1LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSwKIAkJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCX0KIAotCWlmICh1bmxpa2VseShvcHRzLSZndDtuZXRuc19pZCAmbHQ7IEJQRl9GX0NVUlJFTlRfTkVUTlMpKQomIzQzOwluZXRuc19pZCA9IFJFQURfT05DRShvcHRzLSZndDtuZXRuc19pZCk7CiYjNDM7CWlmICh1bmxpa2VseShuZXRuc19pZCAmbHQ7IEJQRl9GX0NVUlJFTlRfTkVUTlMpKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIAogCWVyciA9IGJwZl9uZl9jdF90dXBsZV9wYXJzZShicGZfdHVwbGUsIHR1cGxlX2xlbiwgb3B0cy0mZ3Q7bDRwcm90bywKQEAgLTE0Nyw4ICYjNDM7MTQ5LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAotCWlmIChvcHRzLSZndDtuZXRuc19pZCAmZ3Q7PSAwKSB7Ci0JCW5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLSZndDtuZXRuc19pZCk7CiYjNDM7CWlmIChuZXRuc19pZCAmZ3Q7PSAwKSB7CiYjNDM7CQluZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpOwogCQlpZiAodW5saWtlbHkoIW5ldCkpCiAJCQlyZXR1cm4gRVJSX1BUUigtRU5PTkVUKTsKIAl9CkBAIC0xNzEsNyAmIzQzOzE3Myw3IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsCiAJX19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTsKIAogb3V0OgotCWlmIChvcHRzLSZndDtuZXRuc19pZCAmZ3Q7PSAwKQomIzQzOwlpZiAobmV0bnNfaWQgJmd0Oz0gMCkKIAkJcHV0X25ldChuZXQpOwogCiAJcmV0dXJuIGN0OwpAQCAtMTg2LDYgJiM0MzsxODgsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJc3RydWN0IG5mX2Nvbm50cmFja190dXBsZSB0dXBsZTsKIAlzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTsKIAlzdHJ1Y3QgbmZfY29ubiAqY3Q7CiYjNDM7CXMzMiBuZXRuc19pZDsKIAlpbnQgZXJyOwogCiAJaWYgKCFvcHRzIHx8ICFicGZfdHVwbGUpCkBAIC0yMDEsNyAmIzQzOzIwNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwKIAl9CiAJaWYgKHVubGlrZWx5KG9wdHMtJmd0O2w0cHJvdG8gIT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyBvcHRzLSZndDtsNHByb3RvICE9IElQUFJPVE9fVURQKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVQUk9UTyk7Ci0JaWYgKHVubGlrZWx5KG9wdHMtJmd0O25ldG5zX2lkICZsdDsgQlBGX0ZfQ1VSUkVOVF9ORVROUykpCiYjNDM7CW5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtJmd0O25ldG5zX2lkKTsKJiM0MzsJaWYgKHVubGlrZWx5KG5ldG5zX2lkICZsdDsgQlBGX0ZfQ1VSUkVOVF9ORVROUykpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCiAJZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLSZndDtsNHByb3RvLApAQCAtMjA5LDggJiM0MzsyMTMsOCBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGVyciAmbHQ7IDApCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAKLQlpZiAob3B0cy0mZ3Q7bmV0bnNfaWQgJmd0Oz0gMCkgewotCQluZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgb3B0cy0mZ3Q7bmV0bnNfaWQpOwomIzQzOwlpZiAobmV0bnNfaWQgJmd0Oz0gMCkgewomIzQzOwkJbmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTsKIAkJaWYgKHVubGlrZWx5KCFuZXQpKQogCQkJcmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7CiAJfQpAQCAtMjI1LDcgJiM0MzsyMjksNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsCiAJfQogCiAJaGFzaCA9IG5mX2Nvbm50cmFja19maW5kX2dldChuZXQsICZhbXA7Y3Rfem9uZSwgJmFtcDt0dXBsZSk7Ci0JaWYgKG9wdHMtJmd0O25ldG5zX2lkICZndDs9IDApCiYjNDM7CWlmIChuZXRuc19pZCAmZ3Q7PSAwKQogCQlwdXRfbmV0KG5ldCk7CiAJaWYgKCFoYXNoKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb25udHJhY2sgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYWRkaW5nIGBSRUFEX09OQ0Uob3B0cy0mZ3Q7bmV0bnNfaWQpYCBhbmQgdXNpbmcgYSBsb2NhbCB2YXJpYWJsZSwgYG5ldG5zX2lkYCwgd2l0aGluIHRoZSBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYCBmdW5jdGlvbnMuIEFoLCByaWdodCwgdGhpcyBpcyB0ZXh0Ym9vayBUT0NUT1UgcHJvdGVjdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB2dWxuZXJhYmxlIGJlY2F1c2UgYG9wdHMtJmd0O25ldG5zX2lkYCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZpZWQgY29uY3VycmVudGx5IGJ5IGEgQlBGIHByb2dyYW0gb3Igc29tZXRoaW5nIGluIHVzZXJzcGFjZSBiZXR3ZWVuIHRoZSBjaGVjayAobGlrZSBgb3B0cy0mZ3Q7bmV0bnNfaWQgJmd0Oz0gMGApIGFuZCB0aGUgYWN0dWFsIHVzYWdlIChlLmcuLCBpbiBgZ2V0X25ldF9uc19ieV9pZGAgb3IgYHB1dF9uZXRgKS4gVGhpcyBmaXggZW5zdXJlcyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGEgY29uc2lzdGVudCB2YWx1ZS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGZsdXNoIG91dCBhbnkgcmVtYWluaW5nIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIGlzc3VlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29uY3VycmVuY3kuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgY29kZS4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O2xsIGdyYWIgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGBuZl9jb25udHJhY2tfYnBmLmNgIGluIHRoZSBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkgY2FuIHJlcHJvZHVjZSB0aGlzIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfYnBmLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgJiM0Mzs9IG5mX2Nvbm50cmFja19icGYub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjE6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JwZi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTIyLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMsIHNwZWFraW5nIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIG5mX2Nvbm50cmFja19icGYubyBNb2R1bGUgQnVpbGQqKgoKUmlnaHQsIHNvIHRoZSB3YXkgSSYjMzk7bSBzZWVpbmcgaXQsIHRoaXMgYG5mX2Nvbm50cmFja19icGYub2Agb2JqZWN0IGZpbGUsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ2V0dGluZyBidWlsdCwgY29uZGl0aW9uYWxseSBvZiBjb3Vyc2UsIGlmIHdlJiMzOTt2ZSBnb3QgYENPTkZJR19ORl9DT05OVFJBQ0tgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQgbWFrZXMgc2Vuc2UsIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaXQgYWxzbyBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIG9yLCBwb3RlbnRpYWxseSwgYENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTYCBiZWluZyBlbmFibGVkIGFzIHdlbGwuIFNvIHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBvbiBCVEYgKEJURiAtIEJQRiBUeXBlIEZvcm1hdCkgZGVidWcgaW5mb3JtYXRpb24uIExldCBtZSBzZWUgaWYgSSBjYW4gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBtb2R1bGUuCgpCZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY29uZmlybWF0aW9uIG9mIHRoaXMgbW9kdWxlJiMzOTtzIGJ1aWxkIHByZXJlcXVpc2l0ZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgbXkgYXNzdW1wdGlvbnMgYXJlIHNvdW5kIG9yIG5vdC4gVGhlbiBJIGNhbiBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LCBhbmQgaG93IGl0IGlzIGFsbCB0aWVkIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icGYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgJiM0Mzs9IG5mX2Nvbm50cmFja19icGYub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjE6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSAmIzQzOz0gbmZfY29ubnRyYWNrX2JwZi5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTIyLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBCUEYgTmV0ZmlsdGVyIENvbm50cmFjayBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGdvdmVybiB0aGUgQlBGIHNpZGUgb2YgdGhlIG5ldGZpbHRlciBjb25udHJhY2suIEkmIzM5O20gcHJldHR5IHN1cmUgSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0JiMzOTtzIHNlZS4uLiByaWdodCwgKm5mXF9jb25udHJhY2tcX2JwZi5jKi4gVGhhdCYjMzk7cyB0aGUga2V5LgoKSG9sZCBvbi4uLiBJIHJlbWVtYmVyIG5vdy4gVGhhdCBjb2RlIGlzIGNvbXBpbGVkIGludG8gdGhlIGBuZl9jb25udHJhY2tgIG1vZHVsZSAob3IgYnVpbHQtaW4sIGlmIHlvdSYjMzk7dmUgZ290IGl0IHRoYXQgd2F5KSBvbmx5IGlmIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLCBzaW5jZSBCVEYgaXMgY2VudHJhbCB0byBhIGxvdCBvZiB0aGlzIEJQRiBzdHVmZi4gU28sIEkgZGVmaW5pdGVseSBuZWVkIGBORl9DT05OVFJBQ0tgIGVuYWJsZWQgKHRoYXQmIzM5O3MgZnVuZGFtZW50YWwpLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpXYWl0LCBpc24mIzM5O3QgYERFQlVHX0lORk9fQlRGYCBwcmV0dHkgbXVjaCBzdGFuZGFyZCBmb3IgQlBGIHNldHVwcz8gSSB0aGluayBpdCBpcywgYnV0IEkgc2hvdWxkIHZlcmlmeSwganVzdCBpbiBjYXNlLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gT2theSwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNgIGFuZCBzZWFyY2ggZm9yIGFueSBvdGhlciBgI2lmZGVmYCBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgY29udHJvbCBmZWF0dXJlcy4gTmVlZCB0byBiZSB0aG9yb3VnaCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XiNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIERpcmVjdGl2ZXMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBsYW5kc2NhcGUgb2YgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hpY2ggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYXJlIGJlaW5nIGVtcGxveWVkIHRvIG1hbmFnZSBjb2RlIGluY2x1c2lvbiBvciBleGNsdXNpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBgI2lmYCBvciBgI2lmIGRlZmluZWRgLiBUaGVzZSBhcmUgdGhlIHdvcmtob3JzZXMgb2YgdGhpcyB0eXBlIG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciB1c2UgaXMgY3J1Y2lhbCB0byBncmFzcGluZyBob3cgdGhlIGNvZGViYXNlIGJlaGF2ZXMgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9yIHRhcmdldCBwbGF0Zm9ybXMuIEZpbmRpbmcgdGhlc2UgZWFybHkgaW4gdGhlIGludmVzdGlnYXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSYjMzk7cyBmbGV4aWJpbGl0eS4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14jaWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yNDg9c3RhdGljIGludCBfbmZfY29ubnRyYWNrX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjY2LVx0c3dpdGNoIChvZmYpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjI2NzojaWYgZGVmaW5lZChDT05GSUdfTkZfQ09OTlRSQUNLX01BUkspXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0yNjgtXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBuZl9jb25uLCBtYXJrKTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgUG90ZW50aWFsIEJQRiBDb25uZWN0aW9uIFRyYWNraW5nIEltcGFjdHMqKgoKUmlnaHQsIHNvIGBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktgICpjb3VsZCogYmUgYSBmYWN0b3IgaGVyZSwgYnV0IHRoZSBjaGFuZ2VzIHNlZW0gZm9jdXNlZCBvbiBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhvc2Ugc3BlY2lmaWNhbGx5LgoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQ6CiogICBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgCiogICBgX19icGZfbmZfY3RfbG9va3VwYAoKUmlnaHQsIHRoZXNlIGFyZSBCUEYgaGVscGVycy4gU28sIGdpdmVuIHRoZSBjb250ZXh0LCB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIEJQRi1yZWxhdGVkIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoYXQgbWVhbnMgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCB1c2FnZXMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiBob3cgdGhlc2UgaGVscGVycyBhcmUgYmVpbmcgdXNlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBwYXRjaCBhcmUuIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhlc2UgQlBGIGhlbHBlcnMgYXJlIGRlcGxveWVkLiBUaGF0JiMzOTtsbCB0ZWxsIHRoZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfbmZfY3RfYWxsb2NfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0xMTc9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjExODpfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTE5LVx0XHRcdHUzMiB0dXBsZV9sZW4sIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfbGVuLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMwNT1icGZfeGRwX2N0X2FsbG9jKHN0cnVjdCB4ZHBfbWQgKnhkcF9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjMxMTpcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShkZXZfbmV0KGN0eC1cdTAwM2VyeHEtXHUwMDNlZGV2KSwgYnBmX3R1cGxlLCB0dXBsZV9fc3osXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTItXHRcdFx0XHQgICAgICAgb3B0cywgb3B0c19fc3osIDEwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zNjE9YnBmX3NrYl9jdF9hbGxvYyhzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNjgtXHRuZXQgPSBza2ItXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNjk6XHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkobmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3osIDEwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM3MC1cdHJldHVybiAoc3RydWN0IG5mX2Nvbm5fX19pbml0ICopYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipSZWZsZWN0aW5nIG9uIENvbm5lY3Rpb24gVHJhY2tpbmcgYW5kIEJQRiBJbnRlZ3JhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIHBhdHRlcm4gaGVyZS4gYGJwZl94ZHBfY3RfYWxsb2NgIGFuZCBgYnBmX3NrYl9jdF9hbGxvY2AgYXJlIHV0aWxpemluZyB0aGVzZSBmdW5jdGlvbnMuIEFuZCB0aGVuLCBgX19icGZfbmZfY3RfbG9va3VwYCBpcyBjcnVjaWFsIGZvciB0aGUgbG9va3VwIGZ1bmN0aW9ucyBpbiBib3RoIFhEUCBhbmQgU0tCIGNvbnRleHRzIOKAkyBgYnBmX3hkcF9jdF9sb29rdXBgIGFuZCBgYnBmX3NrYl9jdF9sb29rdXBgLiBJIG5lZWQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgY29uZmlndXJlZCBwcm9wZXJseSB0byBlbmFibGUgdGhlc2UgY29ubmVjdGlvbiB0cmFja2luZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yay4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdlIGhhdmUgQlBGIGRlcGVuZGVuY2llcywgd2Uga25vdyB0aGF0LiBTbywgbmF0dXJhbGx5LCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIGdpdmVuIOKAkyB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBBbmQgY2xlYXJseSwgd2UmIzM5O2xsIG5lZWQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoaXMgaXMgYWxsIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcuIEZpbmFsbHksIEkga25vdyBJJiMzOTtsbCBiZSBuZWVkaW5nIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIHRvIGNvbXBpbGUgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgZWZmZWN0aXZlbHkuCgpKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgTkZfQ09OTlRSQUNLYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgY2F2ZWF0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGJlIHRob3JvdWdoIHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ09OTlRSQUNLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTExPWNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ6Y29uZmlnIE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY6Y29uZmlnIE5GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB6b25lcyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg6Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O1N1cHBseSBDVCBsaXN0IGluIHByb2NmcyAoT0JTT0xFVEUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc4LVx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVzdGFtcGluZyYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODktXHRib29sIFwmIzM0O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTU6Y29uZmlnIE5GX0NPTk5UUkFDS19PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXHRib29sXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVx0dHJpc3RhdGUgXCYjMzQ7QW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjgtXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjM5OmNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjU3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0lSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzUtXHR0cmlzdGF0ZVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cdHRyaXN0YXRlIFwmIzM0O1NOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7UFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzMwOmNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O1NBTkUgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtURlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkwMAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIENvbm5lY3Rpb24gVHJhY2tpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiB0cmFja2luZyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gZW5hYmxlIGBORl9DT05OVFJBQ0tgIGFuZCBgREVCVUdfSU5GT19CVEZgLiBIb2xkIG9uLCBgREVCVUdfSU5GT19CVEZgIGlzIGRlZmluZWQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBSaWdodCwgbGV04oCZcyBkaWcgaW50byB0aGlzIGFuZCBjaGVjayBgQlBGX1NZU0NBTExgLgoKTm93LCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFuYWx5c2lzIGFyZSBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfbG9va3VwYCwgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCwgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLgoKSG1tLCBhIHdyaW5rbGUuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCBhbmQgYF9fYnBmX25mX2N0X2xvb2t1cGAuIFRoZXkgYXJlICpzdGF0aWMqIGZ1bmN0aW9ucy4gVGhhdCBjb3VsZCBpbXBhY3QgdGhlaXIgaW5saW5pbmcgYmVoYXZpb3IsIGVzcGVjaWFsbHkgaWYgdGhleSBhcmUgbGFyZ2UsIGJ1dCB3YWl0Li4uIHRoZXkgYXJlIHN0YXRpYy4gSXQgd291bGQgc2VlbSB0aGVpciBpbmxpbmUgc3RhdHVzIGlzIHdvcnRoIGEgbG9vay4KTGV0JiMzOTtzIHNlZSBpZiB0aGV5IGFyZSBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYnBmX25mX2N0X2FsbG9jX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE3PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoxMTg6X19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTExOS1cdFx0XHR1MzIgdHVwbGVfbGVuLCBzdHJ1Y3QgYnBmX2N0X29wdHMgKm9wdHMsIHUzMiBvcHRzX2xlbixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDU9YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMTE6XHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkoZGV2X25ldChjdHgtXHUwMDNlcnhxLVx1MDAzZWRldiksIGJwZl90dXBsZSwgdHVwbGVfX3N6LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEyLVx0XHRcdFx0ICAgICAgIG9wdHMsIG9wdHNfX3N6LCAxMCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzYxPWJwZl9za2JfY3RfYWxsb2Moc3RydWN0IF9fc2tfYnVmZiAqc2tiX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzY4LVx0bmV0ID0gc2tiLVx1MDAzZWRldiA/IGRldl9uZXQoc2tiLVx1MDAzZWRldikgOiBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzY5Olx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KG5ldCwgYnBmX3R1cGxlLCB0dXBsZV9fc3osIG9wdHMsIG9wdHNfX3N6LCAxMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNzAtXHRyZXR1cm4gKHN0cnVjdCBuZl9jb25uX19faW5pdCAqKWJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTdGF0aWMgTmF0dXJlIG9mIHRoZSBBUEkqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHN0YXRpYyBlbGVtZW50cyBoZXJlLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBtb3N0IG9mIHRoZSBBUEksIGF0IGxlYXN0IHRoZSBjb3JlIHBhcnQsIGlzIGluaGVyZW50bHkgc3RhdGljLiBJdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBleGNlcHRpb25zLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cy4gQWgsIHllcywgdGhlc2Ugc2VlbSB0byBiZSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFsbG93IGZvciBkeW5hbWljIGFsbG9jYXRpb24gYW5kIGxvb2t1cCB3aXRoaW4gdGhlIGNvbnRleHQgdHJhY2tpbmcgc3Vic3lzdGVtOiBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSBzdGF0ZSBpcyBsaWtlbHkgYmVpbmcgY3JlYXRlZCwgbW9kaWZpZWQsIGFuZCByZXRyaWV2ZWQgZHVyaW5nIHByb2dyYW0gZXhlY3V0aW9uLgoKVGhlIG5leHQgY3JpdGljYWwgcXVlc3Rpb24gaXMgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IGV4cG9ydGVkIGFzIEJQRiBoZWxwZXJzIGFuZCB1c2VkIGFzIHN1Y2guIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgdGhlaXIgZXhpc3RlbmNlIGJ1dCB0aGVpciBwcmFjdGljYWwgaW50ZWdyYXRpb24gd2l0aGluIEJQRiBwcm9ncmFtcy4gQXJlIHdlLCBhcyBkZXZlbG9wZXJzLCBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSBmcm9tIG91ciBCUEYgY29kZT8gVW5kZXJzdGFuZGluZyB0aGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiBzdGF0aWMgb3IgZHluYW1pYyBiZWhhdmlvciBvbiB0aGluZ3MgbGlrZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcHJvZ3JhbSBwZXJmb3JtYW5jZS4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl94ZHBfY3RfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yODc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjg4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6Mjg5Oi8qIGJwZl94ZHBfY3RfYWxsb2MgLSBBbGxvY2F0ZSBhIG5ldyBDVCBlbnRyeVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjkwLSAqXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA0PV9fYnBmX2tmdW5jIHN0cnVjdCBuZl9jb25uX19faW5pdCAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMDU6YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMwNi1cdFx0IHUzMiB0dXBsZV9fc3osIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfX3N6KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM5MD1icGZfc2tiX2N0X2xvb2t1cChzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00MDYtICogQG5mY3RcdCAtIFBvaW50ZXIgdG8gcmVmZXJlbmNlZCBuZl9jb25uX19faW5pdCBvYmplY3QsIG9idGFpbmVkXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo0MDc6ICpcdFx0ICAgdXNpbmcgYnBmX3hkcF9jdF9hbGxvYyBvciBicGZfc2tiX2N0X2FsbG9jLlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA4LSAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTQzNT1fX2JwZl9rZnVuYyB2b2lkIGJwZl9jdF9yZWxlYXNlKHN0cnVjdCBuZl9jb25uICpuZmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ0Ni0gKiBAbmZjdFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDQ3OiAqICAgICAgICAgICAgICAgICBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NDgtICogQHRpbWVvdXQgICAgICAtIFRpbWVvdXQgaW4gbXNlY3MuXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDY1PV9fYnBmX2tmdW5jIGludCBicGZfY3RfY2hhbmdlX3RpbWVvdXQoc3RydWN0IG5mX2Nvbm4gKm5mY3QsIHUzMiB0aW1lb3V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ3Ni0gKiBAbmZjdFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDc3OiAqXHRcdCAgIGJwZl94ZHBfY3RfYWxsb2Mgb3IgYnBmX3NrYl9jdF9hbGxvYy5cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTQ3OC0gKiBAc3RhdHVzICAgICAgIC0gTmV3IHN0YXR1cyB2YWx1ZS5cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz01MDI9QlRGX0tGVU5DU19TVEFSVChuZl9jdF9rZnVuY19zZXQpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo1MDM6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl94ZHBfY3RfYWxsb2MsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTUwNC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3hkcF9jdF9sb29rdXAsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQlBGIENvbm5UcmFjayBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IEJQRiBrZnVuY3MgaGVyZSwgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZy4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHplcm8gaW4gb24gYXJlIGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhvc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuCgpOb3csIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBJJiMzOTtsbCBuZWVkIGBORl9DT05OVFJBQ0tgLCBuYXR1cmFsbHksIGFuZCBhbHNvIGBERUJVR19JTkZPX0JURmAgc28gSSBjYW4gYWN0dWFsbHkgKnNlZSogd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBCUEYgcHJvZ3JhbXMsIGFuZCBgQlBGX1NZU0NBTExgIHNvIEkgY2FuIHVzZSBpdC4KCkhvbGQgb24sIGxldCBtZSBxdWlja2x5IG1ha2Ugc3VyZSBgTkZfQ09OTlRSQUNLYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgSSBtaWdodCBtaXNzLiBZZXAsIGxvb2tzIGxpa2UgaXQgcmVsaWVzIG9uIGBORVRGSUxURVJgLiBFYXN5IGVub3VnaC4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhhdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMgYWJvdXQgYE5GX0NPTk5UUkFDS2AgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZSBzcGVjaWZpYyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMsIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGFyb3VuZCBsaW5lIDgyOyBob3BlZnVsbHksIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIGxvY2F0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5hcmd1bWVudCAmIzM0O0ZpcnN0TGluZSYjMzQ7IGhhcyB3cm9uZyB0eXBlOiBnb3Qgc3RyaW5nLCB3YW50IGludDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAmIzM0Ozc1JiMzNDssCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogJiMzNDsyMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O2FyZ3VtZW50IFwmIzM0O0ZpcnN0TGluZVwmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgeW91ciBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlZHVjdGlvbiBCZWdpbnM6IFZhcmlhYmxlIElkZW50aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuICYjMzQ7Rmlyc3RMaW5lLi4uJiMzNDsgSG1tLCB0aGUgdmFyaWFibGUgbmFtZSAmIzM0O0ZpcnN0TGluZSYjMzQ7IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBxdWFudGl0YXRpdmUsIGxpa2VseSBhIGNvdW50LCBhbiBpbmRleCwgb3Igc29tZXRoaW5nIG51bWVyaWNhbC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIHBlcmhhcHMsIG9yIGZyb20gYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UpLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSBpdCB3b3VsZCByZXByZXNlbnQgYSBzdHJpbmcgb3IgYSBib29sZWFuLiBUaGUgdmVyeSBzdHJ1Y3R1cmUgb2YgdGhlIG5hbWUgc3Ryb25nbHkgaW1wbGllcyBpdCBtdXN0IGJlIGFuIGludGVnZXIuIEl0IGRvZXNuJiMzOTt0IHNjcmVhbSBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBlaXRoZXIsIHNvIGludGVnZXIgaXQgaXMsIGF0IGxlYXN0IGFzIGEgc3RhcnRpbmcgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIG9wZXJhdGUgdW5kZXIgdGhhdCBjb25zdHJhaW50IGFuZCBzZWUgd2hlcmUgaXQgdGFrZXMgdXMgaW4gdGhlIHN1YnNlcXVlbnQgc3RlcHMgb2YgdGhpcyBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzU6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBPU0Ygb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4gIDc2Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuICA3NzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gIDc4Olx0XHRoZWxwXG4gIDc5Olx0XHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcbiAgODA6XHRcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cbiAgODE6XHRcbiAgODI6XHRjb25maWcgTkZfQ09OTlRSQUNLXG4gIDgzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxuICA4NjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxuICA4OTpcdFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxuICA5MDpcdFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxuICA5MTpcdFxuICA5MjpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIGRvIE1hc3F1ZXJhZGluZyBvciBvdGhlciBraW5kcyBvZiBOZXR3b3JrXG4gIDkzOlx0XHQgIEFkZHJlc3MgVHJhbnNsYXRpb24uICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuaGFuY2UgcGFja2V0XG4gIDk0Olx0XHQgIGZpbHRlcmluZyAoc2VlIGBDb25uZWN0aW9uIHN0YXRlIG1hdGNoIHN1cHBvcnQmIzM5OyBiZWxvdykuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjMzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gVGhvdWdodCBQcm9jZXNzKioKCkFscmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgTkZfQ09OTlRSQUNLYCDigJMgdGhhdCYjMzk7cyBlYXN5LCBpdCBsaXZlcyByaWdodCB3aXRoaW4gdGhlIG5ldGZpbHRlciBtZW51LCBzbyBpdCBqdXN0IG5lZWRzIGBORVRGSUxURVJgIHRvIGJlIGVuYWJsZWQsIGFuZCB3ZSYjMzk7cmUgZ29vZCB0byBnby4gTm8gb3RoZXIgaGVhZGFjaGVzIHRoZXJlLgoKTm93LCBmb3IgYERFQlVHX0lORk9fQlRGYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IHJpZ2h0LCBzaW5jZSB0aGF0JiMzOTtzIGEgbW9yZSBpbnRlcmVzdGluZyBvbmUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgaXQmIzM5O3MgY2xlYXI6IGBERUJVR19JTkZPYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgaXRzIHByZXJlcXVpc2l0ZXMuIE9rYXksIGdvdCBpdC4KClNvLCBqdXN0IHRvIHN1bW1hcml6ZSBmb3IgbXkgaW50ZXJuYWwgY2hlY2tsaXN0LCB0aGUgZXNzZW50aWFsIGNvbmZpZ3MgYXJlOgoKKiAgIGBORl9DT05OVFJBQ0tgCiogICBgREVCVUdfSU5GT19CVEZgCiogICBgQlBGX1NZU0NBTExgCgpXaXRoIHRoZXNlLCBhbGwgc2hvdWxkIGJlIHdlbGwuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBpdCBpczoKCiogICBgYnBmX3hkcF9jdF9hbGxvY2AKKiAgIGBicGZfeGRwX2N0X2xvb2t1cGAKKiAgIGBicGZfc2tiX2N0X2FsbG9jYAoqICAgYGJwZl9za2JfY3RfbG9va3VwYAoKSSBzaG91bGQgc2VlIHRob3NlIGZ1bmN0aW9ucy4KCkhtbSwgd2FpdC4gQXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGdvdCBtb2RpZmllZCBhcyBwYXJ0IG9mIHRoaXM/IExldCBtZSBxdWlja2x5IHJldmlldy4uLiBObywgaXQgbG9va3MgbGlrZSBvbmx5IGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgIHdlcmUgdG91Y2hlZCwgYW5kIHRoZXkmIzM5O3JlIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhlIGZvdXIgZm9jdXMgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoZW0uCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIG9uIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2JwZl9uZl9jdF9hbGxvY19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTExNz1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTE4Ol9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xMTktXHRcdFx0dTMyIHR1cGxlX2xlbiwgc3RydWN0IGJwZl9jdF9vcHRzICpvcHRzLCB1MzIgb3B0c19sZW4sXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA1PWJwZl94ZHBfY3RfYWxsb2Moc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzExOlx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KGRldl9uZXQoY3R4LVx1MDAzZXJ4cS1cdTAwM2VkZXYpLCBicGZfdHVwbGUsIHR1cGxlX19zeixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMi1cdFx0XHRcdCAgICAgICBvcHRzLCBvcHRzX19zeiwgMTApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM2MT1icGZfc2tiX2N0X2FsbG9jKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM2OC1cdG5ldCA9IHNrYi1cdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cdTAwM2VkZXYpIDogc29ja19uZXQoc2tiLVx1MDAzZXNrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM2OTpcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShuZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeiwgMTApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzcwLVx0cmV0dXJuIChzdHJ1Y3QgbmZfY29ubl9fX2luaXQgKilicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgxMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWx2aW5nIGludG8gdGhlIGBfX2JwZl9uZl9jdF9sb29rdXBgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBfX2JwZl9uZl9jdF9sb29rdXBgLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgQlBGIGVjb3N5c3RlbSwgcGFydGljdWxhcmx5IGluIHRoZSBjb250ZXh0IG9mIG5ldHdvcmsgZmlsdGVyaW5nIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggdGhlIE5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1YnN5c3RlbS4gSSYjMzk7bSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoZSBsb29rdXAgb2YgY29ubmVjdGlvbiB0cmFja2luZyBlbnRyaWVzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYWtpbmcgcG9saWN5IGRlY2lzaW9ucyBiYXNlZCBvbiBleGlzdGluZyBmbG93cy4KCk15IGluaXRpYWwgdGhvdWdodHMgcmV2b2x2ZSBhcm91bmQgdGhlIGNyaXRpY2FsIG5lZWQgZm9yIGVmZmljaWVuY3kgaGVyZS4gQlBGIHByb2dyYW1zIGFyZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBhIHNsb3cgY29ubmVjdGlvbiBsb29rdXAgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlLiBXZSBhcmUgYWltaW5nIGZvciBtaW5pbWFsIG92ZXJoZWFkIGFuZCBvcHRpbWFsIHNwZWVkIGFuZCBJJiMzOTttIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB3aXRoIHRoYXQgYXQgdGhlIGZvcmVmcm9udC4gSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlcjogSG93IGRvZXMgaXQgaGFuZGxlIGhhc2ggY29sbGlzaW9ucz8gV2hhdCBhYm91dCBjb25jdXJyZW50IGFjY2Vzcz8gSXMgaXQgb3B0aW1pemVkIGZvciBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBjb25udHJhY2sgdGFibGU/IEhvdyBkb2VzIGl0IGhhbmRsZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKSSYjMzk7bSBwcm9iYWJseSB3b25kZXJpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uJiMzOTtzIGFyZ3VtZW50cy4gV2hhdCBrZXkgcGFyYW1ldGVycyBhcmUgdXNlZCBmb3IgdGhlIGxvb2t1cD8gQXJlIHRoZXkgc291cmNlZCBmcm9tIHBhY2tldCBoZWFkZXJzPyBJcyBpdCBhIGZ1bGx5IHNwZWNpZmllZCA1LXR1cGxlLCBvciBzb21lIGtpbmQgb2YgYWJicmV2aWF0ZWQga2V5PyBLbm93aW5nIHRoZSBhcmd1bWVudHMgd2lsbCBkaWN0YXRlIHdoYXQgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgaW4gZGVjaWRpbmcgcG9saWNpZXMuIEhvdyByb2J1c3QgaXMgaXQgdG8gaW5jb21wbGV0ZSBvciBmcmFnbWVudGVkIHBhY2tldHM/CgpGaW5hbGx5LCB0aGUgcmV0dXJuIHZhbHVlLi4uSSYjMzk7bSBndWVzc2luZyBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIGNvbm50cmFjayBlbnRyeSwgb3IgTlVMTCBpZiBubyBtYXRjaCBpcyBmb3VuZC4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlIG9yIGp1c3QgYSBudWxsIHBvaW50ZXI/IFdoYXQgc2lkZSBlZmZlY3RzIGRvZXMgaXQgaGF2ZSBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IGFjY2Vzc2VzPyBUaGVzZSBhc3BlY3RzIGFyZSBjcnVjaWFsIGZvciB0aGUgY29ycmVjdG5lc3MgYW5kIHN0YWJpbGl0eSBvZiBteSBCUEYgcHJvZ3JhbXMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNlbWFudGljcyB0byBhdm9pZCBzdWJ0bGUgYnVncyBhbmQgZW5zdXJlIHRoZSBwcmVkaWN0YWJsZSBiZWhhdmlvciBJIGRlcGVuZCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19icGZfbmZfY3RfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE4PV9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTgxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTgyOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTE4My1cdFx0XHRcdFx0ICBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMzM9YnBmX3hkcF9jdF9sb29rdXAoc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzQwLVx0Y2FsbGVyX25ldCA9IGRldl9uZXQoY3R4LVx1MDAzZXJ4cS1cdTAwM2VkZXYpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzQxOlx0bmZjdCA9IF9fYnBmX25mX2N0X2xvb2t1cChjYWxsZXJfbmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3opO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzQyLVx0cmV0dXJuIGJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzkwPWJwZl9za2JfY3RfbG9va3VwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM5Ny1cdGNhbGxlcl9uZXQgPSBza2ItXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozOTg6XHRuZmN0ID0gX19icGZfbmZfY3RfbG9va3VwKGNhbGxlcl9uZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeik7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zOTktXHRyZXR1cm4gYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyBmb3IgWERQL1NLQiBDb25uZWN0aW9uIFRyYWNraW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hcnJvd2VkIGl0IGRvd24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBqdXN0IHRob3NlIGZvdXIgY29ubmVjdGlvbiB0cmFja2luZyBmdW5jdGlvbnM6IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBCUEYgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCk5vdywgZm9yIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBlbnN1cmUgYSBtaW5pbWFsLCB5ZXQgZnVuY3Rpb25hbCwgZW52aXJvbm1lbnQuIEkmIzM5O20gZ29pbmcgd2l0aDogYE5GX0NPTk5UUkFDS2AsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX1NZU0NBTExgLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkuLi4gQWgsIGBORVRGSUxURVJgLiBJIGtub3cgYE5GX0NPTk5UUkFDS2AgZGVwZW5kcyBvbiBpdCwgc28gaWRlYWxseSwgaXQmIzM5O3MgZW5hYmxlZCBpbXBsaWNpdGx5LiBIb3dldmVyLCB0aGUgc3l6a2FsbGVyIGNvbmZpZyBnZW5lcmF0aW9uIG1pZ2h0IG5lZWQgaXQgZXhwbGljaXRseS4gVG8gYmUgY29tcGxldGVseSBzYWZlIGFuZCBhdm9pZCBhbnkgZG93bnN0cmVhbSBpc3N1ZXMsIEkmIzM5O2xsIGluY2x1ZGUgYE5FVEZJTFRFUmAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIGJldHRlciB0byBiZSBleHBsaWNpdCBpbiB0aGlzIGNhc2UuIEFsc28gSSB3aWxsIHF1aWNrbHkgdmVyaWZ5IGBERUJVR19JTkZPX0JURmAgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX0lORk9fQlRGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9Mzc4PWNvbmZpZyBERUJVR19JTkZPX1NQTElUXG4tLVxubGliL0tjb25maWcuZGVidWctMzk3LVxubGliL0tjb25maWcuZGVidWc6Mzk4OmNvbmZpZyBERUJVR19JTkZPX0JURlxubGliL0tjb25maWcuZGVidWctMzk5LVx0Ym9vbCBcJiMzNDtHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvblwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnPTQxOT1jb25maWcgUEFIT0xFX0hBU19MQU5HX0VYQ0xVREVcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjctXG5saWIvS2NvbmZpZy5kZWJ1Zzo0Mjg6Y29uZmlnIERFQlVHX0lORk9fQlRGX01PRFVMRVNcbmxpYi9LY29uZmlnLmRlYnVnLTQyOS1cdGJvb2wgXCYjMzQ7R2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb24gZm9yIGtlcm5lbCBtb2R1bGVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTI0CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDI4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBQb3RlbnRpYWwgU2VjdXJpdHkgSW1wbGljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19JTkZPX0JURmAgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGJhY2sgaW50byB0aGlzIHBhdGNoLiBBbHJpZ2h0LCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgUkVBRF9PTkNFKG9wdHMtJmd0O25ldG5zX2lkKWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZXkgYXJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIGhlbHBlciBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIFRoaXMga2luZCBvZiBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiBjb3JlIGtlcm5lbCBsb2dpYywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgQlBGIG5ldGZpbHRlciBoZWxwZXJzLCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZm9jdXNlZCBmdXp6aW5nLiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaXggaXMgc29saWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHByb2JsZW1zLgoKTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb246IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpUbyB0ZXN0IHRoaXMgZWZmZWN0aXZlbHksIEkmIzM5O2xsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJQRl9TWVNDQUxMYCwgYW5kLCBvZiBjb3Vyc2UsIGBERUJVR19JTkZPX0JURmAgYXJlIGVuYWJsZWQgaW4gbXkgY29uZmlndXJhdGlvbi4KCkFscmlnaHQsIHdpdGggdGhpcyB1bmRlcnN0YW5kaW5nLCBJIHdpbGwgbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfeGRwX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl94ZHBfY3RfbG9va3VwJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX3NrYl9jdF9sb29rdXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3hkcF9jdF9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfeGRwX2N0X2xvb2t1cCYjMzQ7LAogICAgJiMzNDticGZfc2tiX2N0X2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9za2JfY3RfbG9va3VwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIFRpbWUtb2YtQ2hlY2sgdG8gVGltZS1vZi1Vc2UgKFRPQ1RPVSkgdnVsbmVyYWJpbGl0eSBpbiBCUEYgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIGJ5IHVzaW5nIFJFQURfT05DRSgpIGZvciBvcHRzLVx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjA4LjEzNzE3NzczMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTM5OTU3MDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3hkcF9jdF9sb29rdXBcIixcbiAgICBcImJwZl9za2JfY3RfYWxsb2NcIixcbiAgICBcImJwZl9za2JfY3RfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXFx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDowOC4xMzcxODU3NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjk2NDc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRiN2VjMGJlNGM0N2ZkZGYzM2M5Nzg3ZWM1NTczMTNjODg3ZjIzZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6NDQ6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xcbkBAIC0xMjIsNiArMTIyLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja190dXBsZSBvdHVwbGUsIHJ0dXBsZTtcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja196b25lIGN0X3pvbmU7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdDtcXG4rXFx0czMyIG5ldG5zX2lkO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKCEob3B0c19sZW4gPT0gTkZfQlBGX0NUX09QVFNfU1ogfHwgb3B0c19sZW4gPT0gMTIpKVxcbkBAIC0xMzQsNyArMTM1LDggQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShvcHRzLVxcdTAwM2VuZXRuc19pZCBcXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxcbitcXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVxcdTAwM2VuZXRuc19pZCk7XFxuK1xcdGlmICh1bmxpa2VseShuZXRuc19pZCBcXHUwMDNjIEJQRl9GX0NVUlJFTlRfTkVUTlMpKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gXFxuIFxcdGVyciA9IGJwZl9uZl9jdF90dXBsZV9wYXJzZShicGZfdHVwbGUsIHR1cGxlX2xlbiwgb3B0cy1cXHUwMDNlbDRwcm90byxcXG5AQCAtMTQ3LDggKzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2U9IDApIHtcXG4tXFx0XFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG9wdHMtXFx1MDAzZW5ldG5zX2lkKTtcXG4rXFx0aWYgKG5ldG5zX2lkIFxcdTAwM2U9IDApIHtcXG4rXFx0XFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KCFuZXQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTkVUKTtcXG4gXFx0fVxcbkBAIC0xNzEsNyArMTczLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4gXFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcXG4gXFxuIG91dDpcXG4tXFx0aWYgKG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2U9IDApXFxuK1xcdGlmIChuZXRuc19pZCBcXHUwMDNlPSAwKVxcbiBcXHRcXHRwdXRfbmV0KG5ldCk7XFxuIFxcbiBcXHRyZXR1cm4gY3Q7XFxuQEAgLTE4Niw2ICsxODgsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm4gKl9fYnBmX25mX2N0X2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgdHVwbGU7XFxuIFxcdHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSBjdF96b25lO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubiAqY3Q7XFxuK1xcdHMzMiBuZXRuc19pZDtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdGlmICghb3B0cyB8fCAhYnBmX3R1cGxlKVxcbkBAIC0yMDEsNyArMjA0LDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHR9XFxuIFxcdGlmICh1bmxpa2VseShvcHRzLVxcdTAwM2VsNHByb3RvICE9IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IG9wdHMtXFx1MDAzZWw0cHJvdG8gIT0gSVBQUk9UT19VRFApKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST1RPKTtcXG4tXFx0aWYgKHVubGlrZWx5KG9wdHMtXFx1MDAzZW5ldG5zX2lkIFxcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXFxuK1xcdG5ldG5zX2lkID0gUkVBRF9PTkNFKG9wdHMtXFx1MDAzZW5ldG5zX2lkKTtcXG4rXFx0aWYgKHVubGlrZWx5KG5ldG5zX2lkIFxcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiBcXG4gXFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVxcdTAwM2VsNHByb3RvLFxcbkBAIC0yMDksOCArMjEzLDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFxuLVxcdGlmIChvcHRzLVxcdTAwM2VuZXRuc19pZCBcXHUwMDNlPSAwKSB7XFxuLVxcdFxcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVxcdTAwM2VuZXRuc19pZCk7XFxuK1xcdGlmIChuZXRuc19pZCBcXHUwMDNlPSAwKSB7XFxuK1xcdFxcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBuZXRuc19pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghbmV0KSlcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XFxuIFxcdH1cXG5AQCAtMjI1LDcgKzIyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0fVxcbiBcXG4gXFx0aGFzaCA9IG5mX2Nvbm50cmFja19maW5kX2dldChuZXQsIFxcdTAwMjZjdF96b25lLCBcXHUwMDI2dHVwbGUpO1xcbi1cXHRpZiAob3B0cy1cXHUwMDNlbmV0bnNfaWQgXFx1MDAzZT0gMClcXG4rXFx0aWYgKG5ldG5zX2lkIFxcdTAwM2U9IDApXFxuIFxcdFxcdHB1dF9uZXQobmV0KTtcXG4gXFx0aWYgKCFoYXNoKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MDguNjMyMTY0NTI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY0OTA0NTcxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfeGRwX2N0X2FsbG9jXCIsXG4gICAgXCJicGZfeGRwX2N0X2xvb2t1cFwiLFxuICAgIFwiYnBmX3NrYl9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3NrYl9jdF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBUaW1lLW9mLUNoZWNrIHRvIFRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdHkgaW4gQlBGIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyBieSB1c2luZyBSRUFEX09OQ0UoKSBmb3Igb3B0cy1cXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiN2VjMGJlNGM0N2ZkZGYzM2M5Nzg3ZWM1NTczMTNjODg3ZjIzZmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMTo0NDowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbmluZGV4IGY5OGQxZDRiNDJjM2QuLjhiNTQwODQ2ZjI5OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcbkBAIC0xMjIsNiArMTIyLDcgQEAgX19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgb3R1cGxlLCBydHVwbGU7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTtcbiBcdHN0cnVjdCBuZl9jb25uICpjdDtcbitcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIShvcHRzX2xlbiA9PSBORl9CUEZfQ1RfT1BUU19TWiB8fCBvcHRzX2xlbiA9PSAxMikpXG5AQCAtMTM0LDcgKzEzNSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXHR9XG4gXG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4rXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMTQ3LDggKzE0OSw4IEBAIF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFxuLVx0aWYgKG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwKSB7XG4tXHRcdG5ldCA9IGdldF9uZXRfbnNfYnlfaWQobmV0LCBvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmIChuZXRuc19pZCBcdTAwM2U9IDApIHtcbitcdFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG5ldG5zX2lkKTtcbiBcdFx0aWYgKHVubGlrZWx5KCFuZXQpKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ORVQpO1xuIFx0fVxuQEAgLTE3MSw3ICsxNzMsNyBAQCBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxuIFx0X19uZl9jdF9zZXRfdGltZW91dChjdCwgdGltZW91dCAqIEhaKTtcbiBcbiBvdXQ6XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4rXHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKVxuIFx0XHRwdXRfbmV0KG5ldCk7XG4gXG4gXHRyZXR1cm4gY3Q7XG5AQCAtMTg2LDYgKzE4OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgdHVwbGU7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgY3Rfem9uZTtcbiBcdHN0cnVjdCBuZl9jb25uICpjdDtcbitcdHMzMiBuZXRuc19pZDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIW9wdHMgfHwgIWJwZl90dXBsZSlcbkBAIC0yMDEsNyArMjA0LDggQEAgc3RhdGljIHN0cnVjdCBuZl9jb25uICpfX2JwZl9uZl9jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LFxuIFx0fVxuIFx0aWYgKHVubGlrZWx5KG9wdHMtXHUwMDNlbDRwcm90byAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjYgb3B0cy1cdTAwM2VsNHByb3RvICE9IElQUFJPVE9fVURQKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9UTyk7XG4tXHRpZiAodW5saWtlbHkob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4rXHRuZXRuc19pZCA9IFJFQURfT05DRShvcHRzLVx1MDAzZW5ldG5zX2lkKTtcbitcdGlmICh1bmxpa2VseShuZXRuc19pZCBcdTAwM2MgQlBGX0ZfQ1VSUkVOVF9ORVROUykpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIFxuIFx0ZXJyID0gYnBmX25mX2N0X3R1cGxlX3BhcnNlKGJwZl90dXBsZSwgdHVwbGVfbGVuLCBvcHRzLVx1MDAzZWw0cHJvdG8sXG5AQCAtMjA5LDggKzIxMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApIHtcbi1cdFx0bmV0ID0gZ2V0X25ldF9uc19ieV9pZChuZXQsIG9wdHMtXHUwMDNlbmV0bnNfaWQpO1xuK1x0aWYgKG5ldG5zX2lkIFx1MDAzZT0gMCkge1xuK1x0XHRuZXQgPSBnZXRfbmV0X25zX2J5X2lkKG5ldCwgbmV0bnNfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIW5ldCkpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT05FVCk7XG4gXHR9XG5AQCAtMjI1LDcgKzIyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdGhhc2ggPSBuZl9jb25udHJhY2tfZmluZF9nZXQobmV0LCBcdTAwMjZjdF96b25lLCBcdTAwMjZ0dXBsZSk7XG4tXHRpZiAob3B0cy1cdTAwM2VuZXRuc19pZCBcdTAwM2U9IDApXG4rXHRpZiAobmV0bnNfaWQgXHUwMDNlPSAwKVxuIFx0XHRwdXRfbmV0KG5ldCk7XG4gXHRpZiAoIWhhc2gpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MDguNjMyMTY3MDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU5MzA2MjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25udHJhY2sgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgaXMgYWRkaW5nIGBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZClgIGFuZCB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLCBgbmV0bnNfaWRgLCB3aXRoaW4gdGhlIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgIGZ1bmN0aW9ucy4gQWgsIHJpZ2h0LCB0aGlzIGlzIHRleHRib29rIFRPQ1RPVSBwcm90ZWN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbGlrZWx5IHZ1bG5lcmFibGUgYmVjYXVzZSBgb3B0cy1cdTAwM2VuZXRuc19pZGAgY291bGQgaGF2ZSBiZWVuIG1vZGlmaWVkIGNvbmN1cnJlbnRseSBieSBhIEJQRiBwcm9ncmFtIG9yIHNvbWV0aGluZyBpbiB1c2Vyc3BhY2UgYmV0d2VlbiB0aGUgY2hlY2sgKGxpa2UgYG9wdHMtXHUwMDNlbmV0bnNfaWQgXHUwMDNlPSAwYCkgYW5kIHRoZSBhY3R1YWwgdXNhZ2UgKGUuZy4sIGluIGBnZXRfbmV0X25zX2J5X2lkYCBvciBgcHV0X25ldGApLiBUaGlzIGZpeCBlbnN1cmVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBhIGNvbnNpc3RlbnQgdmFsdWUuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGZsdXNoIG91dCBhbnkgcmVtYWluaW5nIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIGlzc3VlcywgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29uY3VycmVuY3kuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBjb2RlLiBMZXQncyBzZWUuLi5JJ2xsIGdyYWIgYGdyZXBwZXJgIGFuZCBzZWFyY2ggZm9yIGBuZl9jb25udHJhY2tfYnBmLmNgIGluIHRoZSBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkgY2FuIHJlcHJvZHVjZSB0aGlzIGluIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjE0LjIyNTIzMjMxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1NzQ5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2JwZi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xOD1pZmVxICgkKENPTkZJR19ORl9DT05OVFJBQ0spLG0pXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxOTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykgKz0gbmZfY29ubnRyYWNrX2JwZi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMC1lbHNlIGlmZXEgKCQoQ09ORklHX05GX0NPTk5UUkFDSykseSlcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjIxOm5mX2Nvbm50cmFjay0kKENPTkZJR19ERUJVR19JTkZPX0JURikgKz0gbmZfY29ubnRyYWNrX2JwZi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0yMi1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDoxNC4zNDM4MTMyNTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgzMjg5MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcywgc3BlYWtpbmcgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBuZl9jb25udHJhY2tfYnBmLm8gTW9kdWxlIEJ1aWxkKipcblxuUmlnaHQsIHNvIHRoZSB3YXkgSSdtIHNlZWluZyBpdCwgdGhpcyBgbmZfY29ubnRyYWNrX2JwZi5vYCBvYmplY3QgZmlsZSwgaXQgbG9va3MgbGlrZSBpdCdzIGdldHRpbmcgYnVpbHQsIGNvbmRpdGlvbmFsbHkgb2YgY291cnNlLCBpZiB3ZSd2ZSBnb3QgYENPTkZJR19ORl9DT05OVFJBQ0tgIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQgbWFrZXMgc2Vuc2UsIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gQnV0IGhlcmUncyB0aGUga2lja2VyOiBpdCBhbHNvIGRlcGVuZHMgb24gYENPTkZJR19ERUJVR19JTkZPX0JURmAgb3IsIHBvdGVudGlhbGx5LCBgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNgIGJlaW5nIGVuYWJsZWQgYXMgd2VsbC4gU28gdGhlcmUncyBhIGRlcGVuZGVuY3kgb24gQlRGIChCVEYgLSBCUEYgVHlwZSBGb3JtYXQpIGRlYnVnIGluZm9ybWF0aW9uLiBMZXQgbWUgc2VlIGlmIEkgY2FuIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoaXMgbW9kdWxlLlxuXG5CZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHNvdXJjZS4gTGV0J3MgZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBgbmV0L25ldGZpbHRlci9NYWtlZmlsZWAgZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBjb25maXJtYXRpb24gb2YgdGhpcyBtb2R1bGUncyBidWlsZCBwcmVyZXF1aXNpdGVzLCBhbmQgY29uZmlybSB3aGV0aGVyIG15IGFzc3VtcHRpb25zIGFyZSBzb3VuZCBvciBub3QuIFRoZW4gSSBjYW4gZmlndXJlIG91dCB0aGUgY29udGV4dCwgYW5kIGhvdyBpdCBpcyBhbGwgdGllZCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjE5LjQyNzEwNDgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM2NjAyMTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2JwZi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTg9aWZlcSAoJChDT05GSUdfTkZfQ09OTlRSQUNLKSxtKVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTk6bmZfY29ubnRyYWNrLSQoQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMpICs9IG5mX2Nvbm50cmFja19icGYub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjAtZWxzZSBpZmVxICgkKENPTkZJR19ORl9DT05OVFJBQ0spLHkpXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToyMTpuZl9jb25udHJhY2stJChDT05GSUdfREVCVUdfSU5GT19CVEYpICs9IG5mX2Nvbm50cmFja19icGYub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjItZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MTkuNTUwNzc2OTk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4OTYwOTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgTmV0ZmlsdGVyIENvbm50cmFjayBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGljaCBjb25maWd1cmF0aW9ucyBnb3Zlcm4gdGhlIEJQRiBzaWRlIG9mIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrLiBJJ20gcHJldHR5IHN1cmUgSSBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcsIGJ1dCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0J3Mgc2VlLi4uIHJpZ2h0LCAqbmZcXF9jb25udHJhY2tcXF9icGYuYyouIFRoYXQncyB0aGUga2V5LlxuXG5Ib2xkIG9uLi4uIEkgcmVtZW1iZXIgbm93LiBUaGF0IGNvZGUgaXMgY29tcGlsZWQgaW50byB0aGUgYG5mX2Nvbm50cmFja2AgbW9kdWxlIChvciBidWlsdC1pbiwgaWYgeW91J3ZlIGdvdCBpdCB0aGF0IHdheSkgb25seSBpZiBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBpcyBlbmFibGVkLiBNYWtlcyBzZW5zZSwgc2luY2UgQlRGIGlzIGNlbnRyYWwgdG8gYSBsb3Qgb2YgdGhpcyBCUEYgc3R1ZmYuIFNvLCBJIGRlZmluaXRlbHkgbmVlZCBgTkZfQ09OTlRSQUNLYCBlbmFibGVkICh0aGF0J3MgZnVuZGFtZW50YWwpLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbldhaXQsIGlzbid0IGBERUJVR19JTkZPX0JURmAgcHJldHR5IG11Y2ggc3RhbmRhcmQgZm9yIEJQRiBzZXR1cHM/IEkgdGhpbmsgaXQgaXMsIGJ1dCBJIHNob3VsZCB2ZXJpZnksIGp1c3QgaW4gY2FzZS4gTGV0J3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gT2theSwgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY2AgYW5kIHNlYXJjaCBmb3IgYW55IG90aGVyIGAjaWZkZWZgIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBjb250cm9sIGZlYXR1cmVzLiBOZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MjYuMDQwMzg5MzI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTUxNDUxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXiNpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MjYuMTY5OTExODQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEwOTY2MzQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIERpcmVjdGl2ZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGxhbmRzY2FwZSBvZiBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGRldGVybWluZSB3aGljaCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBhcmUgYmVpbmcgZW1wbG95ZWQgdG8gbWFuYWdlIGNvZGUgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbi4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYCNpZmAgb3IgYCNpZiBkZWZpbmVkYC4gVGhlc2UgYXJlIHRoZSB3b3JraG9yc2VzIG9mIHRoaXMgdHlwZSBvZiBjb25kaXRpb25hbCBsb2dpYywgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgdXNlIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgaG93IHRoZSBjb2RlYmFzZSBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBvciB0YXJnZXQgcGxhdGZvcm1zLiBGaW5kaW5nIHRoZXNlIGVhcmx5IGluIHRoZSBpbnZlc3RpZ2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBmbGV4aWJpbGl0eS4gTGV0J3Mgc2VlIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MzEuMjc5NTc4MjQ1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1NTY4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yNDg9c3RhdGljIGludCBfbmZfY29ubnRyYWNrX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0yNjYtXFx0c3dpdGNoIChvZmYpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoyNjc6I2lmIGRlZmluZWQoQ09ORklHX05GX0NPTk5UUkFDS19NQVJLKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTI2OC1cXHRjYXNlIG9mZnNldG9mKHN0cnVjdCBuZl9jb25uLCBtYXJrKTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6MzEuNDUyMTQxNDk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDYxMjkxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIEJQRiBDb25uZWN0aW9uIFRyYWNraW5nIEltcGFjdHMqKlxuXG5SaWdodCwgc28gYENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS2AgKmNvdWxkKiBiZSBhIGZhY3RvciBoZXJlLCBidXQgdGhlIGNoYW5nZXMgc2VlbSBmb2N1c2VkIG9uIGBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeWAgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aG9zZSBzcGVjaWZpY2FsbHkuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQ6XG4qICAgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YFxuKiAgIGBfX2JwZl9uZl9jdF9sb29rdXBgXG5cblJpZ2h0LCB0aGVzZSBhcmUgQlBGIGhlbHBlcnMuIFNvLCBnaXZlbiB0aGUgY29udGV4dCwgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBCUEYtcmVsYXRlZCBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGF0IG1lYW5zIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIGFsbCB0aGUgY2FsbCBzaXRlcyBhbmQgdXNhZ2VzIG9mIHRoZXNlIGZ1bmN0aW9ucywgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogaG93IHRoZXNlIGhlbHBlcnMgYXJlIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcGF0Y2ggYXJlLiBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIEJQRiBoZWxwZXJzIGFyZSBkZXBsb3llZC4gVGhhdCdsbCB0ZWxsIHRoZSBzdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjM1LjE5ODI3MzMzN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNDk2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYnBmX25mX2N0X2FsbG9jX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTExNz1zdGF0aWMgc3RydWN0IG5mX2Nvbm4gKlxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjExODpfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTExOS1cXHRcXHRcXHR1MzIgdHVwbGVfbGVuLCBzdHJ1Y3QgYnBmX2N0X29wdHMgKm9wdHMsIHUzMiBvcHRzX2xlbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMwNT1icGZfeGRwX2N0X2FsbG9jKHN0cnVjdCB4ZHBfbWQgKnhkcF9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjMxMTpcXHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkoZGV2X25ldChjdHgtXFx1MDAzZXJ4cS1cXHUwMDNlZGV2KSwgYnBmX3R1cGxlLCB0dXBsZV9fc3osXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzEyLVxcdFxcdFxcdFxcdCAgICAgICBvcHRzLCBvcHRzX19zeiwgMTApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzYxPWJwZl9za2JfY3RfYWxsb2Moc3RydWN0IF9fc2tfYnVmZiAqc2tiX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNjgtXFx0bmV0ID0gc2tiLVxcdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM2OTpcXHRuZmN0ID0gX19icGZfbmZfY3RfYWxsb2NfZW50cnkobmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3osIDEwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zNzAtXFx0cmV0dXJuIChzdHJ1Y3QgbmZfY29ubl9fX2luaXQgKilicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDozNS4zNzk3NzY2NDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE3MzIyMzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqUmVmbGVjdGluZyBvbiBDb25uZWN0aW9uIFRyYWNraW5nIGFuZCBCUEYgSW50ZWdyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlLiBgYnBmX3hkcF9jdF9hbGxvY2AgYW5kIGBicGZfc2tiX2N0X2FsbG9jYCBhcmUgdXRpbGl6aW5nIHRoZXNlIGZ1bmN0aW9ucy4gQW5kIHRoZW4sIGBfX2JwZl9uZl9jdF9sb29rdXBgIGlzIGNydWNpYWwgZm9yIHRoZSBsb29rdXAgZnVuY3Rpb25zIGluIGJvdGggWERQIGFuZCBTS0IgY29udGV4dHMg4oCTIGBicGZfeGRwX2N0X2xvb2t1cGAgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZydzIGNvbmZpZ3VyZWQgcHJvcGVybHkgdG8gZW5hYmxlIHRoZXNlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gV2UgaGF2ZSBCUEYgZGVwZW5kZW5jaWVzLCB3ZSBrbm93IHRoYXQuIFNvLCBuYXR1cmFsbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgZ2l2ZW4g4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gQW5kIGNsZWFybHksIHdlJ2xsIG5lZWQgYENPTkZJR19ORl9DT05OVFJBQ0tgIHNpbmNlIHRoaXMgaXMgYWxsIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcuIEZpbmFsbHksIEkga25vdyBJJ2xsIGJlIG5lZWRpbmcgYENPTkZJR19ERUJVR19JTkZPX0JURmAgdG8gY29tcGlsZSB0aGlzIHBhcnRpY3VsYXIgZmlsZSBlZmZlY3RpdmVseS5cblxuSnVzdCB0byBiZSBjZXJ0YWluLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYE5GX0NPTk5UUkFDS2AgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgY2F2ZWF0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGJlIHRob3JvdWdoIHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIG5ldHdvcmsgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTIxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjQxLjU1MzAwMzcwM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4ODUwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0ZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTE9Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDpjb25maWcgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1LVxcdGJvb2wgICdDb25uZWN0aW9uIG1hcmsgdHJhY2tpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfQ09OTlRSQUNLX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHNlY3VyaXR5IG1hcmsgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjpjb25maWcgTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNy1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB6b25lcydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODpjb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiU3VwcGx5IENUIGxpc3QgaW4gcHJvY2ZzIChPQlNPTEVURSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTc6Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNzgtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZXN0YW1waW5nJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE4OS1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE5NTpjb25maWcgTkZfQ09OTlRSQUNLX09WU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTYtXFx0Ym9vbFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTIwMT1jb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjEyOmNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI0MC1cXHR0cmlzdGF0ZSBcXFwiSC4zMjMgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI1ODpjb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIklSQyBEQ0MgcHJvdG9jb2wgc3VwcG9ydCAob2Jzb2xldGUpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3Nzpjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk2OmNvbmZpZyBORl9DT05OVFJBQ0tfU05NUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXFx0dHJpc3RhdGUgXFxcIlNOTVAgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIlBQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzA6Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiU0FORSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1Ni1cXHR0cmlzdGF0ZSBcXFwiVEZUUCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo0MS42MzY4OTQ1NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0OTM0MzI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIENvbm5lY3Rpb24gVHJhY2tpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoZSBCUEYgZnJhbWV3b3JrLiBGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgTkZfQ09OTlRSQUNLYCBhbmQgYERFQlVHX0lORk9fQlRGYC4gSG9sZCBvbiwgYERFQlVHX0lORk9fQlRGYCBpcyBkZWZpbmVkIGluIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIGxldOKAmXMgZGlnIGludG8gdGhpcyBhbmQgY2hlY2sgYEJQRl9TWVNDQUxMYC5cblxuTm93LCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFuYWx5c2lzIGFyZSBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfc2tiX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfbG9va3VwYCwgYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCwgYW5kIGBfX2JwZl9uZl9jdF9sb29rdXBgLlxuXG5IbW0sIGEgd3JpbmtsZS4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgd2l0aCBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYC4gVGhleSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLiBUaGF0IGNvdWxkIGltcGFjdCB0aGVpciBpbmxpbmluZyBiZWhhdmlvciwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBsYXJnZSwgYnV0IHdhaXQuLi4gdGhleSBhcmUgc3RhdGljLiBJdCB3b3VsZCBzZWVtIHRoZWlyIGlubGluZSBzdGF0dXMgaXMgd29ydGggYSBsb29rLlxuTGV0J3Mgc2VlIGlmIHRoZXkgYXJlIHN0YXRpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkwMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo0Ni45ODYyNDE0NDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzUzNTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JwZl9uZl9jdF9hbGxvY19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0xMTc9c3RhdGljIHN0cnVjdCBuZl9jb25uICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoxMTg6X19icGZfbmZfY3RfYWxsb2NfZW50cnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xMTktXFx0XFx0XFx0dTMyIHR1cGxlX2xlbiwgc3RydWN0IGJwZl9jdF9vcHRzICpvcHRzLCB1MzIgb3B0c19sZW4sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDU9YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMTE6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KGRldl9uZXQoY3R4LVxcdTAwM2VyeHEtXFx1MDAzZWRldiksIGJwZl90dXBsZSwgdHVwbGVfX3N6LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTMxMi1cXHRcXHRcXHRcXHQgICAgICAgb3B0cywgb3B0c19fc3osIDEwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM2MT1icGZfc2tiX2N0X2FsbG9jKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzY4LVxcdG5ldCA9IHNrYi1cXHUwMDNlZGV2ID8gZGV2X25ldChza2ItXFx1MDAzZWRldikgOiBzb2NrX25ldChza2ItXFx1MDAzZXNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNjk6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KG5ldCwgYnBmX3R1cGxlLCB0dXBsZV9fc3osIG9wdHMsIG9wdHNfX3N6LCAxMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzcwLVxcdHJldHVybiAoc3RydWN0IG5mX2Nvbm5fX19pbml0ICopYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDQ6NDcuMTAzNzgyOTE1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDQ2MjUwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgU3RhdGljIE5hdHVyZSBvZiB0aGUgQVBJKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgc3RhdGljIGVsZW1lbnRzIGhlcmUuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IG1vc3Qgb2YgdGhlIEFQSSwgYXQgbGVhc3QgdGhlIGNvcmUgcGFydCwgaXMgaW5oZXJlbnRseSBzdGF0aWMuIEl0J3MgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgd2UgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhjZXB0aW9ucy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBBaCwgeWVzLCB0aGVzZSBzZWVtIHRvIGJlIHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYWxsb3cgZm9yIGR5bmFtaWMgYWxsb2NhdGlvbiBhbmQgbG9va3VwIHdpdGhpbiB0aGUgY29udGV4dCB0cmFja2luZyBzdWJzeXN0ZW06IGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBgYnBmX3hkcF9jdF9sb29rdXBgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIHN0YXRlIGlzIGxpa2VseSBiZWluZyBjcmVhdGVkLCBtb2RpZmllZCwgYW5kIHJldHJpZXZlZCBkdXJpbmcgcHJvZ3JhbSBleGVjdXRpb24uXG5cblRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHRvIHNlZSBpZiB0aGV5J3JlIGFjdHVhbGx5IGV4cG9ydGVkIGFzIEJQRiBoZWxwZXJzIGFuZCB1c2VkIGFzIHN1Y2guIFRoaXMgaXNuJ3QganVzdCBhYm91dCB0aGVpciBleGlzdGVuY2UgYnV0IHRoZWlyIHByYWN0aWNhbCBpbnRlZ3JhdGlvbiB3aXRoaW4gQlBGIHByb2dyYW1zLiBBcmUgd2UsIGFzIGRldmVsb3BlcnMsIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gb3VyIEJQRiBjb2RlPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wbGljYXRpb25zIG9mIHN0YXRpYyBvciBkeW5hbWljIGJlaGF2aW9yIG9uIHRoaW5ncyBsaWtlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwcm9ncmFtIHBlcmZvcm1hbmNlLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ0OjU1Ljc0ODQxMTQyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1MjkyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0yODc9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTI4OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzoyODk6LyogYnBmX3hkcF9jdF9hbGxvYyAtIEFsbG9jYXRlIGEgbmV3IENUIGVudHJ5XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMjkwLSAqXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zMDQ9X19icGZfa2Z1bmMgc3RydWN0IG5mX2Nvbm5fX19pbml0ICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozMDU6YnBmX3hkcF9jdF9hbGxvYyhzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMDYtXFx0XFx0IHUzMiB0dXBsZV9fc3osIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfX3N6KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzkwPWJwZl9za2JfY3RfbG9va3VwKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYl9jdHgsIHN0cnVjdCBicGZfc29ja190dXBsZSAqYnBmX3R1cGxlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA2LSAqIEBuZmN0XFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm5fX19pbml0IG9iamVjdCwgb2J0YWluZWRcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzo0MDc6ICpcXHRcXHQgICB1c2luZyBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDA4LSAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDM1PV9fYnBmX2tmdW5jIHZvaWQgYnBmX2N0X3JlbGVhc2Uoc3RydWN0IG5mX2Nvbm4gKm5mY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NDYtICogQG5mY3RcXHQgLSBQb2ludGVyIHRvIHJlZmVyZW5jZWQgbmZfY29ubiBvYmplY3QsIG9idGFpbmVkIHVzaW5nXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NDQ3OiAqICAgICAgICAgICAgICAgICBicGZfeGRwX2N0X2FsbG9jIG9yIGJwZl9za2JfY3RfYWxsb2MuXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDQ4LSAqIEB0aW1lb3V0ICAgICAgLSBUaW1lb3V0IGluIG1zZWNzLlxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9NDY1PV9fYnBmX2tmdW5jIGludCBicGZfY3RfY2hhbmdlX3RpbWVvdXQoc3RydWN0IG5mX2Nvbm4gKm5mY3QsIHUzMiB0aW1lb3V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNDc2LSAqIEBuZmN0XFx0IC0gUG9pbnRlciB0byByZWZlcmVuY2VkIG5mX2Nvbm4gb2JqZWN0LCBvYnRhaW5lZCB1c2luZ1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjQ3NzogKlxcdFxcdCAgIGJwZl94ZHBfY3RfYWxsb2Mgb3IgYnBmX3NrYl9jdF9hbGxvYy5cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy00NzgtICogQHN0YXR1cyAgICAgICAtIE5ldyBzdGF0dXMgdmFsdWUuXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz01MDI9QlRGX0tGVU5DU19TVEFSVChuZl9jdF9rZnVuY19zZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6NTAzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfeGRwX2N0X2FsbG9jLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtNTA0LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfeGRwX2N0X2xvb2t1cCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NDo1NS44NDU5NDczOTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwOTQ5MDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgQ29ublRyYWNrIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IEJQRiBrZnVuY3MgaGVyZSwgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZy4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHplcm8gaW4gb24gYXJlIGBicGZfeGRwX2N0X2FsbG9jYCwgYGJwZl94ZHBfY3RfbG9va3VwYCwgYGJwZl9za2JfY3RfYWxsb2NgLCBhbmQgYGJwZl9za2JfY3RfbG9va3VwYC4gVGhvc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuXG5cbk5vdywgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IEknbGwgbmVlZCBgTkZfQ09OTlRSQUNLYCwgbmF0dXJhbGx5LCBhbmQgYWxzbyBgREVCVUdfSU5GT19CVEZgIHNvIEkgY2FuIGFjdHVhbGx5ICpzZWUqIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBCUEYgcHJvZ3JhbXMsIGFuZCBgQlBGX1NZU0NBTExgIHNvIEkgY2FuIHVzZSBpdC5cblxuSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgbWFrZSBzdXJlIGBORl9DT05OVFJBQ0tgIGRvZXNuJ3QgaGF2ZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IEkgbWlnaHQgbWlzcy4gWWVwLCBsb29rcyBsaWtlIGl0IHJlbGllcyBvbiBgTkVURklMVEVSYC4gRWFzeSBlbm91Z2guIEknbGwgbmVlZCB0byBlbmFibGUgdGhhdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyBhYm91dCBgTkZfQ09OTlRSQUNLYCBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIxMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NTowMS4xNTU0NDEyNTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMwODQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ1OjAxLjI3Mjc1NTIwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDMzNDI0NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZSBzcGVjaWZpYyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMsIHNvIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBhcm91bmQgbGluZSA4MjsgaG9wZWZ1bGx5LCB0aGF0J3Mgd2hlcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhcmUgbG9jYXRlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQ2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDU6MDkuNzA2MTgzMjM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzQwLCJFcnJvciI6ImFyZ3VtZW50IFwiRmlyc3RMaW5lXCIgaGFzIHdyb25nIHR5cGU6IGdvdCBzdHJpbmcsIHdhbnQgaW50IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IFwiNzVcIixcbiAgXCJMaW5lQ291bnRcIjogXCIyMFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcImFyZ3VtZW50IFxcXCJGaXJzdExpbmVcXFwiIGhhcyB3cm9uZyB0eXBlOiBnb3Qgc3RyaW5nLCB3YW50IGludFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NTowOS43MDYyMjAyNjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk0MzQ3MTEyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgeW91ciBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVkdWN0aW9uIEJlZ2luczogVmFyaWFibGUgSWRlbnRpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFwiRmlyc3RMaW5lLi4uXCIgSG1tLCB0aGUgdmFyaWFibGUgbmFtZSBcIkZpcnN0TGluZVwiIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBxdWFudGl0YXRpdmUsIGxpa2VseSBhIGNvdW50LCBhbiBpbmRleCwgb3Igc29tZXRoaW5nIG51bWVyaWNhbC4gR2l2ZW4gdGhlIGNvbnRleHQgKGltcGxpZWQsIHBlcmhhcHMsIG9yIGZyb20gYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gc3BhY2UpLCBpdCdzIGhpZ2hseSBpbXByb2JhYmxlIGl0IHdvdWxkIHJlcHJlc2VudCBhIHN0cmluZyBvciBhIGJvb2xlYW4uIFRoZSB2ZXJ5IHN0cnVjdHVyZSBvZiB0aGUgbmFtZSBzdHJvbmdseSBpbXBsaWVzIGl0IG11c3QgYmUgYW4gaW50ZWdlci4gSXQgZG9lc24ndCBzY3JlYW0gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgZWl0aGVyLCBzbyBpbnRlZ2VyIGl0IGlzLCBhdCBsZWFzdCBhcyBhIHN0YXJ0aW5nIGFzc3VtcHRpb24uIExldCdzIG9wZXJhdGUgdW5kZXIgdGhhdCBjb25zdHJhaW50IGFuZCBzZWUgd2hlcmUgaXQgdGFrZXMgdXMgaW4gdGhlIHN1YnNlcXVlbnQgc3RlcHMgb2YgdGhpcyBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjEzNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoxOS4xNDA5MzQ2MjZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE9TRiBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuICA3NjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgNzc6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuICA3ODpcXHRcXHRoZWxwXFxuICA3OTpcXHRcXHQgIElmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBrZXJuZWwgd2lsbCBpbmNsdWRlIHN1cHBvcnRcXG4gIDgwOlxcdFxcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cXG4gIDgxOlxcdFxcbiAgODI6XFx0Y29uZmlnIE5GX0NPTk5UUkFDS1xcbiAgODM6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuICA4NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDg1OlxcdFxcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxcbiAgODY6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxcbiAgODc6XFx0XFx0aGVscFxcbiAgODg6XFx0XFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxcbiAgODk6XFx0XFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxcbiAgOTA6XFx0XFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gZG8gTWFzcXVlcmFkaW5nIG9yIG90aGVyIGtpbmRzIG9mIE5ldHdvcmtcXG4gIDkzOlxcdFxcdCAgQWRkcmVzcyBUcmFuc2xhdGlvbi4gIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZW5oYW5jZSBwYWNrZXRcXG4gIDk0OlxcdFxcdCAgZmlsdGVyaW5nIChzZWUgYENvbm5lY3Rpb24gc3RhdGUgbWF0Y2ggc3VwcG9ydCcgYmVsb3cpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoxOS4xNDExMDI4MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0OTI2MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIGxldCdzIG5haWwgZG93biB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBORl9DT05OVFJBQ0tgIOKAkyB0aGF0J3MgZWFzeSwgaXQgbGl2ZXMgcmlnaHQgd2l0aGluIHRoZSBuZXRmaWx0ZXIgbWVudSwgc28gaXQganVzdCBuZWVkcyBgTkVURklMVEVSYCB0byBiZSBlbmFibGVkLCBhbmQgd2UncmUgZ29vZCB0byBnby4gTm8gb3RoZXIgaGVhZGFjaGVzIHRoZXJlLlxuXG5Ob3csIGZvciBgREVCVUdfSU5GT19CVEZgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoYXQgcmlnaHQsIHNpbmNlIHRoYXQncyBhIG1vcmUgaW50ZXJlc3Rpbmcgb25lLiBMb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGl0J3MgY2xlYXI6IGBERUJVR19JTkZPYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgaXRzIHByZXJlcXVpc2l0ZXMuIE9rYXksIGdvdCBpdC5cblxuU28sIGp1c3QgdG8gc3VtbWFyaXplIGZvciBteSBpbnRlcm5hbCBjaGVja2xpc3QsIHRoZSBlc3NlbnRpYWwgY29uZmlncyBhcmU6XG5cbiogICBgTkZfQ09OTlRSQUNLYFxuKiAgIGBERUJVR19JTkZPX0JURmBcbiogICBgQlBGX1NZU0NBTExgXG5cbldpdGggdGhlc2UsIGFsbCBzaG91bGQgYmUgd2VsbC5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGZvY3VzIHN5bWJvbHMuIExvb2tzIGxpa2UgaXQgaXM6XG5cbiogICBgYnBmX3hkcF9jdF9hbGxvY2BcbiogICBgYnBmX3hkcF9jdF9sb29rdXBgXG4qICAgYGJwZl9za2JfY3RfYWxsb2NgXG4qICAgYGJwZl9za2JfY3RfbG9va3VwYFxuXG5JIHNob3VsZCBzZWUgdGhvc2UgZnVuY3Rpb25zLlxuXG5IbW0sIHdhaXQuIEFyZSB0aGVyZSAqYW55KiBvdGhlciBmdW5jdGlvbnMgdGhhdCBnb3QgbW9kaWZpZWQgYXMgcGFydCBvZiB0aGlzPyBMZXQgbWUgcXVpY2tseSByZXZpZXcuLi4gTm8sIGl0IGxvb2tzIGxpa2Ugb25seSBgX19icGZfbmZfY3RfYWxsb2NfZW50cnlgIGFuZCBgX19icGZfbmZfY3RfbG9va3VwYCB3ZXJlIHRvdWNoZWQsIGFuZCB0aGV5J3JlIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhlIGZvdXIgZm9jdXMgZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoZW0uXG5cbk9rYXksIGxldCBtZSBkb3VibGUtY2hlY2sgb24gYF9fYnBmX25mX2N0X2FsbG9jX2VudHJ5YCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjMzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDY6MjQuMTkwMzY5NDc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwNDE0NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfbmZfY3RfYWxsb2NfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE3PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTE4Ol9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMTE5LVxcdFxcdFxcdHUzMiB0dXBsZV9sZW4sIHN0cnVjdCBicGZfY3Rfb3B0cyAqb3B0cywgdTMyIG9wdHNfbGVuLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MzA1PWJwZl94ZHBfY3RfYWxsb2Moc3RydWN0IHhkcF9tZCAqeGRwX2N0eCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzExOlxcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShkZXZfbmV0KGN0eC1cXHUwMDNlcnhxLVxcdTAwM2VkZXYpLCBicGZfdHVwbGUsIHR1cGxlX19zeixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0zMTItXFx0XFx0XFx0XFx0ICAgICAgIG9wdHMsIG9wdHNfX3N6LCAxMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYz0zNjE9YnBmX3NrYl9jdF9hbGxvYyhzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM2OC1cXHRuZXQgPSBza2ItXFx1MDAzZWRldiA/IGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpIDogc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MzY5OlxcdG5mY3QgPSBfX2JwZl9uZl9jdF9hbGxvY19lbnRyeShuZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeiwgMTApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM3MC1cXHRyZXR1cm4gKHN0cnVjdCBuZl9jb25uX19faW5pdCAqKWJwZl9jdF9vcHRzX3Jlc3VsdChvcHRzLCBvcHRzX19zeiwgbmZjdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjI0LjI5NjQxNzEwOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDUxMjM1OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIHRoZSBgX19icGZfbmZfY3RfbG9va3VwYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYF9fYnBmX25mX2N0X2xvb2t1cGAsIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGp1bXBzIHRvIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBCUEYgZWNvc3lzdGVtLCBwYXJ0aWN1bGFybHkgaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBmaWx0ZXJpbmcgYW5kIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCB0aGUgTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLiBJJ20gYXNzdW1pbmcgaXQgaGFuZGxlcyB0aGUgbG9va3VwIG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgZW50cmllcywgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFraW5nIHBvbGljeSBkZWNpc2lvbnMgYmFzZWQgb24gZXhpc3RpbmcgZmxvd3MuXG5cbk15IGluaXRpYWwgdGhvdWdodHMgcmV2b2x2ZSBhcm91bmQgdGhlIGNyaXRpY2FsIG5lZWQgZm9yIGVmZmljaWVuY3kgaGVyZS4gQlBGIHByb2dyYW1zIGFyZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBhIHNsb3cgY29ubmVjdGlvbiBsb29rdXAgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlLiBXZSBhcmUgYWltaW5nIGZvciBtaW5pbWFsIG92ZXJoZWFkIGFuZCBvcHRpbWFsIHNwZWVkIGFuZCBJJ20gc3VyZSB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHdpdGggdGhhdCBhdCB0aGUgZm9yZWZyb250LiBJIGltbWVkaWF0ZWx5IGJlZ2luIHRvIGNvbnNpZGVyOiBIb3cgZG9lcyBpdCBoYW5kbGUgaGFzaCBjb2xsaXNpb25zPyBXaGF0IGFib3V0IGNvbmN1cnJlbnQgYWNjZXNzPyBJcyBpdCBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGNvbm50cmFjayB0YWJsZT8gSG93IGRvZXMgaXQgaGFuZGxlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cbkknbSBwcm9iYWJseSB3b25kZXJpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLiBXaGF0IGtleSBwYXJhbWV0ZXJzIGFyZSB1c2VkIGZvciB0aGUgbG9va3VwPyBBcmUgdGhleSBzb3VyY2VkIGZyb20gcGFja2V0IGhlYWRlcnM/IElzIGl0IGEgZnVsbHkgc3BlY2lmaWVkIDUtdHVwbGUsIG9yIHNvbWUga2luZCBvZiBhYmJyZXZpYXRlZCBrZXk/IEtub3dpbmcgdGhlIGFyZ3VtZW50cyB3aWxsIGRpY3RhdGUgd2hhdCBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBpbiBkZWNpZGluZyBwb2xpY2llcy4gSG93IHJvYnVzdCBpcyBpdCB0byBpbmNvbXBsZXRlIG9yIGZyYWdtZW50ZWQgcGFja2V0cz9cblxuRmluYWxseSwgdGhlIHJldHVybiB2YWx1ZS4uLkknbSBndWVzc2luZyBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhIGNvbm50cmFjayBlbnRyeSwgb3IgTlVMTCBpZiBubyBtYXRjaCBpcyBmb3VuZC4gV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBEb2VzIGl0IHJldHVybiBhbiBlcnJvciBjb2RlIG9yIGp1c3QgYSBudWxsIHBvaW50ZXI/IFdoYXQgc2lkZSBlZmZlY3RzIGRvZXMgaXQgaGF2ZSBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IGFjY2Vzc2VzPyBUaGVzZSBhc3BlY3RzIGFyZSBjcnVjaWFsIGZvciB0aGUgY29ycmVjdG5lc3MgYW5kIHN0YWJpbGl0eSBvZiBteSBCUEYgcHJvZ3JhbXMuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNlbWFudGljcyB0byBhdm9pZCBzdWJ0bGUgYnVncyBhbmQgZW5zdXJlIHRoZSBwcmVkaWN0YWJsZSBiZWhhdmlvciBJIGRlcGVuZCBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoyOC43NDc2NTU4NjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTY0Njc3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JwZl9uZl9jdF9sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM9MTE4PV9fYnBmX25mX2N0X2FsbG9jX2VudHJ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGJwZl9zb2NrX3R1cGxlICpicGZfdHVwbGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xODEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmM6MTgyOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubiAqX19icGZfbmZfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTMzMz1icGZfeGRwX2N0X2xvb2t1cChzdHJ1Y3QgeGRwX21kICp4ZHBfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM0MC1cXHRjYWxsZXJfbmV0ID0gZGV2X25ldChjdHgtXFx1MDAzZXJ4cS1cXHUwMDNlZGV2KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icGYuYzozNDE6XFx0bmZjdCA9IF9fYnBmX25mX2N0X2xvb2t1cChjYWxsZXJfbmV0LCBicGZfdHVwbGUsIHR1cGxlX19zeiwgb3B0cywgb3B0c19fc3opO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM0Mi1cXHRyZXR1cm4gYnBmX2N0X29wdHNfcmVzdWx0KG9wdHMsIG9wdHNfX3N6LCBuZmN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jPTM5MD1icGZfc2tiX2N0X2xvb2t1cChzdHJ1Y3QgX19za19idWZmICpza2JfY3R4LCBzdHJ1Y3QgYnBmX3NvY2tfdHVwbGUgKmJwZl90dXBsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jLTM5Ny1cXHRjYWxsZXJfbmV0ID0gc2tiLVxcdTAwM2VkZXYgPyBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSA6IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2JwZi5jOjM5ODpcXHRuZmN0ID0gX19icGZfbmZfY3RfbG9va3VwKGNhbGxlcl9uZXQsIGJwZl90dXBsZSwgdHVwbGVfX3N6LCBvcHRzLCBvcHRzX19zeik7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnBmLmMtMzk5LVxcdHJldHVybiBicGZfY3Rfb3B0c19yZXN1bHQob3B0cywgb3B0c19fc3osIG5mY3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo0NjoyOC44NzczMDc3NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg2NzE3NzE4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyBmb3IgWERQL1NLQiBDb25uZWN0aW9uIFRyYWNraW5nKipcblxuT2theSwgc28gSSd2ZSBuYXJyb3dlZCBpdCBkb3duLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24ganVzdCB0aG9zZSBmb3VyIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnVuY3Rpb25zOiBgYnBmX3hkcF9jdF9hbGxvY2AsIGBicGZfeGRwX2N0X2xvb2t1cGAsIGBicGZfc2tiX2N0X2FsbG9jYCwgYW5kIGBicGZfc2tiX2N0X2xvb2t1cGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgQlBGIGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIHRoaXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uXG5cbk5vdywgZm9yIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBlbnN1cmUgYSBtaW5pbWFsLCB5ZXQgZnVuY3Rpb25hbCwgZW52aXJvbm1lbnQuIEknbSBnb2luZyB3aXRoOiBgTkZfQ09OTlRSQUNLYCwgYERFQlVHX0lORk9fQlRGYCwgYW5kIGBCUEZfU1lTQ0FMTGAuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5Li4uIEFoLCBgTkVURklMVEVSYC4gSSBrbm93IGBORl9DT05OVFJBQ0tgIGRlcGVuZHMgb24gaXQsIHNvIGlkZWFsbHksIGl0J3MgZW5hYmxlZCBpbXBsaWNpdGx5LiBIb3dldmVyLCB0aGUgc3l6a2FsbGVyIGNvbmZpZyBnZW5lcmF0aW9uIG1pZ2h0IG5lZWQgaXQgZXhwbGljaXRseS4gVG8gYmUgY29tcGxldGVseSBzYWZlIGFuZCBhdm9pZCBhbnkgZG93bnN0cmVhbSBpc3N1ZXMsIEknbGwgaW5jbHVkZSBgTkVURklMVEVSYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gSXQncyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQgaW4gdGhpcyBjYXNlLiBBbHNvIEkgd2lsbCBxdWlja2x5IHZlcmlmeSBgREVCVUdfSU5GT19CVEZgIGluIGBsaWIvS2NvbmZpZy5kZWJ1Z2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODQwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjQ3LjU0OTA4Mjg0NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDg4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19JTkZPX0JURlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zNzg9Y29uZmlnIERFQlVHX0lORk9fU1BMSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTM5Ny1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozOTg6Y29uZmlnIERFQlVHX0lORk9fQlRGXFxubGliL0tjb25maWcuZGVidWctMzk5LVxcdGJvb2wgXFxcIkdlbmVyYXRlIEJURiB0eXBlIGluZm9ybWF0aW9uXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWc9NDE5PWNvbmZpZyBQQUhPTEVfSEFTX0xBTkdfRVhDTFVERVxcbi0tXFxubGliL0tjb25maWcuZGVidWctNDI3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjQyODpjb25maWcgREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmxpYi9LY29uZmlnLmRlYnVnLTQyOS1cXHRib29sIFxcXCJHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvbiBmb3Iga2VybmVsIG1vZHVsZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjQ2OjQ4LjA3ODIzNDg4NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjcxOTA3MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFBvdGVudGlhbCBTZWN1cml0eSBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19JTkZPX0JURmAgaXMgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQncyBkaWcgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBSRUFEX09OQ0Uob3B0cy1cdTAwM2VuZXRuc19pZClgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGV5IGFyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIFRpbWUtb2YtQ2hlY2sgdG8gVGltZS1vZi1Vc2UgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIEJQRiBoZWxwZXIgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLiBUaGlzIGtpbmQgb2YgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gaW4gY29yZSBrZXJuZWwgbG9naWMsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIEJQRiBuZXRmaWx0ZXIgaGVscGVycywgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZvY3VzZWQgZnV6emluZy4gV2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZml4IGlzIHNvbGlkIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHByb2JsZW1zLlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbjogYGJwZl94ZHBfY3RfYWxsb2NgLCBgYnBmX3hkcF9jdF9sb29rdXBgLCBgYnBmX3NrYl9jdF9hbGxvY2AsIGFuZCBgYnBmX3NrYl9jdF9sb29rdXBgLiBUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS5cblxuVG8gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJ2xsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBORVRGSUxURVJgLCBgTkZfQ09OTlRSQUNLYCwgYEJQRl9TWVNDQUxMYCwgYW5kLCBvZiBjb3Vyc2UsIGBERUJVR19JTkZPX0JURmAgYXJlIGVuYWJsZWQgaW4gbXkgY29uZmlndXJhdGlvbi5cblxuQWxyaWdodCwgd2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgd2lsbCBub3cgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTUyNCwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NDY6NTMuMzUwMTQ1MTUzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2NTg1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3hkcF9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3hkcF9jdF9sb29rdXBcIixcbiAgICBcImJwZl9za2JfY3RfYWxsb2NcIixcbiAgICBcImJwZl9za2JfY3RfbG9va3VwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgVGltZS1vZi1DaGVjayB0byBUaW1lLW9mLVVzZSAoVE9DVE9VKSB2dWxuZXJhYmlsaXR5IGluIEJQRiBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgYnkgdXNpbmcgUkVBRF9PTkNFKCkgZm9yIG9wdHMtXFx1MDAzZW5ldG5zX2lkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZpeCBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfeGRwX2N0X2FsbG9jXCIsXG4gICAgXCJicGZfeGRwX2N0X2xvb2t1cFwiLFxuICAgIFwiYnBmX3NrYl9jdF9hbGxvY1wiLFxuICAgIFwiYnBmX3NrYl9jdF9sb29rdXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBUaW1lLW9mLUNoZWNrIHRvIFRpbWUtb2YtVXNlIChUT0NUT1UpIHZ1bG5lcmFiaWxpdHkgaW4gQlBGIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyBieSB1c2luZyBSRUFEX09OQ0UoKSBmb3Igb3B0cy1cXHUwMDNlbmV0bnNfaWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZml4IGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvkv7k[1] Phase: Succeeded StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 01:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 01:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2] Phase: Succeeded StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 01:47:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 01:47:04 +0000 UTC FinishedAt: 2026-07-31 01:47:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowvkv7k/series-workflowvkv7k-convert-artifact-1722150176/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 01:47:14 +0000 UTC FinishedAt: 2026-07-31 02:06:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 01:47:14 +0000 UTC FinishedAt: 2026-07-31 02:06:37 +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:*30a7e76a-7dab-46d2-a700-2edae04f95b5,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-workflowvkv7k/series-workflowvkv7k-convert-artifact-1722150176/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": "e9d4b4be-20de-4cb4-abee-1ba2acbc4df6", "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-workflowvkv7k/series-workflowvkv7k-build-action-2115423206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 01:47:14 +0000 UTC FinishedAt: 2026-07-31 02:06:27 +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:*30a7e76a-7dab-46d2-a700-2edae04f95b5,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-workflowvkv7k/series-workflowvkv7k-convert-artifact-1722150176/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": "e9d4b4be-20de-4cb4-abee-1ba2acbc4df6", "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-workflowvkv7k/series-workflowvkv7k-build-action-2115423206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 02:06:37 +0000 UTC FinishedAt: 2026-07-31 02:06:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 02:06:37 +0000 UTC FinishedAt: 2026-07-31 02:06:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 02:06:37 +0000 UTC FinishedAt: 2026-07-31 02:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 02:06:37 +0000 UTC FinishedAt: 2026-07-31 02:06:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowvkv7k/series-workflowvkv7k-convert-artifact-2935099207/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 02:06:47 +0000 UTC FinishedAt: 2026-07-31 02:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 02:06:47 +0000 UTC FinishedAt: 2026-07-31 02:08:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e9d4b4be-20de-4cb4-abee-1ba2acbc4df6,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-workflowvkv7k/series-workflowvkv7k-build-action-2115423206/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-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 02:08:50 +0000 UTC FinishedAt: 2026-07-31 02:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 02:08:50 +0000 UTC FinishedAt: 2026-07-31 02:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 02:08:50 +0000 UTC FinishedAt: 2026-07-31 02:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 02:08:50 +0000 UTC FinishedAt: 2026-07-31 02:25:46 +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:*30a7e76a-7dab-46d2-a700-2edae04f95b5,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-workflowvkv7k/series-workflowvkv7k-convert-artifact-2935099207/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": "4c100eda-57a4-4041-851c-b0079fa27007", "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-workflowvkv7k/series-workflowvkv7k-build-action-2412662475/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 02:08:50 +0000 UTC FinishedAt: 2026-07-31 02:25:36 +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:*30a7e76a-7dab-46d2-a700-2edae04f95b5,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-workflowvkv7k/series-workflowvkv7k-convert-artifact-2935099207/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": "4c100eda-57a4-4041-851c-b0079fa27007", "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-workflowvkv7k/series-workflowvkv7k-build-action-2412662475/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 02:25:46 +0000 UTC FinishedAt: 2026-07-31 02:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 02:25:46 +0000 UTC FinishedAt: 2026-07-31 02:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 02:25:46 +0000 UTC FinishedAt: 2026-07-31 02:27:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 02:25:46 +0000 UTC FinishedAt: 2026-07-31 02:27:39 +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:*4c100eda-57a4-4041-851c-b0079fa27007,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-workflowvkv7k/series-workflowvkv7k-build-action-2412662475/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-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"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:*e9d4b4be-20de-4cb4-abee-1ba2acbc4df6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4c100eda-57a4-4041-851c-b0079fa27007,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-workflowvkv7k/series-workflowvkv7k-build-action-2115423206/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-workflowvkv7k/series-workflowvkv7k-build-action-2412662475/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 02:27:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 02:27:54 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"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-workflowvkv7k/series-workflowvkv7k-convert-artifact-4199822368/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 02:27:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 02:27:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 02:27:49 +0000 UTC FinishedAt: 2026-07-31 02:27:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 02:27:59 +0000 UTC FinishedAt: 2026-07-31 03:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkv7k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_xdp_ct_alloc","bpf_xdp_ct_lookup","bpf_skb_ct_alloc","bpf_skb_ct_lookup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_CONNTRACK","BPF_SYSCALL","DEBUG_INFO_BTF"],"series_id":"73745fb3-5a23-445f-b89b-6da86198101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 02:27:59 +0000 UTC FinishedAt: 2026-07-31 03:22:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e9d4b4be-20de-4cb4-abee-1ba2acbc4df6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4c100eda-57a4-4041-851c-b0079fa27007,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-workflowvkv7k/series-workflowvkv7k-build-action-2115423206/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-workflowvkv7k/series-workflowvkv7k-build-action-2412662475/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-workflowvkv7k/series-workflowvkv7k-convert-artifact-4199822368/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,}