Name: series-workflowc66v2 Phase: Succeeded StartedAt: 2026-07-08 04:52:12 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[0] Phase: Succeeded StartedAt: 2026-07-08 04:52:12 +0000 UTC FinishedAt: 2026-07-08 05:22:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 04:52:12 +0000 UTC FinishedAt: 2026-07-08 05:22:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "ae3f9a5a-a673-4746-ba5b-1edeb1ab7120" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_in_icmp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGluIGBpcF92c19pbl9pY21wYCBieSBhZGRpbmcgcHJvcGVyIHZhbGlkYXRpb24gZm9yIHRoZSBpbm5lciBJUCBoZWFkZXIgKHZlcnNpb24gYW5kIGlobCkgYW5kIGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgc2tiIGhlYWRyb29tIHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBoYW5kbGVzIElDTVAgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggOTA2ZjJjMzYxNjc2MzguLjViNDI3MzQ5YTI1NzVmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3NjcsNiAmIzQzOzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRib29sIHR1bm5lbCwgbmV3X2NwID0gZmFsc2U7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xuIFx0Y2hhciAqb3V0ZXJfcHJvdG8gPSBcJiMzNDtJUElQXCYjMzQ7O1xuJiM0MztcdHVuc2lnbmVkIGludCBobGVuX2lwaXA7XG4gXHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG5AQCAtMTgwNCw5ICYjNDM7MTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHQvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqL1xuIFx0b2Zmc2V0ICYjNDM7PSBzaXplb2YoX2ljbXBoKTtcbiBcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0aWYgKGNpaCA9PSBOVUxMKVxuJiM0MztcdGlmICghKGNpaCBcdTAwMjZcdTAwMjYgY2loLVx1MDAzZXZlcnNpb24gPT0gNCBcdTAwMjZcdTAwMjYgY2loLVx1MDAzZWlobCBcdTAwM2U9IDUpKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cbiBcdHJhZGRyID0gKHVuaW9uIG5mX2luZXRfYWRkciAqKVx1MDAyNmNpaC1cdTAwM2VkYWRkcjtcbiYjNDM7XHRobGVuX2lwaXAgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcbiBcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cbiBcdHR1bm5lbCA9IGZhbHNlO1xuQEAgLTE4MjIsOSAmIzQzOzE4MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE9ubHkgZm9yIGtub3duIHR1bm5lbCAqL1xuIFx0XHRpZiAoIWRlc3QgfHwgZGVzdC1cdTAwM2V0dW5fdHlwZSAhPSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfSVBJUClcbiBcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLVx0XHRvZmZzZXQgJiM0Mzs9IGNpaC1cdTAwM2VpaGwgKiA0O1xuJiM0MztcdFx0b2Zmc2V0ICYjNDM7PSBobGVuX2lwaXA7XG4gXHRcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0XHRpZiAoY2loID09IE5VTEwpXG4mIzQzO1x0XHRpZiAoIShjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1KSlcbiBcdFx0XHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cbiBcdFx0dHVubmVsID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAoKGNpaC1cdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fFx0LyogQ2FuIGJlIFVEUCBlbmNhcCAqL1xuQEAgLTE4MzYsNyAmIzQzOzE4MzgsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi1cdFx0b2Zmc2V0MiA9IG9mZnNldCAmIzQzOyBjaWgtXHUwMDNlaWhsICogNDtcbiYjNDM7XHRcdG9mZnNldDIgPSBvZmZzZXQgJiM0MzsgaGxlbl9pcGlwO1xuIFx0XHRpZiAoY2loLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVURQKSB7XG4gXHRcdFx0dWxlbiA9IGlwdnNfdWRwX2RlY2FwKGlwdnMsIHNrYiwgb2Zmc2V0MiwgQUZfSU5FVCxcbiBcdFx0XHRcdFx0ICAgICAgcmFkZHIsIFx1MDAyNmlwcm90byk7XG5AQCAtMTkwNSw2ICYjNDM7MTkwNyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdH1cbiBcbiBcdGlmICh0dW5uZWwpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGludCBobGVuX29yaWcgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcdFx0X19iZTMyIGluZm8gPSBpYy1cdTAwM2V1bi5nYXRld2F5O1xuIFx0XHRfX3U4IHR5cGUgPSBpYy1cdTAwM2V0eXBlO1xuIFx0XHRfX3U4IGNvZGUgPSBpYy1cdTAwM2Vjb2RlO1xuQEAgLTE5MjEsNiAmIzQzOzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgJiM0Mzsgc2l6ZW9mKF9pY21waCk7XG4gXHRcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4mIzQzO1x0XHRcdC8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi9cbiYjNDM7XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbiYjNDM7XHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0SVBfVlNfREJHKDEyLCBcJiMzNDtJQ01QIGZvciAlcyAlcEk0LVx1MDAzZSVwSTQ6IG10dT0ldVxcblwmIzM0OyxcbiBcdFx0XHRcdCAgb3V0ZXJfcHJvdG8sIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZXNhZGRyLFxuIFx0XHRcdFx0ICBcdTAwMjZpcF9oZHIoc2tiKS1cdTAwM2VkYWRkciwgbXR1KTtcbkBAIC0xOTM2LDggJiM0MzsxOTQyLDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHRcdFx0aWYgKGRlc3RfZHN0KVxuIFx0XHRcdFx0XHRtdHUgPSBkc3RfbXR1KGRlc3RfZHN0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRcdFx0fVxuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbjtcbiYjNDM7XHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0MzsgaGxlbl9pcGlwICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IGhsZW5faXBpcCAmIzQzOyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuQEAgLTE5NDYsNiAmIzQzOzE5NTIsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdGlmIChwc2tiX3B1bGwoc2tiLCBvZmZzZXQyKSA9PSBOVUxMKVxuIFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4mIzQzO1x0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4mIzQzO1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxuJiM0MztcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdElQX1ZTX0RCRygxMiwgXCYjMzQ7U2VuZGluZyBJQ01QIGZvciAlcEk0LVx1MDAzZSVwSTQ6IHQ9JXUsIGM9JXUsIGk9JXVcXG5cJiMzNDssXG4gXHRcdFx0XHUwMDI2aXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIFx0XHRcdHR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IDkwNmYyYzM2MTY3NjM4Li41YjQyNzM0OWEyNTc1ZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCWJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyOwogCWNoYXIgKm91dGVyX3Byb3RvID0gJiMzNDtJUElQJiMzNDs7CiYjNDM7CXVuc2lnbmVkIGludCBobGVuX2lwaXA7CiAJaW50IHVsZW4gPSAwOwogCiAJKnJlbGF0ZWQgPSAxOwpAQCAtMTgwNCw5ICYjNDM7MTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJLyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi8KIAlvZmZzZXQgJiM0Mzs9IHNpemVvZihfaWNtcGgpOwogCWNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgJmFtcDtfY2lwaCk7Ci0JaWYgKGNpaCA9PSBOVUxMKQomIzQzOwlpZiAoIShjaWggJmFtcDsmYW1wOyBjaWgtJmd0O3ZlcnNpb24gPT0gNCAmYW1wOyZhbXA7IGNpaC0mZ3Q7aWhsICZndDs9IDUpKQogCQlyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi8KIAlyYWRkciA9ICh1bmlvbiBuZl9pbmV0X2FkZHIgKikmYW1wO2NpaC0mZ3Q7ZGFkZHI7CiYjNDM7CWhsZW5faXBpcCA9IGNpaC0mZ3Q7aWhsICogNDsKIAogCS8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi8KIAl0dW5uZWwgPSBmYWxzZTsKQEAgLTE4MjIsOSAmIzQzOzE4MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCS8qIE9ubHkgZm9yIGtub3duIHR1bm5lbCAqLwogCQlpZiAoIWRlc3QgfHwgZGVzdC0mZ3Q7dHVuX3R5cGUgIT0gSVBfVlNfQ09OTl9GX1RVTk5FTF9UWVBFX0lQSVApCiAJCQlyZXR1cm4gTkZfQUNDRVBUOwotCQlvZmZzZXQgJiM0Mzs9IGNpaC0mZ3Q7aWhsICogNDsKJiM0MzsJCW9mZnNldCAmIzQzOz0gaGxlbl9pcGlwOwogCQljaWggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmZzZXQsIHNpemVvZihfY2lwaCksICZhbXA7X2NpcGgpOwotCQlpZiAoY2loID09IE5VTEwpCiYjNDM7CQlpZiAoIShjaWggJmFtcDsmYW1wOyBjaWgtJmd0O3ZlcnNpb24gPT0gNCAmYW1wOyZhbXA7IGNpaC0mZ3Q7aWhsICZndDs9IDUpKQogCQkJcmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovCiAJCXR1bm5lbCA9IHRydWU7CiAJfSBlbHNlIGlmICgoY2loLSZndDtwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fAkvKiBDYW4gYmUgVURQIGVuY2FwICovCkBAIC0xODM2LDcgJiM0MzsxODM4LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovCiAJCWlmICh1bmxpa2VseShjaWgtJmd0O2ZyYWdfb2ZmICZhbXA7IGh0b25zKElQX09GRlNFVCkpKQogCQkJcmV0dXJuIE5GX0FDQ0VQVDsKLQkJb2Zmc2V0MiA9IG9mZnNldCAmIzQzOyBjaWgtJmd0O2lobCAqIDQ7CiYjNDM7CQlvZmZzZXQyID0gb2Zmc2V0ICYjNDM7IGhsZW5faXBpcDsKIAkJaWYgKGNpaC0mZ3Q7cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApIHsKIAkJCXVsZW4gPSBpcHZzX3VkcF9kZWNhcChpcHZzLCBza2IsIG9mZnNldDIsIEFGX0lORVQsCiAJCQkJCSAgICAgIHJhZGRyLCAmYW1wO2lwcm90byk7CkBAIC0xOTA1LDYgJiM0MzsxOTA3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCX0KIAogCWlmICh0dW5uZWwpIHsKJiM0MzsJCXVuc2lnbmVkIGludCBobGVuX29yaWcgPSBjaWgtJmd0O2lobCAqIDQ7CiAJCV9fYmUzMiBpbmZvID0gaWMtJmd0O3VuLmdhdGV3YXk7CiAJCV9fdTggdHlwZSA9IGljLSZndDt0eXBlOwogCQlfX3U4IGNvZGUgPSBpYy0mZ3Q7Y29kZTsKQEAgLTE5MjEsNiAmIzQzOzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQkJb2Zmc2V0MiAtPSBpaGwgJiM0Mzsgc2l6ZW9mKF9pY21waCk7CiAJCQlza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTsKJiM0MzsJCQkvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovCiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSkKJiM0MzsJCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQkJSVBfVlNfREJHKDEyLCAmIzM0O0lDTVAgZm9yICVzICVwSTQtJmd0OyVwSTQ6IG10dT0ldVxuJiMzNDssCiAJCQkJICBvdXRlcl9wcm90bywgJmFtcDtpcF9oZHIoc2tiKS0mZ3Q7c2FkZHIsCiAJCQkJICAmYW1wO2lwX2hkcihza2IpLSZndDtkYWRkciwgbXR1KTsKQEAgLTE5MzYsOCAmIzQzOzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJaWYgKGRlc3RfZHN0KQogCQkJCQltdHUgPSBkc3RfbXR1KGRlc3RfZHN0LSZndDtkc3RfY2FjaGUpOwogCQkJfQotCQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCi0JCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IGhsZW5faXBpcCAmIzQzOyB1bGVuKQomIzQzOwkJCQltdHUgLT0gaGxlbl9pcGlwICYjNDM7IHVsZW47CiAJCQlpbmZvID0gaHRvbmwobXR1KTsKIAkJfQogCQkvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2YKQEAgLTE5NDYsNiAmIzQzOzE5NTIsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCWlmIChwc2tiX3B1bGwoc2tiLCBvZmZzZXQyKSA9PSBOVUxMKQogCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQlza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTsKJiM0MzsJCS8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi8KJiM0MzsJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhsZW5fb3JpZykpCiYjNDM7CQkJZ290byBpZ25vcmVfdHVubmVsOwogCQlJUF9WU19EQkcoMTIsICYjMzQ7U2VuZGluZyBJQ01QIGZvciAlcEk0LSZndDslcEk0OiB0PSV1LCBjPSV1LCBpPSV1XG4mIzM0OywKIAkJCSZhbXA7aXBfaGRyKHNrYiktJmd0O3NhZGRyLCAmYW1wO2lwX2hkcihza2IpLSZndDtkYWRkciwKIAkJCXR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpcF92c19pbl9pY21wYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBtb3JlIHJvYnVzdCBjaGVja3MgZm9yIHRoZSBJQ01QIGhlYWRlci4gSW5zdGVhZCBvZiBqdXN0IGEgc2ltcGxlIGBjaWggPT0gTlVMTGAgY2hlY2ssIGl0IG5vdyB2ZXJpZmllcyBgY2loICZhbXA7JmFtcDsgY2loLSZndDt2ZXJzaW9uID09IDQgJmFtcDsmYW1wOyBjaWgtJmd0O2lobCAmZ3Q7PSA1YC4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBjb25maXJtaW5nIGl0JiMzOTtzIGEgdmFsaWQgSVB2NCBoZWFkZXIgYW5kIGVuc3VyaW5nIHRoZSBoZWFkZXIgbGVuZ3RoIGlzIGF0IGxlYXN0IHRoZSBtaW5pbXVtLCB3aGljaCBwcmV2ZW50cyBwb3RlbnRpYWwgY3Jhc2hlcyBvciBzZWN1cml0eSBpc3N1ZXMgZnJvbSBtYWxmb3JtZWQgcGFja2V0cy4KCkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApYCBhbmQgYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGRhdGEgaXMgYWN0dWFsbHkgKnByZXNlbnQqIGFuZCBhY2Nlc3NpYmxlIGluIHRoZSBza2IgaGVhZHJvb20gYmVmb3JlIGFjY2Vzc2luZyBpdC4gQXZvaWRpbmcgcG90ZW50aWFsIGBOVUxMYCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIHJlYWRzIGlzIHBhcmFtb3VudCBpbiBuZXR3b3JrIGNvZGUuIFB1bGxpbmcgdGhlIGhlYWRlciBpbnRvIHRoZSBsaW5lYXIgYXJlYSBvZiB0aGUgc2tiIGlzIHByb2JhYmx5IG5lY2Vzc2FyeSBmb3Igc3Vic2VxdWVudCBwcm9jZXNzaW5nLgoKTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gc2VlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGJldCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGlzIHdoZXJlIGBJUF9WU2AgaXMgZGVmaW5lZC4gSSYjMzk7bGwgcXVpY2tseSBncmVwIGZvciB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uIG9yIHRoZSBgSVBfVlNgIGNvbmZpZyBzeW1ib2wgdG8gY29uZmlybSB3aGljaCBjb25maWd1cmF0aW9ucyBlbmFibGUgdGhpcyBjb2RlIHBhdGguIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTc1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVx0ICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg3LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTg4OnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4OS1cdFx0XHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwOTU9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ0LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ1Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDYtXHRcdFx0XHRcdFx0ICAgICAgIGhvb2tudW0sIFx1MDAyNmlwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTU0LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTU1Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNTYtXHRcdFx0XHRcdFx0ICAgIGhvb2tudW0pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4My0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg0OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODU6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODYtICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjg4PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMxMDpcdFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rLCBcdTAwMjZpcGhkcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTEtI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzEzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzE0Olx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDcxPWlwX3ZzX2RyX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUwMi0gKlx0SUNNUCBwYWNrZXQgdHJhbnNtaXR0ZXJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTUwMzogKlx0Y2FsbGVkIGJ5IHRoZSBpcF92c19pbl9pY21wXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE1MDQtICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgaW4gYGlwX3ZzX2luX2ljbXBgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBhbiBhc3N1bXB0aW9uIGFib3V0IHRoZSBJUCBoZWFkZXImIzM5O3MgbG9jYXRpb24gd2l0aGluIHRoZSBgc2tiYC4gVGhlIGNvZGUmIzM5O3MgdXNpbmcgYHNrYl9oZWFkZXJfcG9pbnRlcmAsIHdoaWNoIGlzIGZpbmUsIGJ1dCBpdCB0aGVuIGRpdmVzIGluIGFzc3VtaW5nIHRoZSBoZWFkZXIgaXMgKmFsd2F5cyogbGluZWFyLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgZ2V0IHRyaWNreSBiZWNhdXNlIGBza2JfaGVhZGVyX3BvaW50ZXJgIGNhbiBoYW5kIGJhY2sgYSBwb2ludGVyIHRvIGEgbG9jYWwgYnVmZmVyIHdoZW4gdGhlIGRhdGEmIzM5O3Mgbm90IGNvbnRpZ3VvdXMuIFRoZW4gd2UgaGl0IGBjaWgtJmd0O2lobGAgYW5kIGxhdGVyIGBwc2tiX3B1bGxgIGFuZCBgaXBfaGRyKHNrYilgLCBhbGwgb2Ygd2hpY2ggKmRlbWFuZCogdGhhdCB0aGUgaGVhZGVyIGJlIGluIHRoZSBsaW5lYXIgcGFydC4gVGhlIGZpeCwgYWRkaW5nIGBwc2tiX21heV9wdWxsYCwgaXMgcHJlY2lzZWx5IHdoYXQmIzM5O3MgbmVlZGVkIHRvIGd1YXJhbnRlZSBsaW5lYXJpdHkgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBvcGVyYXRpb25zLiBTbWFydC4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBhZGp1c3RtZW50IHRvIHRoZSBJUFZTIGNvcmUgbG9naWMsIGltcGFjdGluZyBob3cgaXQgaGFuZGxlcyBJQ01QIHRyYWZmaWMuIEdpdmVuIHRoYXQgaXQgY2hhbmdlcyB0aGUgZnVuZGFtZW50YWwgaGFuZGxpbmcgb2YgZGF0YSwgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciB0aG9yb3VnaCBmdXp6aW5nLiBXZSBuZWVkIHRvIHRocm93IGV2ZXJ5dGhpbmcgd2UgY2FuIGF0IGl0IHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIGVkZ2UgY2FzZXMgb3IgZGF0YSBjb3JydXB0aW9uIHNjZW5hcmlvcy4KCkkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyBmb3IgSVBWUyB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIElQVlMgSUNNUC4gSSBuZWVkIHRvIGtub3cgd2hhdCBjb25maWcgb3B0aW9ucyBlbmFibGUgSVBWUyBzcGVjaWZpY2FsbHkgc28gSSBjYW4gc2V0IHVwIGEgcHJvcGVyIHRlc3QgZW52aXJvbm1lbnQuIEkgd2lsbCBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0lQX1ZTYCBvYnZpb3VzbHksIGFuZCB3aGF0ZXZlciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBxdWljayBtZW50YWwgcnVuZG93biBvbiB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgSVBfVlNgIENhcGFiaWxpdHkqKgoKUmlnaHQsIHNvLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgSVBfVlNgIGFsb25lIHdpbGwgY3V0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgZW5jb21wYXNzZXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBJQ01QLiBPa2F5LCBJIHJlY2FsbCBzZWVpbmcgYGlwX3ZzX2luX2ljbXBgIHJlZmVyZW5jZWQgc29tZXdoZXJlLCBhbmQgbXkgaW5zdGluY3QgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB3aXRoaW4gYGlwX3ZzX2NvcmUuY2AuIExldCBtZSBjb25maXJtIHRoYXQuIEFuZCBzaW5jZSBJIGFtIGF0IGl0IEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBJIHNob3VsZCBiZSBhd2FyZSBvZiBpbiB0aGUgTWFrZWZpbGUsIGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzYCBkaXJlY3RvcnkuIEdvdHRhIG1ha2Ugc3VyZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xND1pcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNjppcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTctXHRcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cdCAgIFx0XHQgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5OTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgdGhlIElQVlMgTW9kdWxlIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgSVBWUyBtb2R1bGVzIGFyZSBwdXQgdG9nZXRoZXIuIEkga25vdyB0aGF0IGBpcF92c19jb3JlLm9gIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGF0IGBpcF92cy1vYmpzYCB0aGluZy4gQW5kIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0JiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSwgcmlnaHQ/IE15IG1lbnRhbCBtb2RlbCBzaG93cyB0aGF0LCB3aGVuIHRoZSBgQ09ORklHX0lQX1ZTYCBvcHRpb24gaXMgZW5hYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCwgdGhhdCYjMzk7cyB3aGVuIGBpcF92cy1vYmpzYCBnZXRzIGJ1aWx0LgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBgaXBfdnMtb2Jqc2AgaXMgZGVmaW5lZCBieSB0aGUgbGluZSBgb2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub2AuIFRoYXQmIzM5O3MgdGhlIGxpbmsuIFNvIGBDT05GSUdfSVBfVlNgIGlzIHRoZSB0cmlnZ2VyLCBhbmQgYGlwX3ZzLm9gIGlzIGluY2x1ZGVkIHZpYSBgb2JqLWAuIEdvdCBpdC4gSnVzdCBkb3VibGUtY2hlY2tpbmcgZXZlcnl0aGluZyB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotXFwkXFwoQ09ORklHX0lQX1ZTXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xNj1pcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTIyLSMgSVBWUyBjb3JlXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQ1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgSVBfVlNgIGNvbmZpZ3VyYXRpb24gY2hhbmdlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGlwX3ZzX2luX2ljbXBgLiBJcyB0aGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGRpcmVjdGx5IGltcGFjdGVkLCBvciBhcmUgdGhlcmUgb3RoZXJzIGx1cmtpbmcgaW4gdGhpcyBwYXRjaD8gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0JiMzOTtzIGp1c3QgdGhpcyBvbmUuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgaWYgYGlwX3ZzX2luX2ljbXBgIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSwgY3JpdGljYWwgcGF0aCBmdW5jdGlvbi4gSXQgaGFuZGxlcyBJQ01QIHBhY2tldHMgc3BlY2lmaWNhbGx5IGZvciBJUFZTLiBUaGF0IG5hcnJvd3MgaXRzIHNjb3BlIGNvbnNpZGVyYWJseTsgaXQmIzM5O3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlLCB1YmlxdWl0b3VzIGZ1bmN0aW9uIGxpa2UgYGlwX3JjdmAgb3IgYGtmcmVlYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzcGVjaWZpYyB0byBJUFZTIGFuZCBJQ01QLCBtYWtpbmcgaXQgYSBnb29kLCB3ZWxsLWRlZmluZWQgdGFyZ2V0IGZvciBhbmFseXNpcy4KCkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGlzIHBhdGNoJiMzOTtzIGltcGFjdC4gVGhlIHBhdGNoIG1lbnRpb25zIGhhbmRsaW5nICYjMzQ7SVBJUC9VRFAvR1JFIHR1bm5lbCBwYWNrZXRzJiMzNDsgYXMgd2VsbC4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBJUFZTIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0byBzdXBwb3J0IHRoZXNlIHR1bm5lbHMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZvciBhbnkgdHVubmVsLXJlbGF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0dW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNi1cdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3Olx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOC1cdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBJUFZTIFR1bm5lbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eSBmaXRzIGludG8gSVBWUy4gSXQgZmVlbHMgbGlrZSB0dW5uZWxpbmcgaXMsIGF0IGxlYXN0IHBhcnRpYWxseSwgYSBjb3JlIGZlYXR1cmUgYmFrZWQgcmlnaHQgaW50byBJUFZTIGl0c2VsZi4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgaW50dWl0aW9uLgoKVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgd29ya3MsIHNwZWNpZmljYWxseSBpZiBhbnkgc3BlY2lhbCBwcm90b2NvbCBmbGFncyBhcmUgbmVlZGVkIG9yIGlmIGl0JiMzOTtzIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseS4gSSBzaG91bGQgbG9vayBpbnRvIGZsYWdzIHN1Y2ggYXMgYElQX1ZTX1BST1RPX1VEUGAgb3Igc2ltaWxhciwgdG8gdW5kZXJzdGFuZCBob3cgVURQIHRyYWZmaWMgaXMgcGFydGljdWxhcmx5IGhhbmRsZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBjb25maWd1cmluZyB0dW5uZWxpbmcgaW4gSVBWUy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2UgY29kZSBoYXZlIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfUFJPVE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBhcHByb2FjaCBpcyBnb2luZyB0byBiZSBkaXJlY3QuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIOKAkyBzcGVjaWZpY2FsbHksIGxldCYjMzk7cyBgZ3JlcGAgZm9yIGAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7YCB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGFuZCB0aGF0IGtleXdvcmQgaXMgcHJlY2lzZWx5IHdoYXQgSSBleHBlY3QgdG8gZGVmaW5lIHRoZSByZWxldmFudCBzeW1ib2xzIGZvciBJUFZTLiBUaGlzIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCBhbGwgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIGRlcGVuZGVuY2llcyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdpdGhvdXQgZ2V0dGluZyBidXJpZWQgaW4gdGhlIGJyb2FkZXIgbmV0ZmlsdGVyIGFyY2hpdGVjdHVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBkZWVwZXIgYXMgbmVlZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgcXVpY2sgYW5kIGVmZmljaWVudCB3YXkgdG8gbWFwIG91dCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSBoYXZpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIE15IFdvcmsgJmFtcDsgRGl2aW5nIERlZXBlcioqCgpXYWl0IGEgbWludXRlLi4uIGRpZG4mIzM5O3QgSSBqdXN0IGFkZHJlc3MgdGhpcz8gSSBmZWVsIGxpa2UgSSYjMzk7dmUgYWxyZWFkeSB0YWNrbGVkIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMsIHNvIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIE9rYXksIHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBJUFZTIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGF0IGFsbCBvY2N1cnJlbmNlcyBvZiBgY29uZmlnIGAgcmVsYXRlZCB0byBpdC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBqdXN0IGBncmVwYCBmb3IgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgSSBtaWdodCBoYXZlIG1pc3NlZCBpbml0aWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcdElQX1ZTX1dMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXHRJUF9WU19MQkxDXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzUyOmNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBJUFZTIFByb3RvY29sIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBJUFZTIHByb3RvY29sIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgZm9yIFRDUCAoYElQX1ZTX1BST1RPX1RDUGApIGFuZCBVRFAgKGBJUF9WU19QUk9UT19VRFBgKS4gQXJlIHRoZXNlIGVuYWJsZWQgb3V0LW9mLXRoZS1ib3gsIG9yIGRvIHRoZXkgcmVseSBvbiBhbm90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZT8gTXkgaHVuY2ggaXMgdGhhdCB0aGV5JiMzOTtyZSBlaXRoZXIgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGRlZmluZWQgZWxzZXdoZXJlLgoKVG8gbmFpbCB0aGlzIGRvd24sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIElQVlMgc291cmNlIHRyZWUuIEkgbmVlZCB0byBjaGVjayBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBob3cgdGhlIGBJUF9WU19QUk9UT2Agc3ltYm9sIGlzIGRlZmluZWQgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lQX1ZTX1BST1RPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg1OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVURQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04Ni1cdGJvb2wgXCYjMzQ7VURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjkxOmNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhfRVNQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcdGRlZl9ib29sIElQX1ZTX1BST1RPX0VTUCB8fCBJUF9WU19QUk9UT19BSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTMtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcdElQX1ZTX1BST1RPX0VTUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTUtXHRib29sIFwmIzM0O0VTUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDA6Y29uZmlnXHRJUF9WU19QUk9UT19BSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTg3CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIElQVlMgbW9kdWxlLiBJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYElQX1ZTX1BST1RPX1VEUGAgYW5kIGBJUF9WU19QUk9UT19UQ1BgLCBidXQgdGhlIHBhdGNoIHByaW1hcmlseSB0b3VjaGVzIGBpcF92c19pbl9pY21wYCwgd2hpY2ggZGVhbHMgd2l0aCBJQ01QIHBhY2tldHMsIGFuZCBtZW50aW9ucyBVRFAgYW5kIEdSRSBlbmNhcHN1bGF0aW9uIGluIHRoZSBjb2RlLiBJIHRoZW4gbG9va2VkIGF0IHRoaXMgY29kZSBibG9jazoKCmBgYGMKCX0gZWxzZSBpZiAoKGNpaC0mZ3Q7cHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHwJLyogQ2FuIGJlIFVEUCBlbmNhcCAqLwoJCSAgICBjaWgtJmd0O3Byb3RvY29sID09IElQUFJPVE9fR1JFKSAmYW1wOyZhbXA7CS8qIENhbiBiZSBHUkUgZW5jYXAgKi8KCQkgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqLwoJCSAgIChza2ItJmd0O3J0YWJsZS0mZ3Q7cnRfZmxhZ3MgJmFtcDsgUlRDRl9MT0NBTCkpIHsKYGBgCgpUaGlzIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBlbmNhcHN1bGF0ZWQgVURQIG9yIEdSRSBwYWNrZXRzIGFuZCB0aGUgZXJyb3JzIGZyb20gdGhlIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBgTE9DQUxfSU5gLCBzbyBpdCYjMzk7cyBub3Qgc3RyaWN0bHkgdGllZCB0byBzcGVjaWZpYyBwcm90b2NvbHMuIEdpdmVuIHRoaXMsIEkmIzM5O2xsIHN0aWNrIHdpdGggc3BlY2lmeWluZyBvbmx5IGBJUF9WU2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vIG90aGVyIGNvbmZpZ3Mgc2VlbSB0byBiZSBkaXJlY3RseSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlIGNoYW5nZXMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3ZzX2luX2ljbXBgLgoKSSBjYW4gc2VlIHRoZXNlIGNoYW5nZXMuCgpgYGBjCkBAIC0xODA0LDkgJiM0MzsxODA1LDEwIEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqLwogCW9mZnNldCAmIzQzOz0gc2l6ZW9mKF9pY21waCk7CiAJY2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCAmYW1wO19jaXBoKTsKLQlpZiAoY2loID09IE5VTEwpCiYjNDM7CWlmICghKGNpaCAmYW1wOyZhbXA7IGNpaC0mZ3Q7dmVyc2lvbiA9PSA0ICZhbXA7JmFtcDsgY2loLSZndDtpaGwgJmd0Oz0gNSkpCiAJCXJldHVybiBORl9BQ0NFUFQ7IC8qIFRoZSBwYWNrZXQgbG9va3Mgd3JvbmcsIGlnbm9yZSAqLwogCXJhZGRyID0gKHVuaW9uIG5mX2luZXRfYWRkciAqKSZhbXA7Y2loLSZndDtkYWRkcjsKJiM0MzsJaGxlbl9pcGlwID0gY2loLSZndDtpaGwgKiA0OwogYGBgCgpUaGlzIGlzIHZhbGlkYXRpbmcgdGhlIGlubmVyIElQIGhlYWRlciAodmVyc2lvbiBhbmQgaWhsKSB3aGljaCBpcyBjcnVjaWFsLgoKYGBgYwpAQCAtMTkyMSw2ICYjNDM7MTkyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkJCQlnb3RvIGlnbm9yZV90dW5uZWw7CiAJCQlvZmZzZXQyIC09IGlobCAmIzQzOyBzaXplb2YoX2ljbXBoKTsKIAkJCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwomIzQzOwkJCS8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi8KJiM0MzsJCQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApKQomIzQzOwkJCQlnb3RvIGlnbm9yZV90dW5uZWw7CiBgYGAKClRoaXMgbm93IGNoZWNrcyB0byBlbnN1cmUgdGhlIElQIGhlYWRlciBpcyBhY3R1YWxseSBwcmVzZW50IHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IGNoYW5nZSwgZW5zdXJpbmcgdGhlIElQIGhlYWRlciBpcyBpbiB0aGUgbGluZWFyIHBhcnQgb2YgdGhlIGBza2JgLgoKSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIGJ1ZyBmaXgsIHJlYWxseS4gSXQmIzM5O3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgYWNjZXNzIGVycm9ycyBpbiBgaXBfdnNfaW5faWNtcGAuIEFkZGluZyB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBgc2tiYCYjMzk7cyBoZWFkcm9vbSBpcyBhIHNvbGlkIGRlZmVuc2UgYWdhaW5zdCB0aGVzZSBraW5kcyBvZiBpc3N1ZXMuIEJhc2VkIG9uIHRoaXMsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGlzIGZ1bmN0aW9uLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZm9jdXMgb24gYGlwX3ZzX2luX2ljbXBgIGluIG15IHRlc3RpbmcuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGBpcF92c19pbl9pY21wYCwgc28gSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEkmIzM5O20gbm93IHJlYWR5IHRvIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjA6NDMuMzg3NzY1NTMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MDEyNDQ2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19pbl9pY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0My4zODc3NzAxMjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzkzMTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYxNDI4ZjZmOWNlNTA5ODFiODY4YmJmYjJlZDkwNWIyYzI1ZWUxMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IDkwNmYyYzM2MTY3NjM4Li41YjQyNzM0OWEyNTc1ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0xNzY3LDYgKzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxuIFxcdGJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTtcXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcXG4gXFx0Y2hhciAqb3V0ZXJfcHJvdG8gPSBcXFwiSVBJUFxcXCI7XFxuK1xcdHVuc2lnbmVkIGludCBobGVuX2lwaXA7XFxuIFxcdGludCB1bGVuID0gMDtcXG4gXFxuIFxcdCpyZWxhdGVkID0gMTtcXG5AQCAtMTgwNCw5ICsxODA1LDEwIEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0LyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi9cXG4gXFx0b2Zmc2V0ICs9IHNpemVvZihfaWNtcGgpO1xcbiBcXHRjaWggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmZzZXQsIHNpemVvZihfY2lwaCksIFxcdTAwMjZfY2lwaCk7XFxuLVxcdGlmIChjaWggPT0gTlVMTClcXG4rXFx0aWYgKCEoY2loIFxcdTAwMjZcXHUwMDI2IGNpaC1cXHUwMDNldmVyc2lvbiA9PSA0IFxcdTAwMjZcXHUwMDI2IGNpaC1cXHUwMDNlaWhsIFxcdTAwM2U9IDUpKVxcbiBcXHRcXHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cXG4gXFx0cmFkZHIgPSAodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNmNpaC1cXHUwMDNlZGFkZHI7XFxuK1xcdGhsZW5faXBpcCA9IGNpaC1cXHUwMDNlaWhsICogNDtcXG4gXFxuIFxcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cXG4gXFx0dHVubmVsID0gZmFsc2U7XFxuQEAgLTE4MjIsOSArMTgyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0LyogT25seSBmb3Iga25vd24gdHVubmVsICovXFxuIFxcdFxcdGlmICghZGVzdCB8fCBkZXN0LVxcdTAwM2V0dW5fdHlwZSAhPSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfSVBJUClcXG4gXFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tXFx0XFx0b2Zmc2V0ICs9IGNpaC1cXHUwMDNlaWhsICogNDtcXG4rXFx0XFx0b2Zmc2V0ICs9IGhsZW5faXBpcDtcXG4gXFx0XFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcXHUwMDI2X2NpcGgpO1xcbi1cXHRcXHRpZiAoY2loID09IE5VTEwpXFxuK1xcdFxcdGlmICghKGNpaCBcXHUwMDI2XFx1MDAyNiBjaWgtXFx1MDAzZXZlcnNpb24gPT0gNCBcXHUwMDI2XFx1MDAyNiBjaWgtXFx1MDAzZWlobCBcXHUwMDNlPSA1KSlcXG4gXFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXFxuIFxcdFxcdHR1bm5lbCA9IHRydWU7XFxuIFxcdH0gZWxzZSBpZiAoKGNpaC1cXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHxcXHQvKiBDYW4gYmUgVURQIGVuY2FwICovXFxuQEAgLTE4MzYsNyArMTgzOCw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0LyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqL1xcbiBcXHRcXHRpZiAodW5saWtlbHkoY2loLVxcdTAwM2VmcmFnX29mZiBcXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxcbiBcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbi1cXHRcXHRvZmZzZXQyID0gb2Zmc2V0ICsgY2loLVxcdTAwM2VpaGwgKiA0O1xcbitcXHRcXHRvZmZzZXQyID0gb2Zmc2V0ICsgaGxlbl9pcGlwO1xcbiBcXHRcXHRpZiAoY2loLVxcdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCkge1xcbiBcXHRcXHRcXHR1bGVuID0gaXB2c191ZHBfZGVjYXAoaXB2cywgc2tiLCBvZmZzZXQyLCBBRl9JTkVULFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICByYWRkciwgXFx1MDAyNmlwcm90byk7XFxuQEAgLTE5MDUsNiArMTkwNyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHR1bm5lbCkge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaGxlbl9vcmlnID0gY2loLVxcdTAwM2VpaGwgKiA0O1xcbiBcXHRcXHRfX2JlMzIgaW5mbyA9IGljLVxcdTAwM2V1bi5nYXRld2F5O1xcbiBcXHRcXHRfX3U4IHR5cGUgPSBpYy1cXHUwMDNldHlwZTtcXG4gXFx0XFx0X191OCBjb2RlID0gaWMtXFx1MDAzZWNvZGU7XFxuQEAgLTE5MjEsNiArMTkyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0XFx0XFx0Z290byBpZ25vcmVfdHVubmVsO1xcbiBcXHRcXHRcXHRvZmZzZXQyIC09IGlobCArIHNpemVvZihfaWNtcGgpO1xcbiBcXHRcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4rXFx0XFx0XFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xcbitcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApKVxcbitcXHRcXHRcXHRcXHRnb3RvIGlnbm9yZV90dW5uZWw7XFxuIFxcdFxcdFxcdElQX1ZTX0RCRygxMiwgXFxcIklDTVAgZm9yICVzICVwSTQtXFx1MDAzZSVwSTQ6IG10dT0ldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ICBvdXRlcl9wcm90bywgXFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VzYWRkcixcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2aXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyLCBtdHUpO1xcbkBAIC0xOTM2LDggKzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxuIFxcdFxcdFxcdFxcdGlmIChkZXN0X2RzdClcXG4gXFx0XFx0XFx0XFx0XFx0bXR1ID0gZHN0X210dShkZXN0X2RzdC1cXHUwMDNlZHN0X2NhY2hlKTtcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRpZiAobXR1IFxcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW47XFxuK1xcdFxcdFxcdGlmIChtdHUgXFx1MDAzZSA2OCArIGhsZW5faXBpcCArIHVsZW4pXFxuK1xcdFxcdFxcdFxcdG10dSAtPSBobGVuX2lwaXAgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5AQCAtMTk0Niw2ICsxOTUyLDkgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRpZiAocHNrYl9wdWxsKHNrYiwgb2Zmc2V0MikgPT0gTlVMTClcXG4gXFx0XFx0XFx0Z290byBpZ25vcmVfdHVubmVsO1xcbiBcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4rXFx0XFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xcbitcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxcbitcXHRcXHRcXHRnb3RvIGlnbm9yZV90dW5uZWw7XFxuIFxcdFxcdElQX1ZTX0RCRygxMiwgXFxcIlNlbmRpbmcgSUNNUCBmb3IgJXBJNC1cXHUwMDNlJXBJNDogdD0ldSwgYz0ldSwgaT0ldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgXFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VkYWRkcixcXG4gXFx0XFx0XFx0dHlwZSwgY29kZSwgbnRvaGwoaW5mbykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0My45ODI2MTAwNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMDA2MzkwNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgaW4gYGlwX3ZzX2luX2ljbXBgIGJ5IGFkZGluZyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgdGhlIGlubmVyIElQIGhlYWRlciAodmVyc2lvbiBhbmQgaWhsKSBhbmQgZW5zdXJpbmcgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIHRoZSBza2IgaGVhZHJvb20gdXNpbmcgYHBza2JfbWF5X3B1bGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGhhbmRsZXMgSUNNUCBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCA5MDZmMmMzNjE2NzYzOC4uNWI0MjczNDlhMjU3NWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMTc2Nyw2ICsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCJJUElQXCI7XG4rXHR1bnNpZ25lZCBpbnQgaGxlbl9pcGlwO1xuIFx0aW50IHVsZW4gPSAwO1xuIFxuIFx0KnJlbGF0ZWQgPSAxO1xuQEAgLTE4MDQsOSArMTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHQvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqL1xuIFx0b2Zmc2V0ICs9IHNpemVvZihfaWNtcGgpO1xuIFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcdTAwMjZfY2lwaCk7XG4tXHRpZiAoY2loID09IE5VTEwpXG4rXHRpZiAoIShjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1KSlcbiBcdFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXG4gXHRyYWRkciA9ICh1bmlvbiBuZl9pbmV0X2FkZHIgKilcdTAwMjZjaWgtXHUwMDNlZGFkZHI7XG4rXHRobGVuX2lwaXAgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcbiBcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cbiBcdHR1bm5lbCA9IGZhbHNlO1xuQEAgLTE4MjIsOSArMTgyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0LyogT25seSBmb3Iga25vd24gdHVubmVsICovXG4gXHRcdGlmICghZGVzdCB8fCBkZXN0LVx1MDAzZXR1bl90eXBlICE9IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9JUElQKVxuIFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4tXHRcdG9mZnNldCArPSBjaWgtXHUwMDNlaWhsICogNDtcbitcdFx0b2Zmc2V0ICs9IGhsZW5faXBpcDtcbiBcdFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcdTAwMjZfY2lwaCk7XG4tXHRcdGlmIChjaWggPT0gTlVMTClcbitcdFx0aWYgKCEoY2loIFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNldmVyc2lvbiA9PSA0IFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNlaWhsIFx1MDAzZT0gNSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXG4gXHRcdHR1bm5lbCA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKChjaWgtXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHxcdC8qIENhbiBiZSBVRFAgZW5jYXAgKi9cbkBAIC0xODM2LDcgKzE4MzgsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi1cdFx0b2Zmc2V0MiA9IG9mZnNldCArIGNpaC1cdTAwM2VpaGwgKiA0O1xuK1x0XHRvZmZzZXQyID0gb2Zmc2V0ICsgaGxlbl9pcGlwO1xuIFx0XHRpZiAoY2loLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVURQKSB7XG4gXHRcdFx0dWxlbiA9IGlwdnNfdWRwX2RlY2FwKGlwdnMsIHNrYiwgb2Zmc2V0MiwgQUZfSU5FVCxcbiBcdFx0XHRcdFx0ICAgICAgcmFkZHIsIFx1MDAyNmlwcm90byk7XG5AQCAtMTkwNSw2ICsxOTA3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0fVxuIFxuIFx0aWYgKHR1bm5lbCkge1xuK1x0XHR1bnNpZ25lZCBpbnQgaGxlbl9vcmlnID0gY2loLVx1MDAzZWlobCAqIDQ7XG4gXHRcdF9fYmUzMiBpbmZvID0gaWMtXHUwMDNldW4uZ2F0ZXdheTtcbiBcdFx0X191OCB0eXBlID0gaWMtXHUwMDNldHlwZTtcbiBcdFx0X191OCBjb2RlID0gaWMtXHUwMDNlY29kZTtcbkBAIC0xOTIxLDYgKzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgKyBzaXplb2YoX2ljbXBoKTtcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4rXHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbitcdFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0XHRJUF9WU19EQkcoMTIsIFwiSUNNUCBmb3IgJXMgJXBJNC1cdTAwM2UlcEk0OiBtdHU9JXVcXG5cIixcbiBcdFx0XHRcdCAgb3V0ZXJfcHJvdG8sIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZXNhZGRyLFxuIFx0XHRcdFx0ICBcdTAwMjZpcF9oZHIoc2tiKS1cdTAwM2VkYWRkciwgbXR1KTtcbkBAIC0xOTM2LDggKzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgaGxlbl9pcGlwICsgdWxlbilcbitcdFx0XHRcdG10dSAtPSBobGVuX2lwaXAgKyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuQEAgLTE5NDYsNiArMTk1Miw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0aWYgKHBza2JfcHVsbChza2IsIG9mZnNldDIpID09IE5VTEwpXG4gXHRcdFx0Z290byBpZ25vcmVfdHVubmVsO1xuIFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xuK1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxuK1x0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0SVBfVlNfREJHKDEyLCBcIlNlbmRpbmcgSUNNUCBmb3IgJXBJNC1cdTAwM2UlcEk0OiB0PSV1LCBjPSV1LCBpPSV1XFxuXCIsXG4gXHRcdFx0XHUwMDI2aXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIFx0XHRcdHR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIwOjQzLjk4MjYxMTQ0OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTE1NDI1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFZTIElDTVAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIG1vcmUgcm9idXN0IGNoZWNrcyBmb3IgdGhlIElDTVAgaGVhZGVyLiBJbnN0ZWFkIG9mIGp1c3QgYSBzaW1wbGUgYGNpaCA9PSBOVUxMYCBjaGVjaywgaXQgbm93IHZlcmlmaWVzIGBjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1YC4gVGhpcyBpcyBnb29kOyBpdCdzIGNvbmZpcm1pbmcgaXQncyBhIHZhbGlkIElQdjQgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgaGVhZGVyIGxlbmd0aCBpcyBhdCBsZWFzdCB0aGUgbWluaW11bSwgd2hpY2ggcHJldmVudHMgcG90ZW50aWFsIGNyYXNoZXMgb3Igc2VjdXJpdHkgaXNzdWVzIGZyb20gbWFsZm9ybWVkIHBhY2tldHMuXG5cbkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApYCBhbmQgYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpYC4gUmlnaHQsIHRoYXQncyBpbXBvcnRhbnQuIFRoaXMgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgZGF0YSBpcyBhY3R1YWxseSAqcHJlc2VudCogYW5kIGFjY2Vzc2libGUgaW4gdGhlIHNrYiBoZWFkcm9vbSBiZWZvcmUgYWNjZXNzaW5nIGl0LiBBdm9pZGluZyBwb3RlbnRpYWwgYE5VTExgIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMgaXMgcGFyYW1vdW50IGluIG5ldHdvcmsgY29kZS4gUHVsbGluZyB0aGUgaGVhZGVyIGludG8gdGhlIGxpbmVhciBhcmVhIG9mIHRoZSBza2IgaXMgcHJvYmFibHkgbmVjZXNzYXJ5IGZvciBzdWJzZXF1ZW50IHByb2Nlc3NpbmcuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIGJldCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGlzIHdoZXJlIGBJUF9WU2AgaXMgZGVmaW5lZC4gSSdsbCBxdWlja2x5IGdyZXAgZm9yIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24gb3IgdGhlIGBJUF9WU2AgY29uZmlnIHN5bWJvbCB0byBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSB0aGlzIGNvZGUgcGF0aC4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0OC43MzQxNTY1ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODUyNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luX2ljbXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1NjppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVxcdCAgICAgIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg3LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTk4ODpzdGF0aWMgaW50IGlwX3ZzX2luX2ljbXBfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg5LVxcdFxcdFxcdCAgICBpbnQgKnJlbGF0ZWQsIHVuc2lnbmVkIGludCBob29rbnVtLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDk1PWlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ0LVxcdFxcdFxcdGludCByZWxhdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjE0NTpcXHRcXHRcXHRpbnQgdmVyZGljdCA9IGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcXHUwMDI2cmVsYXRlZCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGhvb2tudW0sIFxcdTAwMjZpcGgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTU0LVxcdFxcdFxcdGludCByZWxhdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjE1NTpcXHRcXHRcXHRpbnQgdmVyZGljdCA9IGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcXHUwMDI2cmVsYXRlZCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNTYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGhvb2tudW0pO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjgzLSAqICAgICAgYnV0IElDTVAgZGVzdGluZWQgZm9yIDAuMC4wLjAvMCBjYW5ub3Qgbm90IGJlIGVhc2lseSBtYXJrZWQgYW5kXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg0OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg1OiAqICAgICAgYW5kIHNlbmQgdGhlbSB0byBpcF92c19pbl9pY21wLlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4Ni0gKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjI4OD1pcF92c19mb3J3YXJkX2ljbXAodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMTA6XFx0XFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcXHUwMDI2ciwgc3RhdGUtXFx1MDAzZWhvb2ssIFxcdTAwMjZpcGhkcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzExLSNlbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzEzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMxNDpcXHRyZXR1cm4gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFxcdTAwMjZyLCBzdGF0ZS1cXHUwMDNlaG9vayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzE1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTQ3MT1pcF92c19kcl94bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUwMi0gKlxcdElDTVAgcGFja2V0IHRyYW5zbWl0dGVyXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNTAzOiAqXFx0Y2FsbGVkIGJ5IHRoZSBpcF92c19pbl9pY21wXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTA0LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0OC44NjQwMTQ4MjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwMzk1MzU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBgaXBfdnNfaW5faWNtcGAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGFuIGFzc3VtcHRpb24gYWJvdXQgdGhlIElQIGhlYWRlcidzIGxvY2F0aW9uIHdpdGhpbiB0aGUgYHNrYmAuIFRoZSBjb2RlJ3MgdXNpbmcgYHNrYl9oZWFkZXJfcG9pbnRlcmAsIHdoaWNoIGlzIGZpbmUsIGJ1dCBpdCB0aGVuIGRpdmVzIGluIGFzc3VtaW5nIHRoZSBoZWFkZXIgaXMgKmFsd2F5cyogbGluZWFyLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgZ2V0IHRyaWNreSBiZWNhdXNlIGBza2JfaGVhZGVyX3BvaW50ZXJgIGNhbiBoYW5kIGJhY2sgYSBwb2ludGVyIHRvIGEgbG9jYWwgYnVmZmVyIHdoZW4gdGhlIGRhdGEncyBub3QgY29udGlndW91cy4gVGhlbiB3ZSBoaXQgYGNpaC1cdTAwM2VpaGxgIGFuZCBsYXRlciBgcHNrYl9wdWxsYCBhbmQgYGlwX2hkcihza2IpYCwgYWxsIG9mIHdoaWNoICpkZW1hbmQqIHRoYXQgdGhlIGhlYWRlciBiZSBpbiB0aGUgbGluZWFyIHBhcnQuIFRoZSBmaXgsIGFkZGluZyBgcHNrYl9tYXlfcHVsbGAsIGlzIHByZWNpc2VseSB3aGF0J3MgbmVlZGVkIHRvIGd1YXJhbnRlZSBsaW5lYXJpdHkgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBvcGVyYXRpb25zLiBTbWFydC5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGFkanVzdG1lbnQgdG8gdGhlIElQVlMgY29yZSBsb2dpYywgaW1wYWN0aW5nIGhvdyBpdCBoYW5kbGVzIElDTVAgdHJhZmZpYy4gR2l2ZW4gdGhhdCBpdCBjaGFuZ2VzIHRoZSBmdW5kYW1lbnRhbCBoYW5kbGluZyBvZiBkYXRhLCBJJ2Qgc2F5IHRoaXMgaXMgZGVmaW5pdGVseSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byB0aHJvdyBldmVyeXRoaW5nIHdlIGNhbiBhdCBpdCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBlZGdlIGNhc2VzIG9yIGRhdGEgY29ycnVwdGlvbiBzY2VuYXJpb3MuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyBmb3IgSVBWUyB0byBiZSBzdXJlLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBmb3IgSVBWUyBJQ01QLiBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbmZpZyBvcHRpb25zIGVuYWJsZSBJUFZTIHNwZWNpZmljYWxseSBzbyBJIGNhbiBzZXQgdXAgYSBwcm9wZXIgdGVzdCBlbnZpcm9ubWVudC4gSSB3aWxsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfSVBfVlNgIG9idmlvdXNseSwgYW5kIHdoYXRldmVyIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTUuNjY3OTcxMDY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzY0NjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTUuNzg1NjIzMjg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzkzNzcwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIG1lbnRhbCBydW5kb3duIG9uIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYElQX1ZTYCBDYXBhYmlsaXR5KipcblxuUmlnaHQsIHNvLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgSVBfVlNgIGFsb25lIHdpbGwgY3V0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgZW5jb21wYXNzZXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBJQ01QLiBPa2F5LCBJIHJlY2FsbCBzZWVpbmcgYGlwX3ZzX2luX2ljbXBgIHJlZmVyZW5jZWQgc29tZXdoZXJlLCBhbmQgbXkgaW5zdGluY3QgaXMgdGhhdCBpdCdzIHByb2JhYmx5IHdpdGhpbiBgaXBfdnNfY29yZS5jYC4gTGV0IG1lIGNvbmZpcm0gdGhhdC4gQW5kIHNpbmNlIEkgYW0gYXQgaXQgSSBzaG91bGQgc2VlIGlmIHRoZXJlIGlzIGFueXRoaW5nIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGluIHRoZSBNYWtlZmlsZSwgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnNgIGRpcmVjdG9yeS4gR290dGEgbWFrZSBzdXJlIGRlcGVuZGVuY2llcyBhbmQgY29tcGlsYXRpb24gYXJlIGhhbmRsZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjA1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTguNjQ5NTYzMzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDcyNDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTQ9aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTUtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjE2OmlwX3ZzLW9ianMgOj1cXHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cXHQgICBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTE3LVxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjE4Ljc5MDMwOTEwMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDcwODk1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkV4YW1pbmluZyB0aGUgSVBWUyBNb2R1bGUgQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgSVBWUyBtb2R1bGVzIGFyZSBwdXQgdG9nZXRoZXIuIEkga25vdyB0aGF0IGBpcF92c19jb3JlLm9gIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGF0IGBpcF92cy1vYmpzYCB0aGluZy4gQW5kIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0J3MgY29yZSBmdW5jdGlvbmFsaXR5LCByaWdodD8gTXkgbWVudGFsIG1vZGVsIHNob3dzIHRoYXQsIHdoZW4gdGhlIGBDT05GSUdfSVBfVlNgIG9wdGlvbiBpcyBlbmFibGVkIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkLCB0aGF0J3Mgd2hlbiBgaXBfdnMtb2Jqc2AgZ2V0cyBidWlsdC5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi4gSSdtIHJlY2FsbGluZyB0aGF0IGBpcF92cy1vYmpzYCBpcyBkZWZpbmVkIGJ5IHRoZSBsaW5lIGBvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9gLiBUaGF0J3MgdGhlIGxpbmsuIFNvIGBDT05GSUdfSVBfVlNgIGlzIHRoZSB0cmlnZ2VyLCBhbmQgYGlwX3ZzLm9gIGlzIGluY2x1ZGVkIHZpYSBgb2JqLWAuIEdvdCBpdC4gSnVzdCBkb3VibGUtY2hlY2tpbmcgZXZlcnl0aGluZyB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTk3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MjIuMTk3NDAwNDU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY2NTYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19JUF9WU1xcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTY9aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0yMi0jIElQVlMgY29yZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjIyLjI4NzA3NDU2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUwOTUxNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYElQX1ZTYCBjb25maWd1cmF0aW9uIGNoYW5nZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGBpcF92c19pbl9pY21wYC4gSXMgdGhpcyB0aGUgb25seSBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RlZCwgb3IgYXJlIHRoZXJlIG90aGVycyBsdXJraW5nIGluIHRoaXMgcGF0Y2g/IEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIGp1c3QgdGhpcyBvbmUuXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIGlmIGBpcF92c19pbl9pY21wYCBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UsIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24uIEl0IGhhbmRsZXMgSUNNUCBwYWNrZXRzIHNwZWNpZmljYWxseSBmb3IgSVBWUy4gVGhhdCBuYXJyb3dzIGl0cyBzY29wZSBjb25zaWRlcmFibHk7IGl0J3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlLCB1YmlxdWl0b3VzIGZ1bmN0aW9uIGxpa2UgYGlwX3JjdmAgb3IgYGtmcmVlYC4gSXQncyBkZWZpbml0ZWx5IHNwZWNpZmljIHRvIElQVlMgYW5kIElDTVAsIG1ha2luZyBpdCBhIGdvb2QsIHdlbGwtZGVmaW5lZCB0YXJnZXQgZm9yIGFuYWx5c2lzLlxuXG5JIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhpcyBwYXRjaCdzIGltcGFjdC4gVGhlIHBhdGNoIG1lbnRpb25zIGhhbmRsaW5nIFwiSVBJUC9VRFAvR1JFIHR1bm5lbCBwYWNrZXRzXCIgYXMgd2VsbC4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBJUFZTIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0byBzdXBwb3J0IHRoZXNlIHR1bm5lbHMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZm9yIGFueSB0dW5uZWwtcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MjcuMDM4MDMyMjkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEwNDUyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHVubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTU9bWVudWNvbmZpZyBJUF9WU1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTYtXFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3OlxcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE4LVxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMToyNy4xNzkwODM3NjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0Nzg4ODMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJUFZTIFR1bm5lbGluZyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdHVubmVsaW5nIGZ1bmN0aW9uYWxpdHkgZml0cyBpbnRvIElQVlMuIEl0IGZlZWxzIGxpa2UgdHVubmVsaW5nIGlzLCBhdCBsZWFzdCBwYXJ0aWFsbHksIGEgY29yZSBmZWF0dXJlIGJha2VkIHJpZ2h0IGludG8gSVBWUyBpdHNlbGYuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGludHVpdGlvbi5cblxuVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgd29ya3MsIHNwZWNpZmljYWxseSBpZiBhbnkgc3BlY2lhbCBwcm90b2NvbCBmbGFncyBhcmUgbmVlZGVkIG9yIGlmIGl0J3MgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5LiBJIHNob3VsZCBsb29rIGludG8gZmxhZ3Mgc3VjaCBhcyBgSVBfVlNfUFJPVE9fVURQYCBvciBzaW1pbGFyLCB0byB1bmRlcnN0YW5kIGhvdyBVRFAgdHJhZmZpYyBpcyBwYXJ0aWN1bGFybHkgaGFuZGxlZCwgYW5kIHdoYXQgb3B0aW9ucyB0aGVyZSBhcmUgZm9yIGNvbmZpZ3VyaW5nIHR1bm5lbGluZyBpbiBJUFZTLiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlIGNvZGUgaGF2ZSB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozMC41MjY5NzU2MDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODcxNzMyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozMC45NDU3MDIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1OTAyMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIGFwcHJvYWNoIGlzIGdvaW5nIHRvIGJlIGRpcmVjdC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCDigJMgc3BlY2lmaWNhbGx5LCBsZXQncyBgZ3JlcGAgZm9yIGBcImNvbmZpZyBJUF9WU1wiYCB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHNwb3QgZm9yIGtlcm5lbCBjb25maWcgb3B0aW9ucywgYW5kIHRoYXQga2V5d29yZCBpcyBwcmVjaXNlbHkgd2hhdCBJIGV4cGVjdCB0byBkZWZpbmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgZm9yIElQVlMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgaGlnaGxpZ2h0IGFsbCB0aGUgc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgZGVwZW5kZW5jaWVzIEknbSBpbnRlcmVzdGVkIGluLCB3aXRob3V0IGdldHRpbmcgYnVyaWVkIGluIHRoZSBicm9hZGVyIG5ldGZpbHRlciBhcmNoaXRlY3R1cmUuIEZyb20gdGhlcmUsIEkgY2FuIGRyaWxsIGRvd24gZGVlcGVyIGFzIG5lZWRlZC4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgcXVpY2sgYW5kIGVmZmljaWVudCB3YXkgdG8gbWFwIG91dCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjM0LjA1MTYwNzA3OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMDgzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjM0LjE0ODYyMjkyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjI3MTI0NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSBoYXZpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgTXkgV29yayBcdTAwMjYgRGl2aW5nIERlZXBlcioqXG5cbldhaXQgYSBtaW51dGUuLi4gZGlkbid0IEkganVzdCBhZGRyZXNzIHRoaXM/IEkgZmVlbCBsaWtlIEkndmUgYWxyZWFkeSB0YWNrbGVkIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMsIHNvIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIE9rYXksIHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgYXQgYWxsIG9jY3VycmVuY2VzIG9mIGBjb25maWcgYCByZWxhdGVkIHRvIGl0LiBMZXQncyBzZWUuLi4gSSdsbCBqdXN0IGBncmVwYCBmb3IgXCJjb25maWcgXCIgd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgSSBtaWdodCBoYXZlIG1pc3NlZCBpbml0aWFsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3ODAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozNy4yNzEzMzgxODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTIwMTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xMDA9Y29uZmlnXFx0SVBfVlNfUFJPVE9fQUhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVxcdGJvb2wgXFxcIlNDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcXHRJUF9WU19XTENcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1OC1cXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcXHRJUF9WU19QRV9TSVBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1MS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNTI6Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgSVBWU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MzcuMzk2NTQ1NDU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MzUyNzcwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgbmV0d29ya2luZyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBJUFZTIFByb3RvY29sIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGUgSVBWUyBwcm90b2NvbCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBUQ1AgKGBJUF9WU19QUk9UT19UQ1BgKSBhbmQgVURQIChgSVBfVlNfUFJPVE9fVURQYCkuIEFyZSB0aGVzZSBlbmFibGVkIG91dC1vZi10aGUtYm94LCBvciBkbyB0aGV5IHJlbHkgb24gYW5vdGhlciBjb25maWd1cmF0aW9uIGZpbGU/IE15IGh1bmNoIGlzIHRoYXQgdGhleSdyZSBlaXRoZXIgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGRlZmluZWQgZWxzZXdoZXJlLlxuXG5UbyBuYWlsIHRoaXMgZG93biwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgSVBWUyBzb3VyY2UgdHJlZS4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgdG8gc2VlIGhvdyB0aGUgYElQX1ZTX1BST1RPYCBzeW1ib2wgaXMgZGVmaW5lZCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFuc3dlciBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjcxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6NDIuODMxODI0OTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODYyNzM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzIxPWNvbmZpZ1xcdElQX1ZTX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIGhlbHBlclxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjM6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVxcdFxcdE5GX0NPTk5UUkFDS19GVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcXHRJUF9WU19QRV9TSVBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXFx0dHJpc3RhdGUgXFxcIlNJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ4LVxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTo0Mi45ODA0NTk1NDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NTcwNDY3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgSVBWUyBtb2R1bGUuIEluaXRpYWxseSwgSSB0aG91Z2h0IGFib3V0IGluY2x1ZGluZyBgSVBfVlNfUFJPVE9fVURQYCBhbmQgYElQX1ZTX1BST1RPX1RDUGAsIGJ1dCB0aGUgcGF0Y2ggcHJpbWFyaWx5IHRvdWNoZXMgYGlwX3ZzX2luX2ljbXBgLCB3aGljaCBkZWFscyB3aXRoIElDTVAgcGFja2V0cywgYW5kIG1lbnRpb25zIFVEUCBhbmQgR1JFIGVuY2Fwc3VsYXRpb24gaW4gdGhlIGNvZGUuIEkgdGhlbiBsb29rZWQgYXQgdGhpcyBjb2RlIGJsb2NrOlxuXG5gYGBjXG5cdH0gZWxzZSBpZiAoKGNpaC1cdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fFx0LyogQ2FuIGJlIFVEUCBlbmNhcCAqL1xuXHRcdCAgICBjaWgtXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19HUkUpIFx1MDAyNlx1MDAyNlx0LyogQ2FuIGJlIEdSRSBlbmNhcCAqL1xuXHRcdCAgIC8qIEVycm9yIGZvciBvdXIgdHVubmVsIG11c3QgYXJyaXZlIGF0IExPQ0FMX0lOICovXG5cdFx0ICAgKHNrYi1cdTAwM2VydGFibGUtXHUwMDNlcnRfZmxhZ3MgXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XG5gYGBcblxuVGhpcyBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBlbmNhcHN1bGF0ZWQgVURQIG9yIEdSRSBwYWNrZXRzIGFuZCB0aGUgZXJyb3JzIGZyb20gdGhlIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBgTE9DQUxfSU5gLCBzbyBpdCdzIG5vdCBzdHJpY3RseSB0aWVkIHRvIHNwZWNpZmljIHByb3RvY29scy4gR2l2ZW4gdGhpcywgSSdsbCBzdGljayB3aXRoIHNwZWNpZnlpbmcgb25seSBgSVBfVlNgIGFzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBObyBvdGhlciBjb25maWdzIHNlZW0gdG8gYmUgZGlyZWN0bHkgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBtb2RpZmljYXRpb25zIHRvIGBpcF92c19pbl9pY21wYC5cblxuSSBjYW4gc2VlIHRoZXNlIGNoYW5nZXMuXG5cbmBgYGNcbkBAIC0xODA0LDkgKzE4MDUsMTAgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0LyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi9cbiBcdG9mZnNldCArPSBzaXplb2YoX2ljbXBoKTtcbiBcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0aWYgKGNpaCA9PSBOVUxMKVxuK1x0aWYgKCEoY2loIFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNldmVyc2lvbiA9PSA0IFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNlaWhsIFx1MDAzZT0gNSkpXG4gXHRcdHJldHVybiBORl9BQ0NFUFQ7IC8qIFRoZSBwYWNrZXQgbG9va3Mgd3JvbmcsIGlnbm9yZSAqL1xuIFx0cmFkZHIgPSAodW5pb24gbmZfaW5ldF9hZGRyICopXHUwMDI2Y2loLVx1MDAzZWRhZGRyO1xuK1x0aGxlbl9pcGlwID0gY2loLVx1MDAzZWlobCAqIDQ7XG4gYGBgXG5cblRoaXMgaXMgdmFsaWRhdGluZyB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIHdoaWNoIGlzIGNydWNpYWwuXG5cbmBgYGNcbkBAIC0xOTIxLDYgKzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgKyBzaXplb2YoX2ljbXBoKTtcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4rXHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbitcdFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBgYGBcblxuVGhpcyBub3cgY2hlY2tzIHRvIGVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIGFjdHVhbGx5IHByZXNlbnQgdXNpbmcgYHBza2JfbWF5X3B1bGxgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgY2hhbmdlLCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBsaW5lYXIgcGFydCBvZiB0aGUgYHNrYmAuXG5cbkl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBidWcgZml4LCByZWFsbHkuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgYWNjZXNzIGVycm9ycyBpbiBgaXBfdnNfaW5faWNtcGAuIEFkZGluZyB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBgc2tiYCdzIGhlYWRyb29tIGlzIGEgc29saWQgZGVmZW5zZSBhZ2FpbnN0IHRoZXNlIGtpbmRzIG9mIGlzc3Vlcy4gQmFzZWQgb24gdGhpcywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdGhpcyBmdW5jdGlvbi4gSSdsbCBtYWtlIHN1cmUgdG8gZm9jdXMgb24gYGlwX3ZzX2luX2ljbXBgIGluIG15IHRlc3RpbmcuXG5cbkkndmUgZG91YmxlLWNoZWNrZWQsIGFuZCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgaXBfdnNfaW5faWNtcGAsIHNvIEknbSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEknbSBub3cgcmVhZHkgdG8gbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4NywiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6NTMuODM3NTA4NTg2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNDg3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2luX2ljbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGluIGBpcF92c19pbl9pY21wYCBieSBhZGRpbmcgcHJvcGVyIHZhbGlkYXRpb24gZm9yIHRoZSBpbm5lciBJUCBoZWFkZXIgKHZlcnNpb24gYW5kIGlobCkgYW5kIGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgc2tiIGhlYWRyb29tIHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBoYW5kbGVzIElDTVAgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19pbl9pY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 04:52:12 +0000 UTC FinishedAt: 2026-07-08 05:21:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "ae3f9a5a-a673-4746-ba5b-1edeb1ab7120" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_in_icmp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGluIGBpcF92c19pbl9pY21wYCBieSBhZGRpbmcgcHJvcGVyIHZhbGlkYXRpb24gZm9yIHRoZSBpbm5lciBJUCBoZWFkZXIgKHZlcnNpb24gYW5kIGlobCkgYW5kIGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgc2tiIGhlYWRyb29tIHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBoYW5kbGVzIElDTVAgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggOTA2ZjJjMzYxNjc2MzguLjViNDI3MzQ5YTI1NzVmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3NjcsNiAmIzQzOzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRib29sIHR1bm5lbCwgbmV3X2NwID0gZmFsc2U7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xuIFx0Y2hhciAqb3V0ZXJfcHJvdG8gPSBcJiMzNDtJUElQXCYjMzQ7O1xuJiM0MztcdHVuc2lnbmVkIGludCBobGVuX2lwaXA7XG4gXHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG5AQCAtMTgwNCw5ICYjNDM7MTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHQvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqL1xuIFx0b2Zmc2V0ICYjNDM7PSBzaXplb2YoX2ljbXBoKTtcbiBcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0aWYgKGNpaCA9PSBOVUxMKVxuJiM0MztcdGlmICghKGNpaCBcdTAwMjZcdTAwMjYgY2loLVx1MDAzZXZlcnNpb24gPT0gNCBcdTAwMjZcdTAwMjYgY2loLVx1MDAzZWlobCBcdTAwM2U9IDUpKVxuIFx0XHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cbiBcdHJhZGRyID0gKHVuaW9uIG5mX2luZXRfYWRkciAqKVx1MDAyNmNpaC1cdTAwM2VkYWRkcjtcbiYjNDM7XHRobGVuX2lwaXAgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcbiBcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cbiBcdHR1bm5lbCA9IGZhbHNlO1xuQEAgLTE4MjIsOSAmIzQzOzE4MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE9ubHkgZm9yIGtub3duIHR1bm5lbCAqL1xuIFx0XHRpZiAoIWRlc3QgfHwgZGVzdC1cdTAwM2V0dW5fdHlwZSAhPSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfSVBJUClcbiBcdFx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLVx0XHRvZmZzZXQgJiM0Mzs9IGNpaC1cdTAwM2VpaGwgKiA0O1xuJiM0MztcdFx0b2Zmc2V0ICYjNDM7PSBobGVuX2lwaXA7XG4gXHRcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0XHRpZiAoY2loID09IE5VTEwpXG4mIzQzO1x0XHRpZiAoIShjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1KSlcbiBcdFx0XHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cbiBcdFx0dHVubmVsID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAoKGNpaC1cdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fFx0LyogQ2FuIGJlIFVEUCBlbmNhcCAqL1xuQEAgLTE4MzYsNyAmIzQzOzE4MzgsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi1cdFx0b2Zmc2V0MiA9IG9mZnNldCAmIzQzOyBjaWgtXHUwMDNlaWhsICogNDtcbiYjNDM7XHRcdG9mZnNldDIgPSBvZmZzZXQgJiM0MzsgaGxlbl9pcGlwO1xuIFx0XHRpZiAoY2loLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVURQKSB7XG4gXHRcdFx0dWxlbiA9IGlwdnNfdWRwX2RlY2FwKGlwdnMsIHNrYiwgb2Zmc2V0MiwgQUZfSU5FVCxcbiBcdFx0XHRcdFx0ICAgICAgcmFkZHIsIFx1MDAyNmlwcm90byk7XG5AQCAtMTkwNSw2ICYjNDM7MTkwNyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdH1cbiBcbiBcdGlmICh0dW5uZWwpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGludCBobGVuX29yaWcgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcdFx0X19iZTMyIGluZm8gPSBpYy1cdTAwM2V1bi5nYXRld2F5O1xuIFx0XHRfX3U4IHR5cGUgPSBpYy1cdTAwM2V0eXBlO1xuIFx0XHRfX3U4IGNvZGUgPSBpYy1cdTAwM2Vjb2RlO1xuQEAgLTE5MjEsNiAmIzQzOzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgJiM0Mzsgc2l6ZW9mKF9pY21waCk7XG4gXHRcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4mIzQzO1x0XHRcdC8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi9cbiYjNDM7XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbiYjNDM7XHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0SVBfVlNfREJHKDEyLCBcJiMzNDtJQ01QIGZvciAlcyAlcEk0LVx1MDAzZSVwSTQ6IG10dT0ldVxcblwmIzM0OyxcbiBcdFx0XHRcdCAgb3V0ZXJfcHJvdG8sIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZXNhZGRyLFxuIFx0XHRcdFx0ICBcdTAwMjZpcF9oZHIoc2tiKS1cdTAwM2VkYWRkciwgbXR1KTtcbkBAIC0xOTM2LDggJiM0MzsxOTQyLDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHRcdFx0aWYgKGRlc3RfZHN0KVxuIFx0XHRcdFx0XHRtdHUgPSBkc3RfbXR1KGRlc3RfZHN0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRcdFx0fVxuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgdWxlbjtcbiYjNDM7XHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0MzsgaGxlbl9pcGlwICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IGhsZW5faXBpcCAmIzQzOyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuQEAgLTE5NDYsNiAmIzQzOzE5NTIsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdGlmIChwc2tiX3B1bGwoc2tiLCBvZmZzZXQyKSA9PSBOVUxMKVxuIFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG4mIzQzO1x0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4mIzQzO1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxuJiM0MztcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdElQX1ZTX0RCRygxMiwgXCYjMzQ7U2VuZGluZyBJQ01QIGZvciAlcEk0LVx1MDAzZSVwSTQ6IHQ9JXUsIGM9JXUsIGk9JXVcXG5cJiMzNDssXG4gXHRcdFx0XHUwMDI2aXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIFx0XHRcdHR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IDkwNmYyYzM2MTY3NjM4Li41YjQyNzM0OWEyNTc1ZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCWJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyOwogCWNoYXIgKm91dGVyX3Byb3RvID0gJiMzNDtJUElQJiMzNDs7CiYjNDM7CXVuc2lnbmVkIGludCBobGVuX2lwaXA7CiAJaW50IHVsZW4gPSAwOwogCiAJKnJlbGF0ZWQgPSAxOwpAQCAtMTgwNCw5ICYjNDM7MTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJLyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi8KIAlvZmZzZXQgJiM0Mzs9IHNpemVvZihfaWNtcGgpOwogCWNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgJmFtcDtfY2lwaCk7Ci0JaWYgKGNpaCA9PSBOVUxMKQomIzQzOwlpZiAoIShjaWggJmFtcDsmYW1wOyBjaWgtJmd0O3ZlcnNpb24gPT0gNCAmYW1wOyZhbXA7IGNpaC0mZ3Q7aWhsICZndDs9IDUpKQogCQlyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi8KIAlyYWRkciA9ICh1bmlvbiBuZl9pbmV0X2FkZHIgKikmYW1wO2NpaC0mZ3Q7ZGFkZHI7CiYjNDM7CWhsZW5faXBpcCA9IGNpaC0mZ3Q7aWhsICogNDsKIAogCS8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi8KIAl0dW5uZWwgPSBmYWxzZTsKQEAgLTE4MjIsOSAmIzQzOzE4MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCS8qIE9ubHkgZm9yIGtub3duIHR1bm5lbCAqLwogCQlpZiAoIWRlc3QgfHwgZGVzdC0mZ3Q7dHVuX3R5cGUgIT0gSVBfVlNfQ09OTl9GX1RVTk5FTF9UWVBFX0lQSVApCiAJCQlyZXR1cm4gTkZfQUNDRVBUOwotCQlvZmZzZXQgJiM0Mzs9IGNpaC0mZ3Q7aWhsICogNDsKJiM0MzsJCW9mZnNldCAmIzQzOz0gaGxlbl9pcGlwOwogCQljaWggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmZzZXQsIHNpemVvZihfY2lwaCksICZhbXA7X2NpcGgpOwotCQlpZiAoY2loID09IE5VTEwpCiYjNDM7CQlpZiAoIShjaWggJmFtcDsmYW1wOyBjaWgtJmd0O3ZlcnNpb24gPT0gNCAmYW1wOyZhbXA7IGNpaC0mZ3Q7aWhsICZndDs9IDUpKQogCQkJcmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovCiAJCXR1bm5lbCA9IHRydWU7CiAJfSBlbHNlIGlmICgoY2loLSZndDtwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fAkvKiBDYW4gYmUgVURQIGVuY2FwICovCkBAIC0xODM2LDcgJiM0MzsxODM4LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovCiAJCWlmICh1bmxpa2VseShjaWgtJmd0O2ZyYWdfb2ZmICZhbXA7IGh0b25zKElQX09GRlNFVCkpKQogCQkJcmV0dXJuIE5GX0FDQ0VQVDsKLQkJb2Zmc2V0MiA9IG9mZnNldCAmIzQzOyBjaWgtJmd0O2lobCAqIDQ7CiYjNDM7CQlvZmZzZXQyID0gb2Zmc2V0ICYjNDM7IGhsZW5faXBpcDsKIAkJaWYgKGNpaC0mZ3Q7cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApIHsKIAkJCXVsZW4gPSBpcHZzX3VkcF9kZWNhcChpcHZzLCBza2IsIG9mZnNldDIsIEFGX0lORVQsCiAJCQkJCSAgICAgIHJhZGRyLCAmYW1wO2lwcm90byk7CkBAIC0xOTA1LDYgJiM0MzsxOTA3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCX0KIAogCWlmICh0dW5uZWwpIHsKJiM0MzsJCXVuc2lnbmVkIGludCBobGVuX29yaWcgPSBjaWgtJmd0O2lobCAqIDQ7CiAJCV9fYmUzMiBpbmZvID0gaWMtJmd0O3VuLmdhdGV3YXk7CiAJCV9fdTggdHlwZSA9IGljLSZndDt0eXBlOwogCQlfX3U4IGNvZGUgPSBpYy0mZ3Q7Y29kZTsKQEAgLTE5MjEsNiAmIzQzOzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQkJb2Zmc2V0MiAtPSBpaGwgJiM0Mzsgc2l6ZW9mKF9pY21waCk7CiAJCQlza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTsKJiM0MzsJCQkvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovCiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSkKJiM0MzsJCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQkJSVBfVlNfREJHKDEyLCAmIzM0O0lDTVAgZm9yICVzICVwSTQtJmd0OyVwSTQ6IG10dT0ldVxuJiMzNDssCiAJCQkJICBvdXRlcl9wcm90bywgJmFtcDtpcF9oZHIoc2tiKS0mZ3Q7c2FkZHIsCiAJCQkJICAmYW1wO2lwX2hkcihza2IpLSZndDtkYWRkciwgbXR1KTsKQEAgLTE5MzYsOCAmIzQzOzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCQkJaWYgKGRlc3RfZHN0KQogCQkJCQltdHUgPSBkc3RfbXR1KGRlc3RfZHN0LSZndDtkc3RfY2FjaGUpOwogCQkJfQotCQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCi0JCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IGhsZW5faXBpcCAmIzQzOyB1bGVuKQomIzQzOwkJCQltdHUgLT0gaGxlbl9pcGlwICYjNDM7IHVsZW47CiAJCQlpbmZvID0gaHRvbmwobXR1KTsKIAkJfQogCQkvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2YKQEAgLTE5NDYsNiAmIzQzOzE5NTIsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsCiAJCWlmIChwc2tiX3B1bGwoc2tiLCBvZmZzZXQyKSA9PSBOVUxMKQogCQkJZ290byBpZ25vcmVfdHVubmVsOwogCQlza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTsKJiM0MzsJCS8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi8KJiM0MzsJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhsZW5fb3JpZykpCiYjNDM7CQkJZ290byBpZ25vcmVfdHVubmVsOwogCQlJUF9WU19EQkcoMTIsICYjMzQ7U2VuZGluZyBJQ01QIGZvciAlcEk0LSZndDslcEk0OiB0PSV1LCBjPSV1LCBpPSV1XG4mIzM0OywKIAkJCSZhbXA7aXBfaGRyKHNrYiktJmd0O3NhZGRyLCAmYW1wO2lwX2hkcihza2IpLSZndDtkYWRkciwKIAkJCXR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpcF92c19pbl9pY21wYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBtb3JlIHJvYnVzdCBjaGVja3MgZm9yIHRoZSBJQ01QIGhlYWRlci4gSW5zdGVhZCBvZiBqdXN0IGEgc2ltcGxlIGBjaWggPT0gTlVMTGAgY2hlY2ssIGl0IG5vdyB2ZXJpZmllcyBgY2loICZhbXA7JmFtcDsgY2loLSZndDt2ZXJzaW9uID09IDQgJmFtcDsmYW1wOyBjaWgtJmd0O2lobCAmZ3Q7PSA1YC4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBjb25maXJtaW5nIGl0JiMzOTtzIGEgdmFsaWQgSVB2NCBoZWFkZXIgYW5kIGVuc3VyaW5nIHRoZSBoZWFkZXIgbGVuZ3RoIGlzIGF0IGxlYXN0IHRoZSBtaW5pbXVtLCB3aGljaCBwcmV2ZW50cyBwb3RlbnRpYWwgY3Jhc2hlcyBvciBzZWN1cml0eSBpc3N1ZXMgZnJvbSBtYWxmb3JtZWQgcGFja2V0cy4KCkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApYCBhbmQgYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBUaGlzIGlzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGRhdGEgaXMgYWN0dWFsbHkgKnByZXNlbnQqIGFuZCBhY2Nlc3NpYmxlIGluIHRoZSBza2IgaGVhZHJvb20gYmVmb3JlIGFjY2Vzc2luZyBpdC4gQXZvaWRpbmcgcG90ZW50aWFsIGBOVUxMYCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIHJlYWRzIGlzIHBhcmFtb3VudCBpbiBuZXR3b3JrIGNvZGUuIFB1bGxpbmcgdGhlIGhlYWRlciBpbnRvIHRoZSBsaW5lYXIgYXJlYSBvZiB0aGUgc2tiIGlzIHByb2JhYmx5IG5lY2Vzc2FyeSBmb3Igc3Vic2VxdWVudCBwcm9jZXNzaW5nLgoKTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gc2VlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGJldCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGlzIHdoZXJlIGBJUF9WU2AgaXMgZGVmaW5lZC4gSSYjMzk7bGwgcXVpY2tseSBncmVwIGZvciB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uIG9yIHRoZSBgSVBfVlNgIGNvbmZpZyBzeW1ib2wgdG8gY29uZmlybSB3aGljaCBjb25maWd1cmF0aW9ucyBlbmFibGUgdGhpcyBjb2RlIHBhdGguIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTc1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjE3NTY6aXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVx0ICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0pXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg3LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxOTg4OnN0YXRpYyBpbnQgaXBfdnNfaW5faWNtcF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTk4OS1cdFx0XHQgICAgaW50ICpyZWxhdGVkLCB1bnNpZ25lZCBpbnQgaG9va251bSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTIwOTU9aXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ0LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTQ1Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcF92NihpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDYtXHRcdFx0XHRcdFx0ICAgICAgIGhvb2tudW0sIFx1MDAyNmlwaCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTU0LVx0XHRcdGludCByZWxhdGVkO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMTU1Olx0XHRcdGludCB2ZXJkaWN0ID0gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFx1MDAyNnJlbGF0ZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNTYtXHRcdFx0XHRcdFx0ICAgIGhvb2tudW0pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4My0gKiAgICAgIGJ1dCBJQ01QIGRlc3RpbmVkIGZvciAwLjAuMC4wLzAgY2Fubm90IG5vdCBiZSBlYXNpbHkgbWFya2VkIGFuZFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg0OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIyODU6ICogICAgICBhbmQgc2VuZCB0aGVtIHRvIGlwX3ZzX2luX2ljbXAuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIyODYtICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMjg4PWlwX3ZzX2ZvcndhcmRfaWNtcCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMxMDpcdFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rLCBcdTAwMjZpcGhkcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIzMTEtI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzEzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMzE0Olx0cmV0dXJuIGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcdTAwMjZyLCBzdGF0ZS1cdTAwM2Vob29rKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMxNS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYz0xNDcxPWlwX3ZzX2RyX3htaXRfdjYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUwMi0gKlx0SUNNUCBwYWNrZXQgdHJhbnNtaXR0ZXJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6MTUwMzogKlx0Y2FsbGVkIGJ5IHRoZSBpcF92c19pbl9pY21wXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTE1MDQtICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgaW4gYGlwX3ZzX2luX2ljbXBgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBhbiBhc3N1bXB0aW9uIGFib3V0IHRoZSBJUCBoZWFkZXImIzM5O3MgbG9jYXRpb24gd2l0aGluIHRoZSBgc2tiYC4gVGhlIGNvZGUmIzM5O3MgdXNpbmcgYHNrYl9oZWFkZXJfcG9pbnRlcmAsIHdoaWNoIGlzIGZpbmUsIGJ1dCBpdCB0aGVuIGRpdmVzIGluIGFzc3VtaW5nIHRoZSBoZWFkZXIgaXMgKmFsd2F5cyogbGluZWFyLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgZ2V0IHRyaWNreSBiZWNhdXNlIGBza2JfaGVhZGVyX3BvaW50ZXJgIGNhbiBoYW5kIGJhY2sgYSBwb2ludGVyIHRvIGEgbG9jYWwgYnVmZmVyIHdoZW4gdGhlIGRhdGEmIzM5O3Mgbm90IGNvbnRpZ3VvdXMuIFRoZW4gd2UgaGl0IGBjaWgtJmd0O2lobGAgYW5kIGxhdGVyIGBwc2tiX3B1bGxgIGFuZCBgaXBfaGRyKHNrYilgLCBhbGwgb2Ygd2hpY2ggKmRlbWFuZCogdGhhdCB0aGUgaGVhZGVyIGJlIGluIHRoZSBsaW5lYXIgcGFydC4gVGhlIGZpeCwgYWRkaW5nIGBwc2tiX21heV9wdWxsYCwgaXMgcHJlY2lzZWx5IHdoYXQmIzM5O3MgbmVlZGVkIHRvIGd1YXJhbnRlZSBsaW5lYXJpdHkgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBvcGVyYXRpb25zLiBTbWFydC4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBhZGp1c3RtZW50IHRvIHRoZSBJUFZTIGNvcmUgbG9naWMsIGltcGFjdGluZyBob3cgaXQgaGFuZGxlcyBJQ01QIHRyYWZmaWMuIEdpdmVuIHRoYXQgaXQgY2hhbmdlcyB0aGUgZnVuZGFtZW50YWwgaGFuZGxpbmcgb2YgZGF0YSwgSSYjMzk7ZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciB0aG9yb3VnaCBmdXp6aW5nLiBXZSBuZWVkIHRvIHRocm93IGV2ZXJ5dGhpbmcgd2UgY2FuIGF0IGl0IHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIGVkZ2UgY2FzZXMgb3IgZGF0YSBjb3JydXB0aW9uIHNjZW5hcmlvcy4KCkkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyBmb3IgSVBWUyB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3MgZm9yIElQVlMgSUNNUC4gSSBuZWVkIHRvIGtub3cgd2hhdCBjb25maWcgb3B0aW9ucyBlbmFibGUgSVBWUyBzcGVjaWZpY2FsbHkgc28gSSBjYW4gc2V0IHVwIGEgcHJvcGVyIHRlc3QgZW52aXJvbm1lbnQuIEkgd2lsbCBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0lQX1ZTYCBvYnZpb3VzbHksIGFuZCB3aGF0ZXZlciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBxdWljayBtZW50YWwgcnVuZG93biBvbiB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgSVBfVlNgIENhcGFiaWxpdHkqKgoKUmlnaHQsIHNvLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgSVBfVlNgIGFsb25lIHdpbGwgY3V0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgZW5jb21wYXNzZXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBJQ01QLiBPa2F5LCBJIHJlY2FsbCBzZWVpbmcgYGlwX3ZzX2luX2ljbXBgIHJlZmVyZW5jZWQgc29tZXdoZXJlLCBhbmQgbXkgaW5zdGluY3QgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB3aXRoaW4gYGlwX3ZzX2NvcmUuY2AuIExldCBtZSBjb25maXJtIHRoYXQuIEFuZCBzaW5jZSBJIGFtIGF0IGl0IEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBJIHNob3VsZCBiZSBhd2FyZSBvZiBpbiB0aGUgTWFrZWZpbGUsIGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzYCBkaXJlY3RvcnkuIEdvdHRhIG1ha2Ugc3VyZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xND1pcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNjppcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTctXHRcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cdCAgIFx0XHQgICBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5OTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgdGhlIElQVlMgTW9kdWxlIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgSVBWUyBtb2R1bGVzIGFyZSBwdXQgdG9nZXRoZXIuIEkga25vdyB0aGF0IGBpcF92c19jb3JlLm9gIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGF0IGBpcF92cy1vYmpzYCB0aGluZy4gQW5kIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0JiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSwgcmlnaHQ/IE15IG1lbnRhbCBtb2RlbCBzaG93cyB0aGF0LCB3aGVuIHRoZSBgQ09ORklHX0lQX1ZTYCBvcHRpb24gaXMgZW5hYmxlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCwgdGhhdCYjMzk7cyB3aGVuIGBpcF92cy1vYmpzYCBnZXRzIGJ1aWx0LgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBgaXBfdnMtb2Jqc2AgaXMgZGVmaW5lZCBieSB0aGUgbGluZSBgb2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub2AuIFRoYXQmIzM5O3MgdGhlIGxpbmsuIFNvIGBDT05GSUdfSVBfVlNgIGlzIHRoZSB0cmlnZ2VyLCBhbmQgYGlwX3ZzLm9gIGlzIGluY2x1ZGVkIHZpYSBgb2JqLWAuIEdvdCBpdC4gSnVzdCBkb3VibGUtY2hlY2tpbmcgZXZlcnl0aGluZyB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotXFwkXFwoQ09ORklHX0lQX1ZTXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xNj1pcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTIyLSMgSVBWUyBjb3JlXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQ1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgSVBfVlNgIGNvbmZpZ3VyYXRpb24gY2hhbmdlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBtb2RpZmllZCBmdW5jdGlvbiwgYGlwX3ZzX2luX2ljbXBgLiBJcyB0aGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGRpcmVjdGx5IGltcGFjdGVkLCBvciBhcmUgdGhlcmUgb3RoZXJzIGx1cmtpbmcgaW4gdGhpcyBwYXRjaD8gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0JiMzOTtzIGp1c3QgdGhpcyBvbmUuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgaWYgYGlwX3ZzX2luX2ljbXBgIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSwgY3JpdGljYWwgcGF0aCBmdW5jdGlvbi4gSXQgaGFuZGxlcyBJQ01QIHBhY2tldHMgc3BlY2lmaWNhbGx5IGZvciBJUFZTLiBUaGF0IG5hcnJvd3MgaXRzIHNjb3BlIGNvbnNpZGVyYWJseTsgaXQmIzM5O3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlLCB1YmlxdWl0b3VzIGZ1bmN0aW9uIGxpa2UgYGlwX3JjdmAgb3IgYGtmcmVlYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzcGVjaWZpYyB0byBJUFZTIGFuZCBJQ01QLCBtYWtpbmcgaXQgYSBnb29kLCB3ZWxsLWRlZmluZWQgdGFyZ2V0IGZvciBhbmFseXNpcy4KCkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGlzIHBhdGNoJiMzOTtzIGltcGFjdC4gVGhlIHBhdGNoIG1lbnRpb25zIGhhbmRsaW5nICYjMzQ7SVBJUC9VRFAvR1JFIHR1bm5lbCBwYWNrZXRzJiMzNDsgYXMgd2VsbC4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBJUFZTIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0byBzdXBwb3J0IHRoZXNlIHR1bm5lbHMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZvciBhbnkgdHVubmVsLXJlbGF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0dW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNi1cdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3Olx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOC1cdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBJUFZTIFR1bm5lbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eSBmaXRzIGludG8gSVBWUy4gSXQgZmVlbHMgbGlrZSB0dW5uZWxpbmcgaXMsIGF0IGxlYXN0IHBhcnRpYWxseSwgYSBjb3JlIGZlYXR1cmUgYmFrZWQgcmlnaHQgaW50byBJUFZTIGl0c2VsZi4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgaW50dWl0aW9uLgoKVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgd29ya3MsIHNwZWNpZmljYWxseSBpZiBhbnkgc3BlY2lhbCBwcm90b2NvbCBmbGFncyBhcmUgbmVlZGVkIG9yIGlmIGl0JiMzOTtzIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseS4gSSBzaG91bGQgbG9vayBpbnRvIGZsYWdzIHN1Y2ggYXMgYElQX1ZTX1BST1RPX1VEUGAgb3Igc2ltaWxhciwgdG8gdW5kZXJzdGFuZCBob3cgVURQIHRyYWZmaWMgaXMgcGFydGljdWxhcmx5IGhhbmRsZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBjb25maWd1cmluZyB0dW5uZWxpbmcgaW4gSVBWUy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2UgY29kZSBoYXZlIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfUFJPVE8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBhcHByb2FjaCBpcyBnb2luZyB0byBiZSBkaXJlY3QuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIOKAkyBzcGVjaWZpY2FsbHksIGxldCYjMzk7cyBgZ3JlcGAgZm9yIGAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7YCB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGFuZCB0aGF0IGtleXdvcmQgaXMgcHJlY2lzZWx5IHdoYXQgSSBleHBlY3QgdG8gZGVmaW5lIHRoZSByZWxldmFudCBzeW1ib2xzIGZvciBJUFZTLiBUaGlzIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCBhbGwgdGhlIHNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIGRlcGVuZGVuY2llcyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdpdGhvdXQgZ2V0dGluZyBidXJpZWQgaW4gdGhlIGJyb2FkZXIgbmV0ZmlsdGVyIGFyY2hpdGVjdHVyZS4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBkZWVwZXIgYXMgbmVlZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgcXVpY2sgYW5kIGVmZmljaWVudCB3YXkgdG8gbWFwIG91dCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSBoYXZpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIE15IFdvcmsgJmFtcDsgRGl2aW5nIERlZXBlcioqCgpXYWl0IGEgbWludXRlLi4uIGRpZG4mIzM5O3QgSSBqdXN0IGFkZHJlc3MgdGhpcz8gSSBmZWVsIGxpa2UgSSYjMzk7dmUgYWxyZWFkeSB0YWNrbGVkIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMsIHNvIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIE9rYXksIHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBJUFZTIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGF0IGFsbCBvY2N1cnJlbmNlcyBvZiBgY29uZmlnIGAgcmVsYXRlZCB0byBpdC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBqdXN0IGBncmVwYCBmb3IgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgSSBtaWdodCBoYXZlIG1pc3NlZCBpbml0aWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTAwPWNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcdElQX1ZTX1dMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXHRJUF9WU19MQkxDXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzUyOmNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBJUFZTIFByb3RvY29sIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBJUFZTIHByb3RvY29sIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgZm9yIFRDUCAoYElQX1ZTX1BST1RPX1RDUGApIGFuZCBVRFAgKGBJUF9WU19QUk9UT19VRFBgKS4gQXJlIHRoZXNlIGVuYWJsZWQgb3V0LW9mLXRoZS1ib3gsIG9yIGRvIHRoZXkgcmVseSBvbiBhbm90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZT8gTXkgaHVuY2ggaXMgdGhhdCB0aGV5JiMzOTtyZSBlaXRoZXIgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGRlZmluZWQgZWxzZXdoZXJlLgoKVG8gbmFpbCB0aGlzIGRvd24sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIElQVlMgc291cmNlIHRyZWUuIEkgbmVlZCB0byBjaGVjayBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHNlZSBob3cgdGhlIGBJUF9WU19QUk9UT2Agc3ltYm9sIGlzIGRlZmluZWQgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgYW5zd2VyIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lQX1ZTX1BST1RPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcJiMzNDtJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVENQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7VENQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg1OmNvbmZpZ1x0SVBfVlNfUFJPVE9fVURQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04Ni1cdGJvb2wgXCYjMzQ7VURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjkxOmNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhfRVNQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcdGRlZl9ib29sIElQX1ZTX1BST1RPX0VTUCB8fCBJUF9WU19QUk9UT19BSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTMtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcdElQX1ZTX1BST1RPX0VTUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTUtXHRib29sIFwmIzM0O0VTUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDA6Y29uZmlnXHRJUF9WU19QUk9UT19BSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTg3CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDc4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIElQVlMgbW9kdWxlLiBJbml0aWFsbHksIEkgdGhvdWdodCBhYm91dCBpbmNsdWRpbmcgYElQX1ZTX1BST1RPX1VEUGAgYW5kIGBJUF9WU19QUk9UT19UQ1BgLCBidXQgdGhlIHBhdGNoIHByaW1hcmlseSB0b3VjaGVzIGBpcF92c19pbl9pY21wYCwgd2hpY2ggZGVhbHMgd2l0aCBJQ01QIHBhY2tldHMsIGFuZCBtZW50aW9ucyBVRFAgYW5kIEdSRSBlbmNhcHN1bGF0aW9uIGluIHRoZSBjb2RlLiBJIHRoZW4gbG9va2VkIGF0IHRoaXMgY29kZSBibG9jazoKCmBgYGMKCX0gZWxzZSBpZiAoKGNpaC0mZ3Q7cHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHwJLyogQ2FuIGJlIFVEUCBlbmNhcCAqLwoJCSAgICBjaWgtJmd0O3Byb3RvY29sID09IElQUFJPVE9fR1JFKSAmYW1wOyZhbXA7CS8qIENhbiBiZSBHUkUgZW5jYXAgKi8KCQkgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqLwoJCSAgIChza2ItJmd0O3J0YWJsZS0mZ3Q7cnRfZmxhZ3MgJmFtcDsgUlRDRl9MT0NBTCkpIHsKYGBgCgpUaGlzIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBlbmNhcHN1bGF0ZWQgVURQIG9yIEdSRSBwYWNrZXRzIGFuZCB0aGUgZXJyb3JzIGZyb20gdGhlIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBgTE9DQUxfSU5gLCBzbyBpdCYjMzk7cyBub3Qgc3RyaWN0bHkgdGllZCB0byBzcGVjaWZpYyBwcm90b2NvbHMuIEdpdmVuIHRoaXMsIEkmIzM5O2xsIHN0aWNrIHdpdGggc3BlY2lmeWluZyBvbmx5IGBJUF9WU2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vIG90aGVyIGNvbmZpZ3Mgc2VlbSB0byBiZSBkaXJlY3RseSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlIGNoYW5nZXMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3ZzX2luX2ljbXBgLgoKSSBjYW4gc2VlIHRoZXNlIGNoYW5nZXMuCgpgYGBjCkBAIC0xODA0LDkgJiM0MzsxODA1LDEwIEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqLwogCW9mZnNldCAmIzQzOz0gc2l6ZW9mKF9pY21waCk7CiAJY2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCAmYW1wO19jaXBoKTsKLQlpZiAoY2loID09IE5VTEwpCiYjNDM7CWlmICghKGNpaCAmYW1wOyZhbXA7IGNpaC0mZ3Q7dmVyc2lvbiA9PSA0ICZhbXA7JmFtcDsgY2loLSZndDtpaGwgJmd0Oz0gNSkpCiAJCXJldHVybiBORl9BQ0NFUFQ7IC8qIFRoZSBwYWNrZXQgbG9va3Mgd3JvbmcsIGlnbm9yZSAqLwogCXJhZGRyID0gKHVuaW9uIG5mX2luZXRfYWRkciAqKSZhbXA7Y2loLSZndDtkYWRkcjsKJiM0MzsJaGxlbl9pcGlwID0gY2loLSZndDtpaGwgKiA0OwogYGBgCgpUaGlzIGlzIHZhbGlkYXRpbmcgdGhlIGlubmVyIElQIGhlYWRlciAodmVyc2lvbiBhbmQgaWhsKSB3aGljaCBpcyBjcnVjaWFsLgoKYGBgYwpAQCAtMTkyMSw2ICYjNDM7MTkyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkJCQlnb3RvIGlnbm9yZV90dW5uZWw7CiAJCQlvZmZzZXQyIC09IGlobCAmIzQzOyBzaXplb2YoX2ljbXBoKTsKIAkJCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwomIzQzOwkJCS8qIEVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gaGVhZHJvb20gKi8KJiM0MzsJCQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApKQomIzQzOwkJCQlnb3RvIGlnbm9yZV90dW5uZWw7CiBgYGAKClRoaXMgbm93IGNoZWNrcyB0byBlbnN1cmUgdGhlIElQIGhlYWRlciBpcyBhY3R1YWxseSBwcmVzZW50IHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IGNoYW5nZSwgZW5zdXJpbmcgdGhlIElQIGhlYWRlciBpcyBpbiB0aGUgbGluZWFyIHBhcnQgb2YgdGhlIGBza2JgLgoKSXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIGJ1ZyBmaXgsIHJlYWxseS4gSXQmIzM5O3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgYWNjZXNzIGVycm9ycyBpbiBgaXBfdnNfaW5faWNtcGAuIEFkZGluZyB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBgc2tiYCYjMzk7cyBoZWFkcm9vbSBpcyBhIHNvbGlkIGRlZmVuc2UgYWdhaW5zdCB0aGVzZSBraW5kcyBvZiBpc3N1ZXMuIEJhc2VkIG9uIHRoaXMsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGlzIGZ1bmN0aW9uLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZm9jdXMgb24gYGlwX3ZzX2luX2ljbXBgIGluIG15IHRlc3RpbmcuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGBpcF92c19pbl9pY21wYCwgc28gSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEkmIzM5O20gbm93IHJlYWR5IHRvIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjA6NDMuMzg3NzY1NTMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MDEyNDQ2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19pbl9pY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0My4zODc3NzAxMjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzkzMTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYxNDI4ZjZmOWNlNTA5ODFiODY4YmJmYjJlZDkwNWIyYzI1ZWUxMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IDkwNmYyYzM2MTY3NjM4Li41YjQyNzM0OWEyNTc1ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0xNzY3LDYgKzE3NjcsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxuIFxcdGJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTtcXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcXG4gXFx0Y2hhciAqb3V0ZXJfcHJvdG8gPSBcXFwiSVBJUFxcXCI7XFxuK1xcdHVuc2lnbmVkIGludCBobGVuX2lwaXA7XFxuIFxcdGludCB1bGVuID0gMDtcXG4gXFxuIFxcdCpyZWxhdGVkID0gMTtcXG5AQCAtMTgwNCw5ICsxODA1LDEwIEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0LyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi9cXG4gXFx0b2Zmc2V0ICs9IHNpemVvZihfaWNtcGgpO1xcbiBcXHRjaWggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmZzZXQsIHNpemVvZihfY2lwaCksIFxcdTAwMjZfY2lwaCk7XFxuLVxcdGlmIChjaWggPT0gTlVMTClcXG4rXFx0aWYgKCEoY2loIFxcdTAwMjZcXHUwMDI2IGNpaC1cXHUwMDNldmVyc2lvbiA9PSA0IFxcdTAwMjZcXHUwMDI2IGNpaC1cXHUwMDNlaWhsIFxcdTAwM2U9IDUpKVxcbiBcXHRcXHRyZXR1cm4gTkZfQUNDRVBUOyAvKiBUaGUgcGFja2V0IGxvb2tzIHdyb25nLCBpZ25vcmUgKi9cXG4gXFx0cmFkZHIgPSAodW5pb24gbmZfaW5ldF9hZGRyICopXFx1MDAyNmNpaC1cXHUwMDNlZGFkZHI7XFxuK1xcdGhsZW5faXBpcCA9IGNpaC1cXHUwMDNlaWhsICogNDtcXG4gXFxuIFxcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cXG4gXFx0dHVubmVsID0gZmFsc2U7XFxuQEAgLTE4MjIsOSArMTgyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0LyogT25seSBmb3Iga25vd24gdHVubmVsICovXFxuIFxcdFxcdGlmICghZGVzdCB8fCBkZXN0LVxcdTAwM2V0dW5fdHlwZSAhPSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfSVBJUClcXG4gXFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tXFx0XFx0b2Zmc2V0ICs9IGNpaC1cXHUwMDNlaWhsICogNDtcXG4rXFx0XFx0b2Zmc2V0ICs9IGhsZW5faXBpcDtcXG4gXFx0XFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcXHUwMDI2X2NpcGgpO1xcbi1cXHRcXHRpZiAoY2loID09IE5VTEwpXFxuK1xcdFxcdGlmICghKGNpaCBcXHUwMDI2XFx1MDAyNiBjaWgtXFx1MDAzZXZlcnNpb24gPT0gNCBcXHUwMDI2XFx1MDAyNiBjaWgtXFx1MDAzZWlobCBcXHUwMDNlPSA1KSlcXG4gXFx0XFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXFxuIFxcdFxcdHR1bm5lbCA9IHRydWU7XFxuIFxcdH0gZWxzZSBpZiAoKGNpaC1cXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHxcXHQvKiBDYW4gYmUgVURQIGVuY2FwICovXFxuQEAgLTE4MzYsNyArMTgzOCw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0LyogTm9uLWZpcnN0IGZyYWdtZW50IGhhcyBubyBVRFAvR1JFIGhlYWRlciAqL1xcbiBcXHRcXHRpZiAodW5saWtlbHkoY2loLVxcdTAwM2VmcmFnX29mZiBcXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxcbiBcXHRcXHRcXHRyZXR1cm4gTkZfQUNDRVBUO1xcbi1cXHRcXHRvZmZzZXQyID0gb2Zmc2V0ICsgY2loLVxcdTAwM2VpaGwgKiA0O1xcbitcXHRcXHRvZmZzZXQyID0gb2Zmc2V0ICsgaGxlbl9pcGlwO1xcbiBcXHRcXHRpZiAoY2loLVxcdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCkge1xcbiBcXHRcXHRcXHR1bGVuID0gaXB2c191ZHBfZGVjYXAoaXB2cywgc2tiLCBvZmZzZXQyLCBBRl9JTkVULFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICByYWRkciwgXFx1MDAyNmlwcm90byk7XFxuQEAgLTE5MDUsNiArMTkwNyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHR1bm5lbCkge1xcbitcXHRcXHR1bnNpZ25lZCBpbnQgaGxlbl9vcmlnID0gY2loLVxcdTAwM2VpaGwgKiA0O1xcbiBcXHRcXHRfX2JlMzIgaW5mbyA9IGljLVxcdTAwM2V1bi5nYXRld2F5O1xcbiBcXHRcXHRfX3U4IHR5cGUgPSBpYy1cXHUwMDNldHlwZTtcXG4gXFx0XFx0X191OCBjb2RlID0gaWMtXFx1MDAzZWNvZGU7XFxuQEAgLTE5MjEsNiArMTkyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0XFx0XFx0XFx0Z290byBpZ25vcmVfdHVubmVsO1xcbiBcXHRcXHRcXHRvZmZzZXQyIC09IGlobCArIHNpemVvZihfaWNtcGgpO1xcbiBcXHRcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4rXFx0XFx0XFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xcbitcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApKVxcbitcXHRcXHRcXHRcXHRnb3RvIGlnbm9yZV90dW5uZWw7XFxuIFxcdFxcdFxcdElQX1ZTX0RCRygxMiwgXFxcIklDTVAgZm9yICVzICVwSTQtXFx1MDAzZSVwSTQ6IG10dT0ldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ICBvdXRlcl9wcm90bywgXFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VzYWRkcixcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2aXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyLCBtdHUpO1xcbkBAIC0xOTM2LDggKzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxuIFxcdFxcdFxcdFxcdGlmIChkZXN0X2RzdClcXG4gXFx0XFx0XFx0XFx0XFx0bXR1ID0gZHN0X210dShkZXN0X2RzdC1cXHUwMDNlZHN0X2NhY2hlKTtcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRpZiAobXR1IFxcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW47XFxuK1xcdFxcdFxcdGlmIChtdHUgXFx1MDAzZSA2OCArIGhsZW5faXBpcCArIHVsZW4pXFxuK1xcdFxcdFxcdFxcdG10dSAtPSBobGVuX2lwaXAgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5AQCAtMTk0Niw2ICsxOTUyLDkgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRpZiAocHNrYl9wdWxsKHNrYiwgb2Zmc2V0MikgPT0gTlVMTClcXG4gXFx0XFx0XFx0Z290byBpZ25vcmVfdHVubmVsO1xcbiBcXHRcXHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcXG4rXFx0XFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xcbitcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxcbitcXHRcXHRcXHRnb3RvIGlnbm9yZV90dW5uZWw7XFxuIFxcdFxcdElQX1ZTX0RCRygxMiwgXFxcIlNlbmRpbmcgSUNNUCBmb3IgJXBJNC1cXHUwMDNlJXBJNDogdD0ldSwgYz0ldSwgaT0ldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgXFx1MDAyNmlwX2hkcihza2IpLVxcdTAwM2VkYWRkcixcXG4gXFx0XFx0XFx0dHlwZSwgY29kZSwgbnRvaGwoaW5mbykpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0My45ODI2MTAwNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMDA2MzkwNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfaW5faWNtcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgaW4gYGlwX3ZzX2luX2ljbXBgIGJ5IGFkZGluZyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgdGhlIGlubmVyIElQIGhlYWRlciAodmVyc2lvbiBhbmQgaWhsKSBhbmQgZW5zdXJpbmcgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIHRoZSBza2IgaGVhZHJvb20gdXNpbmcgYHBza2JfbWF5X3B1bGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGhhbmRsZXMgSUNNUCBwYWNrZXRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTQyOGY2ZjljZTUwOTgxYjg2OGJiZmIyZWQ5MDViMmMyNWVlMTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwNToyMDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCA5MDZmMmMzNjE2NzYzOC4uNWI0MjczNDlhMjU3NWYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMTc2Nyw2ICsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCJJUElQXCI7XG4rXHR1bnNpZ25lZCBpbnQgaGxlbl9pcGlwO1xuIFx0aW50IHVsZW4gPSAwO1xuIFxuIFx0KnJlbGF0ZWQgPSAxO1xuQEAgLTE4MDQsOSArMTgwNSwxMCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHQvKiBOb3cgZmluZCB0aGUgY29udGFpbmVkIElQIGhlYWRlciAqL1xuIFx0b2Zmc2V0ICs9IHNpemVvZihfaWNtcGgpO1xuIFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcdTAwMjZfY2lwaCk7XG4tXHRpZiAoY2loID09IE5VTEwpXG4rXHRpZiAoIShjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1KSlcbiBcdFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXG4gXHRyYWRkciA9ICh1bmlvbiBuZl9pbmV0X2FkZHIgKilcdTAwMjZjaWgtXHUwMDNlZGFkZHI7XG4rXHRobGVuX2lwaXAgPSBjaWgtXHUwMDNlaWhsICogNDtcbiBcbiBcdC8qIFNwZWNpYWwgY2FzZSBmb3IgZXJyb3JzIGZvciBJUElQL1VEUC9HUkUgdHVubmVsIHBhY2tldHMgKi9cbiBcdHR1bm5lbCA9IGZhbHNlO1xuQEAgLTE4MjIsOSArMTgyNCw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0LyogT25seSBmb3Iga25vd24gdHVubmVsICovXG4gXHRcdGlmICghZGVzdCB8fCBkZXN0LVx1MDAzZXR1bl90eXBlICE9IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9JUElQKVxuIFx0XHRcdHJldHVybiBORl9BQ0NFUFQ7XG4tXHRcdG9mZnNldCArPSBjaWgtXHUwMDNlaWhsICogNDtcbitcdFx0b2Zmc2V0ICs9IGhsZW5faXBpcDtcbiBcdFx0Y2loID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgb2Zmc2V0LCBzaXplb2YoX2NpcGgpLCBcdTAwMjZfY2lwaCk7XG4tXHRcdGlmIChjaWggPT0gTlVMTClcbitcdFx0aWYgKCEoY2loIFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNldmVyc2lvbiA9PSA0IFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNlaWhsIFx1MDAzZT0gNSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDsgLyogVGhlIHBhY2tldCBsb29rcyB3cm9uZywgaWdub3JlICovXG4gXHRcdHR1bm5lbCA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKChjaWgtXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgfHxcdC8qIENhbiBiZSBVRFAgZW5jYXAgKi9cbkBAIC0xODM2LDcgKzE4MzgsNyBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG4gXHRcdFx0cmV0dXJuIE5GX0FDQ0VQVDtcbi1cdFx0b2Zmc2V0MiA9IG9mZnNldCArIGNpaC1cdTAwM2VpaGwgKiA0O1xuK1x0XHRvZmZzZXQyID0gb2Zmc2V0ICsgaGxlbl9pcGlwO1xuIFx0XHRpZiAoY2loLVx1MDAzZXByb3RvY29sID09IElQUFJPVE9fVURQKSB7XG4gXHRcdFx0dWxlbiA9IGlwdnNfdWRwX2RlY2FwKGlwdnMsIHNrYiwgb2Zmc2V0MiwgQUZfSU5FVCxcbiBcdFx0XHRcdFx0ICAgICAgcmFkZHIsIFx1MDAyNmlwcm90byk7XG5AQCAtMTkwNSw2ICsxOTA3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0fVxuIFxuIFx0aWYgKHR1bm5lbCkge1xuK1x0XHR1bnNpZ25lZCBpbnQgaGxlbl9vcmlnID0gY2loLVx1MDAzZWlobCAqIDQ7XG4gXHRcdF9fYmUzMiBpbmZvID0gaWMtXHUwMDNldW4uZ2F0ZXdheTtcbiBcdFx0X191OCB0eXBlID0gaWMtXHUwMDNldHlwZTtcbiBcdFx0X191OCBjb2RlID0gaWMtXHUwMDNlY29kZTtcbkBAIC0xOTIxLDYgKzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgKyBzaXplb2YoX2ljbXBoKTtcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4rXHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbitcdFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0XHRJUF9WU19EQkcoMTIsIFwiSUNNUCBmb3IgJXMgJXBJNC1cdTAwM2UlcEk0OiBtdHU9JXVcXG5cIixcbiBcdFx0XHRcdCAgb3V0ZXJfcHJvdG8sIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZXNhZGRyLFxuIFx0XHRcdFx0ICBcdTAwMjZpcF9oZHIoc2tiKS1cdTAwM2VkYWRkciwgbXR1KTtcbkBAIC0xOTM2LDggKzE5NDIsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuK1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgaGxlbl9pcGlwICsgdWxlbilcbitcdFx0XHRcdG10dSAtPSBobGVuX2lwaXAgKyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuQEAgLTE5NDYsNiArMTk1Miw5IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0aWYgKHBza2JfcHVsbChza2IsIG9mZnNldDIpID09IE5VTEwpXG4gXHRcdFx0Z290byBpZ25vcmVfdHVubmVsO1xuIFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0LyogRW5zdXJlIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiBoZWFkcm9vbSAqL1xuK1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpKVxuK1x0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBcdFx0SVBfVlNfREJHKDEyLCBcIlNlbmRpbmcgSUNNUCBmb3IgJXBJNC1cdTAwM2UlcEk0OiB0PSV1LCBjPSV1LCBpPSV1XFxuXCIsXG4gXHRcdFx0XHUwMDI2aXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIFx1MDAyNmlwX2hkcihza2IpLVx1MDAzZWRhZGRyLFxuIFx0XHRcdHR5cGUsIGNvZGUsIG50b2hsKGluZm8pKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIwOjQzLjk4MjYxMTQ0OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTE1NDI1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFZTIElDTVAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlwX3ZzX2luX2ljbXBgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIG1vcmUgcm9idXN0IGNoZWNrcyBmb3IgdGhlIElDTVAgaGVhZGVyLiBJbnN0ZWFkIG9mIGp1c3QgYSBzaW1wbGUgYGNpaCA9PSBOVUxMYCBjaGVjaywgaXQgbm93IHZlcmlmaWVzIGBjaWggXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2V2ZXJzaW9uID09IDQgXHUwMDI2XHUwMDI2IGNpaC1cdTAwM2VpaGwgXHUwMDNlPSA1YC4gVGhpcyBpcyBnb29kOyBpdCdzIGNvbmZpcm1pbmcgaXQncyBhIHZhbGlkIElQdjQgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgaGVhZGVyIGxlbmd0aCBpcyBhdCBsZWFzdCB0aGUgbWluaW11bSwgd2hpY2ggcHJldmVudHMgcG90ZW50aWFsIGNyYXNoZXMgb3Igc2VjdXJpdHkgaXNzdWVzIGZyb20gbWFsZm9ybWVkIHBhY2tldHMuXG5cbkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX2lwaXApYCBhbmQgYHBza2JfbWF5X3B1bGwoc2tiLCBobGVuX29yaWcpYC4gUmlnaHQsIHRoYXQncyBpbXBvcnRhbnQuIFRoaXMgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgZGF0YSBpcyBhY3R1YWxseSAqcHJlc2VudCogYW5kIGFjY2Vzc2libGUgaW4gdGhlIHNrYiBoZWFkcm9vbSBiZWZvcmUgYWNjZXNzaW5nIGl0LiBBdm9pZGluZyBwb3RlbnRpYWwgYE5VTExgIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMgaXMgcGFyYW1vdW50IGluIG5ldHdvcmsgY29kZS4gUHVsbGluZyB0aGUgaGVhZGVyIGludG8gdGhlIGxpbmVhciBhcmVhIG9mIHRoZSBza2IgaXMgcHJvYmFibHkgbmVjZXNzYXJ5IGZvciBzdWJzZXF1ZW50IHByb2Nlc3NpbmcuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIGJldCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGlzIHdoZXJlIGBJUF9WU2AgaXMgZGVmaW5lZC4gSSdsbCBxdWlja2x5IGdyZXAgZm9yIHRoZSBgaXBfdnNfaW5faWNtcGAgZnVuY3Rpb24gb3IgdGhlIGBJUF9WU2AgY29uZmlnIHN5bWJvbCB0byBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSB0aGlzIGNvZGUgcGF0aC4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0OC43MzQxNTY1ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5ODUyNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2luX2ljbXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTE3NTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTc1NjppcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xNzU3LVxcdCAgICAgIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg3LSNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTk4ODpzdGF0aWMgaW50IGlwX3ZzX2luX2ljbXBfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xOTg5LVxcdFxcdFxcdCAgICBpbnQgKnJlbGF0ZWQsIHVuc2lnbmVkIGludCBob29rbnVtLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz0yMDk1PWlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTQ0LVxcdFxcdFxcdGludCByZWxhdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjE0NTpcXHRcXHRcXHRpbnQgdmVyZGljdCA9IGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcXHUwMDI2cmVsYXRlZCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNDYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGhvb2tudW0sIFxcdTAwMjZpcGgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMTU0LVxcdFxcdFxcdGludCByZWxhdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjE1NTpcXHRcXHRcXHRpbnQgdmVyZGljdCA9IGlwX3ZzX2luX2ljbXAoaXB2cywgc2tiLCBcXHUwMDI2cmVsYXRlZCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTIxNTYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGhvb2tudW0pO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMjgzLSAqICAgICAgYnV0IElDTVAgZGVzdGluZWQgZm9yIDAuMC4wLjAvMCBjYW5ub3Qgbm90IGJlIGVhc2lseSBtYXJrZWQgYW5kXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg0OiAqICAgICAgc2VudCB0byBpcF92c19pbl9pY21wLiBTbywgY2F0Y2ggdGhlbSBhdCB0aGUgTkZfSU5FVF9GT1JXQVJEIGNoYWluXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyMjg1OiAqICAgICAgYW5kIHNlbmQgdGhlbSB0byBpcF92c19pbl9pY21wLlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjI4Ni0gKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjI4OD1pcF92c19mb3J3YXJkX2ljbXAodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjMwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjIzMTA6XFx0XFx0cmV0dXJuIGlwX3ZzX2luX2ljbXBfdjYoaXB2cywgc2tiLCBcXHUwMDI2ciwgc3RhdGUtXFx1MDAzZWhvb2ssIFxcdTAwMjZpcGhkcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzExLSNlbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzEzLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjMxNDpcXHRyZXR1cm4gaXBfdnNfaW5faWNtcChpcHZzLCBza2IsIFxcdTAwMjZyLCBzdGF0ZS1cXHUwMDNlaG9vayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yMzE1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9MTQ3MT1pcF92c19kcl94bWl0X3Y2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMTUwMi0gKlxcdElDTVAgcGFja2V0IHRyYW5zbWl0dGVyXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYzoxNTAzOiAqXFx0Y2FsbGVkIGJ5IHRoZSBpcF92c19pbl9pY21wXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0xNTA0LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMDo0OC44NjQwMTQ4MjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwMzk1MzU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgSUNNUCBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpbiBgaXBfdnNfaW5faWNtcGAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGFuIGFzc3VtcHRpb24gYWJvdXQgdGhlIElQIGhlYWRlcidzIGxvY2F0aW9uIHdpdGhpbiB0aGUgYHNrYmAuIFRoZSBjb2RlJ3MgdXNpbmcgYHNrYl9oZWFkZXJfcG9pbnRlcmAsIHdoaWNoIGlzIGZpbmUsIGJ1dCBpdCB0aGVuIGRpdmVzIGluIGFzc3VtaW5nIHRoZSBoZWFkZXIgaXMgKmFsd2F5cyogbGluZWFyLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgZ2V0IHRyaWNreSBiZWNhdXNlIGBza2JfaGVhZGVyX3BvaW50ZXJgIGNhbiBoYW5kIGJhY2sgYSBwb2ludGVyIHRvIGEgbG9jYWwgYnVmZmVyIHdoZW4gdGhlIGRhdGEncyBub3QgY29udGlndW91cy4gVGhlbiB3ZSBoaXQgYGNpaC1cdTAwM2VpaGxgIGFuZCBsYXRlciBgcHNrYl9wdWxsYCBhbmQgYGlwX2hkcihza2IpYCwgYWxsIG9mIHdoaWNoICpkZW1hbmQqIHRoYXQgdGhlIGhlYWRlciBiZSBpbiB0aGUgbGluZWFyIHBhcnQuIFRoZSBmaXgsIGFkZGluZyBgcHNrYl9tYXlfcHVsbGAsIGlzIHByZWNpc2VseSB3aGF0J3MgbmVlZGVkIHRvIGd1YXJhbnRlZSBsaW5lYXJpdHkgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBvcGVyYXRpb25zLiBTbWFydC5cblxuVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGFkanVzdG1lbnQgdG8gdGhlIElQVlMgY29yZSBsb2dpYywgaW1wYWN0aW5nIGhvdyBpdCBoYW5kbGVzIElDTVAgdHJhZmZpYy4gR2l2ZW4gdGhhdCBpdCBjaGFuZ2VzIHRoZSBmdW5kYW1lbnRhbCBoYW5kbGluZyBvZiBkYXRhLCBJJ2Qgc2F5IHRoaXMgaXMgZGVmaW5pdGVseSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byB0aHJvdyBldmVyeXRoaW5nIHdlIGNhbiBhdCBpdCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBlZGdlIGNhc2VzIG9yIGRhdGEgY29ycnVwdGlvbiBzY2VuYXJpb3MuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyBmb3IgSVBWUyB0byBiZSBzdXJlLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBmb3IgSVBWUyBJQ01QLiBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbmZpZyBvcHRpb25zIGVuYWJsZSBJUFZTIHNwZWNpZmljYWxseSBzbyBJIGNhbiBzZXQgdXAgYSBwcm9wZXIgdGVzdCBlbnZpcm9ubWVudC4gSSB3aWxsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfSVBfVlNgIG9idmlvdXNseSwgYW5kIHdoYXRldmVyIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTUuNjY3OTcxMDY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzY0NjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTUuNzg1NjIzMjg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzkzNzcwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIG1lbnRhbCBydW5kb3duIG9uIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYElQX1ZTYCBDYXBhYmlsaXR5KipcblxuUmlnaHQsIHNvLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBgSVBfVlNgIGFsb25lIHdpbGwgY3V0IGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgZW5jb21wYXNzZXMsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBJQ01QLiBPa2F5LCBJIHJlY2FsbCBzZWVpbmcgYGlwX3ZzX2luX2ljbXBgIHJlZmVyZW5jZWQgc29tZXdoZXJlLCBhbmQgbXkgaW5zdGluY3QgaXMgdGhhdCBpdCdzIHByb2JhYmx5IHdpdGhpbiBgaXBfdnNfY29yZS5jYC4gTGV0IG1lIGNvbmZpcm0gdGhhdC4gQW5kIHNpbmNlIEkgYW0gYXQgaXQgSSBzaG91bGQgc2VlIGlmIHRoZXJlIGlzIGFueXRoaW5nIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGluIHRoZSBNYWtlZmlsZSwgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnNgIGRpcmVjdG9yeS4gR290dGEgbWFrZSBzdXJlIGRlcGVuZGVuY2llcyBhbmQgY29tcGlsYXRpb24gYXJlIGhhbmRsZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjA1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MTguNjQ5NTYzMzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDcyNDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTQ9aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTUtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjE2OmlwX3ZzLW9ianMgOj1cXHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cXHQgICBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTE3LVxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjE4Ljc5MDMwOTEwMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDcwODk1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkV4YW1pbmluZyB0aGUgSVBWUyBNb2R1bGUgQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgSVBWUyBtb2R1bGVzIGFyZSBwdXQgdG9nZXRoZXIuIEkga25vdyB0aGF0IGBpcF92c19jb3JlLm9gIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGF0IGBpcF92cy1vYmpzYCB0aGluZy4gQW5kIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0J3MgY29yZSBmdW5jdGlvbmFsaXR5LCByaWdodD8gTXkgbWVudGFsIG1vZGVsIHNob3dzIHRoYXQsIHdoZW4gdGhlIGBDT05GSUdfSVBfVlNgIG9wdGlvbiBpcyBlbmFibGVkIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkLCB0aGF0J3Mgd2hlbiBgaXBfdnMtb2Jqc2AgZ2V0cyBidWlsdC5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi4gSSdtIHJlY2FsbGluZyB0aGF0IGBpcF92cy1vYmpzYCBpcyBkZWZpbmVkIGJ5IHRoZSBsaW5lIGBvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9gLiBUaGF0J3MgdGhlIGxpbmsuIFNvIGBDT05GSUdfSVBfVlNgIGlzIHRoZSB0cmlnZ2VyLCBhbmQgYGlwX3ZzLm9gIGlzIGluY2x1ZGVkIHZpYSBgb2JqLWAuIEdvdCBpdC4gSnVzdCBkb3VibGUtY2hlY2tpbmcgZXZlcnl0aGluZyB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTk3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MjIuMTk3NDAwNDU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY2NTYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19JUF9WU1xcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTY9aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0yMi0jIElQVlMgY29yZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjIyLjI4NzA3NDU2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUwOTUxNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYElQX1ZTYCBjb25maWd1cmF0aW9uIGNoYW5nZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGBpcF92c19pbl9pY21wYC4gSXMgdGhpcyB0aGUgb25seSBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RlZCwgb3IgYXJlIHRoZXJlIG90aGVycyBsdXJraW5nIGluIHRoaXMgcGF0Y2g/IEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCdzIGp1c3QgdGhpcyBvbmUuXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIGlmIGBpcF92c19pbl9pY21wYCBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UsIGNyaXRpY2FsIHBhdGggZnVuY3Rpb24uIEl0IGhhbmRsZXMgSUNNUCBwYWNrZXRzIHNwZWNpZmljYWxseSBmb3IgSVBWUy4gVGhhdCBuYXJyb3dzIGl0cyBzY29wZSBjb25zaWRlcmFibHk7IGl0J3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlLCB1YmlxdWl0b3VzIGZ1bmN0aW9uIGxpa2UgYGlwX3JjdmAgb3IgYGtmcmVlYC4gSXQncyBkZWZpbml0ZWx5IHNwZWNpZmljIHRvIElQVlMgYW5kIElDTVAsIG1ha2luZyBpdCBhIGdvb2QsIHdlbGwtZGVmaW5lZCB0YXJnZXQgZm9yIGFuYWx5c2lzLlxuXG5JIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhpcyBwYXRjaCdzIGltcGFjdC4gVGhlIHBhdGNoIG1lbnRpb25zIGhhbmRsaW5nIFwiSVBJUC9VRFAvR1JFIHR1bm5lbCBwYWNrZXRzXCIgYXMgd2VsbC4gVGhpcyBtYWtlcyBtZSBjb25zaWRlciBpZiBJUFZTIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0byBzdXBwb3J0IHRoZXNlIHR1bm5lbHMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZm9yIGFueSB0dW5uZWwtcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MjcuMDM4MDMyMjkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEwNDUyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHVubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTU9bWVudWNvbmZpZyBJUF9WU1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTYtXFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE3OlxcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE4LVxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMToyNy4xNzkwODM3NjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0Nzg4ODMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJUFZTIFR1bm5lbGluZyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdHVubmVsaW5nIGZ1bmN0aW9uYWxpdHkgZml0cyBpbnRvIElQVlMuIEl0IGZlZWxzIGxpa2UgdHVubmVsaW5nIGlzLCBhdCBsZWFzdCBwYXJ0aWFsbHksIGEgY29yZSBmZWF0dXJlIGJha2VkIHJpZ2h0IGludG8gSVBWUyBpdHNlbGYuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGludHVpdGlvbi5cblxuVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgd29ya3MsIHNwZWNpZmljYWxseSBpZiBhbnkgc3BlY2lhbCBwcm90b2NvbCBmbGFncyBhcmUgbmVlZGVkIG9yIGlmIGl0J3MgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5LiBJIHNob3VsZCBsb29rIGludG8gZmxhZ3Mgc3VjaCBhcyBgSVBfVlNfUFJPVE9fVURQYCBvciBzaW1pbGFyLCB0byB1bmRlcnN0YW5kIGhvdyBVRFAgdHJhZmZpYyBpcyBwYXJ0aWN1bGFybHkgaGFuZGxlZCwgYW5kIHdoYXQgb3B0aW9ucyB0aGVyZSBhcmUgZm9yIGNvbmZpZ3VyaW5nIHR1bm5lbGluZyBpbiBJUFZTLiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlIGNvZGUgaGF2ZSB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozMC41MjY5NzU2MDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODcxNzMyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozMC45NDU3MDIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1OTAyMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIGFwcHJvYWNoIGlzIGdvaW5nIHRvIGJlIGRpcmVjdC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCDigJMgc3BlY2lmaWNhbGx5LCBsZXQncyBgZ3JlcGAgZm9yIGBcImNvbmZpZyBJUF9WU1wiYCB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHNwb3QgZm9yIGtlcm5lbCBjb25maWcgb3B0aW9ucywgYW5kIHRoYXQga2V5d29yZCBpcyBwcmVjaXNlbHkgd2hhdCBJIGV4cGVjdCB0byBkZWZpbmUgdGhlIHJlbGV2YW50IHN5bWJvbHMgZm9yIElQVlMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgaGlnaGxpZ2h0IGFsbCB0aGUgc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgZGVwZW5kZW5jaWVzIEknbSBpbnRlcmVzdGVkIGluLCB3aXRob3V0IGdldHRpbmcgYnVyaWVkIGluIHRoZSBicm9hZGVyIG5ldGZpbHRlciBhcmNoaXRlY3R1cmUuIEZyb20gdGhlcmUsIEkgY2FuIGRyaWxsIGRvd24gZGVlcGVyIGFzIG5lZWRlZC4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgcXVpY2sgYW5kIGVmZmljaWVudCB3YXkgdG8gbWFwIG91dCB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjM0LjA1MTYwNzA3OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMDgzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA1OjIxOjM0LjE0ODYyMjkyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjI3MTI0NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSBoYXZpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgTXkgV29yayBcdTAwMjYgRGl2aW5nIERlZXBlcioqXG5cbldhaXQgYSBtaW51dGUuLi4gZGlkbid0IEkganVzdCBhZGRyZXNzIHRoaXM/IEkgZmVlbCBsaWtlIEkndmUgYWxyZWFkeSB0YWNrbGVkIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMsIHNvIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJhYmJpdCBob2xlLCBJIHNob3VsZCBkb3VibGUtY2hlY2suIE9rYXksIHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIElQVlMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgYXQgYWxsIG9jY3VycmVuY2VzIG9mIGBjb25maWcgYCByZWxhdGVkIHRvIGl0LiBMZXQncyBzZWUuLi4gSSdsbCBqdXN0IGBncmVwYCBmb3IgXCJjb25maWcgXCIgd2l0aGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBzZXR0aW5ncyBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgSSBtaWdodCBoYXZlIG1pc3NlZCBpbml0aWFsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3ODAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTozNy4yNzEzMzgxODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTIwMTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xMDA9Y29uZmlnXFx0SVBfVlNfUFJPVE9fQUhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVxcdGJvb2wgXFxcIlNDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE0Nz1jb25maWdcXHRJUF9WU19XTENcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1OC1cXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgZmFpbG92ZXIgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2Ni1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNzg9Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcXHRJUF9WU19QRV9TSVBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1MS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNTI6Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgSVBWU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6MzcuMzk2NTQ1NDU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MzUyNzcwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgbmV0d29ya2luZyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBJUFZTIFByb3RvY29sIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGUgSVBWUyBwcm90b2NvbCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBUQ1AgKGBJUF9WU19QUk9UT19UQ1BgKSBhbmQgVURQIChgSVBfVlNfUFJPVE9fVURQYCkuIEFyZSB0aGVzZSBlbmFibGVkIG91dC1vZi10aGUtYm94LCBvciBkbyB0aGV5IHJlbHkgb24gYW5vdGhlciBjb25maWd1cmF0aW9uIGZpbGU/IE15IGh1bmNoIGlzIHRoYXQgdGhleSdyZSBlaXRoZXIgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGRlZmluZWQgZWxzZXdoZXJlLlxuXG5UbyBuYWlsIHRoaXMgZG93biwgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgSVBWUyBzb3VyY2UgdHJlZS4gSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgdG8gc2VlIGhvdyB0aGUgYElQX1ZTX1BST1RPYCBzeW1ib2wgaXMgZGVmaW5lZCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFuc3dlciBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjcxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6NDIuODMxODI0OTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODYyNzM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzIxPWNvbmZpZ1xcdElQX1ZTX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cXHR0cmlzdGF0ZSBcXFwiRlRQIHByb3RvY29sIGhlbHBlclxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjM6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVxcdFxcdE5GX0NPTk5UUkFDS19GVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcXHRJUF9WU19QRV9TSVBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXFx0dHJpc3RhdGUgXFxcIlNJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ4LVxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwNToyMTo0Mi45ODA0NTk1NDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NTcwNDY3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgSVBWUyBtb2R1bGUuIEluaXRpYWxseSwgSSB0aG91Z2h0IGFib3V0IGluY2x1ZGluZyBgSVBfVlNfUFJPVE9fVURQYCBhbmQgYElQX1ZTX1BST1RPX1RDUGAsIGJ1dCB0aGUgcGF0Y2ggcHJpbWFyaWx5IHRvdWNoZXMgYGlwX3ZzX2luX2ljbXBgLCB3aGljaCBkZWFscyB3aXRoIElDTVAgcGFja2V0cywgYW5kIG1lbnRpb25zIFVEUCBhbmQgR1JFIGVuY2Fwc3VsYXRpb24gaW4gdGhlIGNvZGUuIEkgdGhlbiBsb29rZWQgYXQgdGhpcyBjb2RlIGJsb2NrOlxuXG5gYGBjXG5cdH0gZWxzZSBpZiAoKGNpaC1cdTAwM2Vwcm90b2NvbCA9PSBJUFBST1RPX1VEUCB8fFx0LyogQ2FuIGJlIFVEUCBlbmNhcCAqL1xuXHRcdCAgICBjaWgtXHUwMDNlcHJvdG9jb2wgPT0gSVBQUk9UT19HUkUpIFx1MDAyNlx1MDAyNlx0LyogQ2FuIGJlIEdSRSBlbmNhcCAqL1xuXHRcdCAgIC8qIEVycm9yIGZvciBvdXIgdHVubmVsIG11c3QgYXJyaXZlIGF0IExPQ0FMX0lOICovXG5cdFx0ICAgKHNrYi1cdTAwM2VydGFibGUtXHUwMDNlcnRfZmxhZ3MgXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XG5gYGBcblxuVGhpcyBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBlbmNhcHN1bGF0ZWQgVURQIG9yIEdSRSBwYWNrZXRzIGFuZCB0aGUgZXJyb3JzIGZyb20gdGhlIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBgTE9DQUxfSU5gLCBzbyBpdCdzIG5vdCBzdHJpY3RseSB0aWVkIHRvIHNwZWNpZmljIHByb3RvY29scy4gR2l2ZW4gdGhpcywgSSdsbCBzdGljayB3aXRoIHNwZWNpZnlpbmcgb25seSBgSVBfVlNgIGFzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBObyBvdGhlciBjb25maWdzIHNlZW0gdG8gYmUgZGlyZWN0bHkgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBtb2RpZmljYXRpb25zIHRvIGBpcF92c19pbl9pY21wYC5cblxuSSBjYW4gc2VlIHRoZXNlIGNoYW5nZXMuXG5cbmBgYGNcbkBAIC0xODA0LDkgKzE4MDUsMTAgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0LyogTm93IGZpbmQgdGhlIGNvbnRhaW5lZCBJUCBoZWFkZXIgKi9cbiBcdG9mZnNldCArPSBzaXplb2YoX2ljbXBoKTtcbiBcdGNpaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG9mZnNldCwgc2l6ZW9mKF9jaXBoKSwgXHUwMDI2X2NpcGgpO1xuLVx0aWYgKGNpaCA9PSBOVUxMKVxuK1x0aWYgKCEoY2loIFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNldmVyc2lvbiA9PSA0IFx1MDAyNlx1MDAyNiBjaWgtXHUwMDNlaWhsIFx1MDAzZT0gNSkpXG4gXHRcdHJldHVybiBORl9BQ0NFUFQ7IC8qIFRoZSBwYWNrZXQgbG9va3Mgd3JvbmcsIGlnbm9yZSAqL1xuIFx0cmFkZHIgPSAodW5pb24gbmZfaW5ldF9hZGRyICopXHUwMDI2Y2loLVx1MDAzZWRhZGRyO1xuK1x0aGxlbl9pcGlwID0gY2loLVx1MDAzZWlobCAqIDQ7XG4gYGBgXG5cblRoaXMgaXMgdmFsaWRhdGluZyB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIHdoaWNoIGlzIGNydWNpYWwuXG5cbmBgYGNcbkBAIC0xOTIxLDYgKzE5MjQsOSBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRnb3RvIGlnbm9yZV90dW5uZWw7XG4gXHRcdFx0b2Zmc2V0MiAtPSBpaGwgKyBzaXplb2YoX2ljbXBoKTtcbiBcdFx0XHRza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTtcbitcdFx0XHQvKiBFbnN1cmUgdGhlIElQIGhlYWRlciBpcyBwcmVzZW50IGluIGhlYWRyb29tICovXG4rXHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGxlbl9pcGlwKSlcbitcdFx0XHRcdGdvdG8gaWdub3JlX3R1bm5lbDtcbiBgYGBcblxuVGhpcyBub3cgY2hlY2tzIHRvIGVuc3VyZSB0aGUgSVAgaGVhZGVyIGlzIGFjdHVhbGx5IHByZXNlbnQgdXNpbmcgYHBza2JfbWF5X3B1bGxgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgY2hhbmdlLCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBsaW5lYXIgcGFydCBvZiB0aGUgYHNrYmAuXG5cbkl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBidWcgZml4LCByZWFsbHkuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgYWNjZXNzIGVycm9ycyBpbiBgaXBfdnNfaW5faWNtcGAuIEFkZGluZyB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIGluIHRoZSBgc2tiYCdzIGhlYWRyb29tIGlzIGEgc29saWQgZGVmZW5zZSBhZ2FpbnN0IHRoZXNlIGtpbmRzIG9mIGlzc3Vlcy4gQmFzZWQgb24gdGhpcywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdGhpcyBmdW5jdGlvbi4gSSdsbCBtYWtlIHN1cmUgdG8gZm9jdXMgb24gYGlwX3ZzX2luX2ljbXBgIGluIG15IHRlc3RpbmcuXG5cbkkndmUgZG91YmxlLWNoZWNrZWQsIGFuZCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgaXBfdnNfaW5faWNtcGAsIHNvIEknbSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEknbSBub3cgcmVhZHkgdG8gbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4NywiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDU6MjE6NTMuODM3NTA4NTg2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNDg3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2luX2ljbXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGluIGBpcF92c19pbl9pY21wYCBieSBhZGRpbmcgcHJvcGVyIHZhbGlkYXRpb24gZm9yIHRoZSBpbm5lciBJUCBoZWFkZXIgKHZlcnNpb24gYW5kIGlobCkgYW5kIGVuc3VyaW5nIHRoZSBJUCBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgc2tiIGhlYWRyb29tIHVzaW5nIGBwc2tiX21heV9wdWxsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBoYW5kbGVzIElDTVAgcGFja2V0cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19pbl9pY21wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbiBgaXBfdnNfaW5faWNtcGAgYnkgYWRkaW5nIHByb3BlciB2YWxpZGF0aW9uIGZvciB0aGUgaW5uZXIgSVAgaGVhZGVyICh2ZXJzaW9uIGFuZCBpaGwpIGFuZCBlbnN1cmluZyB0aGUgSVAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIHNrYiBoZWFkcm9vbSB1c2luZyBgcHNrYl9tYXlfcHVsbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgaGFuZGxlcyBJQ01QIHBhY2tldHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[1] Phase: Succeeded StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 05:22:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 05:22:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2] Phase: Succeeded StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 05:22:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 05:22:06 +0000 UTC FinishedAt: 2026-07-08 05:22:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc66v2/series-workflowc66v2-convert-artifact-1309960883/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 05:22:16 +0000 UTC FinishedAt: 2026-07-08 06:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 05:22:16 +0000 UTC FinishedAt: 2026-07-08 06:06:29 +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:*ebf4fde7-ce0b-498b-aa50-645c4cdb48dd,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-workflowc66v2/series-workflowc66v2-convert-artifact-1309960883/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": "966abc63-75ce-48e0-bc01-678b4b5f4455", "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-workflowc66v2/series-workflowc66v2-build-action-159028577/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 05:22:16 +0000 UTC FinishedAt: 2026-07-08 06:06:19 +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:*ebf4fde7-ce0b-498b-aa50-645c4cdb48dd,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-workflowc66v2/series-workflowc66v2-convert-artifact-1309960883/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": "966abc63-75ce-48e0-bc01-678b4b5f4455", "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-workflowc66v2/series-workflowc66v2-build-action-159028577/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 06:06:29 +0000 UTC FinishedAt: 2026-07-08 06:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 06:06:29 +0000 UTC FinishedAt: 2026-07-08 06:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 06:06:29 +0000 UTC FinishedAt: 2026-07-08 06:06:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 06:06:29 +0000 UTC FinishedAt: 2026-07-08 06:06:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc66v2/series-workflowc66v2-convert-artifact-2288436394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 06:06:39 +0000 UTC FinishedAt: 2026-07-08 06:09:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 06:06:39 +0000 UTC FinishedAt: 2026-07-08 06:08:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*966abc63-75ce-48e0-bc01-678b4b5f4455,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-workflowc66v2/series-workflowc66v2-build-action-159028577/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-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 06:09:04 +0000 UTC FinishedAt: 2026-07-08 06:09:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 06:09:04 +0000 UTC FinishedAt: 2026-07-08 06:09:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 06:09:04 +0000 UTC FinishedAt: 2026-07-08 06:59:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 06:09:04 +0000 UTC FinishedAt: 2026-07-08 06:59:13 +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:*ebf4fde7-ce0b-498b-aa50-645c4cdb48dd,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-workflowc66v2/series-workflowc66v2-convert-artifact-2288436394/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": "ae5dcf60-7221-4ff2-8e33-22417dfc9e11", "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-workflowc66v2/series-workflowc66v2-build-action-309058510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 06:09:04 +0000 UTC FinishedAt: 2026-07-08 06:59:03 +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:*ebf4fde7-ce0b-498b-aa50-645c4cdb48dd,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-workflowc66v2/series-workflowc66v2-convert-artifact-2288436394/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": "ae5dcf60-7221-4ff2-8e33-22417dfc9e11", "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-workflowc66v2/series-workflowc66v2-build-action-309058510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 06:59:13 +0000 UTC FinishedAt: 2026-07-08 06:59:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 06:59:13 +0000 UTC FinishedAt: 2026-07-08 06:59:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 06:59:13 +0000 UTC FinishedAt: 2026-07-08 07:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 06:59:13 +0000 UTC FinishedAt: 2026-07-08 07:01:04 +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:*ae5dcf60-7221-4ff2-8e33-22417dfc9e11,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-workflowc66v2/series-workflowc66v2-build-action-309058510/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-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"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:*966abc63-75ce-48e0-bc01-678b4b5f4455,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae5dcf60-7221-4ff2-8e33-22417dfc9e11,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-workflowc66v2/series-workflowc66v2-build-action-159028577/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-workflowc66v2/series-workflowc66v2-build-action-309058510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 07:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 07:01:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"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-workflowc66v2/series-workflowc66v2-convert-artifact-2870417471/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 07:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 07:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 07:01:14 +0000 UTC FinishedAt: 2026-07-08 07:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 07:01:34 +0000 UTC FinishedAt: 2026-07-08 10:02:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc66v2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_in_icmp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"ae3f9a5a-a673-4746-ba5b-1edeb1ab7120","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 07:01:34 +0000 UTC FinishedAt: 2026-07-08 10:02:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*966abc63-75ce-48e0-bc01-678b4b5f4455,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae5dcf60-7221-4ff2-8e33-22417dfc9e11,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-workflowc66v2/series-workflowc66v2-build-action-159028577/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-workflowc66v2/series-workflowc66v2-build-action-309058510/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-workflowc66v2/series-workflowc66v2-convert-artifact-2870417471/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,}