Name: series-workflowfl6fv Phase: Succeeded StartedAt: 2026-07-25 00:41:00 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[0] Phase: Succeeded StartedAt: 2026-07-25 00:41:00 +0000 UTC FinishedAt: 2026-07-25 00:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 00:41:00 +0000 UTC FinishedAt: 2026-07-25 00:59:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "b554b386-907e-4786-9136-0a0b04a3198b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_calc_nested_tsc_multiplier", "nested_svm_update_tsc_ratio_msr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllciYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTIxNWMzYzkwYjZmYmNhNGEzZGY2YWFkOTQwYTk1NDgyNmM2M2Y1M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDAwOjU4OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0yNjc1LDExICYjNDM7MjY3NSw0NSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xuIFxuIHU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxuIHtcbi1cdGlmIChsMl9tdWx0aXBsaWVyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXG4tXHRcdHJldHVybiBtdWxfdTY0X3U2NF9zaHIobDFfbXVsdGlwbGllciwgbDJfbXVsdGlwbGllcixcbi1cdFx0XHRcdCAgICAgICBrdm1fY2Fwcy50c2Nfc2NhbGluZ19yYXRpb19mcmFjX2JpdHMpO1xuJiM0MztcdHVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzO1xuJiM0MztcdHU2NCBuZXN0ZWRfbXVsdGlwbGllcjtcbiBcbi1cdHJldHVybiBsMV9tdWx0aXBsaWVyO1xuJiM0MztcdGlmIChsMl9tdWx0aXBsaWVyID09IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXG4mIzQzO1x0XHRyZXR1cm4gbDFfbXVsdGlwbGllcjtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0XG4mIzQzO1x0ICogdGhlaXIgZml4ZWQtcG9pbnQgcHJvZHVjdCAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcbiYjNDM7XHQgKiB0aGUgaGFyZHdhcmUgVFNDIG11bHRpcGxpZXIgZmllbGQ6IG9uIEludGVsIHRoZSBoaWdoIGJpdHMgd291bGQgYmVcbiYjNDM7XHQgKiBzaWxlbnRseSB0cnVuY2F0ZWQgKHlpZWxkaW5nIGEgd3JvbmcgLS0gb3IgZXZlbiB6ZXJvIC0tIEwyIHNjYWxpbmdcbiYjNDM7XHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcbiYjNDM7XHQgKiBwaHlzaWNhbCBNU1JfQU1ENjRfVFNDX1JBVElPIHdyaXRlLiAgKE0xICogTTIpIFx1MDAzZVx1MDAzZSBmcmFjIG92ZXJmbG93cyB1NjRcbiYjNDM7XHQgKiBpZmYgdGhlIGhpZ2ggNjQgYml0cyBvZiB0aGUgMTI4LWJpdCBwcm9kdWN0IGFyZSBcdTAwM2U9ICgxIFx1MDAzY1x1MDAzYyBmcmFjKTtcbiYjNDM7XHQgKiBkZXRlY3QgdGhhdCAoYW5kIGFueSByZXN1bHQgYWJvdmUgdGhlIGFkdmVydGlzZWQgbWF4aW11bSkgYW5kXG4mIzQzO1x0ICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCA2NCkgXHUwMDNlPSAoMVVMTCBcdTAwM2NcdTAwM2MgZnJhYykpXG4mIzQzO1x0XHRyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvO1xuJiM0MztcbiYjNDM7XHRuZXN0ZWRfbXVsdGlwbGllciA9IG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCBmcmFjKTtcbiYjNDM7XHRpZiAobmVzdGVkX211bHRpcGxpZXIgXHUwMDNlIGt2bV9jYXBzLm1heF90c2Nfc2NhbGluZ19yYXRpbylcbiYjNDM7XHRcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHNhbWUgcHJvZHVjdCBjYW4gZmxvb3IgdG8gMCBhdCB0aGUgb3RoZXIgZW5kLCB3aGVuIHRoZSB0cnVlIHJhdGlvXG4mIzQzO1x0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcdTAwM2MgMl5mcmFjIC0tIEwxIHNsb3dlciB0aGFuIHRoZSBob3N0IC0tXG4mIzQzO1x0ICogY29tcG9zZWQgd2l0aCBhIHNtYWxsIGJ1dCBsZWdhbCBNMikuICBBIHplcm8gbXVsdGlwbGllciBpcyBubyBtb3JlXG4mIzQzO1x0ICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZVxuJiM0MztcdCAqIFNETSByZXF1aXJlcyBhIG5vbnplcm8gVFNDLW11bHRpcGxpZXIgdW5kZXIgXCYjMzQ7dXNlIFRTQyBzY2FsaW5nXCYjMzQ7LCB3aGljaFxuJiM0MztcdCAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLVx1MDAzZXRzY19tdWx0aXBsaWVyKSksIGFuZFxuJiM0MztcdCAqIG9uIEFNRCBpdCBwcm9ncmFtcyBhIGZyb3plbiByYXRpbyBpbnRvIE1TUl9BTUQ2NF9UU0NfUkFUSU8uICBDbGFtcCB1cFxuJiM0MztcdCAqIHRvIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG5vbnplcm8gcmF0aW8sIG1pcnJvcmluZyB0aGUgc2F0dXJhdGlvblxuJiM0MztcdCAqIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghbmVzdGVkX211bHRpcGxpZXIpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5lc3RlZF9tdWx0aXBsaWVyO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjE1YzNjOTBiNmZiY2E0YTNkZjZhYWQ5NDBhOTU0ODI2YzYzZjUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMDA6NTg6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0yNjc1LDExICYjNDM7MjY3NSw0NSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpOwogCiB1NjQga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHU2NCBsMV9tdWx0aXBsaWVyLCB1NjQgbDJfbXVsdGlwbGllcikKIHsKLQlpZiAobDJfbXVsdGlwbGllciAhPSBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKQotCQlyZXR1cm4gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsCi0JCQkJICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7CiYjNDM7CXVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzOwomIzQzOwl1NjQgbmVzdGVkX211bHRpcGxpZXI7CiAKLQlyZXR1cm4gbDFfbXVsdGlwbGllcjsKJiM0MzsJaWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbykKJiM0MzsJCXJldHVybiBsMV9tdWx0aXBsaWVyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0CiYjNDM7CSAqIHRoZWlyIGZpeGVkLXBvaW50IHByb2R1Y3QgKE0xICogTTIpICZndDsmZ3Q7IGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2YKJiM0MzsJICogdGhlIGhhcmR3YXJlIFRTQyBtdWx0aXBsaWVyIGZpZWxkOiBvbiBJbnRlbCB0aGUgaGlnaCBiaXRzIHdvdWxkIGJlCiYjNDM7CSAqIHNpbGVudGx5IHRydW5jYXRlZCAoeWllbGRpbmcgYSB3cm9uZyAtLSBvciBldmVuIHplcm8gLS0gTDIgc2NhbGluZwomIzQzOwkgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGUKJiM0MzsJICogcGh5c2ljYWwgTVNSX0FNRDY0X1RTQ19SQVRJTyB3cml0ZS4gIChNMSAqIE0yKSAmZ3Q7Jmd0OyBmcmFjIG92ZXJmbG93cyB1NjQKJiM0MzsJICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgJmd0Oz0gKDEgJmx0OyZsdDsgZnJhYyk7CiYjNDM7CSAqIGRldGVjdCB0aGF0IChhbmQgYW55IHJlc3VsdCBhYm92ZSB0aGUgYWR2ZXJ0aXNlZCBtYXhpbXVtKSBhbmQKJiM0MzsJICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uCiYjNDM7CSAqLwomIzQzOwlpZiAobXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIDY0KSAmZ3Q7PSAoMVVMTCAmbHQ7Jmx0OyBmcmFjKSkKJiM0MzsJCXJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87CiYjNDM7CiYjNDM7CW5lc3RlZF9tdWx0aXBsaWVyID0gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIGZyYWMpOwomIzQzOwlpZiAobmVzdGVkX211bHRpcGxpZXIgJmd0OyBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW8pCiYjNDM7CQlyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgc2FtZSBwcm9kdWN0IGNhbiBmbG9vciB0byAwIGF0IHRoZSBvdGhlciBlbmQsIHdoZW4gdGhlIHRydWUgcmF0aW8KJiM0MzsJICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSAmbHQ7IDJeZnJhYyAtLSBMMSBzbG93ZXIgdGhhbiB0aGUgaG9zdCAtLQomIzQzOwkgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmUKJiM0MzsJICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZQomIzQzOwkgKiBTRE0gcmVxdWlyZXMgYSBub256ZXJvIFRTQy1tdWx0aXBsaWVyIHVuZGVyICYjMzQ7dXNlIFRTQyBzY2FsaW5nJiMzNDssIHdoaWNoCiYjNDM7CSAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLSZndDt0c2NfbXVsdGlwbGllcikpLCBhbmQKJiM0MzsJICogb24gQU1EIGl0IHByb2dyYW1zIGEgZnJvemVuIHJhdGlvIGludG8gTVNSX0FNRDY0X1RTQ19SQVRJTy4gIENsYW1wIHVwCiYjNDM7CSAqIHRvIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG5vbnplcm8gcmF0aW8sIG1pcnJvcmluZyB0aGUgc2F0dXJhdGlvbgomIzQzOwkgKiBhYm92ZS4KJiM0MzsJICovCiYjNDM7CWlmICghbmVzdGVkX211bHRpcGxpZXIpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5lc3RlZF9tdWx0aXBsaWVyOwogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBvcnRhbmNlIGZvciBGdXp6aW5nKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiB0aGlzIHBhdGNoLCBhcyBJIHNlZSBpdC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsOyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY2FsY3VsYXRpbmcgdGhlIFRTQyBtdWx0aXBsaWVyIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIHBvdGVudGlhbGx5IGNyaXRpY2FsIGZsYXcg4oCTIHRoZSBwb3NzaWJpbGl0eSBvZiBhbiBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUgYmVpbmcgY2FsY3VsYXRlZCBmb3IgdGhlIG11bHRpcGxpZXIuIFRoYXQga2luZCBvZiBidWcgY291bGQgbWFuaWZlc3QgaW4gc29tZSBuYXN0eSB3YXlzOiBWTSBlbnRyeSBmYWlsdXJlcywgR2VuZXJhbCBQcm90ZWN0aW9uIGZhdWx0cyBkdXJpbmcgTVNSIHdyaXRlcyDigJMgdGhpbmdzIHRoYXQgY2FuIGJyaW5nIGEgc3lzdGVtIGRvd24gZmFzdC4KClRoaXMgaXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGdldHMgaGFtbWVyZWQgaGFyZCB3aGVuIHBlb3BsZSBhcmUgdXNpbmcgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBhbmQgYW55IGluc3RhYmlsaXR5IGluIHRoaXMgY29kZSBjb3VsZCBiZSBjYXRhc3Ryb3BoaWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZS4gVGhlIGZpeCBpcyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbiB3aXRoaW4gS1ZNLgoKR2l2ZW4gYWxsIHRoYXQsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBtYWluIHN5bWJvbCBvZiBpbnRlcmVzdCBmb3IgZnV6emluZyBpcyBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYC4gV2UgbmVlZCB0byBlbnN1cmUgS1ZNIGlzIGVuYWJsZWQ6IGBFbmFibGVDb25maWdzOiBLVk1gLgoKTm93LCBiZWZvcmUgSSBkZWNsYXJlIHRoaXMgZnV6ei13b3J0aHksIEkgbmVlZCB0byBjb25maXJtIGl0cyByZWFjaGFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgaXMgaW5kZWVkIGV4cG9ydGVkIGludGVybmFsbHkgZm9yIEtWTSB1c2UsIHdpdGggYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIpO2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBvdGhlciBLVk0gbW9kdWxlcyB0byBjYWxsLiBBbmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgdm14L25lc3RlZC5jYCBhbmQgYHN2bS9uZXN0ZWQuY2AgdGVsbHMgbWUgdGhpcyBpcyBpbiBhY3RpdmUgdXNlLiBFeGNlbGxlbnQuIFRoaXMgY2hlY2tzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNDgzPXU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCh1NjQgbDFfb2Zmc2V0LCB1NjQgbDJfb2Zmc2V0LCB1NjQgbDJfbXVsdGlwbGllcik7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI0ODQ6dTY0IGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih1NjQgbDFfbXVsdGlwbGllciwgdTY0IGwyX211bHRpcGxpZXIpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNDg1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTgzND12b2lkIG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgzOC1cdHZjcHUtXHUwMDNlYXJjaC50c2Nfc2NhbGluZ19yYXRpbyA9XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4Mzk6XHRcdGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih2Y3B1LVx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4NDAtXHRcdFx0XHRcdCAgICAgICBzdm0tXHUwMDNldHNjX3JhdGlvX21zcik7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzYwPXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE3LVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODE4Olx0dmNwdS1cdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID0ga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE5LVx0XHRcdHZjcHUtXHUwMDNlYXJjaC5sMV90c2Nfc2NhbGluZ19yYXRpbyxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjY3ND1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI2NzUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjY3Njp1NjQga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHU2NCBsMV9tdWx0aXBsaWVyLCB1NjQgbDJfbXVsdGlwbGllcilcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc3LXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjcxNy19XG5hcmNoL3g4Ni9rdm0veDg2LmM6MjcxODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNzE5LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNzQ3PXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NTItXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYzoyNzUzOlx0XHR2Y3B1LVx1MDAzZWFyY2gudHNjX3NjYWxpbmdfcmF0aW8gPSBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIoXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc1NC1cdFx0XHRsMV9tdWx0aXBsaWVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipUcmFjaW5nIHRoZSBUU0MgTXVsdGlwbGllciBDYWxjdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBtdWx0aXBsaWVyIGlzIGNhbGN1bGF0ZWQgd2l0aGluIEtWTS4gVGhlIGZ1bmN0aW9uIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGlzIGtleSBoZXJlLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgLCBgcHJlcGFyZV92bWNzMDJgLCBhbmQgYGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyYC4gRXhjZWxsZW50LCB0aG9zZSB0aHJlZSBjYWxsIHNpdGVzIHNlZW0gbGlrZSBhIGdvb2Qgc2V0IG9mIGZvY3VzIHBvaW50cyB0byBzdGFydCB3aXRoLiBJdCBhbGxvd3MgbWUgdG8gc2VlIHRoZSBmbG93LiBOb3csIHdoYXQgZG9lcyB0aGUgS2NvbmZpZyB0ZWxsIG1lPyBMZXQmIzM5O3MgY2hlY2sgdGhlcmUgdG8gc2VlIGhvdyB0aGVzZSBiaXRzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgdXNlZnVsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIENvbmZpZ3VyYXRpb24gYW5kIFRTQyBNdWx0aXBsaWVyIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBjb25maWd1cmF0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAgYXJlIGluY2x1ZGVkLiBTaW1wbGUgZW5vdWdoOyBJJiMzOTtsbCBnZXQgdGhvc2UgaW4gdGhlcmUgcmlnaHQgYXdheS4KClRoZSBjb3JlIG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGggaXMgdGhlIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgYWxzbyBoYXZlIHRvIGtlZXAgaW4gbWluZCwgIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCwgYHByZXBhcmVfdm1jczAyYCwgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIE9yaWdpbmFsbHksIEkgdGhvdWdodCBgcHJlcGFyZV92bWNzMDJgIHdhcyBzdGF0aWMsIHdoaWNoIG1hZGUgbWUgZmVlbCB0aGF0IGl0IHNob3VsZCBiZSBhdm9pZGVkLCBob3dldmVyLCBJIGFtIG5vdyB0aGlua2luZyB0byBpbmNsdWRlIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGFuZCBgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcmAgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIEFoLCB3YWl0Li4uIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgICppcyogZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgaW1wbGljYXRpb25zIGEgbGl0dGxlLgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2suIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaWYgYGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyYCBpcyBzdGF0aWMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0yNDk0PXN0YXRpYyB1MzIgYWRqdXN0X3RzY19raHoodTMyIGtoeiwgczMyIHBwbSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUwMC1cbmFyY2gveDg2L2t2bS94ODYuYzoyNTAxOnN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MDItXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjUwMz1zdGF0aWMgaW50IHNldF90c2Nfa2h6KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHVzZXJfdHNjX2toeiwgYm9vbCBzY2FsZSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUwOC1cdGlmICghc2NhbGUpIHtcbmFyY2gveDg2L2t2bS94ODYuYzoyNTA5Olx0XHRrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcih2Y3B1LCBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNTEwLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUzNC1cbmFyY2gveDg2L2t2bS94ODYuYzoyNTM1Olx0a3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIodmNwdSwgcmF0aW8pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzYtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjUzOT1zdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDYtXHRcdC8qIHNldCB0c2Nfc2NhbGluZ19yYXRpbyB0byBhIHNhZmUgdmFsdWUgKi9cbmFyY2gveDg2L2t2bS94ODYuYzoyNTQ3Olx0XHRrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcih2Y3B1LCBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNTQ4LVx0XHRyZXR1cm4gLTE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3MjA9c3RhdGljIHZvaWQga3ZtX3ZjcHVfd3JpdGVfdHNjX29mZnNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBsMV9vZmZzZXQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc0NzpzdGF0aWMgdm9pZCBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBsMV9tdWx0aXBsaWVyKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRTQyBNdWx0aXBsaWVyIFVwZGF0ZXMgaW4gS1ZNIGZvciBOZXN0ZWQgU1ZNKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBtdWx0aXBsaWVyIGlzIGhhbmRsZWQgd2l0aGluIEtWTSwgc3BlY2lmaWNhbGx5IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2l0aCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lcyAoU1ZNKS4gSSYjMzk7dmUgbm90ZWQgdGhhdCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBkb24mIzM5O3QgbmVlZCB0byBkaWcgaW50byBpdC4gU2FtZSBnb2VzIGZvciBgcHJlcGFyZV92bWNzMDJgLiBUaGF0IGxlYXZlcyBtZSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYC4gVGhvc2Ugc2VlbSB0byBiZSB0aGUgZHluYW1pYyBwYXJ0cyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIuCgpOb3csIGxldCYjMzk7cyBzZWUuLi5JIGFsc28gbmVlZCB0byBjb25zaWRlciBga3ZtX3NldF90c2Nfa2h6YCBiZWNhdXNlIGl0IGNhbGxzIHRoYXQgc3RhdGljIGZ1bmN0aW9uLCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLCB3aGljaCBpcyB0aGUgb25lIEkgaW5pdGlhbGx5IGRpc21pc3NlZC4gSG9sZCBvbiBhIHNlY29uZCwgaXMgYGt2bV9zZXRfdHNjX2toemAgKmFsc28qIHN0YXRpYz8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEga2V5IGVsZW1lbnQgaW4gdGhlIHVwZGF0ZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fc2V0X3RzY19raHomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI1MDM9c3RhdGljIGludCBzZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHosIGJvb2wgc2NhbGUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzgtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjUzOTpzdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjU0MC17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTYyMjM9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy02NTM4LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjY1Mzk6XHRcdGlmICgha3ZtX3NldF90c2Nfa2h6KHZjcHUsIHVzZXJfdHNjX2toeikpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjU0MC1cdFx0XHRyID0gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTI4MDc9aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI4ODAtXHRrdm1fdmNwdV9hZnRlcl9zZXRfY3B1aWQodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI4ODE6XHRrdm1fc2V0X3RzY19raHoodmNwdSwgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5kZWZhdWx0X3RzY19raHopO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEyODgyLVx0a3ZtX3ZjcHVfcmVzZXQodmNwdSwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTAwCgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gTmVzdGVkIFRTQyBNdWx0aXBsaWVyIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgS1ZNIGNhbGN1bGF0ZXMgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllci4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fc2V0X3RzY19raHpgIGlzIHN0YXRpYyBpcyBhIGtleSBvYnNlcnZhdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoZSBmdW5jdGlvbnMgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS4KClRoZSBwcm9ibGVtLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIGEgYnVnIGluIHRoZSBtdWx0aXBsaWVyIGNhbGN1bGF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUuIFRoaXMsIGluIHR1cm4sIGNhbiBjYXVzZSBWTS1lbnRyeSBmYWlsdXJlcyBvciBhICNHUCBmYXVsdCBkdXJpbmcgTVNSIHdyaXRlcyDigJMgd2hpY2ggaXMgb2J2aW91c2x5IGEgcHJldHR5IHNldmVyZSBzaXR1YXRpb24uCgpDcnVjaWFsbHksIHRoaXMgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZTsgdGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGhlYXJ0IG9mIEtWTSYjMzk7cyB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiBJdCYjMzk7cyB1c2VkIHdoZW4gcnVubmluZyBWTXMgd2l0aGluIFZNcy4gQ29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBjZW50cmFsaXR5IG9mIHRoZSBhZmZlY3RlZCBjb2RlLCBJ4oCZbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGZvciBmdXp6aW5nIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllciYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXImIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllciBpbiBLVk0sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3ZlcmZsb3cgb3IgemVybyB2YWx1ZXMsIGNhdXNpbmcgVk0tZW50cnkgZmFpbHVyZXMgb3IgI0dQIG9uIE1TUiB3cml0ZXMuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0geDg2IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjM1MzY2MzM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTg0Mjc4NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjM1MzY3MTUwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5NjEzODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTIxNWMzYzkwYjZmYmNhNGEzZGY2YWFkOTQwYTk1NDgyNmM2M2Y1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMDo1ODozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCBhZmNhYzEwNDI5NDdhNS4uYTY1ZDIzY2JiNDliM2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTI2NzUsMTEgKzI2NzUsNDUgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2Nfb2Zmc2V0KTtcXG4gXFxuIHU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxcbiB7XFxuLVxcdGlmIChsMl9tdWx0aXBsaWVyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXFxuLVxcdFxcdHJldHVybiBtdWxfdTY0X3U2NF9zaHIobDFfbXVsdGlwbGllciwgbDJfbXVsdGlwbGllcixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7XFxuK1xcdHVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzO1xcbitcXHR1NjQgbmVzdGVkX211bHRpcGxpZXI7XFxuIFxcbi1cXHRyZXR1cm4gbDFfbXVsdGlwbGllcjtcXG4rXFx0aWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcXG4rXFx0XFx0cmV0dXJuIGwxX211bHRpcGxpZXI7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0XFxuK1xcdCAqIHRoZWlyIGZpeGVkLXBvaW50IHByb2R1Y3QgKE0xICogTTIpIFxcdTAwM2VcXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcXG4rXFx0ICogdGhlIGhhcmR3YXJlIFRTQyBtdWx0aXBsaWVyIGZpZWxkOiBvbiBJbnRlbCB0aGUgaGlnaCBiaXRzIHdvdWxkIGJlXFxuK1xcdCAqIHNpbGVudGx5IHRydW5jYXRlZCAoeWllbGRpbmcgYSB3cm9uZyAtLSBvciBldmVuIHplcm8gLS0gTDIgc2NhbGluZ1xcbitcXHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcXG4rXFx0ICogcGh5c2ljYWwgTVNSX0FNRDY0X1RTQ19SQVRJTyB3cml0ZS4gIChNMSAqIE0yKSBcXHUwMDNlXFx1MDAzZSBmcmFjIG92ZXJmbG93cyB1NjRcXG4rXFx0ICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgXFx1MDAzZT0gKDEgXFx1MDAzY1xcdTAwM2MgZnJhYyk7XFxuK1xcdCAqIGRldGVjdCB0aGF0IChhbmQgYW55IHJlc3VsdCBhYm92ZSB0aGUgYWR2ZXJ0aXNlZCBtYXhpbXVtKSBhbmRcXG4rXFx0ICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uXFxuK1xcdCAqL1xcbitcXHRpZiAobXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIDY0KSBcXHUwMDNlPSAoMVVMTCBcXHUwMDNjXFx1MDAzYyBmcmFjKSlcXG4rXFx0XFx0cmV0dXJuIGt2bV9jYXBzLm1heF90c2Nfc2NhbGluZ19yYXRpbztcXG4rXFxuK1xcdG5lc3RlZF9tdWx0aXBsaWVyID0gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIGZyYWMpO1xcbitcXHRpZiAobmVzdGVkX211bHRpcGxpZXIgXFx1MDAzZSBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW8pXFxuK1xcdFxcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgc2FtZSBwcm9kdWN0IGNhbiBmbG9vciB0byAwIGF0IHRoZSBvdGhlciBlbmQsIHdoZW4gdGhlIHRydWUgcmF0aW9cXG4rXFx0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcXHUwMDNjIDJeZnJhYyAtLSBMMSBzbG93ZXIgdGhhbiB0aGUgaG9zdCAtLVxcbitcXHQgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmVcXG4rXFx0ICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZVxcbitcXHQgKiBTRE0gcmVxdWlyZXMgYSBub256ZXJvIFRTQy1tdWx0aXBsaWVyIHVuZGVyIFxcXCJ1c2UgVFNDIHNjYWxpbmdcXFwiLCB3aGljaFxcbitcXHQgKiBLVk0gYWxyZWFkeSBtaXJyb3JzIG9uIHRoZSBpbnB1dCB2aWEgQ0MoIXZtY3MxMi1cXHUwMDNldHNjX211bHRpcGxpZXIpKSwgYW5kXFxuK1xcdCAqIG9uIEFNRCBpdCBwcm9ncmFtcyBhIGZyb3plbiByYXRpbyBpbnRvIE1TUl9BTUQ2NF9UU0NfUkFUSU8uICBDbGFtcCB1cFxcbitcXHQgKiB0byB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBub256ZXJvIHJhdGlvLCBtaXJyb3JpbmcgdGhlIHNhdHVyYXRpb25cXG4rXFx0ICogYWJvdmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoIW5lc3RlZF9tdWx0aXBsaWVyKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdHJldHVybiBuZXN0ZWRfbXVsdGlwbGllcjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjk1NDA2MzIyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0OTgzODY5MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyMTVjM2M5MGI2ZmJjYTRhM2RmNmFhZDk0MGE5NTQ4MjZjNjNmNTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMDo1ODozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0yNjc1LDExICsyNjc1LDQ1IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCk7XG4gXG4gdTY0IGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih1NjQgbDFfbXVsdGlwbGllciwgdTY0IGwyX211bHRpcGxpZXIpXG4ge1xuLVx0aWYgKGwyX211bHRpcGxpZXIgIT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcbi1cdFx0cmV0dXJuIG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLFxuLVx0XHRcdFx0ICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7XG4rXHR1bnNpZ25lZCBpbnQgZnJhYyA9IGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cztcbitcdHU2NCBuZXN0ZWRfbXVsdGlwbGllcjtcbiBcbi1cdHJldHVybiBsMV9tdWx0aXBsaWVyO1xuK1x0aWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcbitcdFx0cmV0dXJuIGwxX211bHRpcGxpZXI7XG4rXG4rXHQvKlxuK1x0ICogQm90aCBpbnB1dHMgYXJlIGluZGl2aWR1YWxseSB3aXRoaW4gWzEsIG1heF90c2Nfc2NhbGluZ19yYXRpb10sIGJ1dFxuK1x0ICogdGhlaXIgZml4ZWQtcG9pbnQgcHJvZHVjdCAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcbitcdCAqIHRoZSBoYXJkd2FyZSBUU0MgbXVsdGlwbGllciBmaWVsZDogb24gSW50ZWwgdGhlIGhpZ2ggYml0cyB3b3VsZCBiZVxuK1x0ICogc2lsZW50bHkgdHJ1bmNhdGVkICh5aWVsZGluZyBhIHdyb25nIC0tIG9yIGV2ZW4gemVybyAtLSBMMiBzY2FsaW5nXG4rXHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcbitcdCAqIHBoeXNpY2FsIE1TUl9BTUQ2NF9UU0NfUkFUSU8gd3JpdGUuICAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgb3ZlcmZsb3dzIHU2NFxuK1x0ICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgXHUwMDNlPSAoMSBcdTAwM2NcdTAwM2MgZnJhYyk7XG4rXHQgKiBkZXRlY3QgdGhhdCAoYW5kIGFueSByZXN1bHQgYWJvdmUgdGhlIGFkdmVydGlzZWQgbWF4aW11bSkgYW5kXG4rXHQgKiBzYXR1cmF0ZSByYXRoZXIgdGhhbiBwcm9ncmFtIGFuIHVucmVwcmVzZW50YWJsZSByYXRpby5cbitcdCAqL1xuK1x0aWYgKG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCA2NCkgXHUwMDNlPSAoMVVMTCBcdTAwM2NcdTAwM2MgZnJhYykpXG4rXHRcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XG4rXG4rXHRuZXN0ZWRfbXVsdGlwbGllciA9IG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCBmcmFjKTtcbitcdGlmIChuZXN0ZWRfbXVsdGlwbGllciBcdTAwM2Uga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvKVxuK1x0XHRyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvO1xuK1xuK1x0LypcbitcdCAqIFRoZSBzYW1lIHByb2R1Y3QgY2FuIGZsb29yIHRvIDAgYXQgdGhlIG90aGVyIGVuZCwgd2hlbiB0aGUgdHJ1ZSByYXRpb1xuK1x0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcdTAwM2MgMl5mcmFjIC0tIEwxIHNsb3dlciB0aGFuIHRoZSBob3N0IC0tXG4rXHQgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmVcbitcdCAqIHJlcHJlc2VudGFibGUgdGhhbiBhbiBvdmVyc2l6ZWQgb25lOiBJbnRlbCByZWplY3RzIGl0IGF0IFZNLWVudHJ5ICh0aGVcbitcdCAqIFNETSByZXF1aXJlcyBhIG5vbnplcm8gVFNDLW11bHRpcGxpZXIgdW5kZXIgXCJ1c2UgVFNDIHNjYWxpbmdcIiwgd2hpY2hcbitcdCAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLVx1MDAzZXRzY19tdWx0aXBsaWVyKSksIGFuZFxuK1x0ICogb24gQU1EIGl0IHByb2dyYW1zIGEgZnJvemVuIHJhdGlvIGludG8gTVNSX0FNRDY0X1RTQ19SQVRJTy4gIENsYW1wIHVwXG4rXHQgKiB0byB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBub256ZXJvIHJhdGlvLCBtaXJyb3JpbmcgdGhlIHNhdHVyYXRpb25cbitcdCAqIGFib3ZlLlxuK1x0ICovXG4rXHRpZiAoIW5lc3RlZF9tdWx0aXBsaWVyKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdHJldHVybiBuZXN0ZWRfbXVsdGlwbGllcjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo0MS45NTQwNjQ3ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTU5NDQxODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wb3J0YW5jZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHRoaXMgcGF0Y2gsIGFzIEkgc2VlIGl0LiBXZSdyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbDsgaXQncyByZXNwb25zaWJsZSBmb3IgY2FsY3VsYXRpbmcgdGhlIFRTQyBtdWx0aXBsaWVyIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIHBvdGVudGlhbGx5IGNyaXRpY2FsIGZsYXcg4oCTIHRoZSBwb3NzaWJpbGl0eSBvZiBhbiBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUgYmVpbmcgY2FsY3VsYXRlZCBmb3IgdGhlIG11bHRpcGxpZXIuIFRoYXQga2luZCBvZiBidWcgY291bGQgbWFuaWZlc3QgaW4gc29tZSBuYXN0eSB3YXlzOiBWTSBlbnRyeSBmYWlsdXJlcywgR2VuZXJhbCBQcm90ZWN0aW9uIGZhdWx0cyBkdXJpbmcgTVNSIHdyaXRlcyDigJMgdGhpbmdzIHRoYXQgY2FuIGJyaW5nIGEgc3lzdGVtIGRvd24gZmFzdC5cblxuVGhpcyBpcyBjb3JlIEtWTSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBraW5kIG9mIGZ1bmN0aW9uIHRoYXQgZ2V0cyBoYW1tZXJlZCBoYXJkIHdoZW4gcGVvcGxlIGFyZSB1c2luZyBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGFuZCBhbnkgaW5zdGFiaWxpdHkgaW4gdGhpcyBjb2RlIGNvdWxkIGJlIGNhdGFzdHJvcGhpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGUgZml4IGlzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uIHdpdGhpbiBLVk0uXG5cbkdpdmVuIGFsbCB0aGF0LCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBtYWluIHN5bWJvbCBvZiBpbnRlcmVzdCBmb3IgZnV6emluZyBpcyBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYC4gV2UgbmVlZCB0byBlbnN1cmUgS1ZNIGlzIGVuYWJsZWQ6IGBFbmFibGVDb25maWdzOiBLVk1gLlxuXG5Ob3csIGJlZm9yZSBJIGRlY2xhcmUgdGhpcyBmdXp6LXdvcnRoeSwgSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHJlYWNoYWJpbGl0eS4gSXQgbG9va3MgbGlrZSBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBpcyBpbmRlZWQgZXhwb3J0ZWQgaW50ZXJuYWxseSBmb3IgS1ZNIHVzZSwgd2l0aCBgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7YC4gVGhhdCBtZWFucyBpdCdzIGF2YWlsYWJsZSBmb3Igb3RoZXIgS1ZNIG1vZHVsZXMgdG8gY2FsbC4gQW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgYmVpbmcgY2FsbGVkIGZyb20gYHZteC9uZXN0ZWQuY2AgYW5kIGBzdm0vbmVzdGVkLmNgIHRlbGxzIG1lIHRoaXMgaXMgaW4gYWN0aXZlIHVzZS4gRXhjZWxsZW50LiBUaGlzIGNoZWNrcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo0Ny41MTM1MDg3ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4Mzg2MTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNDgzPXU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCh1NjQgbDFfb2Zmc2V0LCB1NjQgbDJfb2Zmc2V0LCB1NjQgbDJfbXVsdGlwbGllcik7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNDg0OnU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI0ODUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE4MzQ9dm9pZCBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgzOC1cXHR2Y3B1LVxcdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4Mzk6XFx0XFx0a3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHZjcHUtXFx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODQwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdm0tXFx1MDAzZXRzY19yYXRpb19tc3IpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzYwPXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MTctXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODE4OlxcdHZjcHUtXFx1MDAzZWFyY2gudHNjX3NjYWxpbmdfcmF0aW8gPSBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIoXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE5LVxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjY3ND1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc1LVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjc2OnU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzE3LX1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjcxODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjcxOS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNzQ3PXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc1Mi1cXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc1MzpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID0ga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKFxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzU0LVxcdFxcdFxcdGwxX211bHRpcGxpZXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQ5Ljg5NzM3NjQxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjc4MzgyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgVFNDIE11bHRpcGxpZXIgQ2FsY3VsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIG11bHRpcGxpZXIgaXMgY2FsY3VsYXRlZCB3aXRoaW4gS1ZNLiBUaGUgZnVuY3Rpb24gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgaXMga2V5IGhlcmUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCwgYHByZXBhcmVfdm1jczAyYCwgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIEV4Y2VsbGVudCwgdGhvc2UgdGhyZWUgY2FsbCBzaXRlcyBzZWVtIGxpa2UgYSBnb29kIHNldCBvZiBmb2N1cyBwb2ludHMgdG8gc3RhcnQgd2l0aC4gSXQgYWxsb3dzIG1lIHRvIHNlZSB0aGUgZmxvdy4gTm93LCB3aGF0IGRvZXMgdGhlIEtjb25maWcgdGVsbCBtZT8gTGV0J3MgY2hlY2sgdGhlcmUgdG8gc2VlIGhvdyB0aGVzZSBiaXRzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgdXNlZnVsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo1My4yNjUyMTY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQ4NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDA6NTg6NTMuMzI1MDcwODU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4ODY0OTQwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgVFNDIE11bHRpcGxpZXIgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBjb25maWd1cmF0aW9uLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYCBhcmUgaW5jbHVkZWQuIFNpbXBsZSBlbm91Z2g7IEknbGwgZ2V0IHRob3NlIGluIHRoZXJlIHJpZ2h0IGF3YXkuXG5cblRoZSBjb3JlIG9mIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCBpcyB0aGUgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgZnVuY3Rpb24uIFRoYXQncyB0aGUga2V5LiBJIGFsc28gaGF2ZSB0byBrZWVwIGluIG1pbmQsICBgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcmAsIGBwcmVwYXJlX3ZtY3MwMmAsIGFuZCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLiBPcmlnaW5hbGx5LCBJIHRob3VnaHQgYHByZXBhcmVfdm1jczAyYCB3YXMgc3RhdGljLCB3aGljaCBtYWRlIG1lIGZlZWwgdGhhdCBpdCBzaG91bGQgYmUgYXZvaWRlZCwgaG93ZXZlciwgSSBhbSBub3cgdGhpbmtpbmcgdG8gaW5jbHVkZSBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBhbmQgYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgIGFuZCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLiBBaCwgd2FpdC4uLiBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCAqaXMqIGV4cG9ydGVkLCBzbyBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgaW1wbGljYXRpb25zIGEgbGl0dGxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjay4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAgaXMgc3RhdGljLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo1OC4wMTM3MjI3MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE2NDA0NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0yNDk0PXN0YXRpYyB1MzIgYWRqdXN0X3RzY19raHoodTMyIGtoeiwgczMyIHBwbSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNTAwLVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNTAxOnN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTAyLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNTAzPXN0YXRpYyBpbnQgc2V0X3RzY19raHooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdXNlcl90c2Nfa2h6LCBib29sIHNjYWxlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MDgtXFx0aWYgKCFzY2FsZSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzoyNTA5OlxcdFxcdGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHZjcHUsIGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTEwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzQtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI1MzU6XFx0a3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIodmNwdSwgcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTM2LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTI1Mzk9c3RhdGljIGludCBrdm1fc2V0X3RzY19raHooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdXNlcl90c2Nfa2h6KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDYtXFx0XFx0Lyogc2V0IHRzY19zY2FsaW5nX3JhdGlvIHRvIGEgc2FmZSB2YWx1ZSAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzoyNTQ3OlxcdFxcdGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHZjcHUsIGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTQ4LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNzIwPXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19vZmZzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgbDFfb2Zmc2V0KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3NDc6c3RhdGljIHZvaWQga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgbDFfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc0OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjU4LjA3NTM2ODU4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjc2ODM3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRTQyBNdWx0aXBsaWVyIFVwZGF0ZXMgaW4gS1ZNIGZvciBOZXN0ZWQgU1ZNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgKFRTQykgbXVsdGlwbGllciBpcyBoYW5kbGVkIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHdpdGggU2VjdXJlIFZpcnR1YWwgTWFjaGluZXMgKFNWTSkuIEkndmUgbm90ZWQgdGhhdCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBkb24ndCBuZWVkIHRvIGRpZyBpbnRvIGl0LiBTYW1lIGdvZXMgZm9yIGBwcmVwYXJlX3ZtY3MwMmAuIFRoYXQgbGVhdmVzIG1lIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBhbmQgYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBkeW5hbWljIHBhcnRzIEkgbmVlZCB0byB1bmRlcnN0YW5kIGJldHRlci5cblxuTm93LCBsZXQncyBzZWUuLi5JIGFsc28gbmVlZCB0byBjb25zaWRlciBga3ZtX3NldF90c2Nfa2h6YCBiZWNhdXNlIGl0IGNhbGxzIHRoYXQgc3RhdGljIGZ1bmN0aW9uLCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLCB3aGljaCBpcyB0aGUgb25lIEkgaW5pdGlhbGx5IGRpc21pc3NlZC4gSG9sZCBvbiBhIHNlY29uZCwgaXMgYGt2bV9zZXRfdHNjX2toemAgKmFsc28qIHN0YXRpYz8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGtleSBlbGVtZW50IGluIHRoZSB1cGRhdGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1OTowMi4xMDMwNjMyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTIxMzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zZXRfdHNjX2toelwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTI1MDM9c3RhdGljIGludCBzZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHosIGJvb2wgc2NhbGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUzOC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjUzOTpzdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTYyMjM9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY1MzgtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY1Mzk6XFx0XFx0aWYgKCFrdm1fc2V0X3RzY19raHoodmNwdSwgdXNlcl90c2Nfa2h6KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjU0MC1cXHRcXHRcXHRyID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMjgwNz1pbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyODgwLVxcdGt2bV92Y3B1X2FmdGVyX3NldF9jcHVpZCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI4ODE6XFx0a3ZtX3NldF90c2Nfa2h6KHZjcHUsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5kZWZhdWx0X3RzY19raHopO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMjg4Mi1cXHRrdm1fdmNwdV9yZXNldCh2Y3B1LCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU5OjAyLjE2MjU5MTE4OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkwMjg0NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBOZXN0ZWQgVFNDIE11bHRpcGxpZXIgRml4KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgS1ZNIGNhbGN1bGF0ZXMgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllci4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fc2V0X3RzY19raHpgIGlzIHN0YXRpYyBpcyBhIGtleSBvYnNlcnZhdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoZSBmdW5jdGlvbnMgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS5cblxuVGhlIHByb2JsZW0sIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgYSBidWcgaW4gdGhlIG11bHRpcGxpZXIgY2FsY3VsYXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIGEgemVybyB2YWx1ZS4gVGhpcywgaW4gdHVybiwgY2FuIGNhdXNlIFZNLWVudHJ5IGZhaWx1cmVzIG9yIGEgI0dQIGZhdWx0IGR1cmluZyBNU1Igd3JpdGVzIOKAkyB3aGljaCBpcyBvYnZpb3VzbHkgYSBwcmV0dHkgc2V2ZXJlIHNpdHVhdGlvbi5cblxuQ3J1Y2lhbGx5LCB0aGlzIGlzbid0IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZTsgdGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGhlYXJ0IG9mIEtWTSdzIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuIEl0J3MgdXNlZCB3aGVuIHJ1bm5pbmcgVk1zIHdpdGhpbiBWTXMuIENvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgY2VudHJhbGl0eSBvZiB0aGUgYWZmZWN0ZWQgY29kZSwgSeKAmW0gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGZvciBmdXp6aW5nIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkwMCwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDA6NTk6MDYuODUyODc4MTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTA1MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJcIixcbiAgICBcIm5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllciBpbiBLVk0sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3ZlcmZsb3cgb3IgemVybyB2YWx1ZXMsIGNhdXNpbmcgVk0tZW50cnkgZmFpbHVyZXMgb3IgI0dQIG9uIE1TUiB3cml0ZXMuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0geDg2IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllclwiLFxuICAgIFwibmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfl6fv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 00:41:00 +0000 UTC FinishedAt: 2026-07-25 00:59:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "b554b386-907e-4786-9136-0a0b04a3198b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_calc_nested_tsc_multiplier", "nested_svm_update_tsc_ratio_msr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllciYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTIxNWMzYzkwYjZmYmNhNGEzZGY2YWFkOTQwYTk1NDgyNmM2M2Y1M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDAwOjU4OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0yNjc1LDExICYjNDM7MjY3NSw0NSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xuIFxuIHU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxuIHtcbi1cdGlmIChsMl9tdWx0aXBsaWVyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXG4tXHRcdHJldHVybiBtdWxfdTY0X3U2NF9zaHIobDFfbXVsdGlwbGllciwgbDJfbXVsdGlwbGllcixcbi1cdFx0XHRcdCAgICAgICBrdm1fY2Fwcy50c2Nfc2NhbGluZ19yYXRpb19mcmFjX2JpdHMpO1xuJiM0MztcdHVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzO1xuJiM0MztcdHU2NCBuZXN0ZWRfbXVsdGlwbGllcjtcbiBcbi1cdHJldHVybiBsMV9tdWx0aXBsaWVyO1xuJiM0MztcdGlmIChsMl9tdWx0aXBsaWVyID09IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXG4mIzQzO1x0XHRyZXR1cm4gbDFfbXVsdGlwbGllcjtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0XG4mIzQzO1x0ICogdGhlaXIgZml4ZWQtcG9pbnQgcHJvZHVjdCAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcbiYjNDM7XHQgKiB0aGUgaGFyZHdhcmUgVFNDIG11bHRpcGxpZXIgZmllbGQ6IG9uIEludGVsIHRoZSBoaWdoIGJpdHMgd291bGQgYmVcbiYjNDM7XHQgKiBzaWxlbnRseSB0cnVuY2F0ZWQgKHlpZWxkaW5nIGEgd3JvbmcgLS0gb3IgZXZlbiB6ZXJvIC0tIEwyIHNjYWxpbmdcbiYjNDM7XHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcbiYjNDM7XHQgKiBwaHlzaWNhbCBNU1JfQU1ENjRfVFNDX1JBVElPIHdyaXRlLiAgKE0xICogTTIpIFx1MDAzZVx1MDAzZSBmcmFjIG92ZXJmbG93cyB1NjRcbiYjNDM7XHQgKiBpZmYgdGhlIGhpZ2ggNjQgYml0cyBvZiB0aGUgMTI4LWJpdCBwcm9kdWN0IGFyZSBcdTAwM2U9ICgxIFx1MDAzY1x1MDAzYyBmcmFjKTtcbiYjNDM7XHQgKiBkZXRlY3QgdGhhdCAoYW5kIGFueSByZXN1bHQgYWJvdmUgdGhlIGFkdmVydGlzZWQgbWF4aW11bSkgYW5kXG4mIzQzO1x0ICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCA2NCkgXHUwMDNlPSAoMVVMTCBcdTAwM2NcdTAwM2MgZnJhYykpXG4mIzQzO1x0XHRyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvO1xuJiM0MztcbiYjNDM7XHRuZXN0ZWRfbXVsdGlwbGllciA9IG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCBmcmFjKTtcbiYjNDM7XHRpZiAobmVzdGVkX211bHRpcGxpZXIgXHUwMDNlIGt2bV9jYXBzLm1heF90c2Nfc2NhbGluZ19yYXRpbylcbiYjNDM7XHRcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHNhbWUgcHJvZHVjdCBjYW4gZmxvb3IgdG8gMCBhdCB0aGUgb3RoZXIgZW5kLCB3aGVuIHRoZSB0cnVlIHJhdGlvXG4mIzQzO1x0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcdTAwM2MgMl5mcmFjIC0tIEwxIHNsb3dlciB0aGFuIHRoZSBob3N0IC0tXG4mIzQzO1x0ICogY29tcG9zZWQgd2l0aCBhIHNtYWxsIGJ1dCBsZWdhbCBNMikuICBBIHplcm8gbXVsdGlwbGllciBpcyBubyBtb3JlXG4mIzQzO1x0ICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZVxuJiM0MztcdCAqIFNETSByZXF1aXJlcyBhIG5vbnplcm8gVFNDLW11bHRpcGxpZXIgdW5kZXIgXCYjMzQ7dXNlIFRTQyBzY2FsaW5nXCYjMzQ7LCB3aGljaFxuJiM0MztcdCAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLVx1MDAzZXRzY19tdWx0aXBsaWVyKSksIGFuZFxuJiM0MztcdCAqIG9uIEFNRCBpdCBwcm9ncmFtcyBhIGZyb3plbiByYXRpbyBpbnRvIE1TUl9BTUQ2NF9UU0NfUkFUSU8uICBDbGFtcCB1cFxuJiM0MztcdCAqIHRvIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG5vbnplcm8gcmF0aW8sIG1pcnJvcmluZyB0aGUgc2F0dXJhdGlvblxuJiM0MztcdCAqIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghbmVzdGVkX211bHRpcGxpZXIpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5lc3RlZF9tdWx0aXBsaWVyO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjE1YzNjOTBiNmZiY2E0YTNkZjZhYWQ5NDBhOTU0ODI2YzYzZjUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMDA6NTg6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0yNjc1LDExICYjNDM7MjY3NSw0NSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpOwogCiB1NjQga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHU2NCBsMV9tdWx0aXBsaWVyLCB1NjQgbDJfbXVsdGlwbGllcikKIHsKLQlpZiAobDJfbXVsdGlwbGllciAhPSBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKQotCQlyZXR1cm4gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsCi0JCQkJICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7CiYjNDM7CXVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzOwomIzQzOwl1NjQgbmVzdGVkX211bHRpcGxpZXI7CiAKLQlyZXR1cm4gbDFfbXVsdGlwbGllcjsKJiM0MzsJaWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbykKJiM0MzsJCXJldHVybiBsMV9tdWx0aXBsaWVyOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0CiYjNDM7CSAqIHRoZWlyIGZpeGVkLXBvaW50IHByb2R1Y3QgKE0xICogTTIpICZndDsmZ3Q7IGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2YKJiM0MzsJICogdGhlIGhhcmR3YXJlIFRTQyBtdWx0aXBsaWVyIGZpZWxkOiBvbiBJbnRlbCB0aGUgaGlnaCBiaXRzIHdvdWxkIGJlCiYjNDM7CSAqIHNpbGVudGx5IHRydW5jYXRlZCAoeWllbGRpbmcgYSB3cm9uZyAtLSBvciBldmVuIHplcm8gLS0gTDIgc2NhbGluZwomIzQzOwkgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGUKJiM0MzsJICogcGh5c2ljYWwgTVNSX0FNRDY0X1RTQ19SQVRJTyB3cml0ZS4gIChNMSAqIE0yKSAmZ3Q7Jmd0OyBmcmFjIG92ZXJmbG93cyB1NjQKJiM0MzsJICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgJmd0Oz0gKDEgJmx0OyZsdDsgZnJhYyk7CiYjNDM7CSAqIGRldGVjdCB0aGF0IChhbmQgYW55IHJlc3VsdCBhYm92ZSB0aGUgYWR2ZXJ0aXNlZCBtYXhpbXVtKSBhbmQKJiM0MzsJICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uCiYjNDM7CSAqLwomIzQzOwlpZiAobXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIDY0KSAmZ3Q7PSAoMVVMTCAmbHQ7Jmx0OyBmcmFjKSkKJiM0MzsJCXJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87CiYjNDM7CiYjNDM7CW5lc3RlZF9tdWx0aXBsaWVyID0gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIGZyYWMpOwomIzQzOwlpZiAobmVzdGVkX211bHRpcGxpZXIgJmd0OyBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW8pCiYjNDM7CQlyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgc2FtZSBwcm9kdWN0IGNhbiBmbG9vciB0byAwIGF0IHRoZSBvdGhlciBlbmQsIHdoZW4gdGhlIHRydWUgcmF0aW8KJiM0MzsJICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSAmbHQ7IDJeZnJhYyAtLSBMMSBzbG93ZXIgdGhhbiB0aGUgaG9zdCAtLQomIzQzOwkgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmUKJiM0MzsJICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZQomIzQzOwkgKiBTRE0gcmVxdWlyZXMgYSBub256ZXJvIFRTQy1tdWx0aXBsaWVyIHVuZGVyICYjMzQ7dXNlIFRTQyBzY2FsaW5nJiMzNDssIHdoaWNoCiYjNDM7CSAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLSZndDt0c2NfbXVsdGlwbGllcikpLCBhbmQKJiM0MzsJICogb24gQU1EIGl0IHByb2dyYW1zIGEgZnJvemVuIHJhdGlvIGludG8gTVNSX0FNRDY0X1RTQ19SQVRJTy4gIENsYW1wIHVwCiYjNDM7CSAqIHRvIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG5vbnplcm8gcmF0aW8sIG1pcnJvcmluZyB0aGUgc2F0dXJhdGlvbgomIzQzOwkgKiBhYm92ZS4KJiM0MzsJICovCiYjNDM7CWlmICghbmVzdGVkX211bHRpcGxpZXIpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5lc3RlZF9tdWx0aXBsaWVyOwogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBvcnRhbmNlIGZvciBGdXp6aW5nKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiB0aGlzIHBhdGNoLCBhcyBJIHNlZSBpdC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgd2l0aGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsOyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY2FsY3VsYXRpbmcgdGhlIFRTQyBtdWx0aXBsaWVyIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIHBvdGVudGlhbGx5IGNyaXRpY2FsIGZsYXcg4oCTIHRoZSBwb3NzaWJpbGl0eSBvZiBhbiBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUgYmVpbmcgY2FsY3VsYXRlZCBmb3IgdGhlIG11bHRpcGxpZXIuIFRoYXQga2luZCBvZiBidWcgY291bGQgbWFuaWZlc3QgaW4gc29tZSBuYXN0eSB3YXlzOiBWTSBlbnRyeSBmYWlsdXJlcywgR2VuZXJhbCBQcm90ZWN0aW9uIGZhdWx0cyBkdXJpbmcgTVNSIHdyaXRlcyDigJMgdGhpbmdzIHRoYXQgY2FuIGJyaW5nIGEgc3lzdGVtIGRvd24gZmFzdC4KClRoaXMgaXMgY29yZSBLVk0gZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGdldHMgaGFtbWVyZWQgaGFyZCB3aGVuIHBlb3BsZSBhcmUgdXNpbmcgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBhbmQgYW55IGluc3RhYmlsaXR5IGluIHRoaXMgY29kZSBjb3VsZCBiZSBjYXRhc3Ryb3BoaWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZS4gVGhlIGZpeCBpcyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbiB3aXRoaW4gS1ZNLgoKR2l2ZW4gYWxsIHRoYXQsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBtYWluIHN5bWJvbCBvZiBpbnRlcmVzdCBmb3IgZnV6emluZyBpcyBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYC4gV2UgbmVlZCB0byBlbnN1cmUgS1ZNIGlzIGVuYWJsZWQ6IGBFbmFibGVDb25maWdzOiBLVk1gLgoKTm93LCBiZWZvcmUgSSBkZWNsYXJlIHRoaXMgZnV6ei13b3J0aHksIEkgbmVlZCB0byBjb25maXJtIGl0cyByZWFjaGFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgaXMgaW5kZWVkIGV4cG9ydGVkIGludGVybmFsbHkgZm9yIEtWTSB1c2UsIHdpdGggYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIpO2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBvdGhlciBLVk0gbW9kdWxlcyB0byBjYWxsLiBBbmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgdm14L25lc3RlZC5jYCBhbmQgYHN2bS9uZXN0ZWQuY2AgdGVsbHMgbWUgdGhpcyBpcyBpbiBhY3RpdmUgdXNlLiBFeGNlbGxlbnQuIFRoaXMgY2hlY2tzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNDgzPXU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCh1NjQgbDFfb2Zmc2V0LCB1NjQgbDJfb2Zmc2V0LCB1NjQgbDJfbXVsdGlwbGllcik7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjI0ODQ6dTY0IGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih1NjQgbDFfbXVsdGlwbGllciwgdTY0IGwyX211bHRpcGxpZXIpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0yNDg1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTgzND12b2lkIG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgzOC1cdHZjcHUtXHUwMDNlYXJjaC50c2Nfc2NhbGluZ19yYXRpbyA9XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4Mzk6XHRcdGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih2Y3B1LVx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4NDAtXHRcdFx0XHRcdCAgICAgICBzdm0tXHUwMDNldHNjX3JhdGlvX21zcik7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzYwPXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE3LVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODE4Olx0dmNwdS1cdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID0ga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE5LVx0XHRcdHZjcHUtXHUwMDNlYXJjaC5sMV90c2Nfc2NhbGluZ19yYXRpbyxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjY3ND1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI2NzUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjY3Njp1NjQga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHU2NCBsMV9tdWx0aXBsaWVyLCB1NjQgbDJfbXVsdGlwbGllcilcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc3LXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjcxNy19XG5hcmNoL3g4Ni9rdm0veDg2LmM6MjcxODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNzE5LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNzQ3PXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NTItXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYzoyNzUzOlx0XHR2Y3B1LVx1MDAzZWFyY2gudHNjX3NjYWxpbmdfcmF0aW8gPSBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIoXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc1NC1cdFx0XHRsMV9tdWx0aXBsaWVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipUcmFjaW5nIHRoZSBUU0MgTXVsdGlwbGllciBDYWxjdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBtdWx0aXBsaWVyIGlzIGNhbGN1bGF0ZWQgd2l0aGluIEtWTS4gVGhlIGZ1bmN0aW9uIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGlzIGtleSBoZXJlLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgLCBgcHJlcGFyZV92bWNzMDJgLCBhbmQgYGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyYC4gRXhjZWxsZW50LCB0aG9zZSB0aHJlZSBjYWxsIHNpdGVzIHNlZW0gbGlrZSBhIGdvb2Qgc2V0IG9mIGZvY3VzIHBvaW50cyB0byBzdGFydCB3aXRoLiBJdCBhbGxvd3MgbWUgdG8gc2VlIHRoZSBmbG93LiBOb3csIHdoYXQgZG9lcyB0aGUgS2NvbmZpZyB0ZWxsIG1lPyBMZXQmIzM5O3MgY2hlY2sgdGhlcmUgdG8gc2VlIGhvdyB0aGVzZSBiaXRzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgdXNlZnVsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIENvbmZpZ3VyYXRpb24gYW5kIFRTQyBNdWx0aXBsaWVyIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBjb25maWd1cmF0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAgYXJlIGluY2x1ZGVkLiBTaW1wbGUgZW5vdWdoOyBJJiMzOTtsbCBnZXQgdGhvc2UgaW4gdGhlcmUgcmlnaHQgYXdheS4KClRoZSBjb3JlIG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGggaXMgdGhlIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgYWxzbyBoYXZlIHRvIGtlZXAgaW4gbWluZCwgIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCwgYHByZXBhcmVfdm1jczAyYCwgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIE9yaWdpbmFsbHksIEkgdGhvdWdodCBgcHJlcGFyZV92bWNzMDJgIHdhcyBzdGF0aWMsIHdoaWNoIG1hZGUgbWUgZmVlbCB0aGF0IGl0IHNob3VsZCBiZSBhdm9pZGVkLCBob3dldmVyLCBJIGFtIG5vdyB0aGlua2luZyB0byBpbmNsdWRlIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIGFuZCBgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcmAgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIEFoLCB3YWl0Li4uIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgICppcyogZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgaW1wbGljYXRpb25zIGEgbGl0dGxlLgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2suIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaWYgYGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyYCBpcyBzdGF0aWMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0yNDk0PXN0YXRpYyB1MzIgYWRqdXN0X3RzY19raHoodTMyIGtoeiwgczMyIHBwbSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUwMC1cbmFyY2gveDg2L2t2bS94ODYuYzoyNTAxOnN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MDItXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjUwMz1zdGF0aWMgaW50IHNldF90c2Nfa2h6KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHVzZXJfdHNjX2toeiwgYm9vbCBzY2FsZSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUwOC1cdGlmICghc2NhbGUpIHtcbmFyY2gveDg2L2t2bS94ODYuYzoyNTA5Olx0XHRrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcih2Y3B1LCBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNTEwLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUzNC1cbmFyY2gveDg2L2t2bS94ODYuYzoyNTM1Olx0a3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIodmNwdSwgcmF0aW8pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzYtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjUzOT1zdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDYtXHRcdC8qIHNldCB0c2Nfc2NhbGluZ19yYXRpbyB0byBhIHNhZmUgdmFsdWUgKi9cbmFyY2gveDg2L2t2bS94ODYuYzoyNTQ3Olx0XHRrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcih2Y3B1LCBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNTQ4LVx0XHRyZXR1cm4gLTE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3MjA9c3RhdGljIHZvaWQga3ZtX3ZjcHVfd3JpdGVfdHNjX29mZnNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBsMV9vZmZzZXQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc0NzpzdGF0aWMgdm9pZCBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBsMV9tdWx0aXBsaWVyKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRTQyBNdWx0aXBsaWVyIFVwZGF0ZXMgaW4gS1ZNIGZvciBOZXN0ZWQgU1ZNKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIFRpbWUgU3RhbXAgQ291bnRlciAoVFNDKSBtdWx0aXBsaWVyIGlzIGhhbmRsZWQgd2l0aGluIEtWTSwgc3BlY2lmaWNhbGx5IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2l0aCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lcyAoU1ZNKS4gSSYjMzk7dmUgbm90ZWQgdGhhdCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBkb24mIzM5O3QgbmVlZCB0byBkaWcgaW50byBpdC4gU2FtZSBnb2VzIGZvciBgcHJlcGFyZV92bWNzMDJgLiBUaGF0IGxlYXZlcyBtZSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYC4gVGhvc2Ugc2VlbSB0byBiZSB0aGUgZHluYW1pYyBwYXJ0cyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIuCgpOb3csIGxldCYjMzk7cyBzZWUuLi5JIGFsc28gbmVlZCB0byBjb25zaWRlciBga3ZtX3NldF90c2Nfa2h6YCBiZWNhdXNlIGl0IGNhbGxzIHRoYXQgc3RhdGljIGZ1bmN0aW9uLCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLCB3aGljaCBpcyB0aGUgb25lIEkgaW5pdGlhbGx5IGRpc21pc3NlZC4gSG9sZCBvbiBhIHNlY29uZCwgaXMgYGt2bV9zZXRfdHNjX2toemAgKmFsc28qIHN0YXRpYz8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEga2V5IGVsZW1lbnQgaW4gdGhlIHVwZGF0ZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fc2V0X3RzY19raHomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI1MDM9c3RhdGljIGludCBzZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHosIGJvb2wgc2NhbGUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzgtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjUzOTpzdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjU0MC17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTYyMjM9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy02NTM4LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjY1Mzk6XHRcdGlmICgha3ZtX3NldF90c2Nfa2h6KHZjcHUsIHVzZXJfdHNjX2toeikpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjU0MC1cdFx0XHRyID0gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTI4MDc9aW50IGt2bV9hcmNoX3ZjcHVfY3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTI4ODAtXHRrdm1fdmNwdV9hZnRlcl9zZXRfY3B1aWQodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI4ODE6XHRrdm1fc2V0X3RzY19raHoodmNwdSwgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5kZWZhdWx0X3RzY19raHopO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEyODgyLVx0a3ZtX3ZjcHVfcmVzZXQodmNwdSwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTAwCgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gTmVzdGVkIFRTQyBNdWx0aXBsaWVyIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgS1ZNIGNhbGN1bGF0ZXMgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllci4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fc2V0X3RzY19raHpgIGlzIHN0YXRpYyBpcyBhIGtleSBvYnNlcnZhdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoZSBmdW5jdGlvbnMgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS4KClRoZSBwcm9ibGVtLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIGEgYnVnIGluIHRoZSBtdWx0aXBsaWVyIGNhbGN1bGF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUuIFRoaXMsIGluIHR1cm4sIGNhbiBjYXVzZSBWTS1lbnRyeSBmYWlsdXJlcyBvciBhICNHUCBmYXVsdCBkdXJpbmcgTVNSIHdyaXRlcyDigJMgd2hpY2ggaXMgb2J2aW91c2x5IGEgcHJldHR5IHNldmVyZSBzaXR1YXRpb24uCgpDcnVjaWFsbHksIHRoaXMgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZTsgdGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGhlYXJ0IG9mIEtWTSYjMzk7cyB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiBJdCYjMzk7cyB1c2VkIHdoZW4gcnVubmluZyBWTXMgd2l0aGluIFZNcy4gQ29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBjZW50cmFsaXR5IG9mIHRoZSBhZmZlY3RlZCBjb2RlLCBJ4oCZbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGl0IGZvciBmdXp6aW5nIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDA6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllciYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDssCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXImIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllciBpbiBLVk0sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3ZlcmZsb3cgb3IgemVybyB2YWx1ZXMsIGNhdXNpbmcgVk0tZW50cnkgZmFpbHVyZXMgb3IgI0dQIG9uIE1TUiB3cml0ZXMuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0geDg2IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjM1MzY2MzM3N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTg0Mjc4NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjM1MzY3MTUwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5NjEzODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTIxNWMzYzkwYjZmYmNhNGEzZGY2YWFkOTQwYTk1NDgyNmM2M2Y1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMDo1ODozOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCBhZmNhYzEwNDI5NDdhNS4uYTY1ZDIzY2JiNDliM2MgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTI2NzUsMTEgKzI2NzUsNDUgQEAgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2Nfb2Zmc2V0KTtcXG4gXFxuIHU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxcbiB7XFxuLVxcdGlmIChsMl9tdWx0aXBsaWVyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXFxuLVxcdFxcdHJldHVybiBtdWxfdTY0X3U2NF9zaHIobDFfbXVsdGlwbGllciwgbDJfbXVsdGlwbGllcixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7XFxuK1xcdHVuc2lnbmVkIGludCBmcmFjID0ga3ZtX2NhcHMudHNjX3NjYWxpbmdfcmF0aW9fZnJhY19iaXRzO1xcbitcXHR1NjQgbmVzdGVkX211bHRpcGxpZXI7XFxuIFxcbi1cXHRyZXR1cm4gbDFfbXVsdGlwbGllcjtcXG4rXFx0aWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcXG4rXFx0XFx0cmV0dXJuIGwxX211bHRpcGxpZXI7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBCb3RoIGlucHV0cyBhcmUgaW5kaXZpZHVhbGx5IHdpdGhpbiBbMSwgbWF4X3RzY19zY2FsaW5nX3JhdGlvXSwgYnV0XFxuK1xcdCAqIHRoZWlyIGZpeGVkLXBvaW50IHByb2R1Y3QgKE0xICogTTIpIFxcdTAwM2VcXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcXG4rXFx0ICogdGhlIGhhcmR3YXJlIFRTQyBtdWx0aXBsaWVyIGZpZWxkOiBvbiBJbnRlbCB0aGUgaGlnaCBiaXRzIHdvdWxkIGJlXFxuK1xcdCAqIHNpbGVudGx5IHRydW5jYXRlZCAoeWllbGRpbmcgYSB3cm9uZyAtLSBvciBldmVuIHplcm8gLS0gTDIgc2NhbGluZ1xcbitcXHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcXG4rXFx0ICogcGh5c2ljYWwgTVNSX0FNRDY0X1RTQ19SQVRJTyB3cml0ZS4gIChNMSAqIE0yKSBcXHUwMDNlXFx1MDAzZSBmcmFjIG92ZXJmbG93cyB1NjRcXG4rXFx0ICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgXFx1MDAzZT0gKDEgXFx1MDAzY1xcdTAwM2MgZnJhYyk7XFxuK1xcdCAqIGRldGVjdCB0aGF0IChhbmQgYW55IHJlc3VsdCBhYm92ZSB0aGUgYWR2ZXJ0aXNlZCBtYXhpbXVtKSBhbmRcXG4rXFx0ICogc2F0dXJhdGUgcmF0aGVyIHRoYW4gcHJvZ3JhbSBhbiB1bnJlcHJlc2VudGFibGUgcmF0aW8uXFxuK1xcdCAqL1xcbitcXHRpZiAobXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIDY0KSBcXHUwMDNlPSAoMVVMTCBcXHUwMDNjXFx1MDAzYyBmcmFjKSlcXG4rXFx0XFx0cmV0dXJuIGt2bV9jYXBzLm1heF90c2Nfc2NhbGluZ19yYXRpbztcXG4rXFxuK1xcdG5lc3RlZF9tdWx0aXBsaWVyID0gbXVsX3U2NF91NjRfc2hyKGwxX211bHRpcGxpZXIsIGwyX211bHRpcGxpZXIsIGZyYWMpO1xcbitcXHRpZiAobmVzdGVkX211bHRpcGxpZXIgXFx1MDAzZSBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW8pXFxuK1xcdFxcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgc2FtZSBwcm9kdWN0IGNhbiBmbG9vciB0byAwIGF0IHRoZSBvdGhlciBlbmQsIHdoZW4gdGhlIHRydWUgcmF0aW9cXG4rXFx0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcXHUwMDNjIDJeZnJhYyAtLSBMMSBzbG93ZXIgdGhhbiB0aGUgaG9zdCAtLVxcbitcXHQgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmVcXG4rXFx0ICogcmVwcmVzZW50YWJsZSB0aGFuIGFuIG92ZXJzaXplZCBvbmU6IEludGVsIHJlamVjdHMgaXQgYXQgVk0tZW50cnkgKHRoZVxcbitcXHQgKiBTRE0gcmVxdWlyZXMgYSBub256ZXJvIFRTQy1tdWx0aXBsaWVyIHVuZGVyIFxcXCJ1c2UgVFNDIHNjYWxpbmdcXFwiLCB3aGljaFxcbitcXHQgKiBLVk0gYWxyZWFkeSBtaXJyb3JzIG9uIHRoZSBpbnB1dCB2aWEgQ0MoIXZtY3MxMi1cXHUwMDNldHNjX211bHRpcGxpZXIpKSwgYW5kXFxuK1xcdCAqIG9uIEFNRCBpdCBwcm9ncmFtcyBhIGZyb3plbiByYXRpbyBpbnRvIE1TUl9BTUQ2NF9UU0NfUkFUSU8uICBDbGFtcCB1cFxcbitcXHQgKiB0byB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBub256ZXJvIHJhdGlvLCBtaXJyb3JpbmcgdGhlIHNhdHVyYXRpb25cXG4rXFx0ICogYWJvdmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoIW5lc3RlZF9tdWx0aXBsaWVyKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdHJldHVybiBuZXN0ZWRfbXVsdGlwbGllcjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQxLjk1NDA2MzIyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0OTgzODY5MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBuZXN0ZWQgVFNDIG11bHRpcGxpZXIgaW4gS1ZNLCB3aGljaCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIHplcm8gdmFsdWVzLCBjYXVzaW5nIFZNLWVudHJ5IGZhaWx1cmVzIG9yICNHUCBvbiBNU1Igd3JpdGVzLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgaW4gdGhlIGNvcmUgS1ZNIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyMTVjM2M5MGI2ZmJjYTRhM2RmNmFhZDk0MGE5NTQ4MjZjNjNmNTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMDo1ODozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YTUuLmE2NWQyM2NiYjQ5YjNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0yNjc1LDExICsyNjc1LDQ1IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCk7XG4gXG4gdTY0IGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcih1NjQgbDFfbXVsdGlwbGllciwgdTY0IGwyX211bHRpcGxpZXIpXG4ge1xuLVx0aWYgKGwyX211bHRpcGxpZXIgIT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcbi1cdFx0cmV0dXJuIG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLFxuLVx0XHRcdFx0ICAgICAgIGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cyk7XG4rXHR1bnNpZ25lZCBpbnQgZnJhYyA9IGt2bV9jYXBzLnRzY19zY2FsaW5nX3JhdGlvX2ZyYWNfYml0cztcbitcdHU2NCBuZXN0ZWRfbXVsdGlwbGllcjtcbiBcbi1cdHJldHVybiBsMV9tdWx0aXBsaWVyO1xuK1x0aWYgKGwyX211bHRpcGxpZXIgPT0ga3ZtX2NhcHMuZGVmYXVsdF90c2Nfc2NhbGluZ19yYXRpbylcbitcdFx0cmV0dXJuIGwxX211bHRpcGxpZXI7XG4rXG4rXHQvKlxuK1x0ICogQm90aCBpbnB1dHMgYXJlIGluZGl2aWR1YWxseSB3aXRoaW4gWzEsIG1heF90c2Nfc2NhbGluZ19yYXRpb10sIGJ1dFxuK1x0ICogdGhlaXIgZml4ZWQtcG9pbnQgcHJvZHVjdCAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgY2FuIGV4Y2VlZCB0aGUgd2lkdGggb2ZcbitcdCAqIHRoZSBoYXJkd2FyZSBUU0MgbXVsdGlwbGllciBmaWVsZDogb24gSW50ZWwgdGhlIGhpZ2ggYml0cyB3b3VsZCBiZVxuK1x0ICogc2lsZW50bHkgdHJ1bmNhdGVkICh5aWVsZGluZyBhIHdyb25nIC0tIG9yIGV2ZW4gemVybyAtLSBMMiBzY2FsaW5nXG4rXHQgKiByYXRpbyksIGFuZCBvbiBBTUQgdGhlIHN1cnBsdXMgYml0cyBhcmUgcmVzZXJ2ZWQgYml0cyB0aGF0ICNHUCB0aGVcbitcdCAqIHBoeXNpY2FsIE1TUl9BTUQ2NF9UU0NfUkFUSU8gd3JpdGUuICAoTTEgKiBNMikgXHUwMDNlXHUwMDNlIGZyYWMgb3ZlcmZsb3dzIHU2NFxuK1x0ICogaWZmIHRoZSBoaWdoIDY0IGJpdHMgb2YgdGhlIDEyOC1iaXQgcHJvZHVjdCBhcmUgXHUwMDNlPSAoMSBcdTAwM2NcdTAwM2MgZnJhYyk7XG4rXHQgKiBkZXRlY3QgdGhhdCAoYW5kIGFueSByZXN1bHQgYWJvdmUgdGhlIGFkdmVydGlzZWQgbWF4aW11bSkgYW5kXG4rXHQgKiBzYXR1cmF0ZSByYXRoZXIgdGhhbiBwcm9ncmFtIGFuIHVucmVwcmVzZW50YWJsZSByYXRpby5cbitcdCAqL1xuK1x0aWYgKG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCA2NCkgXHUwMDNlPSAoMVVMTCBcdTAwM2NcdTAwM2MgZnJhYykpXG4rXHRcdHJldHVybiBrdm1fY2Fwcy5tYXhfdHNjX3NjYWxpbmdfcmF0aW87XG4rXG4rXHRuZXN0ZWRfbXVsdGlwbGllciA9IG11bF91NjRfdTY0X3NocihsMV9tdWx0aXBsaWVyLCBsMl9tdWx0aXBsaWVyLCBmcmFjKTtcbitcdGlmIChuZXN0ZWRfbXVsdGlwbGllciBcdTAwM2Uga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvKVxuK1x0XHRyZXR1cm4ga3ZtX2NhcHMubWF4X3RzY19zY2FsaW5nX3JhdGlvO1xuK1xuK1x0LypcbitcdCAqIFRoZSBzYW1lIHByb2R1Y3QgY2FuIGZsb29yIHRvIDAgYXQgdGhlIG90aGVyIGVuZCwgd2hlbiB0aGUgdHJ1ZSByYXRpb1xuK1x0ICogaXMgYmVsb3cgb25lIHVscCAoZS5nLiBNMSBcdTAwM2MgMl5mcmFjIC0tIEwxIHNsb3dlciB0aGFuIHRoZSBob3N0IC0tXG4rXHQgKiBjb21wb3NlZCB3aXRoIGEgc21hbGwgYnV0IGxlZ2FsIE0yKS4gIEEgemVybyBtdWx0aXBsaWVyIGlzIG5vIG1vcmVcbitcdCAqIHJlcHJlc2VudGFibGUgdGhhbiBhbiBvdmVyc2l6ZWQgb25lOiBJbnRlbCByZWplY3RzIGl0IGF0IFZNLWVudHJ5ICh0aGVcbitcdCAqIFNETSByZXF1aXJlcyBhIG5vbnplcm8gVFNDLW11bHRpcGxpZXIgdW5kZXIgXCJ1c2UgVFNDIHNjYWxpbmdcIiwgd2hpY2hcbitcdCAqIEtWTSBhbHJlYWR5IG1pcnJvcnMgb24gdGhlIGlucHV0IHZpYSBDQyghdm1jczEyLVx1MDAzZXRzY19tdWx0aXBsaWVyKSksIGFuZFxuK1x0ICogb24gQU1EIGl0IHByb2dyYW1zIGEgZnJvemVuIHJhdGlvIGludG8gTVNSX0FNRDY0X1RTQ19SQVRJTy4gIENsYW1wIHVwXG4rXHQgKiB0byB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBub256ZXJvIHJhdGlvLCBtaXJyb3JpbmcgdGhlIHNhdHVyYXRpb25cbitcdCAqIGFib3ZlLlxuK1x0ICovXG4rXHRpZiAoIW5lc3RlZF9tdWx0aXBsaWVyKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdHJldHVybiBuZXN0ZWRfbXVsdGlwbGllcjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo0MS45NTQwNjQ3ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTU5NDQxODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wb3J0YW5jZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHRoaXMgcGF0Y2gsIGFzIEkgc2VlIGl0LiBXZSdyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIGBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJgIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbDsgaXQncyByZXNwb25zaWJsZSBmb3IgY2FsY3VsYXRpbmcgdGhlIFRTQyBtdWx0aXBsaWVyIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zIG9uIHg4NiBhcmNoaXRlY3R1cmVzLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyBhIHBvdGVudGlhbGx5IGNyaXRpY2FsIGZsYXcg4oCTIHRoZSBwb3NzaWJpbGl0eSBvZiBhbiBvdmVyZmxvdyBvciBhIHplcm8gdmFsdWUgYmVpbmcgY2FsY3VsYXRlZCBmb3IgdGhlIG11bHRpcGxpZXIuIFRoYXQga2luZCBvZiBidWcgY291bGQgbWFuaWZlc3QgaW4gc29tZSBuYXN0eSB3YXlzOiBWTSBlbnRyeSBmYWlsdXJlcywgR2VuZXJhbCBQcm90ZWN0aW9uIGZhdWx0cyBkdXJpbmcgTVNSIHdyaXRlcyDigJMgdGhpbmdzIHRoYXQgY2FuIGJyaW5nIGEgc3lzdGVtIGRvd24gZmFzdC5cblxuVGhpcyBpcyBjb3JlIEtWTSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBraW5kIG9mIGZ1bmN0aW9uIHRoYXQgZ2V0cyBoYW1tZXJlZCBoYXJkIHdoZW4gcGVvcGxlIGFyZSB1c2luZyBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGFuZCBhbnkgaW5zdGFiaWxpdHkgaW4gdGhpcyBjb2RlIGNvdWxkIGJlIGNhdGFzdHJvcGhpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlLiBUaGUgZml4IGlzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uIHdpdGhpbiBLVk0uXG5cbkdpdmVuIGFsbCB0aGF0LCB0aGUgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBtYWluIHN5bWJvbCBvZiBpbnRlcmVzdCBmb3IgZnV6emluZyBpcyBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYC4gV2UgbmVlZCB0byBlbnN1cmUgS1ZNIGlzIGVuYWJsZWQ6IGBFbmFibGVDb25maWdzOiBLVk1gLlxuXG5Ob3csIGJlZm9yZSBJIGRlY2xhcmUgdGhpcyBmdXp6LXdvcnRoeSwgSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHJlYWNoYWJpbGl0eS4gSXQgbG9va3MgbGlrZSBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBpcyBpbmRlZWQgZXhwb3J0ZWQgaW50ZXJuYWxseSBmb3IgS1ZNIHVzZSwgd2l0aCBgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcik7YC4gVGhhdCBtZWFucyBpdCdzIGF2YWlsYWJsZSBmb3Igb3RoZXIgS1ZNIG1vZHVsZXMgdG8gY2FsbC4gQW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgYmVpbmcgY2FsbGVkIGZyb20gYHZteC9uZXN0ZWQuY2AgYW5kIGBzdm0vbmVzdGVkLmNgIHRlbGxzIG1lIHRoaXMgaXMgaW4gYWN0aXZlIHVzZS4gRXhjZWxsZW50LiBUaGlzIGNoZWNrcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo0Ny41MTM1MDg3ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4Mzg2MTAxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD0yNDgzPXU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX29mZnNldCh1NjQgbDFfb2Zmc2V0LCB1NjQgbDJfb2Zmc2V0LCB1NjQgbDJfbXVsdGlwbGllcik7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDoyNDg0OnU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTI0ODUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE4MzQ9dm9pZCBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgzOC1cXHR2Y3B1LVxcdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4Mzk6XFx0XFx0a3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKHZjcHUtXFx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODQwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdm0tXFx1MDAzZXRzY19yYXRpb19tc3IpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzYwPXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI4MTctXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODE4OlxcdHZjcHUtXFx1MDAzZWFyY2gudHNjX3NjYWxpbmdfcmF0aW8gPSBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIoXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODE5LVxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubDFfdHNjX3NjYWxpbmdfcmF0aW8sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjY3ND1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19vZmZzZXQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc1LVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjc2OnU2NCBrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXIodTY0IGwxX211bHRpcGxpZXIsIHU2NCBsMl9tdWx0aXBsaWVyKVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNjc3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzE3LX1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjcxODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjcxOS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNzQ3PXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc1Mi1cXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc1MzpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnRzY19zY2FsaW5nX3JhdGlvID0ga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyKFxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzU0LVxcdFxcdFxcdGwxX211bHRpcGxpZXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjQ5Ljg5NzM3NjQxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjc4MzgyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgVFNDIE11bHRpcGxpZXIgQ2FsY3VsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIChUU0MpIG11bHRpcGxpZXIgaXMgY2FsY3VsYXRlZCB3aXRoaW4gS1ZNLiBUaGUgZnVuY3Rpb24gYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgaXMga2V5IGhlcmUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCwgYHByZXBhcmVfdm1jczAyYCwgYW5kIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAuIEV4Y2VsbGVudCwgdGhvc2UgdGhyZWUgY2FsbCBzaXRlcyBzZWVtIGxpa2UgYSBnb29kIHNldCBvZiBmb2N1cyBwb2ludHMgdG8gc3RhcnQgd2l0aC4gSXQgYWxsb3dzIG1lIHRvIHNlZSB0aGUgZmxvdy4gTm93LCB3aGF0IGRvZXMgdGhlIEtjb25maWcgdGVsbCBtZT8gTGV0J3MgY2hlY2sgdGhlcmUgdG8gc2VlIGhvdyB0aGVzZSBiaXRzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIHNvbWUgdXNlZnVsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo1My4yNjUyMTY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQ4NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDA6NTg6NTMuMzI1MDcwODU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4ODY0OTQwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gQ29uZmlndXJhdGlvbiBhbmQgVFNDIE11bHRpcGxpZXIgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBjb25maWd1cmF0aW9uLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYCBhcmUgaW5jbHVkZWQuIFNpbXBsZSBlbm91Z2g7IEknbGwgZ2V0IHRob3NlIGluIHRoZXJlIHJpZ2h0IGF3YXkuXG5cblRoZSBjb3JlIG9mIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCBpcyB0aGUgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgZnVuY3Rpb24uIFRoYXQncyB0aGUga2V5LiBJIGFsc28gaGF2ZSB0byBrZWVwIGluIG1pbmQsICBgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcmAsIGBwcmVwYXJlX3ZtY3MwMmAsIGFuZCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLiBPcmlnaW5hbGx5LCBJIHRob3VnaHQgYHByZXBhcmVfdm1jczAyYCB3YXMgc3RhdGljLCB3aGljaCBtYWRlIG1lIGZlZWwgdGhhdCBpdCBzaG91bGQgYmUgYXZvaWRlZCwgaG93ZXZlciwgSSBhbSBub3cgdGhpbmtpbmcgdG8gaW5jbHVkZSBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBhbmQgYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgIGFuZCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLiBBaCwgd2FpdC4uLiBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCAqaXMqIGV4cG9ydGVkLCBzbyBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgaW1wbGljYXRpb25zIGEgbGl0dGxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjay4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBrdm1fdmNwdV93cml0ZV90c2NfbXVsdGlwbGllcmAgaXMgc3RhdGljLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1ODo1OC4wMTM3MjI3MzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE2NDA0NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0yNDk0PXN0YXRpYyB1MzIgYWRqdXN0X3RzY19raHoodTMyIGtoeiwgczMyIHBwbSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNTAwLVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNTAxOnN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGwxX211bHRpcGxpZXIpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTAyLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNTAzPXN0YXRpYyBpbnQgc2V0X3RzY19raHooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdXNlcl90c2Nfa2h6LCBib29sIHNjYWxlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MDgtXFx0aWYgKCFzY2FsZSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzoyNTA5OlxcdFxcdGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHZjcHUsIGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTEwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1MzQtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI1MzU6XFx0a3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIodmNwdSwgcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTM2LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTI1Mzk9c3RhdGljIGludCBrdm1fc2V0X3RzY19raHooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdXNlcl90c2Nfa2h6KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDYtXFx0XFx0Lyogc2V0IHRzY19zY2FsaW5nX3JhdGlvIHRvIGEgc2FmZSB2YWx1ZSAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzoyNTQ3OlxcdFxcdGt2bV92Y3B1X3dyaXRlX3RzY19tdWx0aXBsaWVyKHZjcHUsIGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0yNTQ4LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNzIwPXN0YXRpYyB2b2lkIGt2bV92Y3B1X3dyaXRlX3RzY19vZmZzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgbDFfb2Zmc2V0KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3NDYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3NDc6c3RhdGljIHZvaWQga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgbDFfbXVsdGlwbGllcilcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc0OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU4OjU4LjA3NTM2ODU4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjc2ODM3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRTQyBNdWx0aXBsaWVyIFVwZGF0ZXMgaW4gS1ZNIGZvciBOZXN0ZWQgU1ZNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgKFRTQykgbXVsdGlwbGllciBpcyBoYW5kbGVkIHdpdGhpbiBLVk0sIHNwZWNpZmljYWxseSBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHdpdGggU2VjdXJlIFZpcnR1YWwgTWFjaGluZXMgKFNWTSkuIEkndmUgbm90ZWQgdGhhdCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBkb24ndCBuZWVkIHRvIGRpZyBpbnRvIGl0LiBTYW1lIGdvZXMgZm9yIGBwcmVwYXJlX3ZtY3MwMmAuIFRoYXQgbGVhdmVzIG1lIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiBga3ZtX2NhbGNfbmVzdGVkX3RzY19tdWx0aXBsaWVyYCBhbmQgYG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JgLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBkeW5hbWljIHBhcnRzIEkgbmVlZCB0byB1bmRlcnN0YW5kIGJldHRlci5cblxuTm93LCBsZXQncyBzZWUuLi5JIGFsc28gbmVlZCB0byBjb25zaWRlciBga3ZtX3NldF90c2Nfa2h6YCBiZWNhdXNlIGl0IGNhbGxzIHRoYXQgc3RhdGljIGZ1bmN0aW9uLCBga3ZtX3ZjcHVfd3JpdGVfdHNjX211bHRpcGxpZXJgLCB3aGljaCBpcyB0aGUgb25lIEkgaW5pdGlhbGx5IGRpc21pc3NlZC4gSG9sZCBvbiBhIHNlY29uZCwgaXMgYGt2bV9zZXRfdHNjX2toemAgKmFsc28qIHN0YXRpYz8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGtleSBlbGVtZW50IGluIHRoZSB1cGRhdGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMDo1OTowMi4xMDMwNjMyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTIxMzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zZXRfdHNjX2toelwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTI1MDM9c3RhdGljIGludCBzZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHosIGJvb2wgc2NhbGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjUzOC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjUzOTpzdGF0aWMgaW50IGt2bV9zZXRfdHNjX2toeihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB1c2VyX3RzY19raHopXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI1NDAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTYyMjM9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY1MzgtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY1Mzk6XFx0XFx0aWYgKCFrdm1fc2V0X3RzY19raHoodmNwdSwgdXNlcl90c2Nfa2h6KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjU0MC1cXHRcXHRcXHRyID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMjgwNz1pbnQga3ZtX2FyY2hfdmNwdV9jcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEyODgwLVxcdGt2bV92Y3B1X2FmdGVyX3NldF9jcHVpZCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTI4ODE6XFx0a3ZtX3NldF90c2Nfa2h6KHZjcHUsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5kZWZhdWx0X3RzY19raHopO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMjg4Mi1cXHRrdm1fdmNwdV9yZXNldCh2Y3B1LCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAwOjU5OjAyLjE2MjU5MTE4OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkwMjg0NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBOZXN0ZWQgVFNDIE11bHRpcGxpZXIgRml4KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIHJldm9sdmVzIGFyb3VuZCBob3cgS1ZNIGNhbGN1bGF0ZXMgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllci4gU3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fc2V0X3RzY19raHpgIGlzIHN0YXRpYyBpcyBhIGtleSBvYnNlcnZhdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoZSBmdW5jdGlvbnMgYGt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllcmAgYW5kIGBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyYCBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgaW50ZXJlc3QgaGVyZS5cblxuVGhlIHByb2JsZW0sIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgYSBidWcgaW4gdGhlIG11bHRpcGxpZXIgY2FsY3VsYXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIG92ZXJmbG93IG9yIGEgemVybyB2YWx1ZS4gVGhpcywgaW4gdHVybiwgY2FuIGNhdXNlIFZNLWVudHJ5IGZhaWx1cmVzIG9yIGEgI0dQIGZhdWx0IGR1cmluZyBNU1Igd3JpdGVzIOKAkyB3aGljaCBpcyBvYnZpb3VzbHkgYSBwcmV0dHkgc2V2ZXJlIHNpdHVhdGlvbi5cblxuQ3J1Y2lhbGx5LCB0aGlzIGlzbid0IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZTsgdGhpcyBpcyByZWFjaGFibGUsIGZ1bmN0aW9uYWwgY29kZSB3aXRoaW4gdGhlIGhlYXJ0IG9mIEtWTSdzIHg4NiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMuIEl0J3MgdXNlZCB3aGVuIHJ1bm5pbmcgVk1zIHdpdGhpbiBWTXMuIENvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgY2VudHJhbGl0eSBvZiB0aGUgYWZmZWN0ZWQgY29kZSwgSeKAmW0gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmbGFnIGl0IGZvciBmdXp6aW5nIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkwMCwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDA6NTk6MDYuODUyODc4MTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTA1MDU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fY2FsY19uZXN0ZWRfdHNjX211bHRpcGxpZXJcIixcbiAgICBcIm5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG5lc3RlZCBUU0MgbXVsdGlwbGllciBpbiBLVk0sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3ZlcmZsb3cgb3IgemVybyB2YWx1ZXMsIGNhdXNpbmcgVk0tZW50cnkgZmFpbHVyZXMgb3IgI0dQIG9uIE1TUiB3cml0ZXMuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSBpbiB0aGUgY29yZSBLVk0geDg2IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9jYWxjX25lc3RlZF90c2NfbXVsdGlwbGllclwiLFxuICAgIFwibmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbmVzdGVkIFRTQyBtdWx0aXBsaWVyIGluIEtWTSwgd2hpY2ggY291bGQgbGVhZCB0byBvdmVyZmxvdyBvciB6ZXJvIHZhbHVlcywgY2F1c2luZyBWTS1lbnRyeSBmYWlsdXJlcyBvciAjR1Agb24gTVNSIHdyaXRlcy4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIGluIHRoZSBjb3JlIEtWTSB4ODYgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfl6fv[1] Phase: Succeeded StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 00:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 00:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2] Phase: Succeeded StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 00:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 00:59:18 +0000 UTC FinishedAt: 2026-07-25 00:59:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowfl6fv/series-workflowfl6fv-convert-artifact-934628025/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 00:59:28 +0000 UTC FinishedAt: 2026-07-25 01:38:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 00:59:28 +0000 UTC FinishedAt: 2026-07-25 01:38:03 +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:*96db0e18-1d89-4aa3-95d6-92dca4627b64,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-workflowfl6fv/series-workflowfl6fv-convert-artifact-934628025/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": "a7dcebb6-925a-4f9c-ab59-4303939c741c", "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-workflowfl6fv/series-workflowfl6fv-build-action-2516170711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 00:59:28 +0000 UTC FinishedAt: 2026-07-25 01:37:53 +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:*96db0e18-1d89-4aa3-95d6-92dca4627b64,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-workflowfl6fv/series-workflowfl6fv-convert-artifact-934628025/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": "a7dcebb6-925a-4f9c-ab59-4303939c741c", "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-workflowfl6fv/series-workflowfl6fv-build-action-2516170711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 01:38:03 +0000 UTC FinishedAt: 2026-07-25 01:38:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 01:38:03 +0000 UTC FinishedAt: 2026-07-25 01:38:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 01:38:03 +0000 UTC FinishedAt: 2026-07-25 01:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 01:38:03 +0000 UTC FinishedAt: 2026-07-25 01:38:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowfl6fv/series-workflowfl6fv-convert-artifact-433761932/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 01:38:13 +0000 UTC FinishedAt: 2026-07-25 01:40:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 01:38:13 +0000 UTC FinishedAt: 2026-07-25 01:40:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7dcebb6-925a-4f9c-ab59-4303939c741c,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-workflowfl6fv/series-workflowfl6fv-build-action-2516170711/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-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 01:40:17 +0000 UTC FinishedAt: 2026-07-25 01:40:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 01:40:17 +0000 UTC FinishedAt: 2026-07-25 01:40:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 01:40:17 +0000 UTC FinishedAt: 2026-07-25 02:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 01:40:17 +0000 UTC FinishedAt: 2026-07-25 02:42:44 +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:*96db0e18-1d89-4aa3-95d6-92dca4627b64,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-workflowfl6fv/series-workflowfl6fv-convert-artifact-433761932/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": "efce476f-4087-45be-8780-778656d41d33", "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-workflowfl6fv/series-workflowfl6fv-build-action-1875186344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 01:40:17 +0000 UTC FinishedAt: 2026-07-25 02:42:34 +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:*96db0e18-1d89-4aa3-95d6-92dca4627b64,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-workflowfl6fv/series-workflowfl6fv-convert-artifact-433761932/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": "efce476f-4087-45be-8780-778656d41d33", "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-workflowfl6fv/series-workflowfl6fv-build-action-1875186344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 02:42:44 +0000 UTC FinishedAt: 2026-07-25 02:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 02:42:44 +0000 UTC FinishedAt: 2026-07-25 02:42:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 02:42:44 +0000 UTC FinishedAt: 2026-07-25 02:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 02:42:44 +0000 UTC FinishedAt: 2026-07-25 02:44:38 +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:*efce476f-4087-45be-8780-778656d41d33,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-workflowfl6fv/series-workflowfl6fv-build-action-1875186344/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-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"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:*a7dcebb6-925a-4f9c-ab59-4303939c741c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*efce476f-4087-45be-8780-778656d41d33,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-workflowfl6fv/series-workflowfl6fv-build-action-2516170711/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-workflowfl6fv/series-workflowfl6fv-build-action-1875186344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 02:44:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 02:44:53 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"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-workflowfl6fv/series-workflowfl6fv-convert-artifact-742251509/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 02:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 02:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 02:44:47 +0000 UTC FinishedAt: 2026-07-25 02:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 02:44:57 +0000 UTC FinishedAt: 2026-07-25 05:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfl6fv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_calc_nested_tsc_multiplier","nested_svm_update_tsc_ratio_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"b554b386-907e-4786-9136-0a0b04a3198b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 02:44:57 +0000 UTC FinishedAt: 2026-07-25 05:45:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7dcebb6-925a-4f9c-ab59-4303939c741c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*efce476f-4087-45be-8780-778656d41d33,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-workflowfl6fv/series-workflowfl6fv-build-action-2516170711/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-workflowfl6fv/series-workflowfl6fv-build-action-1875186344/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-workflowfl6fv/series-workflowfl6fv-convert-artifact-742251509/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,}