Name: series-workflowwrjxg Phase: Succeeded StartedAt: 2026-08-01 05:49:32 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[0] Phase: Succeeded StartedAt: 2026-08-01 05:49:32 +0000 UTC FinishedAt: 2026-08-01 06:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 05:49:32 +0000 UTC FinishedAt: 2026-08-01 06:11:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "c0649c9f-a4e8-4e16-adb2-fead6f2ce501" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_upload_deferred_sta_keys", "nl80211_new_key", "sta_info_move_state" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTk1ZWY4NzE0ZmI4ZDEwYjZhYzVlMjRiNzExNmI0ZWQzYjEwOGExNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAwYTkyNDdiZTI2YWZhLi5hOTU0MzViNzIwYTk0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC02NjYsNyAmIzQzOzY2NiwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGtleS1cdTAwM2Vjb25mLmZsYWdzIHw9IElFRUU4MDIxMV9LRVlfRkxBR19OT19BVVRPX1RYO1xuIFxuIFx0aWYgKG1hY19hZGRyKSB7XG4mIzQzO1x0XHRib29sIGRlZmVyX2h3X3VwbG9hZDtcbiYjNDM7XG4gXHRcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcbiYjNDM7XHRcdGRlZmVyX2h3X3VwbG9hZCA9XG4mIzQzO1x0XHRcdHN0YSBcdTAwMjZcdTAwMjYgcGFpcndpc2UgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0KHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG4mIzQzO1x0XHRcdCBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKTtcbiBcdFx0LypcbiBcdFx0ICogVGhlIEFTU09DIHRlc3QgbWFrZXMgc3VyZSB0aGUgZHJpdmVyIGlzIHJlYWR5IHRvXG4gXHRcdCAqIHJlY2VpdmUgdGhlIGtleS4gV2hlbiB3cGFfc3VwcGxpY2FudCBoYXMgcm9hbWVkXG5AQCAtNjgxLDE0ICYjNDM7Njg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCxcbiBcdFx0ICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS5cbiBcdFx0ICpcbi1cdFx0ICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kXG4tXHRcdCAqXHQgYWRkIGl0IHRvIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHN0YXRpb24gYXNzb2NpYXRlcy5cbiYjNDM7XHRcdCAqIEFQLXNpZGUgRlQgbWF5IGFsc28gaW5zdGFsbCBhIHBhaXJ3aXNlIGtleSBiZWZvcmUgdGhlXG4mIzQzO1x0XHQgKiBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIEtlZXAgaXQgaW4gbWFjODAyMTEgYW5kIHVwbG9hZCBpdFxuJiM0MztcdFx0ICogdG8gdGhlIGRyaXZlciBhZnRlciB0aGUgc3RhdGlvbiByZWFjaGVzIEFTU09DLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFzdGEgfHwgKCFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XG4mIzQzO1x0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgIWRlZmVyX2h3X3VwbG9hZCkpIHtcbiBcdFx0XHRpZWVlODAyMTFfa2V5X2ZyZWVfdW51c2VkKGtleSk7XG4gXHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGVmZXJfaHdfdXBsb2FkKVxuJiM0MztcdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuYyBiL25ldC9tYWM4MDIxMS9rZXkuY1xuaW5kZXggZjQ1ZTc5MmFiZWRlNS4uMTgwZTJhYTk2NDllMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9rZXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2tleS5jXG5AQCAtMTQ0LDYgJiM0MzsxNDQsMTEgQEAgc3RhdGljIGludCBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoa2V5LVx1MDAzZWZsYWdzIFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpIHtcbiYjNDM7XHRcdHJldCA9IDE7XG4mIzQzO1x0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCFrZXktXHUwMDNlbG9jYWwtXHUwMDNlb3BzLVx1MDAzZXNldF9rZXkpXG4gXHRcdGdvdG8gb3V0X3Vuc3VwcG9ydGVkO1xuIFxuQEAgLTk5Nyw2ICYjNDM7MTAwMiwyOCBAQCB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0fVxuIH1cbiBcbiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlbG9jYWw7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcbiYjNDM7XHRpbnQgaSwgcmV0O1xuJiM0MztcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc3RhLVx1MDAzZXB0ayk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgc3RhLVx1MDAzZXB0a1tpXSk7XG4mIzQzO1x0XHRpZiAoIWtleSB8fCAhKGtleS1cdTAwM2VmbGFncyBcdTAwMjYgS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0a2V5LVx1MDAzZWZsYWdzIFx1MDAyNj0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcbiYjNDM7XHRcdHJldCA9IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKGtleSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRzZGF0YV9lcnIoa2V5LVx1MDAzZXNkYXRhLFxuJiM0MztcdFx0XHRcdCAgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgIGtleS1cdTAwM2Vjb25mLmtleWlkeCwgc3RhLVx1MDAzZXN0YS5hZGRyLCByZXQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZFxuIGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmggYi9uZXQvbWFjODAyMTEva2V5LmhcbmluZGV4IDgyNmU0ZTkzODdjNTUuLjk3ZDNiYmNmMGFjMjEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9rZXkuaFxuQEAgLTMyLDEwICYjNDM7MzIsMTMgQEAgc3RydWN0IHN0YV9pbmZvO1xuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxuICAqXHRpbiB0aGUgaGFyZHdhcmUgZm9yIFRYIGNyeXB0byBoYXJkd2FyZSBhY2NlbGVyYXRpb24uXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxuJiM0MzsgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uXG4mIzQzOyAqXHRpcyBhc3NvY2lhdGVkLlxuICAqL1xuIGVudW0gaWVlZTgwMjExX2ludGVybmFsX2tleV9mbGFncyB7XG4gXHRLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRVx0PSBCSVQoMCksXG4gXHRLRVlfRkxBR19UQUlOVEVEXHRcdD0gQklUKDEpLFxuJiM0MztcdEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRFx0PSBCSVQoMiksXG4gfTtcbiBcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcbkBAIC0xNjUsNiAmIzQzOzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgYm9vbCBmb3JjZV9zeW5jaHJvbml6ZSk7XG4gdm9pZCBpZWVlODAyMTFfZnJlZV9zdGFfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbiBpbnQgaWVlZTgwMjExX2tleV9zd2l0Y2hfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsX2xpbmtzX21hc2ssXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuaW5kZXggZDEyYWVkOWMxNzU2MS4uNjI1ZjYyOGI0NmEwZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuIFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxuIFx0XHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpIHtcbiBcdFx0XHRzZXRfYml0KFdMQU5fU1RBX0FTU09DLCBcdTAwMjZzdGEtXHUwMDNlX2ZsYWdzKTtcbiYjNDM7XHRcdFx0aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdGEpO1xuIFx0XHRcdHN0YS1cdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xuIFx0XHRcdGlmIChyZWNhbGMpIHtcbiBcdFx0XHRcdGllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLVx1MDAzZXNkYXRhLCAtMSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTk1ZWY4NzE0ZmI4ZDEwYjZhYzVlMjRiNzExNmI0ZWQzYjEwOGExNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggMGE5MjQ3YmUyNmFmYS4uYTk1NDM1YjcyMGE5NCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuYwpAQCAtNjY2LDcgJiM0Mzs2NjYsMTQgQEAgc3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlrZXktJmd0O2NvbmYuZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX05PX0FVVE9fVFg7CiAKIAlpZiAobWFjX2FkZHIpIHsKJiM0MzsJCWJvb2wgZGVmZXJfaHdfdXBsb2FkOwomIzQzOwogCQlzdGEgPSBzdGFfaW5mb19nZXRfYnNzKHNkYXRhLCBtYWNfYWRkcik7CiYjNDM7CQlkZWZlcl9od191cGxvYWQgPQomIzQzOwkJCXN0YSAmYW1wOyZhbXA7IHBhaXJ3aXNlICZhbXA7JmFtcDsgIXN0YS0mZ3Q7c3RhLmVwcF9wZWVyICZhbXA7JmFtcDsKJiM0MzsJCQkhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSAmYW1wOyZhbXA7CiYjNDM7CQkJKHNkYXRhLSZndDt2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fAomIzQzOwkJCSBzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7CiAJCS8qCiAJCSAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0bwogCQkgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZApAQCAtNjgxLDE0ICYjNDM7Njg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCwKIAkJICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS4KIAkJICoKLQkJICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kCi0JCSAqCSBhZGQgaXQgdG8gdGhlIGRldmljZSBhZnRlciB0aGUgc3RhdGlvbiBhc3NvY2lhdGVzLgomIzQzOwkJICogQVAtc2lkZSBGVCBtYXkgYWxzbyBpbnN0YWxsIGEgcGFpcndpc2Uga2V5IGJlZm9yZSB0aGUKJiM0MzsJCSAqIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gS2VlcCBpdCBpbiBtYWM4MDIxMSBhbmQgdXBsb2FkIGl0CiYjNDM7CQkgKiB0byB0aGUgZHJpdmVyIGFmdGVyIHRoZSBzdGF0aW9uIHJlYWNoZXMgQVNTT0MuCiAJCSAqLwogCQlpZiAoIXN0YSB8fCAoIXN0YS0mZ3Q7c3RhLmVwcF9wZWVyICZhbXA7JmFtcDsKLQkJCSAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7CiYjNDM7CQkJICAgICAhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICAhZGVmZXJfaHdfdXBsb2FkKSkgewogCQkJaWVlZTgwMjExX2tleV9mcmVlX3VudXNlZChrZXkpOwogCQkJcmV0dXJuIC1FTk9FTlQ7CiAJCX0KJiM0MzsKJiM0MzsJCWlmIChkZWZlcl9od191cGxvYWQpCiYjNDM7CQkJa2V5LSZndDtmbGFncyB8PSBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQ7CiAJfQogCiAJc3dpdGNoIChzZGF0YS0mZ3Q7dmlmLnR5cGUpIHsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuYyBiL25ldC9tYWM4MDIxMS9rZXkuYwppbmRleCBmNDVlNzkyYWJlZGU1Li4xODBlMmFhOTY0OWUzIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEva2V5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2tleS5jCkBAIC0xNDQsNiAmIzQzOzE0NCwxMSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoa2V5LSZndDtmbGFncyAmYW1wOyBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpIHsKJiM0MzsJCXJldCA9IDE7CiYjNDM7CQlnb3RvIG91dF91bnN1cHBvcnRlZDsKJiM0MzsJfQomIzQzOwogCWlmICgha2V5LSZndDtsb2NhbC0mZ3Q7b3BzLSZndDtzZXRfa2V5KQogCQlnb3RvIG91dF91bnN1cHBvcnRlZDsKIApAQCAtOTk3LDYgJiM0MzsxMDAyLDI4IEBAIHZvaWQgaWVlZTgwMjExX3JlZW5hYmxlX2tleXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpCiAJfQogfQogCiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKQomIzQzO3sKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtJmd0O2xvY2FsOwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5OwomIzQzOwlpbnQgaSwgcmV0OwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC0mZ3Q7aHcud2lwaHkpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShzdGEtJmd0O3B0ayk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC0mZ3Q7aHcud2lwaHksIHN0YS0mZ3Q7cHRrW2ldKTsKJiM0MzsJCWlmICgha2V5IHx8ICEoa2V5LSZndDtmbGFncyAmYW1wOyBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJa2V5LSZndDtmbGFncyAmYW1wOz0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDsKJiM0MzsJCXJldCA9IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKGtleSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXNkYXRhX2VycihrZXktJmd0O3NkYXRhLAomIzQzOwkJCQkgICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxuJiMzNDssCiYjNDM7CQkJCSAga2V5LSZndDtjb25mLmtleWlkeCwgc3RhLSZndDtzdGEuYWRkciwgcmV0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkCiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmggYi9uZXQvbWFjODAyMTEva2V5LmgKaW5kZXggODI2ZTRlOTM4N2M1NS4uOTdkM2JiY2YwYWMyMSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2tleS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9rZXkuaApAQCAtMzIsMTAgJiM0MzszMiwxMyBAQCBzdHJ1Y3Qgc3RhX2luZm87CiAgKiBAS0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkU6IEluZGljYXRlcyB0aGF0IHRoaXMga2V5IGlzIHByZXNlbnQKICAqCWluIHRoZSBoYXJkd2FyZSBmb3IgVFggY3J5cHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbi4KICAqIEBLRVlfRkxBR19UQUlOVEVEOiBLZXkgaXMgdGFpbnRlZCBhbmQgcGFja2V0cyBzaG91bGQgYmUgZHJvcHBlZC4KJiM0MzsgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uCiYjNDM7ICoJaXMgYXNzb2NpYXRlZC4KICAqLwogZW51bSBpZWVlODAyMTFfaW50ZXJuYWxfa2V5X2ZsYWdzIHsKIAlLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRQk9IEJJVCgwKSwKIAlLRVlfRkxBR19UQUlOVEVECQk9IEJJVCgxKSwKJiM0MzsJS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FECT0gQklUKDIpLAogfTsKIAogZW51bSBpZWVlODAyMTFfaW50ZXJuYWxfdGtpcF9zdGF0ZSB7CkBAIC0xNjUsNiAmIzQzOzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSBib29sIGZvcmNlX3N5bmNocm9uaXplKTsKIHZvaWQgaWVlZTgwMjExX2ZyZWVfc3RhX2tleXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTsKJiM0Mzt2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpOwogdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7CiBpbnQgaWVlZTgwMjExX2tleV9zd2l0Y2hfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBkZWxfbGlua3NfbWFzaywKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKaW5kZXggZDEyYWVkOWMxNzU2MS4uNjI1ZjYyOGI0NmEwZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLAogCWNhc2UgSUVFRTgwMjExX1NUQV9BU1NPQzoKIAkJaWYgKHN0YS0mZ3Q7c3RhX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSCkgewogCQkJc2V0X2JpdChXTEFOX1NUQV9BU1NPQywgJmFtcDtzdGEtJmd0O19mbGFncyk7CiYjNDM7CQkJaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdGEpOwogCQkJc3RhLSZndDthc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpOwogCQkJaWYgKHJlY2FsYykgewogCQkJCWllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLSZndDtzZGF0YSwgLTEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmFzdCBUcmFuc2l0aW9uIEtleSBEZWZlcnJhbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWFjODAyMTEgY29yZSwgc3BlY2lmaWNhbGx5IGBjZmcuY2AsIGBrZXkuY2AsIGBrZXkuaGAsIGFuZCBgc3RhX2luZm8uY2AuIFRoZSBnaXN0IGlzIHRoZXkmIzM5O3JlIGRlZmVycmluZyB0aGUgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYmVmb3JlIGEgc3RhdGlvbiBhc3NvY2lhdGVzLiBDbGV2ZXIsIHBvdGVudGlhbGx5IGltcHJvdmluZyBGVCBlZmZpY2llbmN5LiBUaGlzIGludHJvZHVjZXMgYEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRGAgYW5kIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5LiBUaGUgZmFjdCB0aGF0IGBpZWVlODAyMTFfYWRkX2tleWAgaW4gYGNmZy5jYCBpcyBtb2RpZmllZCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgc2luY2UgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBrZXkgYWRkaXRpb24gZnVuY3Rpb24gaW4gbWFjODAyMTEuIFBsdXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsYCBhbmQgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYCwgd2hpY2ggYXJlIGltcG9ydGFudCB0b28uCgpTaW5jZSBtYWM4MDIxMSBpcyBwZXJmZWN0bHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgYG1hYzgwMjExX2h3c2ltYCwgZnV6emluZyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgYSBnb29kIGlkZWEuIFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zaXRpdmUuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gV2UmIzM5O3ZlIGdvdDoKCiogICBgaWVlZTgwMjExX2FkZF9rZXlgIChzdGF0aWMgaW4gYGNmZy5jYCwgYnV0IGl0JiMzOTtzIGNhbGxlZCBzb21ld2hlcmUgZWxzZSwgbGlrZWx5IGBubDgwMjExX25ld19rZXlgIG9yIHNpbWlsYXIuIE5lZWQgdG8gY29uZmlybSB0aGF0KS4KKiAgIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCAobm9uLXN0YXRpYyBpbiBga2V5LmNgKS4gVGhhdCYjMzk7cyBwcm9taXNpbmcsIGZ1enppbmcgdGhpcyBkaXJlY3RseSBpcyBwb3NzaWJsZS4KKiAgIGBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbGAgKHN0YXRpYyBpbiBga2V5LmNgKS4KKiAgIGBfc3RhX2luZm9fbW92ZV9zdGF0ZWAgKHN0YXRpYyBpbiBgc3RhX2luZm8uY2ApLgoKSSBuZWVkIHRvIGNvbmZpcm0gaG93IGBpZWVlODAyMTFfYWRkX2tleWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBjb2RlYmFzZS4gR29pbmcgdG8gc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkZF9rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01ODU9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3R4KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MTItXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjEzOnN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbm5ldC9tYWM4MDIxMS9jZmcuYy02MTQtXHRcdFx0ICAgICBpbnQgbGlua19pZCwgdTgga2V5X2lkeCwgYm9vbCBwYWlyd2lzZSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NjAwMD1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTYwMDUtXHQuc3RvcF9wMnBfZGV2aWNlID0gaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZSxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDA2Olx0LmFkZF9rZXkgPSBpZWVlODAyMTFfYWRkX2tleSxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDA3LVx0LmRlbF9rZXkgPSBpZWVlODAyMTFfZGVsX2tleSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtleSBNYW5hZ2VtZW50IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMga2V5IG1hbmFnZW1lbnQgYXJlYSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgYGllZWU4MDIxMV9hZGRfa2V5YCBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG1hYzgwMjExX2NvbmZpZ19vcHNgIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYWRkX2tleWAgb3BlcmF0aW9uLCBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBmb2NhbCBwb2ludC4gSG93ZXZlciwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBIbW0sIHRoYXQmIzM5O3Mgbm90IGlkZWFsIGZvciBteSBwdXJwb3Nlcy4KCkFscmlnaHQsIHdoYXQgYWJvdXQgYG5sODAyMTFfbmV3X2tleWA/IFRoYXQgZnVuY3Rpb24mIzM5O3MgZGVmaW5lZCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNvIGl0JiMzOTtzIGFjY2Vzc2libGUuIEJ1dCBpcyBpdCB0aGUgKmJlc3QqIGNob2ljZT8KCldhaXQsIHdoYXQgYWJvdXQgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgPyBUaGF0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZGVmaW5pdGUgcGx1cy4gTGV0IG1lIHF1aWNrbHkgcGl2b3QgdG8gY2hlY2tpbmcgdGhlIGRlZmluaXRpb24gb2YgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdyBoZXJlIHRvIHBpbnBvaW50IHRoZSBiZXN0IGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19zdGFfaW5mb19tb3ZlX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzEwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzk0LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTM5NTpzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5Ni1cdFx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBuZXdfc3RhdGUsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTUzOD1pbnQgc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1NDE6XHRyZXR1cm4gX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBuZXdfc3RhdGUsIHRydWUpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTU0ND1zdGF0aWMgdm9pZCBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDIoc3RydWN0IHN0YV9pbmZvICpzdGEsIGJvb2wgcmVjYWxjKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NzMtXHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1NzQ6XHRcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NzUtXHRcdFdBUk5fT05fT05DRShyZXQpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1ODktXHR3aGlsZSAoc3RhLVx1MDAzZXN0YV9zdGF0ZSBcdTAwM2UgSUVFRTgwMjExX1NUQV9OT05FKSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlx0XHRyZXQgPSBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIHN0YS1cdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU5MS1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVEEgS2V5IFVwbG9hZCoqCgpBbHJpZ2h0LCBzbyBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgaXNuJiMzOTt0IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlcGFydHVyZSBmcm9tIHdoYXQgSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4gVGhpcyBtZWFucyBpdHMgc2NvcGUgaXMgYnJvYWRlciB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiwgYW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiB0cmFjaW5nIGl0cyB1c2FnZS4gTm93LCBnaXZlbiB0aGF0LCBteSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hhdCBmdW5jdGlvbiBkb2VzIHRoaXMgc3RhdGUgcGVydGFpbiB0by4gR2l2ZW4gdGhlIG5hbWUsIEkgaW1tZWRpYXRlbHkganVtcCB0byBjaGVja2luZyBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGFzIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIFNUQSBrZXkgdXBkYXRlcyBkZWZlcnJlZCBieSB0aGUgZmlybXdhcmUsIHdoaWNoIGlzIGEgY3JpdGljYWwgcGllY2UgaW4gdGhlIG92ZXJhbGwgc2VjdXJpdHkgaGFuZHNoYWtlLCBzbyB0aGUgZnVuY3Rpb24gdGhhdCB0b3VjaGVzIHRoaXMgc3RhdGUgaXMgaW1tZWRpYXRlbHkgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2tleS5jPTk3OT12b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDA0LVxubmV0L21hYzgwMjExL2tleS5jOjEwMDU6dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxubmV0L21hYzgwMjExL2tleS5jLTEwMDYte1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuaD0xNjk9dm9pZCBpZWVlODAyMTFfZnJlZV9zdGFfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9rZXkuaC0xNzAtXHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEva2V5Lmg6MTcxOnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEva2V5LmgtMTcyLXZvaWQgaWVlZTgwMjExX3JlZW5hYmxlX2tleXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzOTU9c3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcwLVx0XHRcdHNldF9iaXQoV0xBTl9TVEFfQVNTT0MsIFx1MDAyNnN0YS1cdTAwM2VfZmxhZ3MpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTQ3MTpcdFx0XHRpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0YSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcyLVx0XHRcdHN0YS1cdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS2V5IE1hbmFnZW1lbnQgaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIHNlZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG93YXJkcyBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhcyBmb3IgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGViYXNlLiBUaGV5IHNlZW0gdG8gZGVhbCBkaXJlY3RseSB3aXRoIFNUQSBrZXlzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4uCgpOb3csIGBpZWVlODAyMTFfYWRkX2tleWAgYWxzbyBjb21lcyB0byBtaW5kLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljIHRob3VnaC4gUGVyaGFwcyBJIGNhbiB0cmFjZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBubDgwMjExX25ld19rZXlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4gT3IgbWF5YmUgYSBoYW5kbGVyIHRocm91Z2ggYG1hYzgwMjExX2NvbmZpZ19vcHNgLCBhbHRob3VnaCBJIGNhbiYjMzk7dCB1c2UgYSBzdHJ1Y3QgZGlyZWN0bHkgYXMgYSBmb2N1cywgc28gdGhhdCYjMzk7cyBub3QgaWRlYWwuCgpJIHNob3VsZCB2ZXJpZnkgaWYgYG5sODAyMTFfbmV3X2tleWAgc2VydmVzIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIGtleSBhZGRpdGlvbiBwcm9jZXNzLiBJdCYjMzk7cyBhIHNvbGlkIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ2Nj1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTU3NjpzdGF0aWMgaW50IG5sODAyMTFfbmV3X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlx0XHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIG5sODAyMTEgS2V5IE1hbmFnZW1lbnQgUGF0aCoqCgpSaWdodCwgc28sIGBubDgwMjExX25ld19rZXlgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgZW50cnkgcG9pbnQgZm9yIGtleSBtYW5hZ2VtZW50LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzZXR0aW5nIHVwIG9yIG1vZGlmeWluZyBjcnlwdG9ncmFwaGljIGtleXMgd2l0aGluIHRoZSB3aXJlbGVzcyBzdGFjaywgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIG5sODAyMTEgaW50ZXJmYWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBmbG93LCB0aGUgbGlmZWN5Y2xlIG9mIGEga2V5LgoKTm93LCB3aGVyZSBkb2VzIHRoZSBzdGF0aW9uIHN0YXRlIGdldCB1cGRhdGVkPyBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYG5sODAyMTFfc2V0X3N0YXRpb25gLCBvciBmdW5jdGlvbnMgbGlrZSBpdCwgYmVjYXVzZSB0aGF04oCZcyB3aGVyZSB0aGUgU1RBIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBzdGF0aW9uIHN0YXRlIHRyYW5zaXRpb25zIGFmZmVjdCwgb3IgYXJlIGFmZmVjdGVkIGJ5LCBrZXkgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCBhc3NvY2lhdGVkIGZsYWdzIGFuZCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX3NldF9zdGF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTkwNDM9c3RhdGljIGludCBubDgwMjExX3BhcnNlX3N0YV9jaGFubmVsX2luZm8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkwNjgtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjkwNjk6c3RhdGljIGludCBubDgwMjExX3NldF9zdGF0aW9uX3RkbHMoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTA3MC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc3RhdGlvbl9wYXJhbWV0ZXJzICpwYXJhbXMpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz05MTIzPXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9zdGFfdHhwb3dlcl9zZXR0aW5nKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MTU1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5MTU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfc3RhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MTU3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTQtXHQvKiBJbmNsdWRlIHBhcmFtZXRlcnMgZm9yIFRETFMgcGVlciAod2lsbCBjaGVjayBsYXRlcikgKi9cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6OTI5NTpcdGVyciA9IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhpbmZvLCBcdTAwMjZwYXJhbXMpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy05Mjk2LVx0aWYgKGVycilcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5ODI4LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5ODI5Olx0XHQuZG9pdCA9IG5sODAyMTFfc2V0X3N0YXRpb24sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5ODMwLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEtleSBXaXJlbGVzcyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGtleSBtYW5hZ2VtZW50IGFuZCBzdGF0aW9uIHNldHVwIHdpdGhpbiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdGFjay4gYG5sODAyMTFfbmV3X2tleWAgYW5kIGBubDgwMjExX3NldF9zdGF0aW9uYCBsb29rIGxpa2UgcHJpbWUgdGFyZ2V0cyBmb3IgZGVlcGVyIGV4YW1pbmF0aW9uLiBUaGVzZSBsaWtlbHkgaGFuZGxlIHRoZSBjb3JlIGludGVyYWN0aW9ucyB3aXRoIHVzZXJzcGFjZSBmb3Igc2V0dGluZyB1cCBzZWN1cml0eSBrZXlzIGFuZCBzdGF0aW9uIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVmZXJyZWQga2V5IHVwbG9hZHMsIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AsIGFuZCBob3cgc3RhdGlvbiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgbWFuYWdlZCB3aXRoIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyB0aGVzZSBhcmUgYWx3YXlzIGEgaG90YmVkIGZvciBpc3N1ZXMuCgpCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBuZXN0bGVkIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucywgdGhlIGBNQUM4MDIxMWAgY29uZmlnIG9wdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBmbGFnIEkgbmVlZCB0byB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYW5kIHBhaXJ3aXNlIGtleXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGhlcmU/JiMzNDsgV2UmIzM5O3JlIG9idmlvdXNseSB3b3JraW5nIHdpdGggYE1BQzgwMjExYCDigJMgdGhhdCYjMzk7cyBhIGdpdmVuIOKAkyBidXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBgTUFDODAyMTFgIGlzIHRoZSBvbmx5IGV4cGxpY2l0IHJlcXVpcmVtZW50IGZvciAqdGhpcyogcGFydGljdWxhciBjb2RlLCBhbHRob3VnaCwgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGlzIGFsc28gbmVlZGVkIGJlY2F1c2UgaXQgd29ya3Mgd2l0aCBgbWFjODAyMTFgLiBTbywgSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgdG8gYmUgc3VyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aG9zZSBmdW5jdGlvbiBzeW1ib2xzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgcmVsZXZhbnQgY29kZS4KCiogICBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2Agc2VlbXMgaGlnaGx5IHJlbGV2YW50LiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiAocHVuIGludGVuZGVkISkgaW4gaGFuZGxpbmcgdGhlc2Uga2V5cywgYW5kIGl0cyBkZWZlcnJlZCBuYXR1cmUgaW1wbGllcyB0aGUgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhpcyBtZWNoYW5pc20uCiogICBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgc2VlbXMgaW1wb3J0YW50IHRvbywgZXNwZWNpYWxseSBpZiB0aGlzIHBhdGNoIGlzIGFib3V0IEZULCB3aGljaCB3b3VsZCBpbnZvbHZlIG1vdmluZyBzdGF0aW9uIHN0YXRlcy4KKiAgIEkgZXhwZWN0IHRvIGhhdmUgc29tZSB1c2VyIHNwYWNlIGludGVyYWN0aW9uIGFuZCB0aGF0IG1lYW5zIEkgc2hvdWxkIGNoZWNrIGBubDgwMjExX25ld19rZXlgIGFuZCBgbmw4MDIxMV9zZXRfc3RhdGlvbmAgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4KCkkmIzM5O20gbm93IGdvaW5nIHRvIGZvY3VzIG9uIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCwgYW5kIHRha2UgYSBsb29rIGF0IGl0IGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9pbmZvX21vdmVfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMTQyPXN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNTAtXHQgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BVVRIKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIxNTE6XHRcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNTItXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNjYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE2NzpcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNjgtXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNzMtXHRcdGlmIChzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FVVEhPUklaRUQpKVxubmV0L21hYzgwMjExL2NmZy5jOjIxNzQ6XHRcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3NS1cdFx0ZWxzZSBpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKVxubmV0L21hYzgwMjExL2NmZy5jOjIxNzY6XHRcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNzctXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4NS1cdCAgICB0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVNTT0MpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE4NjpcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4Ny1cdFx0aWYgKHJldClcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My1cdCAgICB0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVVUSCkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTk0Olx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9OT05FKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTk1LVx0XHRpZiAocmV0KVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYyMy1cdFx0LyogT25seSBtb3ZlIHRoZSBBUCBzdGF0ZSAqL1xubmV0L21hYzgwMjExL21sbWUuYzo0NjI0Olx0XHRzdGFfaW5mb19tb3ZlX3N0YXRlKGFwX3N0YSwgSUVFRTgwMjExX1NUQV9OT05FKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYyNS1cdH0gZWxzZSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz01Mzg2PXN0YXRpYyBib29sIGllZWU4MDIxMV9tYXJrX3N0YV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQwNS1cdH1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQwNjpcdGlmIChzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKSkge1xubmV0L21hYzgwMjExL21sbWUuYy01NDA3LVx0XHRzZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtmYWlsZWQgbW92aW5nICVwTSB0byBhdXRoXFxuXCYjMzQ7LCBhcF9hZGRyKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5Nzk9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MTUxLVxubmV0L21hYzgwMjExL21sbWUuYzo3MTUyOlx0ZXJyID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL21sbWUuYy03MTUzLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICEoaWZtZ2QtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TVEFfQ09OVFJPTF9QT1JUKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1NDpcdFx0ZXJyID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxNTUtXHRpZiAoZXJyKSB7XG4tLVxubmV0L21hYzgwMjExL29jYi5jPTg3PXN0YXRpYyBzdHJ1Y3Qgc3RhX2luZm8gKmllZWU4MDIxMV9vY2JfZmluaXNoX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvb2NiLmMtMTAwLVxubmV0L21hYzgwMjExL29jYi5jOjEwMTpcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xubmV0L21hYzgwMjExL29jYi5jOjEwMjpcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcbm5ldC9tYWM4MDIxMS9vY2IuYzoxMDM6XHRzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKTtcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDQtXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDY4PXZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDk0LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk1Olx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVx1MDAzZXN0YV9zdGF0ZSAtIDEpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk2Olx0XHRpZiAoV0FSTl9PTkNFKHJldCwgXCYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSgpIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDk3LVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzMTA9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19zdGFfaW5mb19kZXN0cm95X3BhcnQxKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTQtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMzk1OnN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzk2LVx0XHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTM3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTUzODppbnQgc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1MzktXHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSlcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NDAte1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTU0MTpcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQyLX1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU3My1cdGlmIChzdGEtXHUwMDNlc3RhX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTU3NDpcdFx0cmV0ID0gX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DLCByZWNhbGMpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU3NS1cdFx0V0FSTl9PTl9PTkNFKHJldCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cdHdoaWxlIChzdGEtXHUwMDNlc3RhX3N0YXRlIFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1OTA6XHRcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVx1MDAzZXN0YV9zdGF0ZSAtIDEsIHJlY2FsYyk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTkxLVx0XHRpZiAocmV0KSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODQxPXN0YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX3NldF9zdGFfZmxhZyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NDktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NTA6aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NTEtXHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODUzPXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFfaW5mb19wcmVfbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NTktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NjA6XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgbmV3X3N0YXRlKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg2MS1cdFdBUk5fT05fT05DRShyZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA3MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNUQSBLZXkgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBJJiMzOTt2ZSBzZWVuIGl0IHVzZWQgYWxsIG92ZXIgdGhlIGNvZGViYXNlLCBhbmQga2VlcGluZyB0cmFjayBvZiBpdHMgY2FsbHMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBhIHN0YXRpb24uIFdlIG5lZWQgYSBzb2xpZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgU1RBIGtleSBoYW5kbGluZyBmbG93LiAgYG5sODAyMTFfbmV3X2tleWAgZmVlbHMgbGlrZSBhIHByb21pc2luZyBzdGFydGluZyBwb2ludCBmb3Iga2V5LXJlbGF0ZWQgb3BlcmF0aW9ucy4gSXQmIzM5O3MgdXNlZCB0byBhZGQgbmV3IGtleXMuCgpBbmQgbm93IEkgaGF2ZSBhIGh1bmNoLi4uIEkgYmV0IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCBpcyB0aGUgbmV3bHkgaW50cm9kdWNlZCBmdW5jdGlvbiwgdGhlIG9uZSB0aGF0JiMzOTtzIHN1cHBvc2VkIHRvIGhhbmRsZSBkZWZlcnJlZCB1cGxvYWRzLiBJIGhhdmUgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG5sODAyMTFfbmV3X2tleWAgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIHRvIHNlZSBob3cgaXQgdGllcyBpbnRvIHRoZSBkZWZlcnJlZCB1cGxvYWQgbWVjaGFuaXNtIGFuZCBjb25maXJtcyBteSBzdXNwaWNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ2Nj1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTU3NjpzdGF0aWMgaW50IG5sODAyMTFfbmV3X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlx0XHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBLZXkgV2ktRmkgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBhIGZldyBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLiBgbmw4MDIxMV9uZXdfa2V5YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbiDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHRvIGtlZXAgYSBjbG9zZSBleWUgb24uIFNpbWlsYXJseSwgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGlzIGFsc28gbG9va2luZyB0byBiZSBhIHJlbGV2YW50IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZC4gQW5kLCBhcyBhIHRoaXJkIGtleSBmb2N1cyBhcmVhLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGNvdWxkIGJlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGNvbnNpZGVyIGluIHRoaXMgc3lzdGVtLgoKTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIEkgbmVlZCB0byBhZGRyZXNzIGlzIHdoZXRoZXIgYENGRzgwMjExYCBpcyBhY3R1YWxseSByZXF1aXJlZCBvciBub3QuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhhdCBxdWVzdGlvbiBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXaXJlbGVzcyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZXNlIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IGRlcGVuZGVuY3kgY2hhaW4gbWFrZXMgc2Vuc2UsIHJpZ2h0PyBTaW5jZSBgTUFDODAyMTFgIGhhbmRsZXMgdGhlIGNvcmUgTUFDIGZ1bmN0aW9uYWxpdHksIHRlY2huaWNhbGx5IGBNQUM4MDIxMWAgYWxvbmUgKnNob3VsZCogYmUgc3VmZmljaWVudC4gQnV0LCBJJiMzOTt2ZSBsZWFybmVkIHRvIGJlIGNhdXRpb3VzLCBzbyBJJiMzOTtsbCBpbmNsdWRlIGBDRkc4MDIxMWAgYWxvbmdzaWRlIGl0IHRvIGVuc3VyZSBjb21wbGV0ZSBjb21wYXRpYmlsaXR5IGFuZCBhdm9pZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaC4KCldhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4ganVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyLCBgTUFDODAyMTFgIGlzIHRoZSBtYWluIGNvbXBvbmVudCBoZXJlLiBPa2F5LCBub3cgSSBoYXZlIGl0IHNvcnRlZC4gCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgYG1hYzgwMjExX2h3c2ltYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGlzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRoZSBzaW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQxCgkJCQkJCQlvdXRwdXQ6IDIxOAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBoYXZpbmcgYE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbml0ZWx5IGJlbmVmaWNpYWwgdG8gaGF2ZSBlbmFibGVkLiBNeSBwbGFuIGlzIHRvIGVuc3VyZSB0aGF0IEkmIzM5O3ZlIGNvbmZpZ3VyZWQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gSSYjMzk7bSBnb2luZyB0byBrZWVwIGFuIGV5ZSBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AsIGBubDgwMjExX25ld19rZXlgLCBhbmQgYHN0YV9pbmZvX21vdmVfc3RhdGVgLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IGEgc3BlY2lmaWMgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgaWVlZTgwMjExX2FkZF9rZXlgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGBubDgwMjExX25ld19rZXlgLiBJIGtub3cgdGhhdCBgbmw4MDIxMV9uZXdfa2V5YCBjYWxscyBgcmRldl9hZGRfa2V5YCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcmRldi0mZ3Q7b3BzLSZndDthZGRfa2V5YC4gQW5kIGluIHRoZSBgbWFjODAyMTFgIGltcGxlbWVudGF0aW9uLCBgbWFjODAyMTFfY29uZmlnX29wcy5hZGRfa2V5YCAqaXMqIGFjdHVhbGx5IGBpZWVlODAyMTFfYWRkX2tleWAuIFRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyB5ZXMsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgY29ubmVjdGVkLgoKQWxyaWdodCwgdGhhdCBjb25maXJtcyB0aGUgcGF0aC4gSSYjMzk7bSBnb2luZyB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9uZXdfa2V5JiMzNDssCiAgICAmIzM0O3N0YV9pbmZvX21vdmVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1hYzgwMjExIGNvcmUgdG8gZGVmZXIgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRlQgYmVmb3JlIHRoZSBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uIFRoZSBuZXcgZnVuY3Rpb24gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGFuZCB0aGUgZW50cnkgcG9pbnRzIGBubDgwMjExX25ld19rZXlgIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjE3LjcwOTI0NjQ2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDM1NDQ3MDI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c1wiLFxuICAgIFwibmw4MDIxMV9uZXdfa2V5XCIsXG4gICAgXCJzdGFfaW5mb19tb3ZlX3N0YXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1hYzgwMjExIGNvcmUgdG8gZGVmZXIgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRlQgYmVmb3JlIHRoZSBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uIFRoZSBuZXcgZnVuY3Rpb24gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGFuZCB0aGUgZW50cnkgcG9pbnRzIGBubDgwMjExX25ld19rZXlgIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6MTcuNzA5MjUyNzUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjU1MjAyNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhOTVlZjg3MTRmYjhkMTBiNmFjNWUyNGI3MTE2YjRlZDNiMTA4YTE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXFxuaW5kZXggMGE5MjQ3YmUyNmFmYS4uYTk1NDM1YjcyMGE5NCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5AQCAtNjY2LDcgKzY2NiwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGtleS1cXHUwMDNlY29uZi5mbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfTk9fQVVUT19UWDtcXG4gXFxuIFxcdGlmIChtYWNfYWRkcikge1xcbitcXHRcXHRib29sIGRlZmVyX2h3X3VwbG9hZDtcXG4rXFxuIFxcdFxcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcXG4rXFx0XFx0ZGVmZXJfaHdfdXBsb2FkID1cXG4rXFx0XFx0XFx0c3RhIFxcdTAwMjZcXHUwMDI2IHBhaXJ3aXNlIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5lcHBfcGVlciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxuK1xcdFxcdFxcdCBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0b1xcbiBcXHRcXHQgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZFxcbkBAIC02ODEsMTQgKzY4OCwxOSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAqIElmIChyZSlhc3NvY2lhdGlvbiBmcmFtZSBlbmNyeXB0aW9uIHN1cHBvcnQgaXMgbm90IHByZXNlbnQsXFxuIFxcdFxcdCAqIGNmZzgwMjExIHdpbGwgbm90IGFsbG93IGtleSBpbnN0YWxsYXRpb24gaW4gbm9u4oCRQVAgU1RBIG1vZGUuXFxuIFxcdFxcdCAqXFxuLVxcdFxcdCAqIFRPRE86IGFjY2VwdCB0aGUga2V5IGlmIHdlIGhhdmUgYSBzdGF0aW9uIGVudHJ5IGFuZFxcbi1cXHRcXHQgKlxcdCBhZGQgaXQgdG8gdGhlIGRldmljZSBhZnRlciB0aGUgc3RhdGlvbiBhc3NvY2lhdGVzLlxcbitcXHRcXHQgKiBBUC1zaWRlIEZUIG1heSBhbHNvIGluc3RhbGwgYSBwYWlyd2lzZSBrZXkgYmVmb3JlIHRoZVxcbitcXHRcXHQgKiBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIEtlZXAgaXQgaW4gbWFjODAyMTEgYW5kIHVwbG9hZCBpdFxcbitcXHRcXHQgKiB0byB0aGUgZHJpdmVyIGFmdGVyIHRoZSBzdGF0aW9uIHJlYWNoZXMgQVNTT0MuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIXN0YSB8fCAoIXN0YS1cXHUwMDNlc3RhLmVwcF9wZWVyIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XFxuK1xcdFxcdFxcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgICAhZGVmZXJfaHdfdXBsb2FkKSkge1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2ZyZWVfdW51c2VkKGtleSk7XFxuIFxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoZGVmZXJfaHdfdXBsb2FkKVxcbitcXHRcXHRcXHRrZXktXFx1MDAzZWZsYWdzIHw9IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcXG4gXFx0fVxcbiBcXG4gXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2tleS5jIGIvbmV0L21hYzgwMjExL2tleS5jXFxuaW5kZXggZjQ1ZTc5MmFiZWRlNS4uMTgwZTJhYTk2NDllMyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmNcXG4rKysgYi9uZXQvbWFjODAyMTEva2V5LmNcXG5AQCAtMTQ0LDYgKzE0NCwxMSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRCkge1xcbitcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRnb3RvIG91dF91bnN1cHBvcnRlZDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCFrZXktXFx1MDAzZWxvY2FsLVxcdTAwM2VvcHMtXFx1MDAzZXNldF9rZXkpXFxuIFxcdFxcdGdvdG8gb3V0X3Vuc3VwcG9ydGVkO1xcbiBcXG5AQCAtOTk3LDYgKzEwMDIsMjggQEAgdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gXFx0fVxcbiB9XFxuIFxcbit2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuK3tcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbitcXHRpbnQgaSwgcmV0O1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHN0YS1cXHUwMDNlcHRrKTsgaSsrKSB7XFxuK1xcdFxcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVxcdTAwM2Vody53aXBoeSwgc3RhLVxcdTAwM2VwdGtbaV0pO1xcbitcXHRcXHRpZiAoIWtleSB8fCAhKGtleS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGtleS1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2tleV9lbmFibGVfaHdfYWNjZWwoa2V5KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0c2RhdGFfZXJyKGtleS1cXHUwMDNlc2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgXFxcImZhaWxlZCB0byBlbmFibGUgZGVmZXJyZWQga2V5ICglZCwgJXBNKTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAga2V5LVxcdTAwM2Vjb25mLmtleWlkeCwgc3RhLVxcdTAwM2VzdGEuYWRkciwgcmV0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZFxcbiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuaCBiL25ldC9tYWM4MDIxMS9rZXkuaFxcbmluZGV4IDgyNmU0ZTkzODdjNTUuLjk3ZDNiYmNmMGFjMjEgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2tleS5oXFxuKysrIGIvbmV0L21hYzgwMjExL2tleS5oXFxuQEAgLTMyLDEwICszMiwxMyBAQCBzdHJ1Y3Qgc3RhX2luZm87XFxuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxcbiAgKlxcdGluIHRoZSBoYXJkd2FyZSBmb3IgVFggY3J5cHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbi5cXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxcbisgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uXFxuKyAqXFx0aXMgYXNzb2NpYXRlZC5cXG4gICovXFxuIGVudW0gaWVlZTgwMjExX2ludGVybmFsX2tleV9mbGFncyB7XFxuIFxcdEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFXFx0PSBCSVQoMCksXFxuIFxcdEtFWV9GTEFHX1RBSU5URURcXHRcXHQ9IEJJVCgxKSxcXG4rXFx0S0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEXFx0PSBCSVQoMiksXFxuIH07XFxuIFxcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcXG5AQCAtMTY1LDYgKzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0IGJvb2wgZm9yY2Vfc3luY2hyb25pemUpO1xcbiB2b2lkIGllZWU4MDIxMV9mcmVlX3N0YV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG4rdm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG4gdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIGludCBpZWVlODAyMTFfa2V5X3N3aXRjaF9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsX2xpbmtzX21hc2ssXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcXG5pbmRleCBkMTJhZWQ5YzE3NTYxLi42MjVmNjI4YjQ2YTBkIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcXG5AQCAtMTQ2OCw2ICsxNDY4LDcgQEAgc3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4gXFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxcbiBcXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKSB7XFxuIFxcdFxcdFxcdHNldF9iaXQoV0xBTl9TVEFfQVNTT0MsIFxcdTAwMjZzdGEtXFx1MDAzZV9mbGFncyk7XFxuK1xcdFxcdFxcdGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RhKTtcXG4gXFx0XFx0XFx0c3RhLVxcdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xcbiBcXHRcXHRcXHRpZiAocmVjYWxjKSB7XFxuIFxcdFxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLVxcdTAwM2VzZGF0YSwgLTEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOToxOC4yNzU3OTQxOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM3ODc5MTA3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNcIixcbiAgICBcIm5sODAyMTFfbmV3X2tleVwiLFxuICAgIFwic3RhX2luZm9fbW92ZV9zdGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtYWM4MDIxMSBjb3JlIHRvIGRlZmVyIGhhcmR3YXJlIHVwbG9hZCBvZiBwYWlyd2lzZSBrZXlzIGZvciBBUC1zaWRlIEZUIGJlZm9yZSB0aGUgc3RhdGlvbiBpcyBhc3NvY2lhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2ssIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLiBUaGUgbmV3IGZ1bmN0aW9uIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCBhbmQgdGhlIGVudHJ5IHBvaW50cyBgbmw4MDIxMV9uZXdfa2V5YCBhbmQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE5NWVmODcxNGZiOGQxMGI2YWM1ZTI0YjcxMTZiNGVkM2IxMDhhMTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDA2OjA5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAwYTkyNDdiZTI2YWZhLi5hOTU0MzViNzIwYTk0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC02NjYsNyArNjY2LDE0IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0a2V5LVx1MDAzZWNvbmYuZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX05PX0FVVE9fVFg7XG4gXG4gXHRpZiAobWFjX2FkZHIpIHtcbitcdFx0Ym9vbCBkZWZlcl9od191cGxvYWQ7XG4rXG4gXHRcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcbitcdFx0ZGVmZXJfaHdfdXBsb2FkID1cbitcdFx0XHRzdGEgXHUwMDI2XHUwMDI2IHBhaXJ3aXNlIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5lcHBfcGVlciBcdTAwMjZcdTAwMjZcbitcdFx0XHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbitcdFx0XHQgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0b1xuIFx0XHQgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZFxuQEAgLTY4MSwxNCArNjg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCxcbiBcdFx0ICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS5cbiBcdFx0ICpcbi1cdFx0ICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kXG4tXHRcdCAqXHQgYWRkIGl0IHRvIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHN0YXRpb24gYXNzb2NpYXRlcy5cbitcdFx0ICogQVAtc2lkZSBGVCBtYXkgYWxzbyBpbnN0YWxsIGEgcGFpcndpc2Uga2V5IGJlZm9yZSB0aGVcbitcdFx0ICogc3RhdGlvbiBpcyBhc3NvY2lhdGVkLiBLZWVwIGl0IGluIG1hYzgwMjExIGFuZCB1cGxvYWQgaXRcbitcdFx0ICogdG8gdGhlIGRyaXZlciBhZnRlciB0aGUgc3RhdGlvbiByZWFjaGVzIEFTU09DLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFzdGEgfHwgKCFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XG4rXHRcdFx0ICAgICAhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgICFkZWZlcl9od191cGxvYWQpKSB7XG4gXHRcdFx0aWVlZTgwMjExX2tleV9mcmVlX3VudXNlZChrZXkpO1xuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHR9XG4rXG4rXHRcdGlmIChkZWZlcl9od191cGxvYWQpXG4rXHRcdFx0a2V5LVx1MDAzZWZsYWdzIHw9IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcbiBcdH1cbiBcbiBcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmMgYi9uZXQvbWFjODAyMTEva2V5LmNcbmluZGV4IGY0NWU3OTJhYmVkZTUuLjE4MGUyYWE5NjQ5ZTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmNcbisrKyBiL25ldC9tYWM4MDIxMS9rZXkuY1xuQEAgLTE0NCw2ICsxNDQsMTEgQEAgc3RhdGljIGludCBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChrZXktXHUwMDNlZmxhZ3MgXHUwMDI2IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRCkge1xuK1x0XHRyZXQgPSAxO1xuK1x0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbitcdH1cbitcbiBcdGlmICgha2V5LVx1MDAzZWxvY2FsLVx1MDAzZW9wcy1cdTAwM2VzZXRfa2V5KVxuIFx0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbiBcbkBAIC05OTcsNiArMTAwMiwyOCBAQCB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0fVxuIH1cbiBcbit2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4re1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlbG9jYWw7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuK1x0aW50IGksIHJldDtcbitcbitcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc3RhLVx1MDAzZXB0ayk7IGkrKykge1xuK1x0XHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgc3RhLVx1MDAzZXB0a1tpXSk7XG4rXHRcdGlmICgha2V5IHx8ICEoa2V5LVx1MDAzZWZsYWdzIFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRrZXktXHUwMDNlZmxhZ3MgXHUwMDI2PSB+S0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEO1xuK1x0XHRyZXQgPSBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChrZXkpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHNkYXRhX2VycihrZXktXHUwMDNlc2RhdGEsXG4rXHRcdFx0XHQgIFwiZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxcblwiLFxuK1x0XHRcdFx0ICBrZXktXHUwMDNlY29uZi5rZXlpZHgsIHN0YS1cdTAwM2VzdGEuYWRkciwgcmV0KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWRcbiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2tleS5oIGIvbmV0L21hYzgwMjExL2tleS5oXG5pbmRleCA4MjZlNGU5Mzg3YzU1Li45N2QzYmJjZjBhYzIxIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2tleS5oXG4rKysgYi9uZXQvbWFjODAyMTEva2V5LmhcbkBAIC0zMiwxMCArMzIsMTMgQEAgc3RydWN0IHN0YV9pbmZvO1xuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxuICAqXHRpbiB0aGUgaGFyZHdhcmUgZm9yIFRYIGNyeXB0byBoYXJkd2FyZSBhY2NlbGVyYXRpb24uXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxuKyAqIEBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQ6IEtleSB1cGxvYWQgaXMgZGVmZXJyZWQgdW50aWwgdGhlIHN0YXRpb25cbisgKlx0aXMgYXNzb2NpYXRlZC5cbiAgKi9cbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF9rZXlfZmxhZ3Mge1xuIFx0S0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkVcdD0gQklUKDApLFxuIFx0S0VZX0ZMQUdfVEFJTlRFRFx0XHQ9IEJJVCgxKSxcbitcdEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRFx0PSBCSVQoMiksXG4gfTtcbiBcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcbkBAIC0xNjUsNiArMTY4LDcgQEAgdm9pZCBpZWVlODAyMTFfZnJlZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdCBib29sIGZvcmNlX3N5bmNocm9uaXplKTtcbiB2b2lkIGllZWU4MDIxMV9mcmVlX3N0YV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCAgICAgc3RydWN0IHN0YV9pbmZvICpzdGEpO1xuK3ZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9rZXlfc3dpdGNoX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGRlbF9saW5rc19tYXNrLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbmluZGV4IGQxMmFlZDljMTc1NjEuLjYyNWY2MjhiNDZhMGQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbkBAIC0xNDY4LDYgKzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuIFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxuIFx0XHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpIHtcbiBcdFx0XHRzZXRfYml0KFdMQU5fU1RBX0FTU09DLCBcdTAwMjZzdGEtXHUwMDNlX2ZsYWdzKTtcbitcdFx0XHRpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0YSk7XG4gXHRcdFx0c3RhLVx1MDAzZWFzc29jX2F0ID0ga3RpbWVfZ2V0X2Jvb3R0aW1lX25zKCk7XG4gXHRcdFx0aWYgKHJlY2FsYykge1xuIFx0XHRcdFx0aWVlZTgwMjExX3JlY2FsY19taW5fY2hhbmRlZihzdGEtXHUwMDNlc2RhdGEsIC0xKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjE4LjI3NTc5NjE4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMDM0ODcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGYXN0IFRyYW5zaXRpb24gS2V5IERlZmVycmFsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWFjODAyMTEgY29yZSwgc3BlY2lmaWNhbGx5IGBjZmcuY2AsIGBrZXkuY2AsIGBrZXkuaGAsIGFuZCBgc3RhX2luZm8uY2AuIFRoZSBnaXN0IGlzIHRoZXkncmUgZGVmZXJyaW5nIHRoZSBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGYXN0IFRyYW5zaXRpb24gKEZUKSBiZWZvcmUgYSBzdGF0aW9uIGFzc29jaWF0ZXMuIENsZXZlciwgcG90ZW50aWFsbHkgaW1wcm92aW5nIEZUIGVmZmljaWVuY3kuIFRoaXMgaW50cm9kdWNlcyBgS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEYCBhbmQgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHJlYWNoYWJpbGl0eSBhbmQgZnVuY3Rpb25hbGl0eS4gVGhlIGZhY3QgdGhhdCBgaWVlZTgwMjExX2FkZF9rZXlgIGluIGBjZmcuY2AgaXMgbW9kaWZpZWQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0J3MgYSBmdW5kYW1lbnRhbCBrZXkgYWRkaXRpb24gZnVuY3Rpb24gaW4gbWFjODAyMTEuIFBsdXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsYCBhbmQgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYCwgd2hpY2ggYXJlIGltcG9ydGFudCB0b28uXG5cblNpbmNlIG1hYzgwMjExIGlzIHBlcmZlY3RseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBgbWFjODAyMTFfaHdzaW1gLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBhIGdvb2QgaWRlYS4gVGhhdCdzIGEgc3Ryb25nIHBvc2l0aXZlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBXZSd2ZSBnb3Q6XG5cbiogICBgaWVlZTgwMjExX2FkZF9rZXlgIChzdGF0aWMgaW4gYGNmZy5jYCwgYnV0IGl0J3MgY2FsbGVkIHNvbWV3aGVyZSBlbHNlLCBsaWtlbHkgYG5sODAyMTFfbmV3X2tleWAgb3Igc2ltaWxhci4gTmVlZCB0byBjb25maXJtIHRoYXQpLlxuKiAgIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCAobm9uLXN0YXRpYyBpbiBga2V5LmNgKS4gVGhhdCdzIHByb21pc2luZywgZnV6emluZyB0aGlzIGRpcmVjdGx5IGlzIHBvc3NpYmxlLlxuKiAgIGBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbGAgKHN0YXRpYyBpbiBga2V5LmNgKS5cbiogICBgX3N0YV9pbmZvX21vdmVfc3RhdGVgIChzdGF0aWMgaW4gYHN0YV9pbmZvLmNgKS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaG93IGBpZWVlODAyMTFfYWRkX2tleWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBjb2RlYmFzZS4gR29pbmcgdG8gc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOToyNC4yNzkyODcxMDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0NjY3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGRfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTU4NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjEyLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MTM6c3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MTQtXFx0XFx0XFx0ICAgICBpbnQgbGlua19pZCwgdTgga2V5X2lkeCwgYm9vbCBwYWlyd2lzZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz02MDAwPWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDA1LVxcdC5zdG9wX3AycF9kZXZpY2UgPSBpZWVlODAyMTFfc3RvcF9wMnBfZGV2aWNlLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDA2OlxcdC5hZGRfa2V5ID0gaWVlZTgwMjExX2FkZF9rZXksXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMDctXFx0LmRlbF9rZXkgPSBpZWVlODAyMTFfZGVsX2tleSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6MjQuNDkzOTYwMDMyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIxNjY3MjAxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS2V5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMga2V5IG1hbmFnZW1lbnQgYXJlYSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgYGllZWU4MDIxMV9hZGRfa2V5YCBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG1hYzgwMjExX2NvbmZpZ19vcHNgIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYWRkX2tleWAgb3BlcmF0aW9uLCBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBmb2NhbCBwb2ludC4gSG93ZXZlciwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBIbW0sIHRoYXQncyBub3QgaWRlYWwgZm9yIG15IHB1cnBvc2VzLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBubDgwMjExX25ld19rZXlgPyBUaGF0IGZ1bmN0aW9uJ3MgZGVmaW5lZCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNvIGl0J3MgYWNjZXNzaWJsZS4gQnV0IGlzIGl0IHRoZSAqYmVzdCogY2hvaWNlP1xuXG5XYWl0LCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYD8gVGhhdCdzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZGVmaW5pdGUgcGx1cy4gTGV0IG1lIHF1aWNrbHkgcGl2b3QgdG8gY2hlY2tpbmcgdGhlIGRlZmluaXRpb24gb2YgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdyBoZXJlIHRvIHBpbnBvaW50IHRoZSBiZXN0IGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjQ2LjY2MDY4MzgwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcyODcxMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3N0YV9pbmZvX21vdmVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzEwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTQtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTM5NTpzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTYtXFx0XFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE1Mzg9aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTQxOlxcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTczLVxcdGlmIChzdGEtXFx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTc0OlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTc1LVxcdFxcdFdBUk5fT05fT05DRShyZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cXHR3aGlsZSAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVxcdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1OTEtXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOTo0Ni43Njc5ODMzNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI4NDIwMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFNUQSBLZXkgVXBsb2FkKipcblxuQWxyaWdodCwgc28gYHN0YV9pbmZvX21vdmVfc3RhdGVgIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlcGFydHVyZSBmcm9tIHdoYXQgSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4gVGhpcyBtZWFucyBpdHMgc2NvcGUgaXMgYnJvYWRlciB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiwgYW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIHRyYWNpbmcgaXRzIHVzYWdlLiBOb3csIGdpdmVuIHRoYXQsIG15IHByaW1hcnkgY29uY2VybiBpcyB3aGF0IGZ1bmN0aW9uIGRvZXMgdGhpcyBzdGF0ZSBwZXJ0YWluIHRvLiBHaXZlbiB0aGUgbmFtZSwgSSBpbW1lZGlhdGVseSBqdW1wIHRvIGNoZWNraW5nIGhvdyBpdCdzIHVzZWQgd2l0aGluIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGFzIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggU1RBIGtleSB1cGRhdGVzIGRlZmVycmVkIGJ5IHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcml0aWNhbCBwaWVjZSBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBoYW5kc2hha2UsIHNvIHRoZSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgdGhpcyBzdGF0ZSBpcyBpbW1lZGlhdGVseSBvZiBpbnRlcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjUwLjc5NjQwNTc1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI0NzI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9rZXkuYz05Nzk9dm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDA0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDA1OnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG5uZXQvbWFjODAyMTEva2V5LmMtMTAwNi17XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5Lmg9MTY5PXZvaWQgaWVlZTgwMjExX2ZyZWVfc3RhX2tleXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2tleS5oLTE3MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG5uZXQvbWFjODAyMTEva2V5Lmg6MTcxOnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxubmV0L21hYzgwMjExL2tleS5oLTE3Mi12b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzOTU9c3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NzAtXFx0XFx0XFx0c2V0X2JpdChXTEFOX1NUQV9BU1NPQywgXFx1MDAyNnN0YS1cXHUwMDNlX2ZsYWdzKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNDcxOlxcdFxcdFxcdGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcyLVxcdFxcdFxcdHN0YS1cXHUwMDNlYXNzb2NfYXQgPSBrdGltZV9nZXRfYm9vdHRpbWVfbnMoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTAuOTI4ODg0OTc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MjQwNDMwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgTWFuYWdlbWVudCBpbiBtYWM4MDIxMSoqXG5cbk9rYXksIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG93YXJkcyBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhcyBmb3IgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGViYXNlLiBUaGV5IHNlZW0gdG8gZGVhbCBkaXJlY3RseSB3aXRoIFNUQSBrZXlzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbi5cblxuTm93LCBgaWVlZTgwMjExX2FkZF9rZXlgIGFsc28gY29tZXMgdG8gbWluZC4gSXQncyBtYXJrZWQgYXMgc3RhdGljIHRob3VnaC4gUGVyaGFwcyBJIGNhbiB0cmFjZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBubDgwMjExX25ld19rZXlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4gT3IgbWF5YmUgYSBoYW5kbGVyIHRocm91Z2ggYG1hYzgwMjExX2NvbmZpZ19vcHNgLCBhbHRob3VnaCBJIGNhbid0IHVzZSBhIHN0cnVjdCBkaXJlY3RseSBhcyBhIGZvY3VzLCBzbyB0aGF0J3Mgbm90IGlkZWFsLlxuXG5JIHNob3VsZCB2ZXJpZnkgaWYgYG5sODAyMTFfbmV3X2tleWAgc2VydmVzIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIGtleSBhZGRpdGlvbiBwcm9jZXNzLiBJdCdzIGEgc29saWQgY2FuZGlkYXRlIHRvIHN0YXJ0IHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTQuNTIxMjkxNjI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzU0MzExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX25ld19rZXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU0NjY9c3RhdGljIGludCBubDgwMjExX3NldF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1NzY6c3RhdGljIGludCBubDgwMjExX25ld19rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1Nzcte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTcyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9uZXdfa2V5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTQuNjE4ODQwOTE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTAwODA2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgbmw4MDIxMSBLZXkgTWFuYWdlbWVudCBQYXRoKipcblxuUmlnaHQsIHNvLCBgbmw4MDIxMV9uZXdfa2V5YC4uLiB0aGF0J3MgZGVmaW5pdGVseSB0aGUgZW50cnkgcG9pbnQgZm9yIGtleSBtYW5hZ2VtZW50LiBXZSdyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgb3IgbW9kaWZ5aW5nIGNyeXB0b2dyYXBoaWMga2V5cyB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgbmw4MDIxMSBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGZsb3csIHRoZSBsaWZlY3ljbGUgb2YgYSBrZXkuXG5cbk5vdywgd2hlcmUgZG9lcyB0aGUgc3RhdGlvbiBzdGF0ZSBnZXQgdXBkYXRlZD8gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYG5sODAyMTFfc2V0X3N0YXRpb25gLCBvciBmdW5jdGlvbnMgbGlrZSBpdCwgYmVjYXVzZSB0aGF04oCZcyB3aGVyZSB0aGUgU1RBIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBzdGF0aW9uIHN0YXRlIHRyYW5zaXRpb25zIGFmZmVjdCwgb3IgYXJlIGFmZmVjdGVkIGJ5LCBrZXkgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCBhc3NvY2lhdGVkIGZsYWdzIGFuZCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTguODA4OTI0MTg3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYwMTUyNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9zZXRfc3RhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9OTA0Mz1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2Vfc3RhX2NoYW5uZWxfaW5mbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MDY4LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6OTA2OTpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTA3MC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0YXRpb25fcGFyYW1ldGVycyAqcGFyYW1zKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz05MTIzPXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9zdGFfdHhwb3dlcl9zZXR0aW5nKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkxNTUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5MTU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfc3RhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTE1Ny17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTQtXFx0LyogSW5jbHVkZSBwYXJhbWV0ZXJzIGZvciBURExTIHBlZXIgKHdpbGwgY2hlY2sgbGF0ZXIpICovXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5Mjk1OlxcdGVyciA9IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhpbmZvLCBcXHUwMDI2cGFyYW1zKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTYtXFx0aWYgKGVycilcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTgyOC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxOTgyOTpcXHRcXHQuZG9pdCA9IG5sODAyMTFfc2V0X3N0YXRpb24sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTgzMC1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOTo1OS4wMjQ5NTI4NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3NjA5NzI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgV2lyZWxlc3MgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQgYW5kIHN0YXRpb24gc2V0dXAgd2l0aGluIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBgbmw4MDIxMV9uZXdfa2V5YCBhbmQgYG5sODAyMTFfc2V0X3N0YXRpb25gIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBkZWVwZXIgZXhhbWluYXRpb24uIFRoZXNlIGxpa2VseSBoYW5kbGUgdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlIGZvciBzZXR0aW5nIHVwIHNlY3VyaXR5IGtleXMgYW5kIHN0YXRpb24gY29uZmlndXJhdGlvbnMuIEknbGwgYWxzbyB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlZmVycmVkIGtleSB1cGxvYWRzLCBzcGVjaWZpY2FsbHkgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLCBhbmQgaG93IHN0YXRpb24gc3RhdGUgdHJhbnNpdGlvbnMgYXJlIG1hbmFnZWQgd2l0aCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXMgdGhlc2UgYXJlIGFsd2F5cyBhIGhvdGJlZCBmb3IgaXNzdWVzLlxuXG5CZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBuZXN0bGVkIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucywgdGhlIGBNQUM4MDIxMWAgY29uZmlnIG9wdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBmbGFnIEkgbmVlZCB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6MDUuMTAxMDUzMjg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4ODEwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6MDUuMjEyOTM5NzA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Nzg2MzczNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYW5kIHBhaXJ3aXNlIGtleXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZT9cIiBXZSdyZSBvYnZpb3VzbHkgd29ya2luZyB3aXRoIGBNQUM4MDIxMWAg4oCTIHRoYXQncyBhIGdpdmVuIOKAkyBidXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSSdtIHByZXR0eSBzdXJlIGBNQUM4MDIxMWAgaXMgdGhlIG9ubHkgZXhwbGljaXQgcmVxdWlyZW1lbnQgZm9yICp0aGlzKiBwYXJ0aWN1bGFyIGNvZGUsIGFsdGhvdWdoLCBvZiBjb3Vyc2UsIGBDRkc4MDIxMWAgaXMgYWxzbyBuZWVkZWQgYmVjYXVzZSBpdCB3b3JrcyB3aXRoIGBtYWM4MDIxMWAuIFNvLCBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgIHRvIGJlIHN1cmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRob3NlIGZ1bmN0aW9uIHN5bWJvbHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb2RlLlxuXG4qICAgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIHNlZW1zIGhpZ2hseSByZWxldmFudC4gSXQncyBhIGtleSBmdW5jdGlvbiAocHVuIGludGVuZGVkISkgaW4gaGFuZGxpbmcgdGhlc2Uga2V5cywgYW5kIGl0cyBkZWZlcnJlZCBuYXR1cmUgaW1wbGllcyB0aGUgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhpcyBtZWNoYW5pc20uXG4qICAgYHN0YV9pbmZvX21vdmVfc3RhdGVgIHNlZW1zIGltcG9ydGFudCB0b28sIGVzcGVjaWFsbHkgaWYgdGhpcyBwYXRjaCBpcyBhYm91dCBGVCwgd2hpY2ggd291bGQgaW52b2x2ZSBtb3Zpbmcgc3RhdGlvbiBzdGF0ZXMuXG4qICAgSSBleHBlY3QgdG8gaGF2ZSBzb21lIHVzZXIgc3BhY2UgaW50ZXJhY3Rpb24gYW5kIHRoYXQgbWVhbnMgSSBzaG91bGQgY2hlY2sgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBubDgwMjExX3NldF9zdGF0aW9uYCBhcyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLlxuXG5JJ20gbm93IGdvaW5nIHRvIGZvY3VzIG9uIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCwgYW5kIHRha2UgYSBsb29rIGF0IGl0IGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjA5Ljk5MTU4MDgwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MDAxMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9pbmZvX21vdmVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjE0Mj1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTAtXFx0ICAgICF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVVUSCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MTpcXHRcXHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNjYtXFxubmV0L21hYzgwMjExL2NmZy5jOjIxNjc6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTY4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3My1cXHRcXHRpZiAoc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVVUSE9SSVpFRCkpXFxubmV0L21hYzgwMjExL2NmZy5jOjIxNzQ6XFx0XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTIxNzUtXFx0XFx0ZWxzZSBpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTc2OlxcdFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3Ny1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4NS1cXHQgICAgdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTg2OlxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTg3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My1cXHQgICAgdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEgpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTQ6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfTk9ORSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjIzLVxcdFxcdC8qIE9ubHkgbW92ZSB0aGUgQVAgc3RhdGUgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MjQ6XFx0XFx0c3RhX2luZm9fbW92ZV9zdGF0ZShhcF9zdGEsIElFRUU4MDIxMV9TVEFfTk9ORSk7XFxubmV0L21hYzgwMjExL21sbWUuYy00NjI1LVxcdH0gZWxzZSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzODY9c3RhdGljIGJvb2wgaWVlZTgwMjExX21hcmtfc3RhX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MDUtXFx0fVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQwNjpcXHRpZiAoc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSCkpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MDctXFx0XFx0c2RhdGFfaW5mbyhzZGF0YSwgXFxcImZhaWxlZCBtb3ZpbmcgJXBNIHRvIGF1dGhcXFxcblxcXCIsIGFwX2FkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02OTc5PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MTUxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1MjpcXHRlcnIgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XFxubmV0L21hYzgwMjExL21sbWUuYy03MTUzLVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2ICEoaWZtZ2QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1NUQV9DT05UUk9MX1BPUlQpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1NDpcXHRcXHRlcnIgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxNTUtXFx0aWYgKGVycikge1xcbi0tXFxubmV0L21hYzgwMjExL29jYi5jPTg3PXN0YXRpYyBzdHJ1Y3Qgc3RhX2luZm8gKmllZWU4MDIxMV9vY2JfZmluaXNoX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDAtXFxubmV0L21hYzgwMjExL29jYi5jOjEwMTpcXHRzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKTtcXG5uZXQvbWFjODAyMTEvb2NiLmM6MTAyOlxcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG5uZXQvbWFjODAyMTEvb2NiLmM6MTAzOlxcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpO1xcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDQtXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ5NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0OTU6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIHN0YS1cXHUwMDNlc3RhX3N0YXRlIC0gMSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk2OlxcdFxcdGlmIChXQVJOX09OQ0UocmV0LCBcXFwic3RhX2luZm9fbW92ZV9zdGF0ZSgpIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ5Ny1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzMTA9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19zdGFfaW5mb19kZXN0cm95X3BhcnQxKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMzk1OnN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5Ni1cXHRcXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgbmV3X3N0YXRlLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUzNy1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTM4OmludCBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1MzktXFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTQxOlxcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTczLVxcdGlmIChzdGEtXFx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTc0OlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTc1LVxcdFxcdFdBUk5fT05fT05DRShyZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cXHR3aGlsZSAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVxcdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1OTEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODQxPXN0YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX3NldF9zdGFfZmxhZyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg0OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NTA6aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODUxLVxcdFxcdFxcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBuZXdfc3RhdGUpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODUzPXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFfaW5mb19wcmVfbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg1OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NjA6XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODYxLVxcdFdBUk5fT05fT05DRShyZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMDoxMC4xODc2MDE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2MDYyMzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU1RBIEtleSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbjsgSSd2ZSBzZWVuIGl0IHVzZWQgYWxsIG92ZXIgdGhlIGNvZGViYXNlLCBhbmQga2VlcGluZyB0cmFjayBvZiBpdHMgY2FsbHMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBhIHN0YXRpb24uIFdlIG5lZWQgYSBzb2xpZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgU1RBIGtleSBoYW5kbGluZyBmbG93LiAgYG5sODAyMTFfbmV3X2tleWAgZmVlbHMgbGlrZSBhIHByb21pc2luZyBzdGFydGluZyBwb2ludCBmb3Iga2V5LXJlbGF0ZWQgb3BlcmF0aW9ucy4gSXQncyB1c2VkIHRvIGFkZCBuZXcga2V5cy5cblxuQW5kIG5vdyBJIGhhdmUgYSBodW5jaC4uLiBJIGJldCBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgaXMgdGhlIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24sIHRoZSBvbmUgdGhhdCdzIHN1cHBvc2VkIHRvIGhhbmRsZSBkZWZlcnJlZCB1cGxvYWRzLiBJIGhhdmUgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmw4MDIxMV9uZXdfa2V5YCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgdG8gc2VlIGhvdyBpdCB0aWVzIGludG8gdGhlIGRlZmVycmVkIHVwbG9hZCBtZWNoYW5pc20gYW5kIGNvbmZpcm1zIG15IHN1c3BpY2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NDguNjQ4MjI5MTM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk1NzMzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9uZXdfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz01NDY2PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfa2V5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1NzUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1NTc2OnN0YXRpYyBpbnQgbmw4MDIxMV9uZXdfa2V5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTc4OS1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxOTc5MDpcXHRcXHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5NzkxLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjQ4LjgyNzg3ODU0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI3NDc5NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEtleSBXaS1GaSBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGhvbmluZyBpbiBvbiBhIGZldyBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLiBgbmw4MDIxMV9uZXdfa2V5YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbiDigJMgdGhhdCdzIHRoZSBvbmUgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbi4gU2ltaWxhcmx5LCBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgaXMgYWxzbyBsb29raW5nIHRvIGJlIGEgcmVsZXZhbnQgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LCB0aGF0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQuIEFuZCwgYXMgYSB0aGlyZCBrZXkgZm9jdXMgYXJlYSwgSSdtIHRoaW5raW5nIHRoYXQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGNvdWxkIGJlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGNvbnNpZGVyIGluIHRoaXMgc3lzdGVtLlxuXG5Ob3csIGEgY3JpdGljYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFkZHJlc3MgaXMgd2hldGhlciBgQ0ZHODAyMTFgIGlzIGFjdHVhbGx5IHJlcXVpcmVkIG9yIG5vdC4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgaW50byB0aGF0IHF1ZXN0aW9uIGZvciB0aGlzIHBhcnQgb2YgdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NTIuMjU1MzYxMzg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYzOTE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMDo1Mi40NTE3NTg0NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxNDg0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXaXJlbGVzcyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYC4gVGhhdCBkZXBlbmRlbmN5IGNoYWluIG1ha2VzIHNlbnNlLCByaWdodD8gU2luY2UgYE1BQzgwMjExYCBoYW5kbGVzIHRoZSBjb3JlIE1BQyBmdW5jdGlvbmFsaXR5LCB0ZWNobmljYWxseSBgTUFDODAyMTFgIGFsb25lICpzaG91bGQqIGJlIHN1ZmZpY2llbnQuIEJ1dCwgSSd2ZSBsZWFybmVkIHRvIGJlIGNhdXRpb3VzLCBzbyBJJ2xsIGluY2x1ZGUgYENGRzgwMjExYCBhbG9uZ3NpZGUgaXQgdG8gZW5zdXJlIGNvbXBsZXRlIGNvbXBhdGliaWxpdHkgYW5kIGF2b2lkIGFueSBwb3RlbnRpYWwgaXNzdWVzIGRvd24gdGhlIGxpbmUuIEl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLlxuXG5XYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgdG8gYmUgY29tcGxldGVseSBjbGVhciwgYE1BQzgwMjExYCBpcyB0aGUgbWFpbiBjb21wb25lbnQgaGVyZS4gT2theSwgbm93IEkgaGF2ZSBpdCBzb3J0ZWQuIFxuXG5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBgbWFjODAyMTFfaHdzaW1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXMgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGhlIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTQ4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NTYuMDY2NjE3MzI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjcxNjc3NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjU2LjMzMzc5Mzc4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTExMjQ5OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIEtleSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gaGF2aW5nIGBNQUM4MDIxMV9IV1NJTWAgaXMgZGVmaW5pdGVseSBiZW5lZmljaWFsIHRvIGhhdmUgZW5hYmxlZC4gTXkgcGxhbiBpcyB0byBlbnN1cmUgdGhhdCBJJ3ZlIGNvbmZpZ3VyZWQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gSSdtIGdvaW5nIHRvIGtlZXAgYW4gZXllIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCwgYG5sODAyMTFfbmV3X2tleWAsIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSBhIHNwZWNpZmljIHJlYWNoYWJpbGl0eSBxdWVzdGlvbi4gSSdtIHdvbmRlcmluZyBpZiBgaWVlZTgwMjExX2FkZF9rZXlgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGBubDgwMjExX25ld19rZXlgLiBJIGtub3cgdGhhdCBgbmw4MDIxMV9uZXdfa2V5YCBjYWxscyBgcmRldl9hZGRfa2V5YCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcmRldi1cdTAwM2VvcHMtXHUwMDNlYWRkX2tleWAuIEFuZCBpbiB0aGUgYG1hYzgwMjExYCBpbXBsZW1lbnRhdGlvbiwgYG1hYzgwMjExX2NvbmZpZ19vcHMuYWRkX2tleWAgKmlzKiBhY3R1YWxseSBgaWVlZTgwMjExX2FkZF9rZXlgLiBUaGVyZWZvcmUsIHRoZSBhbnN3ZXIgaXMgeWVzLCB0aGV5J3JlIGRlZmluaXRlbHkgY29ubmVjdGVkLlxuXG5BbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLiBJJ20gZ29pbmcgdG8gc2V0IHRoZXNlIHJlc3VsdHMgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQxLCJPdXRwdXRUb2tlbnMiOjIxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMTowMS44NDUwNDY4NzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg2NTM2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzXCIsXG4gICAgXCJubDgwMjExX25ld19rZXlcIixcbiAgICBcInN0YV9pbmZvX21vdmVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzXCIsXG4gICAgXCJubDgwMjExX25ld19rZXlcIixcbiAgICBcInN0YV9pbmZvX21vdmVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwrjxg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 05:49:32 +0000 UTC FinishedAt: 2026-08-01 06:11:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "MAC80211_HWSIM" ], "series_id": "c0649c9f-a4e8-4e16-adb2-fead6f2ce501" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_upload_deferred_sta_keys", "nl80211_new_key", "sta_info_move_state" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTk1ZWY4NzE0ZmI4ZDEwYjZhYzVlMjRiNzExNmI0ZWQzYjEwOGExNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAwYTkyNDdiZTI2YWZhLi5hOTU0MzViNzIwYTk0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC02NjYsNyAmIzQzOzY2NiwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGtleS1cdTAwM2Vjb25mLmZsYWdzIHw9IElFRUU4MDIxMV9LRVlfRkxBR19OT19BVVRPX1RYO1xuIFxuIFx0aWYgKG1hY19hZGRyKSB7XG4mIzQzO1x0XHRib29sIGRlZmVyX2h3X3VwbG9hZDtcbiYjNDM7XG4gXHRcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcbiYjNDM7XHRcdGRlZmVyX2h3X3VwbG9hZCA9XG4mIzQzO1x0XHRcdHN0YSBcdTAwMjZcdTAwMjYgcGFpcndpc2UgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0KHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XG4mIzQzO1x0XHRcdCBzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOKTtcbiBcdFx0LypcbiBcdFx0ICogVGhlIEFTU09DIHRlc3QgbWFrZXMgc3VyZSB0aGUgZHJpdmVyIGlzIHJlYWR5IHRvXG4gXHRcdCAqIHJlY2VpdmUgdGhlIGtleS4gV2hlbiB3cGFfc3VwcGxpY2FudCBoYXMgcm9hbWVkXG5AQCAtNjgxLDE0ICYjNDM7Njg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCxcbiBcdFx0ICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS5cbiBcdFx0ICpcbi1cdFx0ICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kXG4tXHRcdCAqXHQgYWRkIGl0IHRvIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHN0YXRpb24gYXNzb2NpYXRlcy5cbiYjNDM7XHRcdCAqIEFQLXNpZGUgRlQgbWF5IGFsc28gaW5zdGFsbCBhIHBhaXJ3aXNlIGtleSBiZWZvcmUgdGhlXG4mIzQzO1x0XHQgKiBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIEtlZXAgaXQgaW4gbWFjODAyMTEgYW5kIHVwbG9hZCBpdFxuJiM0MztcdFx0ICogdG8gdGhlIGRyaXZlciBhZnRlciB0aGUgc3RhdGlvbiByZWFjaGVzIEFTU09DLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFzdGEgfHwgKCFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XG4mIzQzO1x0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgIWRlZmVyX2h3X3VwbG9hZCkpIHtcbiBcdFx0XHRpZWVlODAyMTFfa2V5X2ZyZWVfdW51c2VkKGtleSk7XG4gXHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGVmZXJfaHdfdXBsb2FkKVxuJiM0MztcdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEO1xuIFx0fVxuIFxuIFx0c3dpdGNoIChzZGF0YS1cdTAwM2V2aWYudHlwZSkge1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuYyBiL25ldC9tYWM4MDIxMS9rZXkuY1xuaW5kZXggZjQ1ZTc5MmFiZWRlNS4uMTgwZTJhYTk2NDllMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9rZXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2tleS5jXG5AQCAtMTQ0LDYgJiM0MzsxNDQsMTEgQEAgc3RhdGljIGludCBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoa2V5LVx1MDAzZWZsYWdzIFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpIHtcbiYjNDM7XHRcdHJldCA9IDE7XG4mIzQzO1x0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKCFrZXktXHUwMDNlbG9jYWwtXHUwMDNlb3BzLVx1MDAzZXNldF9rZXkpXG4gXHRcdGdvdG8gb3V0X3Vuc3VwcG9ydGVkO1xuIFxuQEAgLTk5Nyw2ICYjNDM7MTAwMiwyOCBAQCB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0fVxuIH1cbiBcbiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlbG9jYWw7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcbiYjNDM7XHRpbnQgaSwgcmV0O1xuJiM0MztcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc3RhLVx1MDAzZXB0ayk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgc3RhLVx1MDAzZXB0a1tpXSk7XG4mIzQzO1x0XHRpZiAoIWtleSB8fCAhKGtleS1cdTAwM2VmbGFncyBcdTAwMjYgS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0a2V5LVx1MDAzZWZsYWdzIFx1MDAyNj0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcbiYjNDM7XHRcdHJldCA9IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKGtleSk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRzZGF0YV9lcnIoa2V5LVx1MDAzZXNkYXRhLFxuJiM0MztcdFx0XHRcdCAgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgIGtleS1cdTAwM2Vjb25mLmtleWlkeCwgc3RhLVx1MDAzZXN0YS5hZGRyLCByZXQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZFxuIGllZWU4MDIxMV9rZXlfaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmggYi9uZXQvbWFjODAyMTEva2V5LmhcbmluZGV4IDgyNmU0ZTkzODdjNTUuLjk3ZDNiYmNmMGFjMjEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9rZXkuaFxuQEAgLTMyLDEwICYjNDM7MzIsMTMgQEAgc3RydWN0IHN0YV9pbmZvO1xuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxuICAqXHRpbiB0aGUgaGFyZHdhcmUgZm9yIFRYIGNyeXB0byBoYXJkd2FyZSBhY2NlbGVyYXRpb24uXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxuJiM0MzsgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uXG4mIzQzOyAqXHRpcyBhc3NvY2lhdGVkLlxuICAqL1xuIGVudW0gaWVlZTgwMjExX2ludGVybmFsX2tleV9mbGFncyB7XG4gXHRLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRVx0PSBCSVQoMCksXG4gXHRLRVlfRkxBR19UQUlOVEVEXHRcdD0gQklUKDEpLFxuJiM0MztcdEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRFx0PSBCSVQoMiksXG4gfTtcbiBcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcbkBAIC0xNjUsNiAmIzQzOzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgYm9vbCBmb3JjZV9zeW5jaHJvbml6ZSk7XG4gdm9pZCBpZWVlODAyMTFfZnJlZV9zdGFfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbiBpbnQgaWVlZTgwMjExX2tleV9zd2l0Y2hfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsX2xpbmtzX21hc2ssXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuaW5kZXggZDEyYWVkOWMxNzU2MS4uNjI1ZjYyOGI0NmEwZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuIFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxuIFx0XHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpIHtcbiBcdFx0XHRzZXRfYml0KFdMQU5fU1RBX0FTU09DLCBcdTAwMjZzdGEtXHUwMDNlX2ZsYWdzKTtcbiYjNDM7XHRcdFx0aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdGEpO1xuIFx0XHRcdHN0YS1cdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xuIFx0XHRcdGlmIChyZWNhbGMpIHtcbiBcdFx0XHRcdGllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLVx1MDAzZXNkYXRhLCAtMSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTk1ZWY4NzE0ZmI4ZDEwYjZhYzVlMjRiNzExNmI0ZWQzYjEwOGExNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggMGE5MjQ3YmUyNmFmYS4uYTk1NDM1YjcyMGE5NCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuYwpAQCAtNjY2LDcgJiM0Mzs2NjYsMTQgQEAgc3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlrZXktJmd0O2NvbmYuZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX05PX0FVVE9fVFg7CiAKIAlpZiAobWFjX2FkZHIpIHsKJiM0MzsJCWJvb2wgZGVmZXJfaHdfdXBsb2FkOwomIzQzOwogCQlzdGEgPSBzdGFfaW5mb19nZXRfYnNzKHNkYXRhLCBtYWNfYWRkcik7CiYjNDM7CQlkZWZlcl9od191cGxvYWQgPQomIzQzOwkJCXN0YSAmYW1wOyZhbXA7IHBhaXJ3aXNlICZhbXA7JmFtcDsgIXN0YS0mZ3Q7c3RhLmVwcF9wZWVyICZhbXA7JmFtcDsKJiM0MzsJCQkhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSAmYW1wOyZhbXA7CiYjNDM7CQkJKHNkYXRhLSZndDt2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fAomIzQzOwkJCSBzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7CiAJCS8qCiAJCSAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0bwogCQkgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZApAQCAtNjgxLDE0ICYjNDM7Njg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCwKIAkJICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS4KIAkJICoKLQkJICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kCi0JCSAqCSBhZGQgaXQgdG8gdGhlIGRldmljZSBhZnRlciB0aGUgc3RhdGlvbiBhc3NvY2lhdGVzLgomIzQzOwkJICogQVAtc2lkZSBGVCBtYXkgYWxzbyBpbnN0YWxsIGEgcGFpcndpc2Uga2V5IGJlZm9yZSB0aGUKJiM0MzsJCSAqIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gS2VlcCBpdCBpbiBtYWM4MDIxMSBhbmQgdXBsb2FkIGl0CiYjNDM7CQkgKiB0byB0aGUgZHJpdmVyIGFmdGVyIHRoZSBzdGF0aW9uIHJlYWNoZXMgQVNTT0MuCiAJCSAqLwogCQlpZiAoIXN0YSB8fCAoIXN0YS0mZ3Q7c3RhLmVwcF9wZWVyICZhbXA7JmFtcDsKLQkJCSAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7CiYjNDM7CQkJICAgICAhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICAhZGVmZXJfaHdfdXBsb2FkKSkgewogCQkJaWVlZTgwMjExX2tleV9mcmVlX3VudXNlZChrZXkpOwogCQkJcmV0dXJuIC1FTk9FTlQ7CiAJCX0KJiM0MzsKJiM0MzsJCWlmIChkZWZlcl9od191cGxvYWQpCiYjNDM7CQkJa2V5LSZndDtmbGFncyB8PSBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQ7CiAJfQogCiAJc3dpdGNoIChzZGF0YS0mZ3Q7dmlmLnR5cGUpIHsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuYyBiL25ldC9tYWM4MDIxMS9rZXkuYwppbmRleCBmNDVlNzkyYWJlZGU1Li4xODBlMmFhOTY0OWUzIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEva2V5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2tleS5jCkBAIC0xNDQsNiAmIzQzOzE0NCwxMSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoa2V5LSZndDtmbGFncyAmYW1wOyBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpIHsKJiM0MzsJCXJldCA9IDE7CiYjNDM7CQlnb3RvIG91dF91bnN1cHBvcnRlZDsKJiM0MzsJfQomIzQzOwogCWlmICgha2V5LSZndDtsb2NhbC0mZ3Q7b3BzLSZndDtzZXRfa2V5KQogCQlnb3RvIG91dF91bnN1cHBvcnRlZDsKIApAQCAtOTk3LDYgJiM0MzsxMDAyLDI4IEBAIHZvaWQgaWVlZTgwMjExX3JlZW5hYmxlX2tleXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpCiAJfQogfQogCiYjNDM7dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKQomIzQzO3sKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtJmd0O2xvY2FsOwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5OwomIzQzOwlpbnQgaSwgcmV0OwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC0mZ3Q7aHcud2lwaHkpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShzdGEtJmd0O3B0ayk7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC0mZ3Q7aHcud2lwaHksIHN0YS0mZ3Q7cHRrW2ldKTsKJiM0MzsJCWlmICgha2V5IHx8ICEoa2V5LSZndDtmbGFncyAmYW1wOyBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJa2V5LSZndDtmbGFncyAmYW1wOz0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDsKJiM0MzsJCXJldCA9IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKGtleSk7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCXNkYXRhX2VycihrZXktJmd0O3NkYXRhLAomIzQzOwkJCQkgICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxuJiMzNDssCiYjNDM7CQkJCSAga2V5LSZndDtjb25mLmtleWlkeCwgc3RhLSZndDtzdGEuYWRkciwgcmV0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkCiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmggYi9uZXQvbWFjODAyMTEva2V5LmgKaW5kZXggODI2ZTRlOTM4N2M1NS4uOTdkM2JiY2YwYWMyMSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2tleS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9rZXkuaApAQCAtMzIsMTAgJiM0MzszMiwxMyBAQCBzdHJ1Y3Qgc3RhX2luZm87CiAgKiBAS0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkU6IEluZGljYXRlcyB0aGF0IHRoaXMga2V5IGlzIHByZXNlbnQKICAqCWluIHRoZSBoYXJkd2FyZSBmb3IgVFggY3J5cHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbi4KICAqIEBLRVlfRkxBR19UQUlOVEVEOiBLZXkgaXMgdGFpbnRlZCBhbmQgcGFja2V0cyBzaG91bGQgYmUgZHJvcHBlZC4KJiM0MzsgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uCiYjNDM7ICoJaXMgYXNzb2NpYXRlZC4KICAqLwogZW51bSBpZWVlODAyMTFfaW50ZXJuYWxfa2V5X2ZsYWdzIHsKIAlLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRQk9IEJJVCgwKSwKIAlLRVlfRkxBR19UQUlOVEVECQk9IEJJVCgxKSwKJiM0MzsJS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FECT0gQklUKDIpLAogfTsKIAogZW51bSBpZWVlODAyMTFfaW50ZXJuYWxfdGtpcF9zdGF0ZSB7CkBAIC0xNjUsNiAmIzQzOzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSBib29sIGZvcmNlX3N5bmNocm9uaXplKTsKIHZvaWQgaWVlZTgwMjExX2ZyZWVfc3RhX2tleXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTsKJiM0Mzt2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpOwogdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7CiBpbnQgaWVlZTgwMjExX2tleV9zd2l0Y2hfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBkZWxfbGlua3NfbWFzaywKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKaW5kZXggZDEyYWVkOWMxNzU2MS4uNjI1ZjYyOGI0NmEwZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLAogCWNhc2UgSUVFRTgwMjExX1NUQV9BU1NPQzoKIAkJaWYgKHN0YS0mZ3Q7c3RhX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSCkgewogCQkJc2V0X2JpdChXTEFOX1NUQV9BU1NPQywgJmFtcDtzdGEtJmd0O19mbGFncyk7CiYjNDM7CQkJaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdGEpOwogCQkJc3RhLSZndDthc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpOwogCQkJaWYgKHJlY2FsYykgewogCQkJCWllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLSZndDtzZGF0YSwgLTEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmFzdCBUcmFuc2l0aW9uIEtleSBEZWZlcnJhbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWFjODAyMTEgY29yZSwgc3BlY2lmaWNhbGx5IGBjZmcuY2AsIGBrZXkuY2AsIGBrZXkuaGAsIGFuZCBgc3RhX2luZm8uY2AuIFRoZSBnaXN0IGlzIHRoZXkmIzM5O3JlIGRlZmVycmluZyB0aGUgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYmVmb3JlIGEgc3RhdGlvbiBhc3NvY2lhdGVzLiBDbGV2ZXIsIHBvdGVudGlhbGx5IGltcHJvdmluZyBGVCBlZmZpY2llbmN5LiBUaGlzIGludHJvZHVjZXMgYEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRGAgYW5kIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgcmVhY2hhYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5LiBUaGUgZmFjdCB0aGF0IGBpZWVlODAyMTFfYWRkX2tleWAgaW4gYGNmZy5jYCBpcyBtb2RpZmllZCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgc2luY2UgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBrZXkgYWRkaXRpb24gZnVuY3Rpb24gaW4gbWFjODAyMTEuIFBsdXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsYCBhbmQgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYCwgd2hpY2ggYXJlIGltcG9ydGFudCB0b28uCgpTaW5jZSBtYWM4MDIxMSBpcyBwZXJmZWN0bHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgYG1hYzgwMjExX2h3c2ltYCwgZnV6emluZyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgYSBnb29kIGlkZWEuIFRoYXQmIzM5O3MgYSBzdHJvbmcgcG9zaXRpdmUuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZy4gV2UmIzM5O3ZlIGdvdDoKCiogICBgaWVlZTgwMjExX2FkZF9rZXlgIChzdGF0aWMgaW4gYGNmZy5jYCwgYnV0IGl0JiMzOTtzIGNhbGxlZCBzb21ld2hlcmUgZWxzZSwgbGlrZWx5IGBubDgwMjExX25ld19rZXlgIG9yIHNpbWlsYXIuIE5lZWQgdG8gY29uZmlybSB0aGF0KS4KKiAgIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCAobm9uLXN0YXRpYyBpbiBga2V5LmNgKS4gVGhhdCYjMzk7cyBwcm9taXNpbmcsIGZ1enppbmcgdGhpcyBkaXJlY3RseSBpcyBwb3NzaWJsZS4KKiAgIGBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbGAgKHN0YXRpYyBpbiBga2V5LmNgKS4KKiAgIGBfc3RhX2luZm9fbW92ZV9zdGF0ZWAgKHN0YXRpYyBpbiBgc3RhX2luZm8uY2ApLgoKSSBuZWVkIHRvIGNvbmZpcm0gaG93IGBpZWVlODAyMTFfYWRkX2tleWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBjb2RlYmFzZS4gR29pbmcgdG8gc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkZF9rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01ODU9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3R4KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MTItXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjEzOnN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbm5ldC9tYWM4MDIxMS9jZmcuYy02MTQtXHRcdFx0ICAgICBpbnQgbGlua19pZCwgdTgga2V5X2lkeCwgYm9vbCBwYWlyd2lzZSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NjAwMD1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTYwMDUtXHQuc3RvcF9wMnBfZGV2aWNlID0gaWVlZTgwMjExX3N0b3BfcDJwX2RldmljZSxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDA2Olx0LmFkZF9rZXkgPSBpZWVlODAyMTFfYWRkX2tleSxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDA3LVx0LmRlbF9rZXkgPSBpZWVlODAyMTFfZGVsX2tleSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjE2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtleSBNYW5hZ2VtZW50IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMga2V5IG1hbmFnZW1lbnQgYXJlYSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgYGllZWU4MDIxMV9hZGRfa2V5YCBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG1hYzgwMjExX2NvbmZpZ19vcHNgIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYWRkX2tleWAgb3BlcmF0aW9uLCBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBmb2NhbCBwb2ludC4gSG93ZXZlciwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBIbW0sIHRoYXQmIzM5O3Mgbm90IGlkZWFsIGZvciBteSBwdXJwb3Nlcy4KCkFscmlnaHQsIHdoYXQgYWJvdXQgYG5sODAyMTFfbmV3X2tleWA/IFRoYXQgZnVuY3Rpb24mIzM5O3MgZGVmaW5lZCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNvIGl0JiMzOTtzIGFjY2Vzc2libGUuIEJ1dCBpcyBpdCB0aGUgKmJlc3QqIGNob2ljZT8KCldhaXQsIHdoYXQgYWJvdXQgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgPyBUaGF0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZGVmaW5pdGUgcGx1cy4gTGV0IG1lIHF1aWNrbHkgcGl2b3QgdG8gY2hlY2tpbmcgdGhlIGRlZmluaXRpb24gb2YgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdyBoZXJlIHRvIHBpbnBvaW50IHRoZSBiZXN0IGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19zdGFfaW5mb19tb3ZlX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzEwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzk0LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTM5NTpzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5Ni1cdFx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBuZXdfc3RhdGUsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTUzOD1pbnQgc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1NDE6XHRyZXR1cm4gX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBuZXdfc3RhdGUsIHRydWUpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTU0ND1zdGF0aWMgdm9pZCBfX3N0YV9pbmZvX2Rlc3Ryb3lfcGFydDIoc3RydWN0IHN0YV9pbmZvICpzdGEsIGJvb2wgcmVjYWxjKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NzMtXHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1NzQ6XHRcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NzUtXHRcdFdBUk5fT05fT05DRShyZXQpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1ODktXHR3aGlsZSAoc3RhLVx1MDAzZXN0YV9zdGF0ZSBcdTAwM2UgSUVFRTgwMjExX1NUQV9OT05FKSB7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlx0XHRyZXQgPSBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIHN0YS1cdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU5MS1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVEEgS2V5IFVwbG9hZCoqCgpBbHJpZ2h0LCBzbyBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgaXNuJiMzOTt0IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlcGFydHVyZSBmcm9tIHdoYXQgSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4gVGhpcyBtZWFucyBpdHMgc2NvcGUgaXMgYnJvYWRlciB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiwgYW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiB0cmFjaW5nIGl0cyB1c2FnZS4gTm93LCBnaXZlbiB0aGF0LCBteSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hhdCBmdW5jdGlvbiBkb2VzIHRoaXMgc3RhdGUgcGVydGFpbiB0by4gR2l2ZW4gdGhlIG5hbWUsIEkgaW1tZWRpYXRlbHkganVtcCB0byBjaGVja2luZyBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGFzIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIFNUQSBrZXkgdXBkYXRlcyBkZWZlcnJlZCBieSB0aGUgZmlybXdhcmUsIHdoaWNoIGlzIGEgY3JpdGljYWwgcGllY2UgaW4gdGhlIG92ZXJhbGwgc2VjdXJpdHkgaGFuZHNoYWtlLCBzbyB0aGUgZnVuY3Rpb24gdGhhdCB0b3VjaGVzIHRoaXMgc3RhdGUgaXMgaW1tZWRpYXRlbHkgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2tleS5jPTk3OT12b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDA0LVxubmV0L21hYzgwMjExL2tleS5jOjEwMDU6dm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxubmV0L21hYzgwMjExL2tleS5jLTEwMDYte1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuaD0xNjk9dm9pZCBpZWVlODAyMTFfZnJlZV9zdGFfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9rZXkuaC0xNzAtXHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEva2V5Lmg6MTcxOnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEva2V5LmgtMTcyLXZvaWQgaWVlZTgwMjExX3JlZW5hYmxlX2tleXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzOTU9c3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcwLVx0XHRcdHNldF9iaXQoV0xBTl9TVEFfQVNTT0MsIFx1MDAyNnN0YS1cdTAwM2VfZmxhZ3MpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTQ3MTpcdFx0XHRpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0YSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcyLVx0XHRcdHN0YS1cdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS2V5IE1hbmFnZW1lbnQgaW4gbWFjODAyMTEqKgoKT2theSwgbGV0JiMzOTtzIHNlZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG93YXJkcyBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhcyBmb3IgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGViYXNlLiBUaGV5IHNlZW0gdG8gZGVhbCBkaXJlY3RseSB3aXRoIFNUQSBrZXlzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4uCgpOb3csIGBpZWVlODAyMTFfYWRkX2tleWAgYWxzbyBjb21lcyB0byBtaW5kLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljIHRob3VnaC4gUGVyaGFwcyBJIGNhbiB0cmFjZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBubDgwMjExX25ld19rZXlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4gT3IgbWF5YmUgYSBoYW5kbGVyIHRocm91Z2ggYG1hYzgwMjExX2NvbmZpZ19vcHNgLCBhbHRob3VnaCBJIGNhbiYjMzk7dCB1c2UgYSBzdHJ1Y3QgZGlyZWN0bHkgYXMgYSBmb2N1cywgc28gdGhhdCYjMzk7cyBub3QgaWRlYWwuCgpJIHNob3VsZCB2ZXJpZnkgaWYgYG5sODAyMTFfbmV3X2tleWAgc2VydmVzIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIGtleSBhZGRpdGlvbiBwcm9jZXNzLiBJdCYjMzk7cyBhIHNvbGlkIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ2Nj1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTU3NjpzdGF0aWMgaW50IG5sODAyMTFfbmV3X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlx0XHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIG5sODAyMTEgS2V5IE1hbmFnZW1lbnQgUGF0aCoqCgpSaWdodCwgc28sIGBubDgwMjExX25ld19rZXlgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgZW50cnkgcG9pbnQgZm9yIGtleSBtYW5hZ2VtZW50LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzZXR0aW5nIHVwIG9yIG1vZGlmeWluZyBjcnlwdG9ncmFwaGljIGtleXMgd2l0aGluIHRoZSB3aXJlbGVzcyBzdGFjaywgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIG5sODAyMTEgaW50ZXJmYWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBmbG93LCB0aGUgbGlmZWN5Y2xlIG9mIGEga2V5LgoKTm93LCB3aGVyZSBkb2VzIHRoZSBzdGF0aW9uIHN0YXRlIGdldCB1cGRhdGVkPyBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYG5sODAyMTFfc2V0X3N0YXRpb25gLCBvciBmdW5jdGlvbnMgbGlrZSBpdCwgYmVjYXVzZSB0aGF04oCZcyB3aGVyZSB0aGUgU1RBIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBzdGF0aW9uIHN0YXRlIHRyYW5zaXRpb25zIGFmZmVjdCwgb3IgYXJlIGFmZmVjdGVkIGJ5LCBrZXkgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCBhc3NvY2lhdGVkIGZsYWdzIGFuZCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX3NldF9zdGF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTkwNDM9c3RhdGljIGludCBubDgwMjExX3BhcnNlX3N0YV9jaGFubmVsX2luZm8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkwNjgtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjkwNjk6c3RhdGljIGludCBubDgwMjExX3NldF9zdGF0aW9uX3RkbHMoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTA3MC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc3RhdGlvbl9wYXJhbWV0ZXJzICpwYXJhbXMpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz05MTIzPXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9zdGFfdHhwb3dlcl9zZXR0aW5nKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MTU1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5MTU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfc3RhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MTU3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTQtXHQvKiBJbmNsdWRlIHBhcmFtZXRlcnMgZm9yIFRETFMgcGVlciAod2lsbCBjaGVjayBsYXRlcikgKi9cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6OTI5NTpcdGVyciA9IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhpbmZvLCBcdTAwMjZwYXJhbXMpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy05Mjk2LVx0aWYgKGVycilcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5ODI4LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5ODI5Olx0XHQuZG9pdCA9IG5sODAyMTFfc2V0X3N0YXRpb24sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5ODMwLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEtleSBXaXJlbGVzcyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGtleSBtYW5hZ2VtZW50IGFuZCBzdGF0aW9uIHNldHVwIHdpdGhpbiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdGFjay4gYG5sODAyMTFfbmV3X2tleWAgYW5kIGBubDgwMjExX3NldF9zdGF0aW9uYCBsb29rIGxpa2UgcHJpbWUgdGFyZ2V0cyBmb3IgZGVlcGVyIGV4YW1pbmF0aW9uLiBUaGVzZSBsaWtlbHkgaGFuZGxlIHRoZSBjb3JlIGludGVyYWN0aW9ucyB3aXRoIHVzZXJzcGFjZSBmb3Igc2V0dGluZyB1cCBzZWN1cml0eSBrZXlzIGFuZCBzdGF0aW9uIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVmZXJyZWQga2V5IHVwbG9hZHMsIHNwZWNpZmljYWxseSBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AsIGFuZCBob3cgc3RhdGlvbiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgbWFuYWdlZCB3aXRoIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyB0aGVzZSBhcmUgYWx3YXlzIGEgaG90YmVkIGZvciBpc3N1ZXMuCgpCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBuZXN0bGVkIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucywgdGhlIGBNQUM4MDIxMWAgY29uZmlnIG9wdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBmbGFnIEkgbmVlZCB0byB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYW5kIHBhaXJ3aXNlIGtleXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGhlcmU/JiMzNDsgV2UmIzM5O3JlIG9idmlvdXNseSB3b3JraW5nIHdpdGggYE1BQzgwMjExYCDigJMgdGhhdCYjMzk7cyBhIGdpdmVuIOKAkyBidXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBgTUFDODAyMTFgIGlzIHRoZSBvbmx5IGV4cGxpY2l0IHJlcXVpcmVtZW50IGZvciAqdGhpcyogcGFydGljdWxhciBjb2RlLCBhbHRob3VnaCwgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGlzIGFsc28gbmVlZGVkIGJlY2F1c2UgaXQgd29ya3Mgd2l0aCBgbWFjODAyMTFgLiBTbywgSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgdG8gYmUgc3VyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aG9zZSBmdW5jdGlvbiBzeW1ib2xzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgcmVsZXZhbnQgY29kZS4KCiogICBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2Agc2VlbXMgaGlnaGx5IHJlbGV2YW50LiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiAocHVuIGludGVuZGVkISkgaW4gaGFuZGxpbmcgdGhlc2Uga2V5cywgYW5kIGl0cyBkZWZlcnJlZCBuYXR1cmUgaW1wbGllcyB0aGUgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhpcyBtZWNoYW5pc20uCiogICBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgc2VlbXMgaW1wb3J0YW50IHRvbywgZXNwZWNpYWxseSBpZiB0aGlzIHBhdGNoIGlzIGFib3V0IEZULCB3aGljaCB3b3VsZCBpbnZvbHZlIG1vdmluZyBzdGF0aW9uIHN0YXRlcy4KKiAgIEkgZXhwZWN0IHRvIGhhdmUgc29tZSB1c2VyIHNwYWNlIGludGVyYWN0aW9uIGFuZCB0aGF0IG1lYW5zIEkgc2hvdWxkIGNoZWNrIGBubDgwMjExX25ld19rZXlgIGFuZCBgbmw4MDIxMV9zZXRfc3RhdGlvbmAgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4KCkkmIzM5O20gbm93IGdvaW5nIHRvIGZvY3VzIG9uIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCwgYW5kIHRha2UgYSBsb29rIGF0IGl0IGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9pbmZvX21vdmVfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMTQyPXN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNTAtXHQgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BVVRIKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIxNTE6XHRcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNTItXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNjYtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE2NzpcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNjgtXHRcdGlmIChyZXQpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxNzMtXHRcdGlmIChzZXQgXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FVVEhPUklaRUQpKVxubmV0L21hYzgwMjExL2NmZy5jOjIxNzQ6XHRcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3NS1cdFx0ZWxzZSBpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKVxubmV0L21hYzgwMjExL2NmZy5jOjIxNzY6XHRcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxNzctXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4NS1cdCAgICB0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVNTT0MpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE4NjpcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSCk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4Ny1cdFx0aWYgKHJldClcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My1cdCAgICB0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVVUSCkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTk0Olx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9OT05FKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTk1LVx0XHRpZiAocmV0KVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYyMy1cdFx0LyogT25seSBtb3ZlIHRoZSBBUCBzdGF0ZSAqL1xubmV0L21hYzgwMjExL21sbWUuYzo0NjI0Olx0XHRzdGFfaW5mb19tb3ZlX3N0YXRlKGFwX3N0YSwgSUVFRTgwMjExX1NUQV9OT05FKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYyNS1cdH0gZWxzZSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz01Mzg2PXN0YXRpYyBib29sIGllZWU4MDIxMV9tYXJrX3N0YV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTQwNS1cdH1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQwNjpcdGlmIChzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKSkge1xubmV0L21hYzgwMjExL21sbWUuYy01NDA3LVx0XHRzZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtmYWlsZWQgbW92aW5nICVwTSB0byBhdXRoXFxuXCYjMzQ7LCBhcF9hZGRyKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5Nzk9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MTUxLVxubmV0L21hYzgwMjExL21sbWUuYzo3MTUyOlx0ZXJyID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xubmV0L21hYzgwMjExL21sbWUuYy03MTUzLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICEoaWZtZ2QtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TVEFfQ09OVFJPTF9QT1JUKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1NDpcdFx0ZXJyID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxNTUtXHRpZiAoZXJyKSB7XG4tLVxubmV0L21hYzgwMjExL29jYi5jPTg3PXN0YXRpYyBzdHJ1Y3Qgc3RhX2luZm8gKmllZWU4MDIxMV9vY2JfZmluaXNoX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvb2NiLmMtMTAwLVxubmV0L21hYzgwMjExL29jYi5jOjEwMTpcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xubmV0L21hYzgwMjExL29jYi5jOjEwMjpcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcbm5ldC9tYWM4MDIxMS9vY2IuYzoxMDM6XHRzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKTtcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDQtXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDY4PXZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDk0LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk1Olx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVx1MDAzZXN0YV9zdGF0ZSAtIDEpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk2Olx0XHRpZiAoV0FSTl9PTkNFKHJldCwgXCYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSgpIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDk3LVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzMTA9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19zdGFfaW5mb19kZXN0cm95X3BhcnQxKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTQtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMzk1OnN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMzk2LVx0XHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTM3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTUzODppbnQgc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1MzktXHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSlcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1NDAte1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTU0MTpcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQyLX1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU3My1cdGlmIChzdGEtXHUwMDNlc3RhX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCkge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTU3NDpcdFx0cmV0ID0gX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DLCByZWNhbGMpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU3NS1cdFx0V0FSTl9PTl9PTkNFKHJldCk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cdHdoaWxlIChzdGEtXHUwMDNlc3RhX3N0YXRlIFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjE1OTA6XHRcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVx1MDAzZXN0YV9zdGF0ZSAtIDEsIHJlY2FsYyk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTkxLVx0XHRpZiAocmV0KSB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODQxPXN0YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX3NldF9zdGFfZmxhZyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NDktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NTA6aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NTEtXHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODUzPXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFfaW5mb19wcmVfbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC04NTktXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NjA6XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgbmV3X3N0YXRlKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg2MS1cdFdBUk5fT05fT05DRShyZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA3MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNUQSBLZXkgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBJJiMzOTt2ZSBzZWVuIGl0IHVzZWQgYWxsIG92ZXIgdGhlIGNvZGViYXNlLCBhbmQga2VlcGluZyB0cmFjayBvZiBpdHMgY2FsbHMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBhIHN0YXRpb24uIFdlIG5lZWQgYSBzb2xpZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgU1RBIGtleSBoYW5kbGluZyBmbG93LiAgYG5sODAyMTFfbmV3X2tleWAgZmVlbHMgbGlrZSBhIHByb21pc2luZyBzdGFydGluZyBwb2ludCBmb3Iga2V5LXJlbGF0ZWQgb3BlcmF0aW9ucy4gSXQmIzM5O3MgdXNlZCB0byBhZGQgbmV3IGtleXMuCgpBbmQgbm93IEkgaGF2ZSBhIGh1bmNoLi4uIEkgYmV0IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCBpcyB0aGUgbmV3bHkgaW50cm9kdWNlZCBmdW5jdGlvbiwgdGhlIG9uZSB0aGF0JiMzOTtzIHN1cHBvc2VkIHRvIGhhbmRsZSBkZWZlcnJlZCB1cGxvYWRzLiBJIGhhdmUgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG5sODAyMTFfbmV3X2tleWAgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIHRvIHNlZSBob3cgaXQgdGllcyBpbnRvIHRoZSBkZWZlcnJlZCB1cGxvYWQgbWVjaGFuaXNtIGFuZCBjb25maXJtcyBteSBzdXNwaWNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ2Nj1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTU3NjpzdGF0aWMgaW50IG5sODAyMTFfbmV3X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlx0XHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBLZXkgV2ktRmkgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBhIGZldyBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLiBgbmw4MDIxMV9uZXdfa2V5YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbiDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHRvIGtlZXAgYSBjbG9zZSBleWUgb24uIFNpbWlsYXJseSwgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGlzIGFsc28gbG9va2luZyB0byBiZSBhIHJlbGV2YW50IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZC4gQW5kLCBhcyBhIHRoaXJkIGtleSBmb2N1cyBhcmVhLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGNvdWxkIGJlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGNvbnNpZGVyIGluIHRoaXMgc3lzdGVtLgoKTm93LCBhIGNyaXRpY2FsIHF1ZXN0aW9uIEkgbmVlZCB0byBhZGRyZXNzIGlzIHdoZXRoZXIgYENGRzgwMjExYCBpcyBhY3R1YWxseSByZXF1aXJlZCBvciBub3QuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhhdCBxdWVzdGlvbiBmb3IgdGhpcyBwYXJ0IG9mIHRoZSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXaXJlbGVzcyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZXNlIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgTUFDODAyMTFgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IGRlcGVuZGVuY3kgY2hhaW4gbWFrZXMgc2Vuc2UsIHJpZ2h0PyBTaW5jZSBgTUFDODAyMTFgIGhhbmRsZXMgdGhlIGNvcmUgTUFDIGZ1bmN0aW9uYWxpdHksIHRlY2huaWNhbGx5IGBNQUM4MDIxMWAgYWxvbmUgKnNob3VsZCogYmUgc3VmZmljaWVudC4gQnV0LCBJJiMzOTt2ZSBsZWFybmVkIHRvIGJlIGNhdXRpb3VzLCBzbyBJJiMzOTtsbCBpbmNsdWRlIGBDRkc4MDIxMWAgYWxvbmdzaWRlIGl0IHRvIGVuc3VyZSBjb21wbGV0ZSBjb21wYXRpYmlsaXR5IGFuZCBhdm9pZCBhbnkgcG90ZW50aWFsIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaC4KCldhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4ganVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyLCBgTUFDODAyMTFgIGlzIHRoZSBtYWluIGNvbXBvbmVudCBoZXJlLiBPa2F5LCBub3cgSSBoYXZlIGl0IHNvcnRlZC4gCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgYG1hYzgwMjExX2h3c2ltYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGlzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRoZSBzaW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA2OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQxCgkJCQkJCQlvdXRwdXQ6IDIxOAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNQUM4MDIxMSBLZXkgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBoYXZpbmcgYE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbml0ZWx5IGJlbmVmaWNpYWwgdG8gaGF2ZSBlbmFibGVkLiBNeSBwbGFuIGlzIHRvIGVuc3VyZSB0aGF0IEkmIzM5O3ZlIGNvbmZpZ3VyZWQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gSSYjMzk7bSBnb2luZyB0byBrZWVwIGFuIGV5ZSBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AsIGBubDgwMjExX25ld19rZXlgLCBhbmQgYHN0YV9pbmZvX21vdmVfc3RhdGVgLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IGEgc3BlY2lmaWMgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgaWVlZTgwMjExX2FkZF9rZXlgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGBubDgwMjExX25ld19rZXlgLiBJIGtub3cgdGhhdCBgbmw4MDIxMV9uZXdfa2V5YCBjYWxscyBgcmRldl9hZGRfa2V5YCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcmRldi0mZ3Q7b3BzLSZndDthZGRfa2V5YC4gQW5kIGluIHRoZSBgbWFjODAyMTFgIGltcGxlbWVudGF0aW9uLCBgbWFjODAyMTFfY29uZmlnX29wcy5hZGRfa2V5YCAqaXMqIGFjdHVhbGx5IGBpZWVlODAyMTFfYWRkX2tleWAuIFRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyB5ZXMsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgY29ubmVjdGVkLgoKQWxyaWdodCwgdGhhdCBjb25maXJtcyB0aGUgcGF0aC4gSSYjMzk7bSBnb2luZyB0byBzZXQgdGhlc2UgcmVzdWx0cyBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDY6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyYjMzQ7LAogICAgJiMzNDtubDgwMjExX25ld19rZXkmIzM0OywKICAgICYjMzQ7c3RhX2luZm9fbW92ZV9zdGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9uZXdfa2V5JiMzNDssCiAgICAmIzM0O3N0YV9pbmZvX21vdmVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1hYzgwMjExIGNvcmUgdG8gZGVmZXIgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRlQgYmVmb3JlIHRoZSBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uIFRoZSBuZXcgZnVuY3Rpb24gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGFuZCB0aGUgZW50cnkgcG9pbnRzIGBubDgwMjExX25ld19rZXlgIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjE3LjcwOTI0NjQ2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDM1NDQ3MDI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c1wiLFxuICAgIFwibmw4MDIxMV9uZXdfa2V5XCIsXG4gICAgXCJzdGFfaW5mb19tb3ZlX3N0YXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1hYzgwMjExIGNvcmUgdG8gZGVmZXIgaGFyZHdhcmUgdXBsb2FkIG9mIHBhaXJ3aXNlIGtleXMgZm9yIEFQLXNpZGUgRlQgYmVmb3JlIHRoZSBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgbWFjODAyMTFfaHdzaW0uIFRoZSBuZXcgZnVuY3Rpb24gYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIGFuZCB0aGUgZW50cnkgcG9pbnRzIGBubDgwMjExX25ld19rZXlgIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6MTcuNzA5MjUyNzUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjU1MjAyNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhOTVlZjg3MTRmYjhkMTBiNmFjNWUyNGI3MTE2YjRlZDNiMTA4YTE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMDY6MDk6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXFxuaW5kZXggMGE5MjQ3YmUyNmFmYS4uYTk1NDM1YjcyMGE5NCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5AQCAtNjY2LDcgKzY2NiwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGtleS1cXHUwMDNlY29uZi5mbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfTk9fQVVUT19UWDtcXG4gXFxuIFxcdGlmIChtYWNfYWRkcikge1xcbitcXHRcXHRib29sIGRlZmVyX2h3X3VwbG9hZDtcXG4rXFxuIFxcdFxcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcXG4rXFx0XFx0ZGVmZXJfaHdfdXBsb2FkID1cXG4rXFx0XFx0XFx0c3RhIFxcdTAwMjZcXHUwMDI2IHBhaXJ3aXNlIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5lcHBfcGVlciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIHx8XFxuK1xcdFxcdFxcdCBzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0b1xcbiBcXHRcXHQgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZFxcbkBAIC02ODEsMTQgKzY4OCwxOSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAqIElmIChyZSlhc3NvY2lhdGlvbiBmcmFtZSBlbmNyeXB0aW9uIHN1cHBvcnQgaXMgbm90IHByZXNlbnQsXFxuIFxcdFxcdCAqIGNmZzgwMjExIHdpbGwgbm90IGFsbG93IGtleSBpbnN0YWxsYXRpb24gaW4gbm9u4oCRQVAgU1RBIG1vZGUuXFxuIFxcdFxcdCAqXFxuLVxcdFxcdCAqIFRPRE86IGFjY2VwdCB0aGUga2V5IGlmIHdlIGhhdmUgYSBzdGF0aW9uIGVudHJ5IGFuZFxcbi1cXHRcXHQgKlxcdCBhZGQgaXQgdG8gdGhlIGRldmljZSBhZnRlciB0aGUgc3RhdGlvbiBhc3NvY2lhdGVzLlxcbitcXHRcXHQgKiBBUC1zaWRlIEZUIG1heSBhbHNvIGluc3RhbGwgYSBwYWlyd2lzZSBrZXkgYmVmb3JlIHRoZVxcbitcXHRcXHQgKiBzdGF0aW9uIGlzIGFzc29jaWF0ZWQuIEtlZXAgaXQgaW4gbWFjODAyMTEgYW5kIHVwbG9hZCBpdFxcbitcXHRcXHQgKiB0byB0aGUgZHJpdmVyIGFmdGVyIHRoZSBzdGF0aW9uIHJlYWNoZXMgQVNTT0MuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIXN0YSB8fCAoIXN0YS1cXHUwMDNlc3RhLmVwcF9wZWVyIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XFxuK1xcdFxcdFxcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgICAhZGVmZXJfaHdfdXBsb2FkKSkge1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfa2V5X2ZyZWVfdW51c2VkKGtleSk7XFxuIFxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoZGVmZXJfaHdfdXBsb2FkKVxcbitcXHRcXHRcXHRrZXktXFx1MDAzZWZsYWdzIHw9IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcXG4gXFx0fVxcbiBcXG4gXFx0c3dpdGNoIChzZGF0YS1cXHUwMDNldmlmLnR5cGUpIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2tleS5jIGIvbmV0L21hYzgwMjExL2tleS5jXFxuaW5kZXggZjQ1ZTc5MmFiZWRlNS4uMTgwZTJhYTk2NDllMyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmNcXG4rKysgYi9uZXQvbWFjODAyMTEva2V5LmNcXG5AQCAtMTQ0LDYgKzE0NCwxMSBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoa2V5LVxcdTAwM2VmbGFncyBcXHUwMDI2IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRCkge1xcbitcXHRcXHRyZXQgPSAxO1xcbitcXHRcXHRnb3RvIG91dF91bnN1cHBvcnRlZDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKCFrZXktXFx1MDAzZWxvY2FsLVxcdTAwM2VvcHMtXFx1MDAzZXNldF9rZXkpXFxuIFxcdFxcdGdvdG8gb3V0X3Vuc3VwcG9ydGVkO1xcbiBcXG5AQCAtOTk3LDYgKzEwMDIsMjggQEAgdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gXFx0fVxcbiB9XFxuIFxcbit2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuK3tcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbitcXHRpbnQgaSwgcmV0O1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHN0YS1cXHUwMDNlcHRrKTsgaSsrKSB7XFxuK1xcdFxcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVxcdTAwM2Vody53aXBoeSwgc3RhLVxcdTAwM2VwdGtbaV0pO1xcbitcXHRcXHRpZiAoIWtleSB8fCAhKGtleS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGtleS1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfktFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2tleV9lbmFibGVfaHdfYWNjZWwoa2V5KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0c2RhdGFfZXJyKGtleS1cXHUwMDNlc2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgXFxcImZhaWxlZCB0byBlbmFibGUgZGVmZXJyZWQga2V5ICglZCwgJXBNKTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAga2V5LVxcdTAwM2Vjb25mLmtleWlkeCwgc3RhLVxcdTAwM2VzdGEuYWRkciwgcmV0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZFxcbiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9rZXkuaCBiL25ldC9tYWM4MDIxMS9rZXkuaFxcbmluZGV4IDgyNmU0ZTkzODdjNTUuLjk3ZDNiYmNmMGFjMjEgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2tleS5oXFxuKysrIGIvbmV0L21hYzgwMjExL2tleS5oXFxuQEAgLTMyLDEwICszMiwxMyBAQCBzdHJ1Y3Qgc3RhX2luZm87XFxuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxcbiAgKlxcdGluIHRoZSBoYXJkd2FyZSBmb3IgVFggY3J5cHRvIGhhcmR3YXJlIGFjY2VsZXJhdGlvbi5cXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxcbisgKiBAS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEOiBLZXkgdXBsb2FkIGlzIGRlZmVycmVkIHVudGlsIHRoZSBzdGF0aW9uXFxuKyAqXFx0aXMgYXNzb2NpYXRlZC5cXG4gICovXFxuIGVudW0gaWVlZTgwMjExX2ludGVybmFsX2tleV9mbGFncyB7XFxuIFxcdEtFWV9GTEFHX1VQTE9BREVEX1RPX0hBUkRXQVJFXFx0PSBCSVQoMCksXFxuIFxcdEtFWV9GTEFHX1RBSU5URURcXHRcXHQ9IEJJVCgxKSxcXG4rXFx0S0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEXFx0PSBCSVQoMiksXFxuIH07XFxuIFxcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcXG5AQCAtMTY1LDYgKzE2OCw3IEBAIHZvaWQgaWVlZTgwMjExX2ZyZWVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0IGJvb2wgZm9yY2Vfc3luY2hyb25pemUpO1xcbiB2b2lkIGllZWU4MDIxMV9mcmVlX3N0YV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG4rdm9pZCBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG4gdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIGludCBpZWVlODAyMTFfa2V5X3N3aXRjaF9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsX2xpbmtzX21hc2ssXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcXG5pbmRleCBkMTJhZWQ5YzE3NTYxLi42MjVmNjI4YjQ2YTBkIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXFxuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcXG5AQCAtMTQ2OCw2ICsxNDY4LDcgQEAgc3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4gXFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxcbiBcXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKSB7XFxuIFxcdFxcdFxcdHNldF9iaXQoV0xBTl9TVEFfQVNTT0MsIFxcdTAwMjZzdGEtXFx1MDAzZV9mbGFncyk7XFxuK1xcdFxcdFxcdGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RhKTtcXG4gXFx0XFx0XFx0c3RhLVxcdTAwM2Vhc3NvY19hdCA9IGt0aW1lX2dldF9ib290dGltZV9ucygpO1xcbiBcXHRcXHRcXHRpZiAocmVjYWxjKSB7XFxuIFxcdFxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfbWluX2NoYW5kZWYoc3RhLVxcdTAwM2VzZGF0YSwgLTEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOToxOC4yNzU3OTQxOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM3ODc5MTA3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNcIixcbiAgICBcIm5sODAyMTFfbmV3X2tleVwiLFxuICAgIFwic3RhX2luZm9fbW92ZV9zdGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtYWM4MDIxMSBjb3JlIHRvIGRlZmVyIGhhcmR3YXJlIHVwbG9hZCBvZiBwYWlyd2lzZSBrZXlzIGZvciBBUC1zaWRlIEZUIGJlZm9yZSB0aGUgc3RhdGlvbiBpcyBhc3NvY2lhdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3RhY2ssIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIG1hYzgwMjExX2h3c2ltLiBUaGUgbmV3IGZ1bmN0aW9uIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCBhbmQgdGhlIGVudHJ5IHBvaW50cyBgbmw4MDIxMV9uZXdfa2V5YCBhbmQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE5NWVmODcxNGZiOGQxMGI2YWM1ZTI0YjcxMTZiNGVkM2IxMDhhMTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDA2OjA5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAwYTkyNDdiZTI2YWZhLi5hOTU0MzViNzIwYTk0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC02NjYsNyArNjY2LDE0IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0a2V5LVx1MDAzZWNvbmYuZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX05PX0FVVE9fVFg7XG4gXG4gXHRpZiAobWFjX2FkZHIpIHtcbitcdFx0Ym9vbCBkZWZlcl9od191cGxvYWQ7XG4rXG4gXHRcdHN0YSA9IHN0YV9pbmZvX2dldF9ic3Moc2RhdGEsIG1hY19hZGRyKTtcbitcdFx0ZGVmZXJfaHdfdXBsb2FkID1cbitcdFx0XHRzdGEgXHUwMDI2XHUwMDI2IHBhaXJ3aXNlIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5lcHBfcGVlciBcdTAwMjZcdTAwMjZcbitcdFx0XHQhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHxcbitcdFx0XHQgc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTik7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBBU1NPQyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGRyaXZlciBpcyByZWFkeSB0b1xuIFx0XHQgKiByZWNlaXZlIHRoZSBrZXkuIFdoZW4gd3BhX3N1cHBsaWNhbnQgaGFzIHJvYW1lZFxuQEAgLTY4MSwxNCArNjg4LDE5IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogSWYgKHJlKWFzc29jaWF0aW9uIGZyYW1lIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgcHJlc2VudCxcbiBcdFx0ICogY2ZnODAyMTEgd2lsbCBub3QgYWxsb3cga2V5IGluc3RhbGxhdGlvbiBpbiBub27igJFBUCBTVEEgbW9kZS5cbiBcdFx0ICpcbi1cdFx0ICogVE9ETzogYWNjZXB0IHRoZSBrZXkgaWYgd2UgaGF2ZSBhIHN0YXRpb24gZW50cnkgYW5kXG4tXHRcdCAqXHQgYWRkIGl0IHRvIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHN0YXRpb24gYXNzb2NpYXRlcy5cbitcdFx0ICogQVAtc2lkZSBGVCBtYXkgYWxzbyBpbnN0YWxsIGEgcGFpcndpc2Uga2V5IGJlZm9yZSB0aGVcbitcdFx0ICogc3RhdGlvbiBpcyBhc3NvY2lhdGVkLiBLZWVwIGl0IGluIG1hYzgwMjExIGFuZCB1cGxvYWQgaXRcbitcdFx0ICogdG8gdGhlIGRyaXZlciBhZnRlciB0aGUgc3RhdGlvbiByZWFjaGVzIEFTU09DLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFzdGEgfHwgKCFzdGEtXHUwMDNlc3RhLmVwcF9wZWVyIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICAgIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9BU1NPQykpKSB7XG4rXHRcdFx0ICAgICAhdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgICFkZWZlcl9od191cGxvYWQpKSB7XG4gXHRcdFx0aWVlZTgwMjExX2tleV9mcmVlX3VudXNlZChrZXkpO1xuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0XHR9XG4rXG4rXHRcdGlmIChkZWZlcl9od191cGxvYWQpXG4rXHRcdFx0a2V5LVx1MDAzZWZsYWdzIHw9IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRDtcbiBcdH1cbiBcbiBcdHN3aXRjaCAoc2RhdGEtXHUwMDNldmlmLnR5cGUpIHtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEva2V5LmMgYi9uZXQvbWFjODAyMTEva2V5LmNcbmluZGV4IGY0NWU3OTJhYmVkZTUuLjE4MGUyYWE5NjQ5ZTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEva2V5LmNcbisrKyBiL25ldC9tYWM4MDIxMS9rZXkuY1xuQEAgLTE0NCw2ICsxNDQsMTEgQEAgc3RhdGljIGludCBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChrZXktXHUwMDNlZmxhZ3MgXHUwMDI2IEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRCkge1xuK1x0XHRyZXQgPSAxO1xuK1x0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbitcdH1cbitcbiBcdGlmICgha2V5LVx1MDAzZWxvY2FsLVx1MDAzZW9wcy1cdTAwM2VzZXRfa2V5KVxuIFx0XHRnb3RvIG91dF91bnN1cHBvcnRlZDtcbiBcbkBAIC05OTcsNiArMTAwMiwyOCBAQCB2b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0fVxuIH1cbiBcbit2b2lkIGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RydWN0IHN0YV9pbmZvICpzdGEpXG4re1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlbG9jYWw7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuK1x0aW50IGksIHJldDtcbitcbitcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoc3RhLVx1MDAzZXB0ayk7IGkrKykge1xuK1x0XHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgc3RhLVx1MDAzZXB0a1tpXSk7XG4rXHRcdGlmICgha2V5IHx8ICEoa2V5LVx1MDAzZWZsYWdzIFx1MDAyNiBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRrZXktXHUwMDNlZmxhZ3MgXHUwMDI2PSB+S0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEO1xuK1x0XHRyZXQgPSBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChrZXkpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdHNkYXRhX2VycihrZXktXHUwMDNlc2RhdGEsXG4rXHRcdFx0XHQgIFwiZmFpbGVkIHRvIGVuYWJsZSBkZWZlcnJlZCBrZXkgKCVkLCAlcE0pOiAlZFxcblwiLFxuK1x0XHRcdFx0ICBrZXktXHUwMDNlY29uZi5rZXlpZHgsIHN0YS1cdTAwM2VzdGEuYWRkciwgcmV0KTtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWRcbiBpZWVlODAyMTFfa2V5X2l0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2tleS5oIGIvbmV0L21hYzgwMjExL2tleS5oXG5pbmRleCA4MjZlNGU5Mzg3YzU1Li45N2QzYmJjZjBhYzIxIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2tleS5oXG4rKysgYi9uZXQvbWFjODAyMTEva2V5LmhcbkBAIC0zMiwxMCArMzIsMTMgQEAgc3RydWN0IHN0YV9pbmZvO1xuICAqIEBLRVlfRkxBR19VUExPQURFRF9UT19IQVJEV0FSRTogSW5kaWNhdGVzIHRoYXQgdGhpcyBrZXkgaXMgcHJlc2VudFxuICAqXHRpbiB0aGUgaGFyZHdhcmUgZm9yIFRYIGNyeXB0byBoYXJkd2FyZSBhY2NlbGVyYXRpb24uXG4gICogQEtFWV9GTEFHX1RBSU5URUQ6IEtleSBpcyB0YWludGVkIGFuZCBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLlxuKyAqIEBLRVlfRkxBR19ERUZFUlJFRF9IV19VUExPQUQ6IEtleSB1cGxvYWQgaXMgZGVmZXJyZWQgdW50aWwgdGhlIHN0YXRpb25cbisgKlx0aXMgYXNzb2NpYXRlZC5cbiAgKi9cbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF9rZXlfZmxhZ3Mge1xuIFx0S0VZX0ZMQUdfVVBMT0FERURfVE9fSEFSRFdBUkVcdD0gQklUKDApLFxuIFx0S0VZX0ZMQUdfVEFJTlRFRFx0XHQ9IEJJVCgxKSxcbitcdEtFWV9GTEFHX0RFRkVSUkVEX0hXX1VQTE9BRFx0PSBCSVQoMiksXG4gfTtcbiBcbiBlbnVtIGllZWU4MDIxMV9pbnRlcm5hbF90a2lwX3N0YXRlIHtcbkBAIC0xNjUsNiArMTY4LDcgQEAgdm9pZCBpZWVlODAyMTFfZnJlZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdCBib29sIGZvcmNlX3N5bmNocm9uaXplKTtcbiB2b2lkIGllZWU4MDIxMV9mcmVlX3N0YV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCAgICAgc3RydWN0IHN0YV9pbmZvICpzdGEpO1xuK3ZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gdm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9rZXlfc3dpdGNoX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGRlbF9saW5rc19tYXNrLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbmluZGV4IGQxMmFlZDljMTc1NjEuLjYyNWY2MjhiNDZhMGQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbkBAIC0xNDY4LDYgKzE0NjgsNyBAQCBzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuIFx0Y2FzZSBJRUVFODAyMTFfU1RBX0FTU09DOlxuIFx0XHRpZiAoc3RhLVx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpIHtcbiBcdFx0XHRzZXRfYml0KFdMQU5fU1RBX0FTU09DLCBcdTAwMjZzdGEtXHUwMDNlX2ZsYWdzKTtcbitcdFx0XHRpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzKHN0YSk7XG4gXHRcdFx0c3RhLVx1MDAzZWFzc29jX2F0ID0ga3RpbWVfZ2V0X2Jvb3R0aW1lX25zKCk7XG4gXHRcdFx0aWYgKHJlY2FsYykge1xuIFx0XHRcdFx0aWVlZTgwMjExX3JlY2FsY19taW5fY2hhbmRlZihzdGEtXHUwMDNlc2RhdGEsIC0xKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjE4LjI3NTc5NjE4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMDM0ODcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGYXN0IFRyYW5zaXRpb24gS2V5IERlZmVycmFsIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgbWFjODAyMTEgY29yZSwgc3BlY2lmaWNhbGx5IGBjZmcuY2AsIGBrZXkuY2AsIGBrZXkuaGAsIGFuZCBgc3RhX2luZm8uY2AuIFRoZSBnaXN0IGlzIHRoZXkncmUgZGVmZXJyaW5nIHRoZSBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGYXN0IFRyYW5zaXRpb24gKEZUKSBiZWZvcmUgYSBzdGF0aW9uIGFzc29jaWF0ZXMuIENsZXZlciwgcG90ZW50aWFsbHkgaW1wcm92aW5nIEZUIGVmZmljaWVuY3kuIFRoaXMgaW50cm9kdWNlcyBgS0VZX0ZMQUdfREVGRVJSRURfSFdfVVBMT0FEYCBhbmQgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHJlYWNoYWJpbGl0eSBhbmQgZnVuY3Rpb25hbGl0eS4gVGhlIGZhY3QgdGhhdCBgaWVlZTgwMjExX2FkZF9rZXlgIGluIGBjZmcuY2AgaXMgbW9kaWZpZWQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0J3MgYSBmdW5kYW1lbnRhbCBrZXkgYWRkaXRpb24gZnVuY3Rpb24gaW4gbWFjODAyMTEuIFBsdXMsIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGllZWU4MDIxMV9rZXlfZW5hYmxlX2h3X2FjY2VsYCBhbmQgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYCwgd2hpY2ggYXJlIGltcG9ydGFudCB0b28uXG5cblNpbmNlIG1hYzgwMjExIGlzIHBlcmZlY3RseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBgbWFjODAyMTFfaHdzaW1gLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBhIGdvb2QgaWRlYS4gVGhhdCdzIGEgc3Ryb25nIHBvc2l0aXZlLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBXZSd2ZSBnb3Q6XG5cbiogICBgaWVlZTgwMjExX2FkZF9rZXlgIChzdGF0aWMgaW4gYGNmZy5jYCwgYnV0IGl0J3MgY2FsbGVkIHNvbWV3aGVyZSBlbHNlLCBsaWtlbHkgYG5sODAyMTFfbmV3X2tleWAgb3Igc2ltaWxhci4gTmVlZCB0byBjb25maXJtIHRoYXQpLlxuKiAgIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCAobm9uLXN0YXRpYyBpbiBga2V5LmNgKS4gVGhhdCdzIHByb21pc2luZywgZnV6emluZyB0aGlzIGRpcmVjdGx5IGlzIHBvc3NpYmxlLlxuKiAgIGBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbGAgKHN0YXRpYyBpbiBga2V5LmNgKS5cbiogICBgX3N0YV9pbmZvX21vdmVfc3RhdGVgIChzdGF0aWMgaW4gYHN0YV9pbmZvLmNgKS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaG93IGBpZWVlODAyMTFfYWRkX2tleWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB3aXRoaW4gdGhlIGxhcmdlciBtYWM4MDIxMSBjb2RlYmFzZS4gR29pbmcgdG8gc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOToyNC4yNzkyODcxMDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0NjY3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGRfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTU4NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjEyLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MTM6c3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MTQtXFx0XFx0XFx0ICAgICBpbnQgbGlua19pZCwgdTgga2V5X2lkeCwgYm9vbCBwYWlyd2lzZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz02MDAwPWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDA1LVxcdC5zdG9wX3AycF9kZXZpY2UgPSBpZWVlODAyMTFfc3RvcF9wMnBfZGV2aWNlLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDA2OlxcdC5hZGRfa2V5ID0gaWVlZTgwMjExX2FkZF9rZXksXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMDctXFx0LmRlbF9rZXkgPSBpZWVlODAyMTFfZGVsX2tleSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6MjQuNDkzOTYwMDMyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIxNjY3MjAxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS2V5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMga2V5IG1hbmFnZW1lbnQgYXJlYSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgYGllZWU4MDIxMV9hZGRfa2V5YCBpcyBhIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG1hYzgwMjExX2NvbmZpZ19vcHNgIHN0cnVjdHVyZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgYWRkX2tleWAgb3BlcmF0aW9uLCBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBmb2NhbCBwb2ludC4gSG93ZXZlciwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBIbW0sIHRoYXQncyBub3QgaWRlYWwgZm9yIG15IHB1cnBvc2VzLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGBubDgwMjExX25ld19rZXlgPyBUaGF0IGZ1bmN0aW9uJ3MgZGVmaW5lZCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNvIGl0J3MgYWNjZXNzaWJsZS4gQnV0IGlzIGl0IHRoZSAqYmVzdCogY2hvaWNlP1xuXG5XYWl0LCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYD8gVGhhdCdzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEgZGVmaW5pdGUgcGx1cy4gTGV0IG1lIHF1aWNrbHkgcGl2b3QgdG8gY2hlY2tpbmcgdGhlIGRlZmluaXRpb24gb2YgYF9zdGFfaW5mb19tb3ZlX3N0YXRlYC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZmxvdyBoZXJlIHRvIHBpbnBvaW50IHRoZSBiZXN0IGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjQ2LjY2MDY4MzgwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcyODcxMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3N0YV9pbmZvX21vdmVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMzEwPXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTQtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTM5NTpzdGF0aWMgaW50IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEzOTYtXFx0XFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE1Mzg9aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTQxOlxcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTczLVxcdGlmIChzdGEtXFx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTc0OlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTc1LVxcdFxcdFdBUk5fT05fT05DRShyZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cXHR3aGlsZSAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVxcdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1OTEtXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOTo0Ni43Njc5ODMzNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI4NDIwMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFNUQSBLZXkgVXBsb2FkKipcblxuQWxyaWdodCwgc28gYHN0YV9pbmZvX21vdmVfc3RhdGVgIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGJpdCBvZiBhIGRlcGFydHVyZSBmcm9tIHdoYXQgSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4gVGhpcyBtZWFucyBpdHMgc2NvcGUgaXMgYnJvYWRlciB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiwgYW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIHRyYWNpbmcgaXRzIHVzYWdlLiBOb3csIGdpdmVuIHRoYXQsIG15IHByaW1hcnkgY29uY2VybiBpcyB3aGF0IGZ1bmN0aW9uIGRvZXMgdGhpcyBzdGF0ZSBwZXJ0YWluIHRvLiBHaXZlbiB0aGUgbmFtZSwgSSBpbW1lZGlhdGVseSBqdW1wIHRvIGNoZWNraW5nIGhvdyBpdCdzIHVzZWQgd2l0aGluIGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGFzIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggU1RBIGtleSB1cGRhdGVzIGRlZmVycmVkIGJ5IHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgYSBjcml0aWNhbCBwaWVjZSBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBoYW5kc2hha2UsIHNvIHRoZSBmdW5jdGlvbiB0aGF0IHRvdWNoZXMgdGhpcyBzdGF0ZSBpcyBpbW1lZGlhdGVseSBvZiBpbnRlcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjA5OjUwLjc5NjQwNTc1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI0NzI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9rZXkuYz05Nzk9dm9pZCBpZWVlODAyMTFfcmVlbmFibGVfa2V5cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMDA0LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzoxMDA1OnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG5uZXQvbWFjODAyMTEva2V5LmMtMTAwNi17XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5Lmg9MTY5PXZvaWQgaWVlZTgwMjExX2ZyZWVfc3RhX2tleXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2tleS5oLTE3MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG5uZXQvbWFjODAyMTEva2V5Lmg6MTcxOnZvaWQgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxubmV0L21hYzgwMjExL2tleS5oLTE3Mi12b2lkIGllZWU4MDIxMV9yZWVuYWJsZV9rZXlzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzOTU9c3RhdGljIGludCBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE0NzAtXFx0XFx0XFx0c2V0X2JpdChXTEFOX1NUQV9BU1NPQywgXFx1MDAyNnN0YS1cXHUwMDNlX2ZsYWdzKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNDcxOlxcdFxcdFxcdGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXMoc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNDcyLVxcdFxcdFxcdHN0YS1cXHUwMDNlYXNzb2NfYXQgPSBrdGltZV9nZXRfYm9vdHRpbWVfbnMoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTAuOTI4ODg0OTc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MjQwNDMwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgTWFuYWdlbWVudCBpbiBtYWM4MDIxMSoqXG5cbk9rYXksIGxldCdzIHNlZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG93YXJkcyBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcyBwb3RlbnRpYWxseSBmcnVpdGZ1bCBhcmVhcyBmb3IgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIG1hYzgwMjExIGNvZGViYXNlLiBUaGV5IHNlZW0gdG8gZGVhbCBkaXJlY3RseSB3aXRoIFNUQSBrZXlzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbi5cblxuTm93LCBgaWVlZTgwMjExX2FkZF9rZXlgIGFsc28gY29tZXMgdG8gbWluZC4gSXQncyBtYXJrZWQgYXMgc3RhdGljIHRob3VnaC4gUGVyaGFwcyBJIGNhbiB0cmFjZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBubDgwMjExX25ld19rZXlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4gT3IgbWF5YmUgYSBoYW5kbGVyIHRocm91Z2ggYG1hYzgwMjExX2NvbmZpZ19vcHNgLCBhbHRob3VnaCBJIGNhbid0IHVzZSBhIHN0cnVjdCBkaXJlY3RseSBhcyBhIGZvY3VzLCBzbyB0aGF0J3Mgbm90IGlkZWFsLlxuXG5JIHNob3VsZCB2ZXJpZnkgaWYgYG5sODAyMTFfbmV3X2tleWAgc2VydmVzIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGlzIGtleSBhZGRpdGlvbiBwcm9jZXNzLiBJdCdzIGEgc29saWQgY2FuZGlkYXRlIHRvIHN0YXJ0IHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTQuNTIxMjkxNjI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzU0MzExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX25ld19rZXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU0NjY9c3RhdGljIGludCBubDgwMjExX3NldF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTU3NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1NzY6c3RhdGljIGludCBubDgwMjExX25ld19rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1Nzcte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTcyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5Nzg5LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE5NzkwOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9uZXdfa2V5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTk3OTEtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTQuNjE4ODQwOTE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTAwODA2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgbmw4MDIxMSBLZXkgTWFuYWdlbWVudCBQYXRoKipcblxuUmlnaHQsIHNvLCBgbmw4MDIxMV9uZXdfa2V5YC4uLiB0aGF0J3MgZGVmaW5pdGVseSB0aGUgZW50cnkgcG9pbnQgZm9yIGtleSBtYW5hZ2VtZW50LiBXZSdyZSB0YWxraW5nIGFib3V0IHNldHRpbmcgdXAgb3IgbW9kaWZ5aW5nIGNyeXB0b2dyYXBoaWMga2V5cyB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgbmw4MDIxMSBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGZsb3csIHRoZSBsaWZlY3ljbGUgb2YgYSBrZXkuXG5cbk5vdywgd2hlcmUgZG9lcyB0aGUgc3RhdGlvbiBzdGF0ZSBnZXQgdXBkYXRlZD8gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYG5sODAyMTFfc2V0X3N0YXRpb25gLCBvciBmdW5jdGlvbnMgbGlrZSBpdCwgYmVjYXVzZSB0aGF04oCZcyB3aGVyZSB0aGUgU1RBIGluZm9ybWF0aW9uIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBpcyBiZWluZyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBzdGF0aW9uIHN0YXRlIHRyYW5zaXRpb25zIGFmZmVjdCwgb3IgYXJlIGFmZmVjdGVkIGJ5LCBrZXkgbWFuYWdlbWVudCBvcGVyYXRpb25zLiBJdCB3aWxsIGJlIGhlbHBmdWwgdG8gbG9vayBhdCBhc3NvY2lhdGVkIGZsYWdzIGFuZCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MDk6NTguODA4OTI0MTg3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYwMTUyNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9zZXRfc3RhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9OTA0Mz1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2Vfc3RhX2NoYW5uZWxfaW5mbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy05MDY4LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6OTA2OTpzdGF0aWMgaW50IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTA3MC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0YXRpb25fcGFyYW1ldGVycyAqcGFyYW1zKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz05MTIzPXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9zdGFfdHhwb3dlcl9zZXR0aW5nKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkxNTUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5MTU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfc3RhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtOTE1Ny17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTQtXFx0LyogSW5jbHVkZSBwYXJhbWV0ZXJzIGZvciBURExTIHBlZXIgKHdpbGwgY2hlY2sgbGF0ZXIpICovXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo5Mjk1OlxcdGVyciA9IG5sODAyMTFfc2V0X3N0YXRpb25fdGRscyhpbmZvLCBcXHUwMDI2cGFyYW1zKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTkyOTYtXFx0aWYgKGVycilcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTgyOC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxOTgyOTpcXHRcXHQuZG9pdCA9IG5sODAyMTFfc2V0X3N0YXRpb24sXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTgzMC1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjowOTo1OS4wMjQ5NTI4NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3NjA5NzI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgV2lyZWxlc3MgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQgYW5kIHN0YXRpb24gc2V0dXAgd2l0aGluIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBgbmw4MDIxMV9uZXdfa2V5YCBhbmQgYG5sODAyMTFfc2V0X3N0YXRpb25gIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBkZWVwZXIgZXhhbWluYXRpb24uIFRoZXNlIGxpa2VseSBoYW5kbGUgdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlIGZvciBzZXR0aW5nIHVwIHNlY3VyaXR5IGtleXMgYW5kIHN0YXRpb24gY29uZmlndXJhdGlvbnMuIEknbGwgYWxzbyB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlZmVycmVkIGtleSB1cGxvYWRzLCBzcGVjaWZpY2FsbHkgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgLCBhbmQgaG93IHN0YXRpb24gc3RhdGUgdHJhbnNpdGlvbnMgYXJlIG1hbmFnZWQgd2l0aCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgYXMgdGhlc2UgYXJlIGFsd2F5cyBhIGhvdGJlZCBmb3IgaXNzdWVzLlxuXG5CZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBuZXN0bGVkIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMS9gIGRpcmVjdG9yeS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucywgdGhlIGBNQUM4MDIxMWAgY29uZmlnIG9wdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGJlIHRoZSBjcml0aWNhbCBmbGFnIEkgbmVlZCB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6MDUuMTAxMDUzMjg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4ODEwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6MDUuMjEyOTM5NzA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Nzg2MzczNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIEFQLXNpZGUgRmFzdCBUcmFuc2l0aW9uIChGVCkgYW5kIHBhaXJ3aXNlIGtleXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZT9cIiBXZSdyZSBvYnZpb3VzbHkgd29ya2luZyB3aXRoIGBNQUM4MDIxMWAg4oCTIHRoYXQncyBhIGdpdmVuIOKAkyBidXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSSdtIHByZXR0eSBzdXJlIGBNQUM4MDIxMWAgaXMgdGhlIG9ubHkgZXhwbGljaXQgcmVxdWlyZW1lbnQgZm9yICp0aGlzKiBwYXJ0aWN1bGFyIGNvZGUsIGFsdGhvdWdoLCBvZiBjb3Vyc2UsIGBDRkc4MDIxMWAgaXMgYWxzbyBuZWVkZWQgYmVjYXVzZSBpdCB3b3JrcyB3aXRoIGBtYWM4MDIxMWAuIFNvLCBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgIHRvIGJlIHN1cmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRob3NlIGZ1bmN0aW9uIHN5bWJvbHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb2RlLlxuXG4qICAgYGllZWU4MDIxMV91cGxvYWRfZGVmZXJyZWRfc3RhX2tleXNgIHNlZW1zIGhpZ2hseSByZWxldmFudC4gSXQncyBhIGtleSBmdW5jdGlvbiAocHVuIGludGVuZGVkISkgaW4gaGFuZGxpbmcgdGhlc2Uga2V5cywgYW5kIGl0cyBkZWZlcnJlZCBuYXR1cmUgaW1wbGllcyB0aGUgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhpcyBtZWNoYW5pc20uXG4qICAgYHN0YV9pbmZvX21vdmVfc3RhdGVgIHNlZW1zIGltcG9ydGFudCB0b28sIGVzcGVjaWFsbHkgaWYgdGhpcyBwYXRjaCBpcyBhYm91dCBGVCwgd2hpY2ggd291bGQgaW52b2x2ZSBtb3Zpbmcgc3RhdGlvbiBzdGF0ZXMuXG4qICAgSSBleHBlY3QgdG8gaGF2ZSBzb21lIHVzZXIgc3BhY2UgaW50ZXJhY3Rpb24gYW5kIHRoYXQgbWVhbnMgSSBzaG91bGQgY2hlY2sgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBubDgwMjExX3NldF9zdGF0aW9uYCBhcyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLlxuXG5JJ20gbm93IGdvaW5nIHRvIGZvY3VzIG9uIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCwgYW5kIHRha2UgYSBsb29rIGF0IGl0IGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjA5Ljk5MTU4MDgwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MDAxMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9pbmZvX21vdmVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9MjE0Mj1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTAtXFx0ICAgICF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfQVVUSCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MTpcXHRcXHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxNjYtXFxubmV0L21hYzgwMjExL2NmZy5jOjIxNjc6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTY4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3My1cXHRcXHRpZiAoc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVVUSE9SSVpFRCkpXFxubmV0L21hYzgwMjExL2NmZy5jOjIxNzQ6XFx0XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTIxNzUtXFx0XFx0ZWxzZSBpZiAodGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEhPUklaRUQpKVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTc2OlxcdFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE3Ny1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE4NS1cXHQgICAgdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FTU09DKSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTg2OlxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEgpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTg3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5My1cXHQgICAgdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX0FVVEgpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTQ6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfTk9ORSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTIxOTUtXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwNj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjIzLVxcdFxcdC8qIE9ubHkgbW92ZSB0aGUgQVAgc3RhdGUgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MjQ6XFx0XFx0c3RhX2luZm9fbW92ZV9zdGF0ZShhcF9zdGEsIElFRUU4MDIxMV9TVEFfTk9ORSk7XFxubmV0L21hYzgwMjExL21sbWUuYy00NjI1LVxcdH0gZWxzZSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzODY9c3RhdGljIGJvb2wgaWVlZTgwMjExX21hcmtfc3RhX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MDUtXFx0fVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTQwNjpcXHRpZiAoc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVVUSCkpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTU0MDctXFx0XFx0c2RhdGFfaW5mbyhzZGF0YSwgXFxcImZhaWxlZCBtb3ZpbmcgJXBNIHRvIGF1dGhcXFxcblxcXCIsIGFwX2FkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02OTc5PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MTUxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1MjpcXHRlcnIgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XFxubmV0L21hYzgwMjExL21sbWUuYy03MTUzLVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2ICEoaWZtZ2QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1NUQV9DT05UUk9MX1BPUlQpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzE1NDpcXHRcXHRlcnIgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxNTUtXFx0aWYgKGVycikge1xcbi0tXFxubmV0L21hYzgwMjExL29jYi5jPTg3PXN0YXRpYyBzdHJ1Y3Qgc3RhX2luZm8gKmllZWU4MDIxMV9vY2JfZmluaXNoX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDAtXFxubmV0L21hYzgwMjExL29jYi5jOjEwMTpcXHRzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BVVRIKTtcXG5uZXQvbWFjODAyMTEvb2NiLmM6MTAyOlxcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG5uZXQvbWFjODAyMTEvb2NiLmM6MTAzOlxcdHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpO1xcbm5ldC9tYWM4MDIxMS9vY2IuYy0xMDQtXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ5NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0OTU6XFx0XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIHN0YS1cXHUwMDNlc3RhX3N0YXRlIC0gMSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDk2OlxcdFxcdGlmIChXQVJOX09OQ0UocmV0LCBcXFwic3RhX2luZm9fbW92ZV9zdGF0ZSgpIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ5Ny1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTEzMTA9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19zdGFfaW5mb19kZXN0cm95X3BhcnQxKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5NC1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMzk1OnN0YXRpYyBpbnQgX3N0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTM5Ni1cXHRcXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgbmV3X3N0YXRlLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTUzNy1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTM4OmludCBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1MzktXFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIG5ld19zdGF0ZSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTQwLXtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTQxOlxcdHJldHVybiBfc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU0Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xNTQ0PXN0YXRpYyB2b2lkIF9fc3RhX2luZm9fZGVzdHJveV9wYXJ0MihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgYm9vbCByZWNhbGMpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTczLVxcdGlmIChzdGEtXFx1MDAzZXN0YV9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEhPUklaRUQpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTc0OlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQywgcmVjYWxjKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xNTc1LVxcdFxcdFdBUk5fT05fT05DRShyZXQpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTU4OS1cXHR3aGlsZSAoc3RhLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAzZSBJRUVFODAyMTFfU1RBX05PTkUpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxNTkwOlxcdFxcdHJldCA9IF9zdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgc3RhLVxcdTAwM2VzdGFfc3RhdGUgLSAxLCByZWNhbGMpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE1OTEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODQxPXN0YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX3NldF9zdGFfZmxhZyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg0OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NTA6aW50IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODUxLVxcdFxcdFxcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBuZXdfc3RhdGUpO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9ODUzPXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFfaW5mb19wcmVfbW92ZV9zdGF0ZShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTg1OS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo4NjA6XFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIG5ld19zdGF0ZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtODYxLVxcdFdBUk5fT05fT05DRShyZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMDoxMC4xODc2MDE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2MDYyMzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgU1RBIEtleSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBgc3RhX2luZm9fbW92ZV9zdGF0ZWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbjsgSSd2ZSBzZWVuIGl0IHVzZWQgYWxsIG92ZXIgdGhlIGNvZGViYXNlLCBhbmQga2VlcGluZyB0cmFjayBvZiBpdHMgY2FsbHMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBhIHN0YXRpb24uIFdlIG5lZWQgYSBzb2xpZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgU1RBIGtleSBoYW5kbGluZyBmbG93LiAgYG5sODAyMTFfbmV3X2tleWAgZmVlbHMgbGlrZSBhIHByb21pc2luZyBzdGFydGluZyBwb2ludCBmb3Iga2V5LXJlbGF0ZWQgb3BlcmF0aW9ucy4gSXQncyB1c2VkIHRvIGFkZCBuZXcga2V5cy5cblxuQW5kIG5vdyBJIGhhdmUgYSBodW5jaC4uLiBJIGJldCBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgaXMgdGhlIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb24sIHRoZSBvbmUgdGhhdCdzIHN1cHBvc2VkIHRvIGhhbmRsZSBkZWZlcnJlZCB1cGxvYWRzLiBJIGhhdmUgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmw4MDIxMV9uZXdfa2V5YCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgdG8gc2VlIGhvdyBpdCB0aWVzIGludG8gdGhlIGRlZmVycmVkIHVwbG9hZCBtZWNoYW5pc20gYW5kIGNvbmZpcm1zIG15IHN1c3BpY2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NDguNjQ4MjI5MTM5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk1NzMzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmw4MDIxMV9uZXdfa2V5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz01NDY2PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfa2V5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1NzUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo1NTc2OnN0YXRpYyBpbnQgbmw4MDIxMV9uZXdfa2V5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTc3LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xOTc4OS1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxOTc5MDpcXHRcXHQuZG9pdCA9IG5sODAyMTFfbmV3X2tleSxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE5NzkxLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjQ4LjgyNzg3ODU0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI3NDc5NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEtleSBXaS1GaSBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGhvbmluZyBpbiBvbiBhIGZldyBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLiBgbmw4MDIxMV9uZXdfa2V5YCBmZWVscyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbiDigJMgdGhhdCdzIHRoZSBvbmUgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbi4gU2ltaWxhcmx5LCBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgaXMgYWxzbyBsb29raW5nIHRvIGJlIGEgcmVsZXZhbnQgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LCB0aGF0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQuIEFuZCwgYXMgYSB0aGlyZCBrZXkgZm9jdXMgYXJlYSwgSSdtIHRoaW5raW5nIHRoYXQgYHN0YV9pbmZvX21vdmVfc3RhdGVgIGNvdWxkIGJlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHRvIGNvbnNpZGVyIGluIHRoaXMgc3lzdGVtLlxuXG5Ob3csIGEgY3JpdGljYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFkZHJlc3MgaXMgd2hldGhlciBgQ0ZHODAyMTFgIGlzIGFjdHVhbGx5IHJlcXVpcmVkIG9yIG5vdC4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgaW50byB0aGF0IHF1ZXN0aW9uIGZvciB0aGlzIHBhcnQgb2YgdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NTIuMjU1MzYxMzg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYzOTE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMDo1Mi40NTE3NTg0NTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxNDg0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXaXJlbGVzcyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCB0aGVzZSB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYC4gVGhhdCBkZXBlbmRlbmN5IGNoYWluIG1ha2VzIHNlbnNlLCByaWdodD8gU2luY2UgYE1BQzgwMjExYCBoYW5kbGVzIHRoZSBjb3JlIE1BQyBmdW5jdGlvbmFsaXR5LCB0ZWNobmljYWxseSBgTUFDODAyMTFgIGFsb25lICpzaG91bGQqIGJlIHN1ZmZpY2llbnQuIEJ1dCwgSSd2ZSBsZWFybmVkIHRvIGJlIGNhdXRpb3VzLCBzbyBJJ2xsIGluY2x1ZGUgYENGRzgwMjExYCBhbG9uZ3NpZGUgaXQgdG8gZW5zdXJlIGNvbXBsZXRlIGNvbXBhdGliaWxpdHkgYW5kIGF2b2lkIGFueSBwb3RlbnRpYWwgaXNzdWVzIGRvd24gdGhlIGxpbmUuIEl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLlxuXG5XYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgdG8gYmUgY29tcGxldGVseSBjbGVhciwgYE1BQzgwMjExYCBpcyB0aGUgbWFpbiBjb21wb25lbnQgaGVyZS4gT2theSwgbm93IEkgaGF2ZSBpdCBzb3J0ZWQuIFxuXG5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciBgbWFjODAyMTFfaHdzaW1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgaXMgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGhlIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTQ4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDY6MTA6NTYuMDY2NjE3MzI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjcxNjc3NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA2OjEwOjU2LjMzMzc5Mzc4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTExMjQ5OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1BQzgwMjExIEtleSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gaGF2aW5nIGBNQUM4MDIxMV9IV1NJTWAgaXMgZGVmaW5pdGVseSBiZW5lZmljaWFsIHRvIGhhdmUgZW5hYmxlZC4gTXkgcGxhbiBpcyB0byBlbnN1cmUgdGhhdCBJJ3ZlIGNvbmZpZ3VyZWQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgZmVhdHVyZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gSSdtIGdvaW5nIHRvIGtlZXAgYW4gZXllIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzYCwgYG5sODAyMTFfbmV3X2tleWAsIGFuZCBgc3RhX2luZm9fbW92ZV9zdGF0ZWAuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSBhIHNwZWNpZmljIHJlYWNoYWJpbGl0eSBxdWVzdGlvbi4gSSdtIHdvbmRlcmluZyBpZiBgaWVlZTgwMjExX2FkZF9rZXlgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIGBubDgwMjExX25ld19rZXlgLiBJIGtub3cgdGhhdCBgbmw4MDIxMV9uZXdfa2V5YCBjYWxscyBgcmRldl9hZGRfa2V5YCwgd2hpY2ggaW4gdHVybiBjYWxscyBgcmRldi1cdTAwM2VvcHMtXHUwMDNlYWRkX2tleWAuIEFuZCBpbiB0aGUgYG1hYzgwMjExYCBpbXBsZW1lbnRhdGlvbiwgYG1hYzgwMjExX2NvbmZpZ19vcHMuYWRkX2tleWAgKmlzKiBhY3R1YWxseSBgaWVlZTgwMjExX2FkZF9rZXlgLiBUaGVyZWZvcmUsIHRoZSBhbnN3ZXIgaXMgeWVzLCB0aGV5J3JlIGRlZmluaXRlbHkgY29ubmVjdGVkLlxuXG5BbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLiBJJ20gZ29pbmcgdG8gc2V0IHRoZXNlIHJlc3VsdHMgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQxLCJPdXRwdXRUb2tlbnMiOjIxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNjoxMTowMS44NDUwNDY4NzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg2NTM2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzXCIsXG4gICAgXCJubDgwMjExX25ld19rZXlcIixcbiAgICBcInN0YV9pbmZvX21vdmVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdXBsb2FkX2RlZmVycmVkX3N0YV9rZXlzXCIsXG4gICAgXCJubDgwMjExX25ld19rZXlcIixcbiAgICBcInN0YV9pbmZvX21vdmVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWFjODAyMTEgY29yZSB0byBkZWZlciBoYXJkd2FyZSB1cGxvYWQgb2YgcGFpcndpc2Uga2V5cyBmb3IgQVAtc2lkZSBGVCBiZWZvcmUgdGhlIHN0YXRpb24gaXMgYXNzb2NpYXRlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBtYWM4MDIxMV9od3NpbS4gVGhlIG5ldyBmdW5jdGlvbiBgaWVlZTgwMjExX3VwbG9hZF9kZWZlcnJlZF9zdGFfa2V5c2AgYW5kIHRoZSBlbnRyeSBwb2ludHMgYG5sODAyMTFfbmV3X2tleWAgYW5kIGBzdGFfaW5mb19tb3ZlX3N0YXRlYCBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwrjxg[1] Phase: Succeeded StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 06:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 06:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2] Phase: Succeeded StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 06:11:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 06:11:13 +0000 UTC FinishedAt: 2026-08-01 06:11:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwrjxg/series-workflowwrjxg-convert-artifact-3012861234/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 06:11:23 +0000 UTC FinishedAt: 2026-08-01 06:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 06:11:23 +0000 UTC FinishedAt: 2026-08-01 06:28:41 +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:*f884bc5f-acab-46fe-9764-3b9128bad579,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-workflowwrjxg/series-workflowwrjxg-convert-artifact-3012861234/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": "265756aa-8564-4f9d-8444-cf8d7beed26c", "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-workflowwrjxg/series-workflowwrjxg-build-action-1192292016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 06:11:23 +0000 UTC FinishedAt: 2026-08-01 06:28:31 +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:*f884bc5f-acab-46fe-9764-3b9128bad579,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-workflowwrjxg/series-workflowwrjxg-convert-artifact-3012861234/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": "265756aa-8564-4f9d-8444-cf8d7beed26c", "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-workflowwrjxg/series-workflowwrjxg-build-action-1192292016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 06:28:41 +0000 UTC FinishedAt: 2026-08-01 06:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 06:28:41 +0000 UTC FinishedAt: 2026-08-01 06:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 06:28:41 +0000 UTC FinishedAt: 2026-08-01 06:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 06:28:41 +0000 UTC FinishedAt: 2026-08-01 06:28:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwrjxg/series-workflowwrjxg-convert-artifact-2866691405/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 06:28:51 +0000 UTC FinishedAt: 2026-08-01 06:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 06:28:51 +0000 UTC FinishedAt: 2026-08-01 06:30:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*265756aa-8564-4f9d-8444-cf8d7beed26c,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-workflowwrjxg/series-workflowwrjxg-build-action-1192292016/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-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 06:30:44 +0000 UTC FinishedAt: 2026-08-01 06:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 06:30:44 +0000 UTC FinishedAt: 2026-08-01 06:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 06:30:44 +0000 UTC FinishedAt: 2026-08-01 06:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 06:30:44 +0000 UTC FinishedAt: 2026-08-01 06:49:23 +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:*f884bc5f-acab-46fe-9764-3b9128bad579,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-workflowwrjxg/series-workflowwrjxg-convert-artifact-2866691405/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": "9e875b1f-bd3c-4312-a6ce-96a7da98eb04", "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-workflowwrjxg/series-workflowwrjxg-build-action-3019205417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 06:30:44 +0000 UTC FinishedAt: 2026-08-01 06:49:14 +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:*f884bc5f-acab-46fe-9764-3b9128bad579,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-workflowwrjxg/series-workflowwrjxg-convert-artifact-2866691405/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": "9e875b1f-bd3c-4312-a6ce-96a7da98eb04", "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-workflowwrjxg/series-workflowwrjxg-build-action-3019205417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 06:49:23 +0000 UTC FinishedAt: 2026-08-01 06:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 06:49:23 +0000 UTC FinishedAt: 2026-08-01 06:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 06:49:23 +0000 UTC FinishedAt: 2026-08-01 06:51:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 06:49:23 +0000 UTC FinishedAt: 2026-08-01 06:50:52 +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:*9e875b1f-bd3c-4312-a6ce-96a7da98eb04,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-workflowwrjxg/series-workflowwrjxg-build-action-3019205417/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-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"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:*265756aa-8564-4f9d-8444-cf8d7beed26c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e875b1f-bd3c-4312-a6ce-96a7da98eb04,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-workflowwrjxg/series-workflowwrjxg-build-action-1192292016/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-workflowwrjxg/series-workflowwrjxg-build-action-3019205417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 06:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 06:51:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"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-workflowwrjxg/series-workflowwrjxg-convert-artifact-1191201074/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 06:51:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 06:51:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 06:51:02 +0000 UTC FinishedAt: 2026-08-01 06:51:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 06:51:24 +0000 UTC FinishedAt: 2026-08-01 09:52:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwrjxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_upload_deferred_sta_keys","nl80211_new_key","sta_info_move_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","MAC80211_HWSIM"],"series_id":"c0649c9f-a4e8-4e16-adb2-fead6f2ce501","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 06:51:24 +0000 UTC FinishedAt: 2026-08-01 09:52:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*265756aa-8564-4f9d-8444-cf8d7beed26c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e875b1f-bd3c-4312-a6ce-96a7da98eb04,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-workflowwrjxg/series-workflowwrjxg-build-action-1192292016/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-workflowwrjxg/series-workflowwrjxg-build-action-3019205417/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-workflowwrjxg/series-workflowwrjxg-convert-artifact-1191201074/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,}