Name: series-workflow7t7k8 Phase: Succeeded StartedAt: 2026-08-25 08:22:41 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[0] Phase: Succeeded StartedAt: 2026-08-25 08:22:41 +0000 UTC FinishedAt: 2026-08-25 09:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 08:22:41 +0000 UTC FinishedAt: 2026-08-25 09:14:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32" ], "series_id": "e0e20c4d-7805-41b5-81ff-1b84a431ea27" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "u32_init", "u32_change" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3UzMl9pbml0JiMzNDssCiAgICAmIzM0O3UzMl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NWUyZDQzNDJiZDk5ZmNiOTViN2M1YTQ0ZmMyNzY2YTVmY2VkOWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDk6MTI6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmNcbmluZGV4IGFjNmQwZmE1YTQwZTMuLmEzZTY1YzhjZjI5ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMzcwLDYgJiM0MzszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4mIzQzO1x0aWYgKHJvb3RfaHQtXHUwMDNlaGFuZGxlID09IDApIHtcbiYjNDM7XHRcdGtmcmVlKHJvb3RfaHQpO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0fVxuIFx0cm9vdF9odC1cdTAwM2VwcmlvID0gdHAtXHUwMDNlcHJpbztcbiBcdHJvb3RfaHQtXHUwMDNlaXNfcm9vdCA9IHRydWU7XG4gXHRpZHJfaW5pdChcdTAwMjZyb290X2h0LVx1MDAzZWhhbmRsZV9pZHIpO1xuQEAgLTY5NSwyMSAmIzQzOzY5OSwzMyBAQCBzdGF0aWMgaW50IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmFyZywgYm9vbCAqbGFzdCxcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZClcbiYjNDM7c3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuJiM0MztcdCplcnIgPSAwO1xuJiM0MztcbiBcdGlmIChpZHJfYWxsb2NfdTMyKFx1MDAyNmh0LVx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFx1MDAyNmluZGV4LCBtYXgsIEdGUF9LRVJORUwpKSB7XG4gXHRcdGluZGV4ID0gaHRpZCAmIzQzOyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuJiM0MztcdFx0KmVyciA9IGlkcl9hbGxvY191MzIoXHUwMDI2aHQtXHUwMDNlaGFuZGxlX2lkciwgTlVMTCwgXHUwMDI2aW5kZXgsIG1heCxcbiYjNDM7XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCplcnIpXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGluZGV4O1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRpZiAoZXJyID09IC1FTk9TUEMpXG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcJiMzNDspO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEXCYjMzQ7KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICYjNDM7IDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgJiM0MzsxMDk1LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0ICogaGFuZGxlIHdoaWNoIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG1hdGNoIGVudHJ5LlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFUQ19VMzJfTk9ERShoYW5kbGUpKSB7XG4tXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuJiM0MztcdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGhhbmRsZSA9IGh0aWQgfCBUQ19VMzJfTk9ERShoYW5kbGUpO1xuIFx0XHRcdGVyciA9IGlkcl9hbGxvY191MzIoXHUwMDI2aHQtXHUwMDNlaGFuZGxlX2lkciwgTlVMTCwgXHUwMDI2aGFuZGxlLFxuQEAgLTEwOTEsNyAmIzQzOzExMDksOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQvKiBUaGUgdXNlciBkaWQgbm90IGdpdmUgdXMgYSBoYW5kbGU7IGxldHMganVzdCBnZW5lcmF0ZSBvbmVcbiBcdFx0ICogZnJvbSB0aGUgdGFibGUmIzM5O3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuJiM0MztcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSAmIzQzOzM1MywyOCBAQFxuICAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBwYXJlbnQgcm9vdCBkcnJcJiMzNDtcbiAgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0OzcwZmRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHUzMiBmaWx0ZXIgd2hlbiBub2RlIElEIHBvb2wgaXMgZXhoYXVzdGVkICg0MDk2dGggZmlsdGVyIHJlamVjdGVkKVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtmaWx0ZXJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3UzMlwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogXCYjMzQ7bnNQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3RcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2Jhc2ggLWMgJiMzOTtmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJiMzOTtcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgLWQgZmlsdGVyIHNob3cgZGV2ICREVU1NWSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7ZmggODAwOjpcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7NDA5NVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuICAgICB9XG4gXVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfaW5pdCYjMzQ7LAogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCmluZGV4IGFjNmQwZmE1YTQwZTMuLmEzZTY1YzhjZjI5ZWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfdTMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc191MzIuYwpAQCAtMzcwLDYgJiM0MzszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cCkKIAogCXJlZmNvdW50X3NldCgmYW1wO3Jvb3RfaHQtJmd0O3JlZmNudCwgMSk7CiAJcm9vdF9odC0mZ3Q7aGFuZGxlID0gdHBfYyA/IGdlbl9uZXdfaHRpZCh0cF9jLCByb290X2h0KSA6IGlkMmhhbmRsZSgwKTsKJiM0MzsJaWYgKHJvb3RfaHQtJmd0O2hhbmRsZSA9PSAwKSB7CiYjNDM7CQlrZnJlZShyb290X2h0KTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiAJcm9vdF9odC0mZ3Q7cHJpbyA9IHRwLSZndDtwcmlvOwogCXJvb3RfaHQtJmd0O2lzX3Jvb3QgPSB0cnVlOwogCWlkcl9pbml0KCZhbXA7cm9vdF9odC0mZ3Q7aGFuZGxlX2lkcik7CkBAIC02OTUsMjEgJiM0Mzs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkKQomIzQzO3N0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZCwgaW50ICplcnIpCiB7CiAJdTMyIGluZGV4ID0gaHRpZCB8IDB4ODAwOwogCXUzMiBtYXggPSBodGlkIHwgMHhGRkY7CiAKJiM0MzsJKmVyciA9IDA7CiYjNDM7CiAJaWYgKGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkgewogCQlpbmRleCA9IGh0aWQgJiM0MzsgMTsKLQkJaWYgKGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LAotCQkJCSBHRlBfS0VSTkVMKSkKLQkJCWluZGV4ID0gbWF4OwomIzQzOwkJKmVyciA9IGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LAomIzQzOwkJCQkgICAgIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCplcnIpCiYjNDM7CQkJcmV0dXJuIDA7CiAJfQogCiAJcmV0dXJuIGluZGV4OwogfQogCiYjNDM7c3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlpZiAoZXJyID09IC1FTk9TUEMpCiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0hhc2ggdGFibGUgbm9kZSBJRCBwb29sIGV4aGF1c3RlZCYjMzQ7KTsKJiM0MzsJZWxzZQomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgbm9kZSBJRCYjMzQ7KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCAmIzQzOyAxXSA9IHsKIAlbVENBX1UzMl9DTEFTU0lEXQk9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW1RDQV9VMzJfSEFTSF0JCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKQEAgLTEwNzksNyAmIzQzOzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLAogCQkgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuCiAJCSAqLwogCQlpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHsKLQkJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTsKJiM0MzsJCQloYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgJmFtcDtlcnIpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCXJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7CiAJCX0gZWxzZSB7CiAJCQloYW5kbGUgPSBodGlkIHwgVENfVTMyX05PREUoaGFuZGxlKTsKIAkJCWVyciA9IGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtoYW5kbGUsCkBAIC0xMDkxLDcgJiM0MzsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwKIAkJLyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lCiAJCSAqIGZyb20gdGhlIHRhYmxlJiMzOTtzIHBvb2wgb2Ygbm9kZWlkcy4KIAkJICovCi0JCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTsKJiM0MzsJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkLCAmYW1wO2Vycik7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7CiAJfQogCiAJaWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24KaW5kZXggYjJjYTlkNGU5OTFiZC4uZTJiMDNmMmI1ZTg5ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbgpAQCAtMzUzLDUgJiM0MzszNTMsMjggQEAKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyciYjMzQ7CiAgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzcwZmQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB1MzIgZmlsdGVyIHdoZW4gbm9kZSBJRCBwb29sIGlzIGV4aGF1c3RlZCAoNDA5NnRoIGZpbHRlciByZWplY3RlZCkmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZmlsdGVyJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDt1MzImIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiAmIzM0O25zUGx1Z2luJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2Jhc2ggLWMgJiMzOTtmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJiMzOTsmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDsyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyAtZCBmaWx0ZXIgc2hvdyBkZXYgJERVTU1ZIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7ZmggODAwOjomIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzQwOTUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGNsc2FjdCYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFUzMiBDbGFzc2lmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL2Nsc191MzIuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbnRlcmVzdGluZy4gRXNzZW50aWFsbHksIGl0JiMzOTtzIG1ha2luZyB0aGUgYGdlbl9uZXdfa2lkYCBmdW5jdGlvbiBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgbW9yZSByb2J1c3QuIFByZXZpb3VzbHksIGlmIGBpZHJfYWxsb2NfdTMyYCBmYWlsZWQgdG8gYWxsb2NhdGUgYW4gSUQsIGl0IHdvdWxkIHNpbGVudGx5IHJldHVybiBlaXRoZXIgdGhlIG1heGltdW0gcG9zc2libGUgSUQgb3IgemVyby4gTm90IGlkZWFsLCBzaW5jZSB0aGlzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGhhcmQtdG8tZGVidWcgaXNzdWVzIGRvd24gdGhlIGxpbmUuCgpUaGlzIHBhdGNoIGZpeGVzIHRoYXQgYnkgbWFraW5nIGBnZW5fbmV3X2tpZGAgcmV0dXJuIGFuIGVycm9yIGRpcmVjdGx5LiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgdTMyX2luaXRgIGZvciB0aGUgY2FzZSB3aGVyZSBgcm9vdF9odC0mZ3Q7aGFuZGxlYCBpcyB6ZXJvIChsaWtlbHkgaW5kaWNhdGluZyBhbiBpc3N1ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24pLiBUbyBoZWxwIHdpdGggZGVidWdnaW5nLCBgdTMyX2tpZF9leHRhY2tgIGhhcyBiZWVuIGFkZGVkIHRvIHJldHVybiBhbiBleHRlbmRlZCBhY2sgbWVzc2FnZSwgd2hpY2ggaXMgYWx3YXlzIHVzZWZ1bC4gVGhlIGNvcmUgY2hhbmdlIGlzIGluIGB1MzJfY2hhbmdlYCwgd2hpY2ggbm93IGNvcnJlY3RseSBoYW5kbGVzIHRoZSBlcnJvciByZXR1cm5lZCBieSBgZ2VuX25ld19raWRgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZW5zdXJlcyB0aGF0IGVycm9yIHByb3BhZ2F0aW9uIGlzIGhhbmRsZWQgZ3JhY2VmdWxseS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIHUzMiBjbGFzc2lmaWVyLiBVc2Vyc3BhY2UgY2FuIHJlYWNoIHRoaXMgY29kZSB2aWEgbmV0bGluayB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMsIHByb2JhYmx5IHdpdGggYSBjb21tYW5kIGxpa2UgYHRjIGZpbHRlciBhZGRgLiBHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBjb2RlIHRoYXQgY2FuIGJlIG1hbmlwdWxhdGVkIHRocm91Z2ggbmV0bGluayBmcm9tIHVzZXJzcGFjZSwgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSB1MzIgY2xhc3NpZmllciwgc28gSSYjMzk7bGwgY2hlY2sgYG5ldC9zY2hlZC9NYWtlZmlsZWAgZm9yIGBjbHNfdTMyLm9gIG9yIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZm9yIGBDT05GSUdfTkVUX0NMU19VMzJgLiBUaGlzJiMzOTtsbCBoZWxwIG1lIGJ1aWxkIGEgdGVzdCBzZXR1cCB0aGF0IHRyaWdnZXJzIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGhzIHJlbGlhYmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xubmV0L3NjaGVkL0tjb25maWctNTM0LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTM1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTM2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02Nj1vYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVx0JiM0Mzs9IHNjaF9kdWFscGkyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cbm5ldC9zY2hlZC9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfTkVUX0NMU19VMzIpXHQmIzQzOz0gY2xzX3UzMi5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjktb2JqLSQoQ09ORklHX05FVF9DTFNfUk9VVEU0KVx0JiM0Mzs9IGNsc19yb3V0ZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIHUzMiBDbGFzc2lmaWVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBORVRfQ0xTX1UzMmAuIFRoYXQgY29uZmlnIG9wdGlvbiBpcyB0aGUga2V5IHRvIHRoaXMgd2hvbGUgdGhpbmcuIE15IGZpcnN0IG1vdmUgaGVyZSBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSDigJMgaW4gdGhpcyBjYXNlLCBgbmV0L3NjaGVkL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqYWxsKiB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgTkVUX0NMU19VMzJgLiBXaGF0IG90aGVyIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZD8gQXJlIHRoZXJlIGFueSBjb25mbGljdGluZyBvcHRpb25zPyBJcyBpdCBkZXBlbmRlbnQgb24gc29tZSBtb3JlIGZvdW5kYXRpb25hbCBtb2R1bGVzPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcGxhY2Ugd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgdGhlIG9ubHkgd2F5IHRvIGF2b2lkIGFueSBuYXN0eSBzdXJwcmlzZXMgZG93biB0aGUgbGluZS4gVGhhdCBLY29uZmlnIGZpbGUgaXMgd2hlcmUgYWxsIHRoZSBzZWNyZXRzIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19VMzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MzQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYE5FVF9DTFNfVTMyYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgTkVUX0NMU19VMzJgIGFjdHVhbGx5ICpkZXBlbmRzKiBvbi4gSSYjMzk7bSBub3QgZ29pbmcgdG8gbWFrZSBhc3N1bXB0aW9ucywgb3Igd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYSByZWQgaGVycmluZyBsYXRlci4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSBoYW5kZnVsIG9mIGtlcm5lbCBtb2R1bGVzIGludm9sdmVkLCBtYXliZSBzb21lIHNwZWNpZmljIGhlYWRlcnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzdGFjazsgd2hhdCBhcmUgdGhlIG90aGVyIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucywgYXJlIHRoZXJlIGFueSBoYXJkd2FyZSBzcGVjaWZpYyByZXF1aXJlbWVudHMsIGFyZSB0aGVyZSByZWxhdGVkIG1vZHVsZXMgb3IgbGlicmFyaWVzPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgcmVsYXRlZCB0ZXJtcy4gVGhlbiwgSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIHNlZSBpZiBhbnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIGBORVRfQ0xTX1UzMmAgZGVzY3JpYmVzIGV4dGVybmFsIGxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGVhc3kgdG8gbWlzcy4gSSB3YW50IGEgY29tcGxldGUgbWFwIG9mIGl0cyBwcmVjb25kaXRpb25zIGJlZm9yZSBJIGNvbnNpZGVyIHdoYXQgdG8gZG8gd2l0aCBpdC4gVGhhdCBrbm93bGVkZ2UsIGFzIGFsd2F5cywgaXMgdGhlIGZvdW5kYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHQgIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNsYXNzaWZ5IHBhY2tldHNcbiA1MTE6XHRcdCAgYWNjb3JkaW5nIHRvIG5ldGZpbHRlci9maXJld2FsbCBtYXJrcy5cbiA1MTI6XHRcbiA1MTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDUxNDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX2Z3LlxuIDUxNTpcdFxuIDUxNjpcdGNvbmZpZyBORVRfQ0xTX1UzMlxuIDUxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcJiMzNDtcbiA1MTg6XHRcdHNlbGVjdCBORVRfQ0xTXG4gNTE5Olx0XHRoZWxwXG4gNTIwOlx0XHQgIFNheSBZIGhlcmUgdG8gYmUgYWJsZSB0byBjbGFzc2lmeSBwYWNrZXRzIHVzaW5nIGEgdW5pdmVyc2FsXG4gNTIxOlx0XHQgIDMyYml0IHBpZWNlcyBiYXNlZCBjb21wYXJpc29uIHNjaGVtZS5cbiA1MjI6XHRcbiA1MjM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDUyNDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX3UzMi5cbiA1MjU6XHRcbiA1MjY6XHRjb25maWcgQ0xTX1UzMl9QRVJGXG4gNTI3Olx0XHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbiA1Mjg6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbiA1Mjk6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBORVRfQ0xTIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX0NMU2AuICBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBzZWxlY3Rpb24gY3JpdGVyaWEuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSB0aWVkIHRvIGFueXRoaW5nIGluY3JlZGlibHkgc3BlY2lmaWMsIGp1c3QgdGhlIGJyb2FkZXIgbmV0d29ya2luZyBjb25maWd1cmF0aW9ucy4gIFRoYXQmIzM5O3MgZ2VuZXJhbGx5IHdoYXQgSSYjMzk7ZCBleHBlY3Q7IGl0IHNob3VsZCBiZSBwcmV0dHkgZnVuZGFtZW50YWwuCgpIbW0sIGhhbmcgb24gYSBzZWNvbmQuLi4gYE5FVF9DTFNfVTMyYCDigJMgaXNuJiMzOTt0IHRoYXQgcGFydCBvZiB0aGUgdHJhZmZpYyBjb250cm9sIG9wdGlvbnMgdW5kZXIgdGhlIGBORVRfU0NIRURgIG1lbnUgaW4gYG1lbnVjb25maWdgPyAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiAgQmVzdCB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGtlZXAgbXkgZHVja3MgaW4gYSByb3cgd2l0aCB0aGVzZSBjb25maWcgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBwdWxsIHVwIHRoZSByZWxldmFudCBtZW51cyBhbmQgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX0NMU19VMzJgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfU0NIRURgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlbWVudCBoZXJlLiBHb29kLiBOb3csIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBgTkVUX0NMU19VMzJgIGhhcyBhbnkgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGJ1dCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvLiBKdXN0IHRob3NlIHR3bywgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSG1tLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggdG91Y2hlcyBgdTMyX2luaXRgLCBgZ2VuX25ld19raWRgLCBgdTMyX2tpZF9leHRhY2tgLCBhbmQgYHUzMl9jaGFuZ2VgLiBSaWdodCwgc28gYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgIGxvb2sgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIFNpbmNlIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfa2lkX2V4dGFja2AgYXJlIHN0YXRpYywgdGhleSBjYW4gcHJvYmFibHkgYmUgdW5kZXJzdG9vZCB0aHJvdWdoIHRoZWlyIHVzZSBpbiB0aGUgcHVibGljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTMyX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmM9MzUxPXN0YXRpYyBzdHJ1Y3QgdGNfdV9jb21tb24gKnRjX3VfY29tbW9uX2ZpbmQodm9pZCAqa2V5KVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYwLVxubmV0L3NjaGVkL2Nsc191MzIuYzozNjE6c3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYyLXtcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTQxNj1zdGF0aWMgdm9pZCB1MzJfZGVzdHJveV9rZXkoc3RydWN0IHRjX3Vfa25vZGUgKm4sIGJvb2wgZnJlZV9wZilcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQzMC0vKiB1MzJfZGVsZXRlX2tleV9yY3Ugc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZyZWUmIzM5O2luZyBhIGNvcGllZFxubmV0L3NjaGVkL2Nsc191MzIuYzo0MzE6ICogdmVyc2lvbiBvZiBhIHRjX3Vfa25vZGUgb2J0YWluZWQgZnJvbSB1MzJfaW5pdF9rbm9kZSgpLiBXaGVuXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjQzMjogKiBjb3BpZXMgYXJlIG9idGFpbmVkIGZyb20gdTMyX2luaXRfa25vZGUoKSB0aGUgc3RhdGlzdGljcyBhcmVcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDMzLSAqIHNoYXJlZCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjb3BpZXMgdG8gYWxsb3cgcmVhZGVycyB0b1xuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM9NDM4PXN0YXRpYyB2b2lkIHUzMl9kZWxldGVfa2V5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUwLSAqIHBlcmNwdSB2YXJpYWJsZXMuIE9ubHkgdXNlIHRoaXMgaWYgdGhlIGtleSBpcyBub3QgYSBjb3B5XG5uZXQvc2NoZWQvY2xzX3UzMi5jOjQ1MTogKiByZXR1cm5lZCBieSB1MzJfaW5pdF9rbm9kZSgpLiBTZWUgdTMyX2RlbGV0ZV9rZXlfcmN1KClcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUyLSAqIGZvciB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSB1c2VkIHdpdGgga2V5cyByZXR1cm4gZnJvbVxubmV0L3NjaGVkL2Nsc191MzIuYzo0NTM6ICogdTMyX2luaXRfa25vZGUoKVxubmV0L3NjaGVkL2Nsc191MzIuYy00NTQtICovXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz04MTA9c3RhdGljIHZvaWQgdTMyX3JlcGxhY2Vfa25vZGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCB0Y191X2NvbW1vbiAqdHBfYyxcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTgzNi1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6ODM3OnN0YXRpYyBzdHJ1Y3QgdGNfdV9rbm9kZSAqdTMyX2luaXRfa25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtODM4LVx0XHRcdFx0XHQgc3RydWN0IHRjX3Vfa25vZGUgKm4pXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz04ODg9c3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTkzOS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6OTQwOlx0XHRuZXcgPSB1MzJfaW5pdF9rbm9kZShuZXQsIHRwLCBuKTtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTQxLVx0XHRpZiAoIW5ldylcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE0ODk9c3RhdGljIHN0cnVjdCB0Y2ZfcHJvdG9fb3BzIGNsc191MzJfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDkxLVx0LmNsYXNzaWZ5XHQ9XHR1MzJfY2xhc3NpZnksXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE0OTI6XHQuaW5pdFx0XHQ9XHR1MzJfaW5pdCxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5My1cdC5kZXN0cm95XHQ9XHR1MzJfZGVzdHJveSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGFuZCBJbmxpbmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgLiBUaGV5JiMzOTtyZSAqc3RhdGljKiwgYnV0IHRoZXkmIzM5O3JlIGJlaW5nIGFzc2lnbmVkIHRvIGBjbHNfdTMyX29wc2AsIHdoaWNoIGlzIGEgYHRjZl9wcm90b19vcHNgIHN0cnVjdC4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTm93LCB0aGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpZiB0aGVzZSB3ZXJlIGZ1bGx5IGlubGluZWQgYmVpbmcgc3RhdGljLCB0aGVuIHRoZXkgd291bGRuJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBIb3dldmVyLCBzaW5jZSB3ZSYjMzk7cmUgKnRha2luZyB0aGVpciBhZGRyZXNzKiBhbmQgYXNzaWduaW5nIHRoZW0gdG8gZnVuY3Rpb24gcG9pbnRlcnMgKGluIGBjbHNfdTMyX29wc2ApLCB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogaW5saW5lIHRoZW0gY29tcGxldGVseS4gVGhpcyBpcyBrZXkuIFRoZSBhZGRyZXNzIGFzc2lnbm1lbnQgcHJldmVudHMgY29tcGxldGUgaW5saW5pbmcuCgpTbywgZGVzcGl0ZSBiZWluZyBzdGF0aWMsIGJlY2F1c2Ugd2UmIzM5O3JlIGFzc2lnbmluZyB0aGVpciBhZGRyZXNzZXMsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCAqYXJlKiBiZWhhdmluZyBsaWtlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhpcyBtb2R1bGUuIFRoZSBjb21waWxlciBoYXMgdG8gcHJvdmlkZSBhIHN5bWJvbCBhZGRyZXNzIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgYWRkcmVzcyBiZWluZyB0YWtlbiwgdGhleSBhcmUgdGhlIEFQSSBlbnRyeXBvaW50cywgZXZlbiBpZiB0aGV5IGFyZSBzdGF0aWMuCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xzX3UzMl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmM9MTM3Nj1zdGF0aWMgaW50IHUzMl9kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmZoLFxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ4OC1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4OTpzdGF0aWMgc3RydWN0IHRjZl9wcm90b19vcHMgY2xzX3UzMl9vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5MC1cdC5raW5kXHRcdD1cdFwmIzM0O3UzMlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE1MDU9c3RhdGljIGludCBfX2luaXQgaW5pdF91MzIodm9pZClcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE1MjMtXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE1MjQ6XHRyZXQgPSByZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFx1MDAyNmNsc191MzJfb3BzKTtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTUyNS1cdGlmIChyZXQpXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNTMwPXN0YXRpYyB2b2lkIF9fZXhpdCBleGl0X3UzMih2b2lkKVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMxLXtcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTUzMjpcdHVucmVnaXN0ZXJfdGNmX3Byb3RvX29wcyhcdTAwMjZjbHNfdTMyX29wcyk7XG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE1MzMtXHRrdmZyZWUodGNfdV9jb21tb25faGFzaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdTMyYCBDbGFzc2lmaWVyIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdTMyYCBjbGFzc2lmaWVyIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cy4gUmlnaHQgYXdheSwgSSBzZWUgYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGRpc3F1YWxpZnkgdGhlbS4gVGhleSBzZWVtIHRvIGJlIHRoZSBtYWluIGNhbGxiYWNrcywgdGhlIHByaW1hcnkgd2F5IHRoZSBjbGFzc2lmaWVyIGlzIGludGVyYWN0ZWQgd2l0aC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBwcm9taW5lbnQgZnVuY3Rpb25zIGx1cmtpbmcgYWJvdXQuCgpBbHJpZ2h0LCBhZnRlciBhIHF1aWNrIGNoZWNrLCBJJiMzOTttIGNvbmZpZGVudCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAgYXJlIHRoZSBjYW5kaWRhdGVzIEkgbmVlZC4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4KCldhaXQgYSBtaW51dGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgeWVzIGB1MzJfaW5pdGAgaXMgc3RhdGljLiBCdXQsIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvIHRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyISBJdCBzZWVtcyBsaWtlIHRoZXNlIGFyZSBzdGlsbCB0aGUgY29ycmVjdCBmdW5jdGlvbnMgdG8gaW5jbHVkZS4KCkhhbmcgb24uIE9rYXksIHJpZ2h0LCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zISBOb3cgSSBzZWUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgbm90IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMg4oCTIHRoZXkgKmFyZSogdGhlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIGB1MzJgIGNsYXNzaWZpZXIg4oCTIHRoaXMgY29uZmlybXMgdGhleSBhcmUgYWJzb2x1dGVseSB0aGUgcmlnaHQgY2hvaWNlcy4gSSYjMzk7bSBnb29kIHRvIGdvIHdpdGggdGhvc2UuCgpMZXQmIzM5O3MgbW92ZSBvbiBhbmQgY2hlY2sgdGhlIGBORVRfU0NIRURgIGNvbmZpZyBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggaXQgbGlrZSBJIHdvdWxkIG9uIHRoZSBmbHk6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgc28gSSBzZWUgYE5FVF9TQ0hFRGAgaXMgYSBzdHJhaWdodGZvcndhcmQgYm9vbGVhbiDigJMgZWl0aGVyIGVuYWJsZWQgb3IgZGlzYWJsZWQsIG5vdGhpbmcgY29tcGxleCB0aGVyZS4gQnV0IGBORVRfQ0xTX1UzMmAgaXMgYSB0cmlzdGF0ZSwgdGhhdCBzdWdnZXN0cyBpdCBoYXMgbW9yZSBudWFuY2UuIEdpdmVuIHRoYXQsIGFuZCBsb29raW5nIGF0IHRoZSBjb250ZXh0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdG8gbWUgdGhhdCBib3RoIG5lZWQgdG8gYmUgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBicmFpbmVyIHRoZXJlLCByZWFsbHkuCgpOb3csIG15IGd1dCB0ZWxscyBtZSBgTkVUX0NMU19VMzJgIG1pZ2h0IGhhdmUgYSBmZXcgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kLiBUcmlzdGF0ZSBvcHRpb25zIG9mdGVuIGRvLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgaW50byB0aGUga2VybmVsIGNvbmZpZyBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCB0cmlwIHVzIHVwLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgYE5FVF9DTFNfVTMyYCBpcyB0aWVkIHRvLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVF9TQ0hfRlFfUElFXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzYtXHR0cmlzdGF0ZSBcJiMzNDtGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxubmV0L3NjaGVkL0tjb25maWctNDA3LVx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQwODpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxubmV0L3NjaGVkL0tjb25maWctNDk1LVx0dHJpc3RhdGUgXCYjMzQ7Um91dGluZyBkZWNpc2lvbiAoUk9VVEUpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTI2PWNvbmZpZyBDTFNfVTMyX1BFUkZcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cdGJvb2wgXCYjMzQ7UGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTI4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTI5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy01MzQtXHRib29sIFwmIzM0O05ldGZpbHRlciBtYXJrcyBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1MzU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MzYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTUwPWNvbmZpZyBORVRfQ0xTX0NHUk9VUFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcbm5ldC9zY2hlZC9LY29uZmlnOjU1NDpcdGRlcGVuZHMgb24gQ0dST1VQU1xubmV0L3NjaGVkL0tjb25maWctNTU1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYwNT1jb25maWcgTkVUX0VNQVRDSF9TVEFDS1xubmV0L3NjaGVkL0tjb25maWctNjA2LVx0aW50IFwmIzM0O1N0YWNrIHNpemVcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjA4LVx0ZGVmYXVsdCBcJiMzNDszMlwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYxNT1jb25maWcgTkVUX0VNQVRDSF9DTVBcbm5ldC9zY2hlZC9LY29uZmlnLTYxNi1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBwYWNrZXQgZGF0YSBjb21wYXJpc29uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MjU9Y29uZmlnIE5FVF9FTUFUQ0hfTkJZVEVcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O011bHRpIGJ5dGUgY29tcGFyaXNvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjI3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxubmV0L3NjaGVkL0tjb25maWctNjM2LVx0dHJpc3RhdGUgXCYjMzQ7VTMyIGtleVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjM3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MzgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjQ1PWNvbmZpZyBORVRfRU1BVENIX01FVEFcbm5ldC9zY2hlZC9LY29uZmlnLTY0Ni1cdHRyaXN0YXRlIFwmIzM0O01ldGFkYXRhXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTY0OC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NTY9Y29uZmlnIE5FVF9FTUFUQ0hfVEVYVFxubmV0L3NjaGVkL0tjb25maWctNjU3LVx0dHJpc3RhdGUgXCYjMzQ7VGV4dHNlYXJjaFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjU4Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXHRzZWxlY3QgVEVYVFNFQVJDSFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxubmV0L3NjaGVkL0tjb25maWctNjcxLVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIElkZW50aWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY3MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgKENBTj15IHx8IENBTj1tKVxubmV0L3NjaGVkL0tjb25maWctNjczLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxubmV0L3NjaGVkL0tjb25maWctNjgxLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZXRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY4MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgSVBfU0VUXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxubmV0L3NjaGVkL0tjb25maWctNjkxLVx0dHJpc3RhdGUgXCYjMzQ7SVB0YWJsZXMgTWF0Y2hlc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjkyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBORVRGSUxURVIgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXG5uZXQvc2NoZWQvS2NvbmZpZy02OTMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzE1PWNvbmZpZyBORVRfQUNUX1BPTElDRVxubmV0L3NjaGVkL0tjb25maWctNzE2LVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBQb2xpY2luZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzE3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcyODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MzY9Y29uZmlnIEdBQ1RfUFJPQlxubmV0L3NjaGVkL0tjb25maWctNzM3LVx0Ym9vbCBcJiMzNDtQcm9iYWJpbGl0eSBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzM5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc0Mj1jb25maWcgTkVUX0FDVF9NSVJSRURcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cdHRyaXN0YXRlIFwmIzM0O1JlZGlyZWN0aW5nIGFuZCBNaXJyb3JpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFNhbXBsaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NTQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXHRzZWxlY3QgUFNBTVBMRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcbm5ldC9zY2hlZC9LY29uZmlnLTc2NS1cdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc2Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NzQ9Y29uZmlnIE5FVF9BQ1RfUEVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBFeGFtcGxlIChEZWJ1ZylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc4NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxubmV0L3NjaGVkL0tjb25maWctNzk4LVx0dHJpc3RhdGUgXCYjMzQ7U0tCIEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgwMC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MDg9Y29uZmlnIE5FVF9BQ1RfQ1NVTVxubmV0L3NjaGVkL0tjb25maWctODA5LVx0dHJpc3RhdGUgXCYjMzQ7Q2hlY2tzdW0gVXBkYXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IElORVRcbm5ldC9zY2hlZC9LY29uZmlnLTgxMS1cdHNlbGVjdCBORVRfQ1JDMzJDXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODE5PWNvbmZpZyBORVRfQUNUX01QTFNcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cdHRyaXN0YXRlIFwmIzM0O01QTFMgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cdHRyaXN0YXRlIFwmIzM0O1ZsYW4gbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxubmV0L3NjaGVkL0tjb25maWctODQyLVx0dHJpc3RhdGUgXCYjMzQ7QlBGIGJhc2VkIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODQzOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODQ0LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg1Mz1jb25maWcgTkVUX0FDVF9DT05OTUFSS1xubmV0L3NjaGVkL0tjb25maWctODU0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBSZXRyaWV2ZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWc6ODU2Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xubmV0L3NjaGVkL0tjb25maWctODY2LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4Njc6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xubmV0L3NjaGVkL0tjb25maWctODY5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg4Mj1jb25maWcgTkVUX0FDVF9TS0JNT0Rcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cdHRyaXN0YXRlIFwmIzM0O3NrYiBkYXRhIG1vZGlmaWNhdGlvbiBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg5NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cdHNlbGVjdCBORVRfSUZFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcbm5ldC9zY2hlZC9LY29uZmlnLTkwNy1cdHRyaXN0YXRlIFwmIzM0O0lQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MTc9Y29uZmlnIE5FVF9BQ1RfQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cdHRyaXN0YXRlIFwmIzM0O2Nvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXHUwMDI2XHUwMDI2IE5GX0ZMT1dfVEFCTEVcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cdHRyaXN0YXRlIFwmIzM0O0ZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy05NDMtXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk0NDpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk0NS1cbm5ldC9zY2hlZC9LY29uZmlnPTk0Nj1jb25maWcgTkVUX0lGRV9TS0JQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBwcmlvIG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk0ODpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cbm5ldC9zY2hlZC9LY29uZmlnPTk1MD1jb25maWcgTkVUX0lGRV9TS0JUQ0lOREVYXG5uZXQvc2NoZWQvS2NvbmZpZy05NTEtXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiB0Y2luZGV4IG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk1My1cbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcbm5ldC9zY2hlZC9LY29uZmlnLTk1NS1cdGJvb2wgXCYjMzQ7VEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTctXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5FVF9DTFNfVTMyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgTkVUX0NMU19VMzJgIGNvbmZpZyBvcHRpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHNlZW1zIHByZXR0eSBzdGFuZGFsb25lLiBJdCYjMzk7cyBnb3Qgbm8gZGVwZW5kZW5jaWVzIGxpc3RlZCwgYXBhcnQgZnJvbSBiZWluZyB1bmRlciBgTkVUX1NDSEVEYC4gTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBgTkVUX1NDSEVEYC4uLiB0aGF0JiMzOTtzIGp1c3QgYSBtZW51Y29uZmlnLCBpc24mIzM5O3QgaXQ/IEl0JiMzOTtzIG5vdCBhIHJlYWwgbW9kdWxlIG9yIGEgY29yZSBmdW5jdGlvbiwgbW9yZSBvZiBhIHRvcC1sZXZlbCBncm91cGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gKmhpZGRlbiogZGVwZW5kZW5jaWVzLCBzbyBJIG5lZWQgdG8ga25vdyBpZiBgTkVUX1NDSEVEYCBpdHNlbGYgcmVsaWVzIG9uIGFueXRoaW5nIGVsc2UuIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgbHVya2luZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzU2CgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgdTMyIENsYXNzaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkZXBlbmRlbmNpZXM7IHRoYXQmIzM5O3MgZ29vZCB0byBrbm93IG9mZiB0aGUgYmF0LiBUaGUgcmVsZXZhbnQgRW5hYmxlQ29uZmlncyBhcmUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX1UzMmAsIGFzIGV4cGVjdGVkLgoKTXkgZm9jdXMgaXMgZHJhd24gdG8gdGhlc2Ugc3ltYm9sczogYHUzMl9pbml0YCwgYW5kIGB1MzJfY2hhbmdlYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoZXNlIGFyZSBsaWtlbHkga2V5IHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgYWRkcmVzc2VkLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gdGhlIHUzMiBjbGFzc2lmaWVyLiBJdCBzZWVtcyBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZW4mIzM5O3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgbGVkIHRvIHBvdGVudGlhbCBzaWxlbnQgZmFpbHVyZXMgb3IgY29tcGxldGVseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGEgdmVyeSBuYXN0eSBidWcuCgpUaGUgY2hhbmdlcyBmb2N1cyBvbiBhZGRpbmcgcHJvcGVyIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0IGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAuIEZ1cnRoZXJtb3JlLCBpdCBsb29rcyBsaWtlIHRoZSBlcnJvciBpcyBwcm9wZXJseSBwcm9wYWdhdGVkIHZpYSBuZXRsaW5rIGV4dGFjayBpbiBgdTMyX2NoYW5nZWAuIEJlY2F1c2UgdGhpcyBpbXBhY3RzIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIGFuZCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgZnV6emluZyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhZnRlciBhbGwuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nLiBMb29rcyBsaWtlIGB1MzJfZGVsZXRlYCBpcyB1bnRvdWNoZWQsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGUgY29kZSBpcyBhZGRpbmcgYHUzMl9raWRfZXh0YWNrYCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIGBnZW5fbmV3X2tpZGAsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIG9ic2VydmF0aW9ucy4KCk9rYXksIEkmIzM5O20gc2F0aXNmaWVkLiBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIG91dHB1dCB3aXRoIHRoaXMgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfaW5pdCYjMzQ7LAogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2luaXQmIzM0OywKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIHdpdGggSUQgYWxsb2NhdGlvbiBleGhhdXN0aW9uIGluIHRoZSB1MzIgcGFja2V0IGNsYXNzaWZpZXIgKGBnZW5fbmV3X2tpZGAgYW5kIGBnZW5fbmV3X2h0aWRgKS4gSXQgYWRkcyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByb3BhZ2F0aW9uIHdoZW4gdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCBvciBkdXBsaWNhdGUgaGFuZGxlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGFuZCBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODVlMmQ0MzQyYmQ5OWZjYjk1YjdjNWE0NGZjMjc2NmE1ZmNlZDlhMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDA5OjEyOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmMKaW5kZXggYWM2ZDBmYTVhNDBlMy4uYTNlNjVjOGNmMjllZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCkBAIC0zNzAsNiAmIzQzOzM3MCwxMCBAQCBzdGF0aWMgaW50IHUzMl9pbml0KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKQogCiAJcmVmY291bnRfc2V0KCZhbXA7cm9vdF9odC0mZ3Q7cmVmY250LCAxKTsKIAlyb290X2h0LSZndDtoYW5kbGUgPSB0cF9jID8gZ2VuX25ld19odGlkKHRwX2MsIHJvb3RfaHQpIDogaWQyaGFuZGxlKDApOwomIzQzOwlpZiAocm9vdF9odC0mZ3Q7aGFuZGxlID09IDApIHsKJiM0MzsJCWtmcmVlKHJvb3RfaHQpOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAlyb290X2h0LSZndDtwcmlvID0gdHAtJmd0O3ByaW87CiAJcm9vdF9odC0mZ3Q7aXNfcm9vdCA9IHRydWU7CiAJaWRyX2luaXQoJmFtcDtyb290X2h0LSZndDtoYW5kbGVfaWRyKTsKQEAgLTY5NSwyMSAmIzQzOzY5OSwzMyBAQCBzdGF0aWMgaW50IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmFyZywgYm9vbCAqbGFzdCwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpCiYjNDM7c3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycikKIHsKIAl1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7CiAJdTMyIG1heCA9IGh0aWQgfCAweEZGRjsKIAomIzQzOwkqZXJyID0gMDsKJiM0MzsKIAlpZiAoaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsIEdGUF9LRVJORUwpKSB7CiAJCWluZGV4ID0gaHRpZCAmIzQzOyAxOwotCQlpZiAoaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsCi0JCQkJIEdGUF9LRVJORUwpKQotCQkJaW5kZXggPSBtYXg7CiYjNDM7CQkqZXJyID0gaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsCiYjNDM7CQkJCSAgICAgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoKmVycikKJiM0MzsJCQlyZXR1cm4gMDsKIAl9CiAKIAlyZXR1cm4gaW5kZXg7CiB9CiAKJiM0MztzdGF0aWMgaW50IHUzMl9raWRfZXh0YWNrKGludCBlcnIsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CWlmIChlcnIgPT0gLUVOT1NQQykKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SGFzaCB0YWJsZSBub2RlIElEIHBvb2wgZXhoYXVzdGVkJiMzNDspOwomIzQzOwllbHNlCiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEJiMzNDspOwomIzQzOwlyZXR1cm4gZXJyOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICYjNDM7IDFdID0gewogCVtUQ0FfVTMyX0NMQVNTSURdCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbVENBX1UzMl9IQVNIXQkJPSB7IC50eXBlID0gTkxBX1UzMiB9LApAQCAtMTA3OSw3ICYjNDM7MTA5NSw5IEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsCiAJCSAqIGhhbmRsZSB3aGljaCBpcyB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBtYXRjaCBlbnRyeS4KIAkJICovCiAJCWlmICghVENfVTMyX05PREUoaGFuZGxlKSkgewotCQkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpOwomIzQzOwkJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkLCAmYW1wO2Vycik7CiYjNDM7CQkJaWYgKGVycikKJiM0MzsJCQkJcmV0dXJuIHUzMl9raWRfZXh0YWNrKGVyciwgZXh0YWNrKTsKIAkJfSBlbHNlIHsKIAkJCWhhbmRsZSA9IGh0aWQgfCBUQ19VMzJfTk9ERShoYW5kbGUpOwogCQkJZXJyID0gaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2hhbmRsZSwKQEAgLTEwOTEsNyAmIzQzOzExMDksOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLAogCQkvKiBUaGUgdXNlciBkaWQgbm90IGdpdmUgdXMgYSBoYW5kbGU7IGxldHMganVzdCBnZW5lcmF0ZSBvbmUKIAkJICogZnJvbSB0aGUgdGFibGUmIzM5O3MgcG9vbCBvZiBub2RlaWRzLgogCQkgKi8KLQkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpOwomIzQzOwkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsICZhbXA7ZXJyKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIHUzMl9raWRfZXh0YWNrKGVyciwgZXh0YWNrKTsKIAl9CiAKIAlpZiAodGJbVENBX1UzMl9TRUxdID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbgppbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uCkBAIC0zNTMsNSAmIzQzOzM1MywyOCBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgcGFyZW50IHJvb3QgZHJyJiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7NzBmZCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHUzMiBmaWx0ZXIgd2hlbiBub2RlIElEIHBvb2wgaXMgZXhoYXVzdGVkICg0MDk2dGggZmlsdGVyIHJlamVjdGVkKSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtmaWx0ZXImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3UzMiYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGNsc2FjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7YmFzaCAtYyAmIzM5O2ZvciBpIGluIHsxLi40MDk1fTsgZG8gZWNobyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgaW5ncmVzcyBwcmlvIDEgcHJvdG9jb2wgaXAgdTMyIG1hdGNoIHU4IDAgMCBhdCAwOyBkb25lIHwgJFRDIC1iIC0mIzM5OyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtmaCA4MDA6OiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7NDA5NSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0JiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxCgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDkwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBFdmFsdWF0aW9uOiB1MzIgUGFja2V0IENsYXNzaWZpZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGUgYSBmdWxsLWJsb3duIEtNU0FOIGZ1enppbmcgc2Vzc2lvbj8gSXQgdG91Y2hlcyBgbmV0L3NjaGVkL2Nsc191MzIuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGhhbmRsZSBJRCBhbGxvY2F0aW9uLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgZ2VuX25ld19odGlkYCBhbmQgYGdlbl9uZXdfa2lkYCwgd2l0aCBhbiBhZGRlZCBzZWxmdGVzdCBmb3IgdGhlIG5vZGUgSUQgcG9vbCBleGhhdXN0aW9uIHNjZW5hcmlvLgoKTG9va2luZyBjbG9zZXIsIHRoZSBmaXJzdCBjaGFuZ2UgaW4gYHUzMl9pbml0YCBzZWVtcyB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgaW52YWxpZCBoYW5kbGUgdXNhZ2UgYnkgY2hlY2tpbmcgdGhlIHJldHVybiBvZiBgZ2VuX25ld19odGlkYCBhbmQgZnJlZWluZyBgcm9vdF9odGAgYW5kIHJldHVybmluZyBgLUVOT01FTWAgaWYgaXQgcmV0dXJucyAwLgoKVGhlIHNlY29uZCBwYXJ0IGlzIGluIGBnZW5fbmV3X2tpZGAuIFRoaXMgcmVmYWN0b3JzIGhvdyB3ZSBoYW5kbGUgSUQgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSW5zdGVhZCBvZiBzaWxlbnRseSByZXR1cm5pbmcgYG1heGAgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYnVncyBkb3duIHRoZSBsaW5lIGJ5IG5vdCBhY3R1YWxseSBmYWlsaW5nKSwgaXQgbm93IHByb3Blcmx5IHJlcG9ydHMgYW4gZXJyb3IgY29kZSB2aWEgdGhlIGBlcnJgIHBvaW50ZXIuIFRoaXMgaXMgcHVyZSBjb250cm9sLWZsb3cgY2hhbmdlLCB3aGljaCwgd2hpbGUgaW1wb3J0YW50LCBkb2VzbiYjMzk7dCBpbmhlcmVudGx5IGludHJvZHVjZSB0aGUga2luZCBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcyBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaC4KCkZpbmFsbHksIGluIGB1MzJfY2hhbmdlYCwgd2Ugc2VlIHRoZSB1cGRhdGVkIGNhbGwgdG8gYGdlbl9uZXdfa2lkYCwgbm93IGNoZWNraW5nIHRoZSBgZXJyYCB2YXJpYWJsZSBhbmQgcmV0dXJuaW5nIGZyb20gdGhlIGZ1bmN0aW9uIG9uIGZhaWx1cmUuCgpNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24g4oCTIHRoaW5ncyBsaWtlIGR1cGxpY2F0ZSBJRHMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzIGluIGVkZ2UgY2FzZXMuIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBmb3IgS01TQU4uIEkgZG9uJiMzOTt0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8gbGVha3MsIG9yIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGZpeCBhZGRyZXNzZXMgYW4gZXhpc3RpbmcgSUQgYWxsb2NhdGlvbiBmYWlsdXJlLCBub3QgYSBuZXcgY2xhc3Mgb2YgbWVtb3J5IGJ1Z3MuIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgT09CIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgZXJyYCBpcyBpbml0aWFsaXplZCBwcm9wZXJseS4gWXVwLCBgaW50IGVycjtgIGlzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBjb3JyZWN0bHkgaW4gYHUzMl9jaGFuZ2VgLiBBbHNvLCBgKmVyciA9IDA7YCBpcyBzZXQgd2l0aGluIGBnZW5fbmV3X2tpZGAuIFNvLCBubyBpbW1lZGlhdGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRoaXMgcGF0Y2ggaXMgbW9yZSBhYm91dCBwcmV2ZW50aW5nIGxvZ2ljYWwgZXJyb3JzIHJlbGF0ZWQgdG8gSUQgYWxsb2NhdGlvbiwgcmF0aGVyIHRoYW4gaW50cm9kdWNpbmcgbmV3IG1lbW9yeSBzYWZldHkgY29uY2VybnMuIFdlIGNhbiByZWx5IG9uIHN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIHRvIGNhdGNoIGFueSByZWdyZXNzaW9ucy4gQSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpc24mIzM5O3QganVzdGlmaWVkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIElEIGFsbG9jYXRpb24gZXhoYXVzdGlvbiBpbiB0aGUgdTMyIHBhY2tldCBjbGFzc2lmaWVyIChgZ2VuX25ld19raWRgIGFuZCBgZ2VuX25ld19odGlkYCkuIEl0IGFkZHMgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcm9wYWdhdGlvbiB3aGVuIHRoZSBJRFIgYWxsb2NhdGlvbiBmYWlscywgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgb3IgZHVwbGljYXRlIGhhbmRsZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBhbmQgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NC42Nzc2MTgyODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQxOTMyNjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIElEIGFsbG9jYXRpb24gZXhoYXVzdGlvbiBpbiB0aGUgdTMyIHBhY2tldCBjbGFzc2lmaWVyIChgZ2VuX25ld19raWRgIGFuZCBgZ2VuX25ld19odGlkYCkuIEl0IGFkZHMgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcm9wYWdhdGlvbiB3aGVuIHRoZSBJRFIgYWxsb2NhdGlvbiBmYWlscywgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgb3IgZHVwbGljYXRlIGhhbmRsZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBhbmQgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHUzMiBjbGFzc2lmaWVyIHdoZXJlIGBpZHJfYWxsb2NfdTMyYCBmYWlsdXJlcyB3ZXJlIG5vdCBoYW5kbGVkIHByb3Blcmx5LCBsZWFkaW5nIHRvIHNpbGVudCBmYWlsdXJlcyBvciBpbmNvcnJlY3QgYmVoYXZpb3IuIEl0IGFkZHMgZXJyb3IgaGFuZGxpbmcgaW4gYGdlbl9uZXdfa2lkYCBhbmQgYHUzMl9pbml0YCwgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yIHZpYSBuZXRsaW5rIGV4dGFjayBpbiBgdTMyX2NoYW5nZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NC42Nzc2MjMxNTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDgyOTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDk6MTI6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmNcXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfdTMyLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXFxuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcXG4gXFxuIFxcdHJlZmNvdW50X3NldChcXHUwMDI2cm9vdF9odC1cXHUwMDNlcmVmY250LCAxKTtcXG4gXFx0cm9vdF9odC1cXHUwMDNlaGFuZGxlID0gdHBfYyA/IGdlbl9uZXdfaHRpZCh0cF9jLCByb290X2h0KSA6IGlkMmhhbmRsZSgwKTtcXG4rXFx0aWYgKHJvb3RfaHQtXFx1MDAzZWhhbmRsZSA9PSAwKSB7XFxuK1xcdFxcdGtmcmVlKHJvb3RfaHQpO1xcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXHRyb290X2h0LVxcdTAwM2VwcmlvID0gdHAtXFx1MDAzZXByaW87XFxuIFxcdHJvb3RfaHQtXFx1MDAzZWlzX3Jvb3QgPSB0cnVlO1xcbiBcXHRpZHJfaW5pdChcXHUwMDI2cm9vdF9odC1cXHUwMDNlaGFuZGxlX2lkcik7XFxuQEAgLTY5NSwyMSArNjk5LDMzIEBAIHN0YXRpYyBpbnQgdTMyX2RlbGV0ZShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdm9pZCAqYXJnLCBib29sICpsYXN0LFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXFxuK3N0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZCwgaW50ICplcnIpXFxuIHtcXG4gXFx0dTMyIGluZGV4ID0gaHRpZCB8IDB4ODAwO1xcbiBcXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xcbiBcXG4rXFx0KmVyciA9IDA7XFxuK1xcbiBcXHRpZiAoaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xcbiBcXHRcXHRpbmRleCA9IGh0aWQgKyAxO1xcbi1cXHRcXHRpZiAoaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LFxcbi1cXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCkpXFxuLVxcdFxcdFxcdGluZGV4ID0gbWF4O1xcbitcXHRcXHQqZXJyID0gaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LFxcbitcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoKmVycilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBpbmRleDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0aWYgKGVyciA9PSAtRU5PU1BDKVxcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSGFzaCB0YWJsZSBub2RlIElEIHBvb2wgZXhoYXVzdGVkXFxcIik7XFxuK1xcdGVsc2VcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEXFxcIik7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICsgMV0gPSB7XFxuIFxcdFtUQ0FfVTMyX0NMQVNTSURdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiBcXHRbVENBX1UzMl9IQVNIXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5AQCAtMTA3OSw3ICsxMDk1LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4gXFx0XFx0ICogaGFuZGxlIHdoaWNoIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG1hdGNoIGVudHJ5LlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCFUQ19VMzJfTk9ERShoYW5kbGUpKSB7XFxuLVxcdFxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4rXFx0XFx0XFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFxcdTAwMjZlcnIpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRoYW5kbGUgPSBodGlkIHwgVENfVTMyX05PREUoaGFuZGxlKTtcXG4gXFx0XFx0XFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZoYW5kbGUsXFxuQEAgLTEwOTEsNyArMTEwOSw5IEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuIFxcdFxcdC8qIFRoZSB1c2VyIGRpZCBub3QgZ2l2ZSB1cyBhIGhhbmRsZTsgbGV0cyBqdXN0IGdlbmVyYXRlIG9uZVxcbiBcXHRcXHQgKiBmcm9tIHRoZSB0YWJsZSdzIHBvb2wgb2Ygbm9kZWlkcy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4rXFx0XFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFxcdTAwMjZlcnIpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodGJbVENBX1UzMl9TRUxdID09IE5VTEwpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXFxuaW5kZXggYjJjYTlkNGU5OTFiZC4uZTJiMDNmMmI1ZTg5ZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cXG5AQCAtMzUzLDUgKzM1MywyOCBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI3MGZkXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJmaWx0ZXJcXFwiLFxcbisgICAgICAgICAgICBcXFwidTMyXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInBsdWdpbnNcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJyZXF1aXJlc1xcXCI6IFxcXCJuc1BsdWdpblxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3RcXFwiLFxcbisgICAgICAgICAgICBcXFwiYmFzaCAtYyAnZm9yIGkgaW4gezEuLjQwOTV9OyBkbyBlY2hvIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDA7IGRvbmUgfCAkVEMgLWIgLSdcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgaW5ncmVzcyBwcmlvIDEgcHJvdG9jb2wgaXAgdTMyIG1hdGNoIHU4IDAgMCBhdCAwXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMlxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLWQgZmlsdGVyIHNob3cgZGV2ICREVU1NWSBpbmdyZXNzXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImZoIDgwMDo6XFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCI0MDk1XFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XFxcIlxcbisgICAgICAgIF1cXG4gICAgIH1cXG4gXVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NS4wNjMwMzA4MTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MDA2OTg0NTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4rXHRpZiAocm9vdF9odC1cdTAwM2VoYW5kbGUgPT0gMCkge1xuK1x0XHRrZnJlZShyb290X2h0KTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXHRyb290X2h0LVx1MDAzZXByaW8gPSB0cC1cdTAwM2VwcmlvO1xuIFx0cm9vdF9odC1cdTAwM2Vpc19yb290ID0gdHJ1ZTtcbiBcdGlkcl9pbml0KFx1MDAyNnJvb3RfaHQtXHUwMDNlaGFuZGxlX2lkcik7XG5AQCAtNjk1LDIxICs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXG4rc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuK1x0KmVyciA9IDA7XG4rXG4gXHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xuIFx0XHRpbmRleCA9IGh0aWQgKyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuK1x0XHQqZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuK1x0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCplcnIpXG4rXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4gXHRyZXR1cm4gaW5kZXg7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdTMyX2tpZF9leHRhY2soaW50IGVyciwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdGlmIChlcnIgPT0gLUVOT1NQQylcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcIik7XG4rXHRlbHNlXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiRmFpbGVkIHRvIGFsbG9jYXRlIG5vZGUgSURcIik7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCArIDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgKzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHtcbi1cdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCk7XG4rXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aGFuZGxlID0gaHRpZCB8IFRDX1UzMl9OT0RFKGhhbmRsZSk7XG4gXHRcdFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZoYW5kbGUsXG5AQCAtMTA5MSw3ICsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4gXHRcdCAqIGZyb20gdGhlIHRhYmxlJ3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuK1x0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSArMzUzLDI4IEBAXG4gICAgICAgICBcInRlYXJkb3duXCI6IFtcbiAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclwiXG4gICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCI3MGZkXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImZpbHRlclwiLFxuKyAgICAgICAgICAgIFwidTMyXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgY2xzYWN0XCIsXG4rICAgICAgICAgICAgXCJiYXNoIC1jICdmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJ1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzc1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJmaCA4MDA6OlwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiNDA5NVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEyOjU1LjA2MzAzMjE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTEzODU2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVTMyIENsYXNzaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL2Nsc191MzIuY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGludGVyZXN0aW5nLiBFc3NlbnRpYWxseSwgaXQncyBtYWtpbmcgdGhlIGBnZW5fbmV3X2tpZGAgZnVuY3Rpb24gaW4gdGhlIHUzMiBjbGFzc2lmaWVyIG1vcmUgcm9idXN0LiBQcmV2aW91c2x5LCBpZiBgaWRyX2FsbG9jX3UzMmAgZmFpbGVkIHRvIGFsbG9jYXRlIGFuIElELCBpdCB3b3VsZCBzaWxlbnRseSByZXR1cm4gZWl0aGVyIHRoZSBtYXhpbXVtIHBvc3NpYmxlIElEIG9yIHplcm8uIE5vdCBpZGVhbCwgc2luY2UgdGhpcyBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBoYXJkLXRvLWRlYnVnIGlzc3VlcyBkb3duIHRoZSBsaW5lLlxuXG5UaGlzIHBhdGNoIGZpeGVzIHRoYXQgYnkgbWFraW5nIGBnZW5fbmV3X2tpZGAgcmV0dXJuIGFuIGVycm9yIGRpcmVjdGx5LiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgdTMyX2luaXRgIGZvciB0aGUgY2FzZSB3aGVyZSBgcm9vdF9odC1cdTAwM2VoYW5kbGVgIGlzIHplcm8gKGxpa2VseSBpbmRpY2F0aW5nIGFuIGlzc3VlIGR1cmluZyBpbml0aWFsaXphdGlvbikuIFRvIGhlbHAgd2l0aCBkZWJ1Z2dpbmcsIGB1MzJfa2lkX2V4dGFja2AgaGFzIGJlZW4gYWRkZWQgdG8gcmV0dXJuIGFuIGV4dGVuZGVkIGFjayBtZXNzYWdlLCB3aGljaCBpcyBhbHdheXMgdXNlZnVsLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHUzMl9jaGFuZ2VgLCB3aGljaCBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGVycm9yIHJldHVybmVkIGJ5IGBnZW5fbmV3X2tpZGAuIFRoaXMgaXMgaW1wb3J0YW50LCBhcyBpdCBlbnN1cmVzIHRoYXQgZXJyb3IgcHJvcGFnYXRpb24gaXMgaGFuZGxlZCBncmFjZWZ1bGx5LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSB1MzIgY2xhc3NpZmllci4gVXNlcnNwYWNlIGNhbiByZWFjaCB0aGlzIGNvZGUgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzLCBwcm9iYWJseSB3aXRoIGEgY29tbWFuZCBsaWtlIGB0YyBmaWx0ZXIgYWRkYC4gR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCB0aHJvdWdoIG5ldGxpbmsgZnJvbSB1c2Vyc3BhY2UsIGl04oCZcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSB1MzIgY2xhc3NpZmllciwgc28gSSdsbCBjaGVjayBgbmV0L3NjaGVkL01ha2VmaWxlYCBmb3IgYGNsc191MzIub2Agb3IgYG5ldC9zY2hlZC9LY29uZmlnYCBmb3IgYENPTkZJR19ORVRfQ0xTX1UzMmAuIFRoaXMnbGwgaGVscCBtZSBidWlsZCBhIHRlc3Qgc2V0dXAgdGhhdCB0cmlnZ2VycyB0aGUgYWZmZWN0ZWQgY29kZSBwYXRocyByZWxpYWJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjAxLjY3NDQyMjMxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM2MDAwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTI2PWNvbmZpZyBDTFNfVTMyX1BFUkZcXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXFx0Ym9vbCBcXFwiUGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTUzNC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1MzU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUzNi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjY9b2JqLSQoQ09ORklHX05FVF9TQ0hfRFVBTFBJMilcXHQrPSBzY2hfZHVhbHBpMi5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxcbm5ldC9zY2hlZC9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfTkVUX0NMU19VMzIpXFx0Kz0gY2xzX3UzMi5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY5LW9iai0kKENPTkZJR19ORVRfQ0xTX1JPVVRFNClcXHQrPSBjbHNfcm91dGUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzowMS43MTg4MDc2NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM5MjcyNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIHUzMiBDbGFzc2lmaWVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgTkVUX0NMU19VMzJgLiBUaGF0IGNvbmZpZyBvcHRpb24gaXMgdGhlIGtleSB0byB0aGlzIHdob2xlIHRoaW5nLiBNeSBmaXJzdCBtb3ZlIGhlcmUgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUg4oCTIGluIHRoaXMgY2FzZSwgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmFsbCogdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYE5FVF9DTFNfVTMyYC4gV2hhdCBvdGhlciBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3Rpbmcgb3B0aW9ucz8gSXMgaXQgZGVwZW5kZW50IG9uIHNvbWUgbW9yZSBmb3VuZGF0aW9uYWwgbW9kdWxlcz8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29yayBzY2hlZHVsaW5nIGFyY2hpdGVjdHVyZS4gSXQncyB0aGUgb25seSB3YXkgdG8gYXZvaWQgYW55IG5hc3R5IHN1cnByaXNlcyBkb3duIHRoZSBsaW5lLiBUaGF0IEtjb25maWcgZmlsZSBpcyB3aGVyZSBhbGwgdGhlIHNlY3JldHMgcmVzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MDUuMjU4MDgxOTU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDc3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MDUuMzAzMTYzOTAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjgzMjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBORVRfQ0xTX1UzMmAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgTkVUX0NMU19VMzJgIGFjdHVhbGx5ICpkZXBlbmRzKiBvbi4gSSdtIG5vdCBnb2luZyB0byBtYWtlIGFzc3VtcHRpb25zLCBvciB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBhIHJlZCBoZXJyaW5nIGxhdGVyLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdzIHByb2JhYmx5IGEgaGFuZGZ1bCBvZiBrZXJuZWwgbW9kdWxlcyBpbnZvbHZlZCwgbWF5YmUgc29tZSBzcGVjaWZpYyBoZWFkZXJzLCBhbmQgZGVmaW5pdGVseSBzb21lIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc3RhY2s7IHdoYXQgYXJlIHRoZSBvdGhlciByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMsIGFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLCBhcmUgdGhlcmUgcmVsYXRlZCBtb2R1bGVzIG9yIGxpYnJhcmllcz8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgcmVsYXRlZCB0ZXJtcy4gVGhlbiwgSSdsbCB0cmFjZSB0aHJvdWdoIGFueSBtb2R1bGUgZGVwZW5kZW5jaWVzLiBJJ20gYWxzbyBnb2luZyB0byBzZWUgaWYgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBgTkVUX0NMU19VMzJgIGRlc2NyaWJlcyBleHRlcm5hbCBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBlYXN5IHRvIG1pc3MuIEkgd2FudCBhIGNvbXBsZXRlIG1hcCBvZiBpdHMgcHJlY29uZGl0aW9ucyBiZWZvcmUgSSBjb25zaWRlciB3aGF0IHRvIGRvIHdpdGggaXQuIFRoYXQga25vd2xlZGdlLCBhcyBhbHdheXMsIGlzIHRoZSBmb3VuZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTAuMDA5OTk4NDgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0c1xcbiA1MTE6XFx0XFx0ICBhY2NvcmRpbmcgdG8gbmV0ZmlsdGVyL2ZpcmV3YWxsIG1hcmtzLlxcbiA1MTI6XFx0XFxuIDUxMzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTE0OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNsc19mdy5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIE5FVF9DTFNfVTMyXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuIDUxODpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA1MTk6XFx0XFx0aGVscFxcbiA1MjA6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0cyB1c2luZyBhIHVuaXZlcnNhbFxcbiA1MjE6XFx0XFx0ICAzMmJpdCBwaWVjZXMgYmFzZWQgY29tcGFyaXNvbiBzY2hlbWUuXFxuIDUyMjpcXHRcXG4gNTIzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA1MjQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX3UzMi5cXG4gNTI1OlxcdFxcbiA1MjY6XFx0Y29uZmlnIENMU19VMzJfUEVSRlxcbiA1Mjc6XFx0XFx0Ym9vbCBcXFwiUGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFxcXCJcXG4gNTI4OlxcdFxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG4gNTI5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTAuMDEwMDcyMjYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0NTE2NzcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5FVF9DTFMgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX0NMU2AuICBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBzZWxlY3Rpb24gY3JpdGVyaWEuIEl0IGRvZXNuJ3QgYXBwZWFyIHRvIGJlIHRpZWQgdG8gYW55dGhpbmcgaW5jcmVkaWJseSBzcGVjaWZpYywganVzdCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiAgVGhhdCdzIGdlbmVyYWxseSB3aGF0IEknZCBleHBlY3Q7IGl0IHNob3VsZCBiZSBwcmV0dHkgZnVuZGFtZW50YWwuXG5cbkhtbSwgaGFuZyBvbiBhIHNlY29uZC4uLiBgTkVUX0NMU19VMzJgIOKAkyBpc24ndCB0aGF0IHBhcnQgb2YgdGhlIHRyYWZmaWMgY29udHJvbCBvcHRpb25zIHVuZGVyIHRoZSBgTkVUX1NDSEVEYCBtZW51IGluIGBtZW51Y29uZmlnYD8gIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gIEJlc3QgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3ksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBrZWVwIG15IGR1Y2tzIGluIGEgcm93IHdpdGggdGhlc2UgY29uZmlnIG9wdGlvbnMuIExldCdzIHNlZS4uLiBJJ2xsIHB1bGwgdXAgdGhlIHJlbGV2YW50IG1lbnVzIGFuZCB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjE0LjQ1NTI0MTkzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2ODIwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjE0LjQ5NjkzNDQ2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTk2NTU2MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX1UzMmAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgTkVUX1NDSEVEYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gR29vZC4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYE5FVF9DTFNfVTMyYCBoYXMgYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBidXQgaXQgZG9lc24ndCBzZWVtIHRvLiBKdXN0IHRob3NlIHR3bywgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSG1tLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggdG91Y2hlcyBgdTMyX2luaXRgLCBgZ2VuX25ld19raWRgLCBgdTMyX2tpZF9leHRhY2tgLCBhbmQgYHUzMl9jaGFuZ2VgLiBSaWdodCwgc28gYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgIGxvb2sgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIFNpbmNlIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfa2lkX2V4dGFja2AgYXJlIHN0YXRpYywgdGhleSBjYW4gcHJvYmFibHkgYmUgdW5kZXJzdG9vZCB0aHJvdWdoIHRoZWlyIHVzZSBpbiB0aGUgcHVibGljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzoxOS4wOTM0OTMyNjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjExOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInUzMl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuYz0zNTE9c3RhdGljIHN0cnVjdCB0Y191X2NvbW1vbiAqdGNfdV9jb21tb25fZmluZCh2b2lkICprZXkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTM2MC1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjM2MTpzdGF0aWMgaW50IHUzMl9pbml0KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYyLXtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9NDE2PXN0YXRpYyB2b2lkIHUzMl9kZXN0cm95X2tleShzdHJ1Y3QgdGNfdV9rbm9kZSAqbiwgYm9vbCBmcmVlX3BmKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy00MzAtLyogdTMyX2RlbGV0ZV9rZXlfcmN1IHNob3VsZCBiZSBjYWxsZWQgd2hlbiBmcmVlJ2luZyBhIGNvcGllZFxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDMxOiAqIHZlcnNpb24gb2YgYSB0Y191X2tub2RlIG9idGFpbmVkIGZyb20gdTMyX2luaXRfa25vZGUoKS4gV2hlblxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDMyOiAqIGNvcGllcyBhcmUgb2J0YWluZWQgZnJvbSB1MzJfaW5pdF9rbm9kZSgpIHRoZSBzdGF0aXN0aWNzIGFyZVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDMzLSAqIHNoYXJlZCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjb3BpZXMgdG8gYWxsb3cgcmVhZGVycyB0b1xcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz00Mzg9c3RhdGljIHZvaWQgdTMyX2RlbGV0ZV9rZXlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQ1MC0gKiBwZXJjcHUgdmFyaWFibGVzLiBPbmx5IHVzZSB0aGlzIGlmIHRoZSBrZXkgaXMgbm90IGEgY29weVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDUxOiAqIHJldHVybmVkIGJ5IHUzMl9pbml0X2tub2RlKCkuIFNlZSB1MzJfZGVsZXRlX2tleV9yY3UoKVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUyLSAqIGZvciB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSB1c2VkIHdpdGgga2V5cyByZXR1cm4gZnJvbVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDUzOiAqIHUzMl9pbml0X2tub2RlKClcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQ1NC0gKi9cXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODEwPXN0YXRpYyB2b2lkIHUzMl9yZXBsYWNlX2tub2RlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgdGNfdV9jb21tb24gKnRwX2MsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTgzNi1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjgzNzpzdGF0aWMgc3RydWN0IHRjX3Vfa25vZGUgKnUzMl9pbml0X2tub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxubmV0L3NjaGVkL2Nsc191MzIuYy04MzgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0Y191X2tub2RlICpuKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz04ODg9c3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTM5LVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6OTQwOlxcdFxcdG5ldyA9IHUzMl9pbml0X2tub2RlKG5ldCwgdHAsIG4pO1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTQxLVxcdFxcdGlmICghbmV3KVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDg5PXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDkxLVxcdC5jbGFzc2lmeVxcdD1cXHR1MzJfY2xhc3NpZnksXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDkyOlxcdC5pbml0XFx0XFx0PVxcdHUzMl9pbml0LFxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5My1cXHQuZGVzdHJveVxcdD1cXHR1MzJfZGVzdHJveSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTkuMTM5MTA3MjQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjU1NDM5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgSW5saW5pbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAuIFRoZXkncmUgKnN0YXRpYyosIGJ1dCB0aGV5J3JlIGJlaW5nIGFzc2lnbmVkIHRvIGBjbHNfdTMyX29wc2AsIHdoaWNoIGlzIGEgYHRjZl9wcm90b19vcHNgIHN0cnVjdC4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGlmIHRoZXNlIHdlcmUgZnVsbHkgaW5saW5lZCBiZWluZyBzdGF0aWMsIHRoZW4gdGhleSB3b3VsZG4ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucy4gSG93ZXZlciwgc2luY2Ugd2UncmUgKnRha2luZyB0aGVpciBhZGRyZXNzKiBhbmQgYXNzaWduaW5nIHRoZW0gdG8gZnVuY3Rpb24gcG9pbnRlcnMgKGluIGBjbHNfdTMyX29wc2ApLCB0aGUgY29tcGlsZXIgKmNhbid0KiBpbmxpbmUgdGhlbSBjb21wbGV0ZWx5LiBUaGlzIGlzIGtleS4gVGhlIGFkZHJlc3MgYXNzaWdubWVudCBwcmV2ZW50cyBjb21wbGV0ZSBpbmxpbmluZy5cblxuU28sIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBiZWNhdXNlIHdlJ3JlIGFzc2lnbmluZyB0aGVpciBhZGRyZXNzZXMsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCAqYXJlKiBiZWhhdmluZyBsaWtlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhpcyBtb2R1bGUuIFRoZSBjb21waWxlciBoYXMgdG8gcHJvdmlkZSBhIHN5bWJvbCBhZGRyZXNzIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgYWRkcmVzcyBiZWluZyB0YWtlbiwgdGhleSBhcmUgdGhlIEFQSSBlbnRyeXBvaW50cywgZXZlbiBpZiB0aGV5IGFyZSBzdGF0aWMuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzoyNC4zNjQ2NTMzNDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTYxMzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsc191MzJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuYz0xMzc2PXN0YXRpYyBpbnQgdTMyX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdm9pZCAqZmgsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0ODgtXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDg5OnN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5MC1cXHQua2luZFxcdFxcdD1cXHRcXFwidTMyXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTUwNT1zdGF0aWMgaW50IF9faW5pdCBpbml0X3UzMih2b2lkKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTIzLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTUyNDpcXHRyZXQgPSByZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFxcdTAwMjZjbHNfdTMyX29wcyk7XFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTI1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE1MzA9c3RhdGljIHZvaWQgX19leGl0IGV4aXRfdTMyKHZvaWQpXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMxLXtcXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE1MzI6XFx0dW5yZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFxcdTAwMjZjbHNfdTMyX29wcyk7XFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMzLVxcdGt2ZnJlZSh0Y191X2NvbW1vbl9oYXNoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MjQuNDA4ODE4NTIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Njk2MzIxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdTMyYCBDbGFzc2lmaWVyIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHUzMmAgY2xhc3NpZmllciBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMuIFJpZ2h0IGF3YXksIEkgc2VlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYC4gVGhleSdyZSBzdGF0aWMsIGJ1dCB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgZGlzcXVhbGlmeSB0aGVtLiBUaGV5IHNlZW0gdG8gYmUgdGhlIG1haW4gY2FsbGJhY2tzLCB0aGUgcHJpbWFyeSB3YXkgdGhlIGNsYXNzaWZpZXIgaXMgaW50ZXJhY3RlZCB3aXRoLiBMZXQgbWUganVzdCBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcHJvbWluZW50IGZ1bmN0aW9ucyBsdXJraW5nIGFib3V0LlxuXG5BbHJpZ2h0LCBhZnRlciBhIHF1aWNrIGNoZWNrLCBJJ20gY29uZmlkZW50IGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgdGhlIGNhbmRpZGF0ZXMgSSBuZWVkLiBJJ2xsIGFkZCB0aG9zZSB0byB0aGUgYEZvY3VzU3ltYm9sc2AuXG5cbldhaXQgYSBtaW51dGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgeWVzIGB1MzJfaW5pdGAgaXMgc3RhdGljLiBCdXQsIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gU28gdGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciEgSXQgc2VlbXMgbGlrZSB0aGVzZSBhcmUgc3RpbGwgdGhlIGNvcnJlY3QgZnVuY3Rpb25zIHRvIGluY2x1ZGUuXG5cbkhhbmcgb24uIE9rYXksIHJpZ2h0LCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zISBOb3cgSSBzZWUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgbm90IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMg4oCTIHRoZXkgKmFyZSogdGhlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIGB1MzJgIGNsYXNzaWZpZXIg4oCTIHRoaXMgY29uZmlybXMgdGhleSBhcmUgYWJzb2x1dGVseSB0aGUgcmlnaHQgY2hvaWNlcy4gSSdtIGdvb2QgdG8gZ28gd2l0aCB0aG9zZS5cblxuTGV0J3MgbW92ZSBvbiBhbmQgY2hlY2sgdGhlIGBORVRfU0NIRURgIGNvbmZpZyBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgwNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozMC4yNzg0NTMyNzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzA4NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjMwLjMyMTc2NDkyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTcyOTg5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLCB0aGlua2luZyB0aHJvdWdoIGl0IGxpa2UgSSB3b3VsZCBvbiB0aGUgZmx5OlxuXG4qKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBzbyBJIHNlZSBgTkVUX1NDSEVEYCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBib29sZWFuIOKAkyBlaXRoZXIgZW5hYmxlZCBvciBkaXNhYmxlZCwgbm90aGluZyBjb21wbGV4IHRoZXJlLiBCdXQgYE5FVF9DTFNfVTMyYCBpcyBhIHRyaXN0YXRlLCB0aGF0IHN1Z2dlc3RzIGl0IGhhcyBtb3JlIG51YW5jZS4gR2l2ZW4gdGhhdCwgYW5kIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQsIGl0J3MgcHJldHR5IGNsZWFyIHRvIG1lIHRoYXQgYm90aCBuZWVkIHRvIGJlIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gYnJhaW5lciB0aGVyZSwgcmVhbGx5LlxuXG5Ob3csIG15IGd1dCB0ZWxscyBtZSBgTkVUX0NMU19VMzJgIG1pZ2h0IGhhdmUgYSBmZXcgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kLiBUcmlzdGF0ZSBvcHRpb25zIG9mdGVuIGRvLiBJdCdzIHRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgdHJpcCB1cyB1cC4gR290dGEgbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0J3Mgc2VlIHdoYXQgZWxzZSBgTkVUX0NMU19VMzJgIGlzIHRpZWQgdG8uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjM0Ljc3OTA2NjE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcwMjU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXFxubmV0L3NjaGVkL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctMzUwLVxcdHNlbGVjdCBORVRfWEdSRVNTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNDA3LVxcdGJvb2wgXFxcIkJQRi1iYXNlZCBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxubmV0L3NjaGVkL0tjb25maWctNDA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctNDk3LVxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cXHRib29sIFxcXCJQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTI5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXFxubmV0L3NjaGVkL0tjb25maWctNTM0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBtYXJrcyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTM2LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXFxubmV0L3NjaGVkL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gQ0dST1VQU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXFx0aW50IFxcXCJTdGFjayBzaXplXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXFxubmV0L3NjaGVkL0tjb25maWctNjE2LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiTXVsdGkgYnl0ZSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cXHR0cmlzdGF0ZSBcXFwiVTMyIGtleVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjM4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXFxubmV0L3NjaGVkL0tjb25maWctNjQ2LVxcdHRyaXN0YXRlIFxcXCJNZXRhZGF0YVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXFxubmV0L3NjaGVkL0tjb25maWctNjU3LVxcdHRyaXN0YXRlIFxcXCJUZXh0c2VhcmNoXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXFx0c2VsZWN0IFRFWFRTRUFSQ0hcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cXHR0cmlzdGF0ZSBcXFwiQ0FOIElkZW50aWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjcyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXFxubmV0L3NjaGVkL0tjb25maWctNjczLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cXHR0cmlzdGF0ZSBcXFwiSVBzZXRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjgyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiBJUF9TRVRcXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cXHR0cmlzdGF0ZSBcXFwiSVB0YWJsZXMgTWF0Y2hlc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxubmV0L3NjaGVkL0tjb25maWctNzE2LVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzI3LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0JcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXFx0Ym9vbCBcXFwiUHJvYmFiaWxpdHkgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXFxubmV0L3NjaGVkL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFNhbXBsaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzU1LVxcdHNlbGVjdCBQU0FNUExFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzY3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzc2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBFeGFtcGxlIChEZWJ1ZylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzg1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXFx0dHJpc3RhdGUgXFxcIlNLQiBFZGl0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODAwLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXFxubmV0L3NjaGVkL0tjb25maWctODA5LVxcdHRyaXN0YXRlIFxcXCJDaGVja3N1bSBVcGRhdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctODExLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cXHR0cmlzdGF0ZSBcXFwiTVBMUyBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODIxOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXFx0dHJpc3RhdGUgXFxcIlZsYW4gbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXFx0dHJpc3RhdGUgXFxcIkJQRiBiYXNlZCBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODQzOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODU0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXFxubmV0L3NjaGVkL0tjb25maWctODgzLVxcdHRyaXN0YXRlIFxcXCJza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODg1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXFx0dHJpc3RhdGUgXFxcIkludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cXHRzZWxlY3QgTkVUX0lGRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXFx0dHJpc3RhdGUgXFxcIklQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTA4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxubmV0L3NjaGVkL0tjb25maWctOTIwLVxcdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXFxubmV0L3NjaGVkL0tjb25maWctOTQzLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTQ0OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXFxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTUzLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXFx0Ym9vbCBcXFwiVEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTU3LVxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozNC44MjI3NzQ3MDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzA5MDg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5FVF9DTFNfVTMyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYE5FVF9DTFNfVTMyYCBjb25maWcgb3B0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCBzZWVtcyBwcmV0dHkgc3RhbmRhbG9uZS4gSXQncyBnb3Qgbm8gZGVwZW5kZW5jaWVzIGxpc3RlZCwgYXBhcnQgZnJvbSBiZWluZyB1bmRlciBgTkVUX1NDSEVEYC4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIGBORVRfU0NIRURgLi4uIHRoYXQncyBqdXN0IGEgbWVudWNvbmZpZywgaXNuJ3QgaXQ/IEl0J3Mgbm90IGEgcmVhbCBtb2R1bGUgb3IgYSBjb3JlIGZ1bmN0aW9uLCBtb3JlIG9mIGEgdG9wLWxldmVsIGdyb3VwaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyAqaGlkZGVuKiBkZXBlbmRlbmNpZXMsIHNvIEkgbmVlZCB0byBrbm93IGlmIGBORVRfU0NIRURgIGl0c2VsZiByZWxpZXMgb24gYW55dGhpbmcgZWxzZS4gVGltZSB0byBnbyBzcGVsdW5raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgYG1lbnVjb25maWcgTkVUX1NDSEVEYC4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgbHVya2luZyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozOC41MzU4Njc2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwODkxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjM4LjU3OTk2MDIwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc4MzAzNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSB1MzIgQ2xhc3NpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkZXBlbmRlbmNpZXM7IHRoYXQncyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQuIFRoZSByZWxldmFudCBFbmFibGVDb25maWdzIGFyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9DTFNfVTMyYCwgYXMgZXhwZWN0ZWQuXG5cbk15IGZvY3VzIGlzIGRyYXduIHRvIHRoZXNlIHN5bWJvbHM6IGB1MzJfaW5pdGAsIGFuZCBgdTMyX2NoYW5nZWAuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IGtleSB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSB1MzIgY2xhc3NpZmllci4gSXQgc2VlbXMgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmVuJ3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgbGVkIHRvIHBvdGVudGlhbCBzaWxlbnQgZmFpbHVyZXMgb3IgY29tcGxldGVseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGEgdmVyeSBuYXN0eSBidWcuXG5cblRoZSBjaGFuZ2VzIGZvY3VzIG9uIGFkZGluZyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgaW4gYGdlbl9uZXdfa2lkYCBhbmQgYHUzMl9pbml0YC4gRnVydGhlcm1vcmUsIGl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGlzIHByb3Blcmx5IHByb3BhZ2F0ZWQgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gQmVjYXVzZSB0aGlzIGltcGFjdHMgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgYW5kIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWZ0ZXIgYWxsLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcuIExvb2tzIGxpa2UgYHUzMl9kZWxldGVgIGlzIHVudG91Y2hlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZSBjb2RlIGlzIGFkZGluZyBgdTMyX2tpZF9leHRhY2tgIGFuZCBpdCdzIG1vZGlmeWluZyBgZ2VuX25ld19raWRgLCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAgd2hpY2ggY29uZmlybXMgbXkgaW5pdGlhbCBvYnNlcnZhdGlvbnMuXG5cbk9rYXksIEknbSBzYXRpc2ZpZWQuIEknbGwgdXNlIGBzZXQtcmVzdWx0c2Agbm93IHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBvdXRwdXQgd2l0aCB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM1NiwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6NDUuMDU4MjY2NzQzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2MDcwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1MzJfaW5pdFwiLFxuICAgIFwidTMyX2NoYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMjg4MDQ0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk2NDA1NTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMzI5NDU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTYzNjM4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4rXHRpZiAocm9vdF9odC1cdTAwM2VoYW5kbGUgPT0gMCkge1xuK1x0XHRrZnJlZShyb290X2h0KTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXHRyb290X2h0LVx1MDAzZXByaW8gPSB0cC1cdTAwM2VwcmlvO1xuIFx0cm9vdF9odC1cdTAwM2Vpc19yb290ID0gdHJ1ZTtcbiBcdGlkcl9pbml0KFx1MDAyNnJvb3RfaHQtXHUwMDNlaGFuZGxlX2lkcik7XG5AQCAtNjk1LDIxICs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXG4rc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuK1x0KmVyciA9IDA7XG4rXG4gXHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xuIFx0XHRpbmRleCA9IGh0aWQgKyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuK1x0XHQqZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuK1x0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCplcnIpXG4rXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4gXHRyZXR1cm4gaW5kZXg7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdTMyX2tpZF9leHRhY2soaW50IGVyciwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdGlmIChlcnIgPT0gLUVOT1NQQylcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcIik7XG4rXHRlbHNlXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiRmFpbGVkIHRvIGFsbG9jYXRlIG5vZGUgSURcIik7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCArIDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgKzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHtcbi1cdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCk7XG4rXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aGFuZGxlID0gaHRpZCB8IFRDX1UzMl9OT0RFKGhhbmRsZSk7XG4gXHRcdFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZoYW5kbGUsXG5AQCAtMTA5MSw3ICsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4gXHRcdCAqIGZyb20gdGhlIHRhYmxlJ3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuK1x0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSArMzUzLDI4IEBAXG4gICAgICAgICBcInRlYXJkb3duXCI6IFtcbiAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclwiXG4gICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCI3MGZkXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImZpbHRlclwiLFxuKyAgICAgICAgICAgIFwidTMyXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgY2xzYWN0XCIsXG4rICAgICAgICAgICAgXCJiYXNoIC1jICdmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJ1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzc1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJmaCA4MDA6OlwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiNDA5NVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMzI5NTQ1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTYzNjIwMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEV2YWx1YXRpb246IHUzMiBQYWNrZXQgQ2xhc3NpZmllciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGUgYSBmdWxsLWJsb3duIEtNU0FOIGZ1enppbmcgc2Vzc2lvbj8gSXQgdG91Y2hlcyBgbmV0L3NjaGVkL2Nsc191MzIuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGhhbmRsZSBJRCBhbGxvY2F0aW9uLiBXZSdyZSBsb29raW5nIGF0IGBnZW5fbmV3X2h0aWRgIGFuZCBgZ2VuX25ld19raWRgLCB3aXRoIGFuIGFkZGVkIHNlbGZ0ZXN0IGZvciB0aGUgbm9kZSBJRCBwb29sIGV4aGF1c3Rpb24gc2NlbmFyaW8uXG5cbkxvb2tpbmcgY2xvc2VyLCB0aGUgZmlyc3QgY2hhbmdlIGluIGB1MzJfaW5pdGAgc2VlbXMgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGludmFsaWQgaGFuZGxlIHVzYWdlIGJ5IGNoZWNraW5nIHRoZSByZXR1cm4gb2YgYGdlbl9uZXdfaHRpZGAgYW5kIGZyZWVpbmcgYHJvb3RfaHRgIGFuZCByZXR1cm5pbmcgYC1FTk9NRU1gIGlmIGl0IHJldHVybnMgMC5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIGluIGBnZW5fbmV3X2tpZGAuIFRoaXMgcmVmYWN0b3JzIGhvdyB3ZSBoYW5kbGUgSUQgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSW5zdGVhZCBvZiBzaWxlbnRseSByZXR1cm5pbmcgYG1heGAgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYnVncyBkb3duIHRoZSBsaW5lIGJ5IG5vdCBhY3R1YWxseSBmYWlsaW5nKSwgaXQgbm93IHByb3Blcmx5IHJlcG9ydHMgYW4gZXJyb3IgY29kZSB2aWEgdGhlIGBlcnJgIHBvaW50ZXIuIFRoaXMgaXMgcHVyZSBjb250cm9sLWZsb3cgY2hhbmdlLCB3aGljaCwgd2hpbGUgaW1wb3J0YW50LCBkb2Vzbid0IGluaGVyZW50bHkgaW50cm9kdWNlIHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgaXNzdWVzIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5GaW5hbGx5LCBpbiBgdTMyX2NoYW5nZWAsIHdlIHNlZSB0aGUgdXBkYXRlZCBjYWxsIHRvIGBnZW5fbmV3X2tpZGAsIG5vdyBjaGVja2luZyB0aGUgYGVycmAgdmFyaWFibGUgYW5kIHJldHVybmluZyBmcm9tIHRoZSBmdW5jdGlvbiBvbiBmYWlsdXJlLlxuXG5NeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24g4oCTIHRoaW5ncyBsaWtlIGR1cGxpY2F0ZSBJRHMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzIGluIGVkZ2UgY2FzZXMuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgZm9yIEtNU0FOLiBJIGRvbid0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8gbGVha3MsIG9yIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGZpeCBhZGRyZXNzZXMgYW4gZXhpc3RpbmcgSUQgYWxsb2NhdGlvbiBmYWlsdXJlLCBub3QgYSBuZXcgY2xhc3Mgb2YgbWVtb3J5IGJ1Z3MuIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgT09CIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGVycmAgaXMgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIFl1cCwgYGludCBlcnI7YCBpcyBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQgY29ycmVjdGx5IGluIGB1MzJfY2hhbmdlYC4gQWxzbywgYCplcnIgPSAwO2AgaXMgc2V0IHdpdGhpbiBgZ2VuX25ld19raWRgLiBTbywgbm8gaW1tZWRpYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBwYXRjaCBpcyBtb3JlIGFib3V0IHByZXZlbnRpbmcgbG9naWNhbCBlcnJvcnMgcmVsYXRlZCB0byBJRCBhbGxvY2F0aW9uLCByYXRoZXIgdGhhbiBpbnRyb2R1Y2luZyBuZXcgbWVtb3J5IHNhZmV0eSBjb25jZXJucy4gV2UgY2FuIHJlbHkgb24gc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gdG8gY2F0Y2ggYW55IHJlZ3Jlc3Npb25zLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzbid0IGp1c3RpZmllZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzcxLCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjU4LjA5NjkxODI3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIHdpdGggSUQgYWxsb2NhdGlvbiBleGhhdXN0aW9uIGluIHRoZSB1MzIgcGFja2V0IGNsYXNzaWZpZXIgKGBnZW5fbmV3X2tpZGAgYW5kIGBnZW5fbmV3X2h0aWRgKS4gSXQgYWRkcyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByb3BhZ2F0aW9uIHdoZW4gdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCBvciBkdXBsaWNhdGUgaGFuZGxlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGFuZCBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 08:22:41 +0000 UTC FinishedAt: 2026-08-25 09:13:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32" ], "series_id": "e0e20c4d-7805-41b5-81ff-1b84a431ea27" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "u32_init", "u32_change" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3UzMl9pbml0JiMzNDssCiAgICAmIzM0O3UzMl9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NWUyZDQzNDJiZDk5ZmNiOTViN2M1YTQ0ZmMyNzY2YTVmY2VkOWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDk6MTI6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmNcbmluZGV4IGFjNmQwZmE1YTQwZTMuLmEzZTY1YzhjZjI5ZWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMzcwLDYgJiM0MzszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4mIzQzO1x0aWYgKHJvb3RfaHQtXHUwMDNlaGFuZGxlID09IDApIHtcbiYjNDM7XHRcdGtmcmVlKHJvb3RfaHQpO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0fVxuIFx0cm9vdF9odC1cdTAwM2VwcmlvID0gdHAtXHUwMDNlcHJpbztcbiBcdHJvb3RfaHQtXHUwMDNlaXNfcm9vdCA9IHRydWU7XG4gXHRpZHJfaW5pdChcdTAwMjZyb290X2h0LVx1MDAzZWhhbmRsZV9pZHIpO1xuQEAgLTY5NSwyMSAmIzQzOzY5OSwzMyBAQCBzdGF0aWMgaW50IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmFyZywgYm9vbCAqbGFzdCxcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZClcbiYjNDM7c3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuJiM0MztcdCplcnIgPSAwO1xuJiM0MztcbiBcdGlmIChpZHJfYWxsb2NfdTMyKFx1MDAyNmh0LVx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFx1MDAyNmluZGV4LCBtYXgsIEdGUF9LRVJORUwpKSB7XG4gXHRcdGluZGV4ID0gaHRpZCAmIzQzOyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuJiM0MztcdFx0KmVyciA9IGlkcl9hbGxvY191MzIoXHUwMDI2aHQtXHUwMDNlaGFuZGxlX2lkciwgTlVMTCwgXHUwMDI2aW5kZXgsIG1heCxcbiYjNDM7XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0aWYgKCplcnIpXG4mIzQzO1x0XHRcdHJldHVybiAwO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGluZGV4O1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRpZiAoZXJyID09IC1FTk9TUEMpXG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcJiMzNDspO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEXCYjMzQ7KTtcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICYjNDM7IDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgJiM0MzsxMDk1LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0ICogaGFuZGxlIHdoaWNoIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG1hdGNoIGVudHJ5LlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFUQ19VMzJfTk9ERShoYW5kbGUpKSB7XG4tXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuJiM0MztcdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGhhbmRsZSA9IGh0aWQgfCBUQ19VMzJfTk9ERShoYW5kbGUpO1xuIFx0XHRcdGVyciA9IGlkcl9hbGxvY191MzIoXHUwMDI2aHQtXHUwMDNlaGFuZGxlX2lkciwgTlVMTCwgXHUwMDI2aGFuZGxlLFxuQEAgLTEwOTEsNyAmIzQzOzExMDksOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQvKiBUaGUgdXNlciBkaWQgbm90IGdpdmUgdXMgYSBoYW5kbGU7IGxldHMganVzdCBnZW5lcmF0ZSBvbmVcbiBcdFx0ICogZnJvbSB0aGUgdGFibGUmIzM5O3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuJiM0MztcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSAmIzQzOzM1MywyOCBAQFxuICAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiAgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkREVWMSBwYXJlbnQgcm9vdCBkcnJcJiMzNDtcbiAgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0OzcwZmRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHUzMiBmaWx0ZXIgd2hlbiBub2RlIElEIHBvb2wgaXMgZXhoYXVzdGVkICg0MDk2dGggZmlsdGVyIHJlamVjdGVkKVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtmaWx0ZXJcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3UzMlwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogXCYjMzQ7bnNQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3RcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2Jhc2ggLWMgJiMzOTtmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJiMzOTtcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgLWQgZmlsdGVyIHNob3cgZGV2ICREVU1NWSBpbmdyZXNzXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7ZmggODAwOjpcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7NDA5NVwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuICAgICB9XG4gXVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfaW5pdCYjMzQ7LAogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCmluZGV4IGFjNmQwZmE1YTQwZTMuLmEzZTY1YzhjZjI5ZWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfdTMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc191MzIuYwpAQCAtMzcwLDYgJiM0MzszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cCkKIAogCXJlZmNvdW50X3NldCgmYW1wO3Jvb3RfaHQtJmd0O3JlZmNudCwgMSk7CiAJcm9vdF9odC0mZ3Q7aGFuZGxlID0gdHBfYyA/IGdlbl9uZXdfaHRpZCh0cF9jLCByb290X2h0KSA6IGlkMmhhbmRsZSgwKTsKJiM0MzsJaWYgKHJvb3RfaHQtJmd0O2hhbmRsZSA9PSAwKSB7CiYjNDM7CQlrZnJlZShyb290X2h0KTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiAJcm9vdF9odC0mZ3Q7cHJpbyA9IHRwLSZndDtwcmlvOwogCXJvb3RfaHQtJmd0O2lzX3Jvb3QgPSB0cnVlOwogCWlkcl9pbml0KCZhbXA7cm9vdF9odC0mZ3Q7aGFuZGxlX2lkcik7CkBAIC02OTUsMjEgJiM0Mzs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkKQomIzQzO3N0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZCwgaW50ICplcnIpCiB7CiAJdTMyIGluZGV4ID0gaHRpZCB8IDB4ODAwOwogCXUzMiBtYXggPSBodGlkIHwgMHhGRkY7CiAKJiM0MzsJKmVyciA9IDA7CiYjNDM7CiAJaWYgKGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkgewogCQlpbmRleCA9IGh0aWQgJiM0MzsgMTsKLQkJaWYgKGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LAotCQkJCSBHRlBfS0VSTkVMKSkKLQkJCWluZGV4ID0gbWF4OwomIzQzOwkJKmVyciA9IGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtpbmRleCwgbWF4LAomIzQzOwkJCQkgICAgIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCplcnIpCiYjNDM7CQkJcmV0dXJuIDA7CiAJfQogCiAJcmV0dXJuIGluZGV4OwogfQogCiYjNDM7c3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlpZiAoZXJyID09IC1FTk9TUEMpCiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0hhc2ggdGFibGUgbm9kZSBJRCBwb29sIGV4aGF1c3RlZCYjMzQ7KTsKJiM0MzsJZWxzZQomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgbm9kZSBJRCYjMzQ7KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCAmIzQzOyAxXSA9IHsKIAlbVENBX1UzMl9DTEFTU0lEXQk9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW1RDQV9VMzJfSEFTSF0JCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKQEAgLTEwNzksNyAmIzQzOzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLAogCQkgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuCiAJCSAqLwogCQlpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHsKLQkJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTsKJiM0MzsJCQloYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgJmFtcDtlcnIpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCXJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7CiAJCX0gZWxzZSB7CiAJCQloYW5kbGUgPSBodGlkIHwgVENfVTMyX05PREUoaGFuZGxlKTsKIAkJCWVyciA9IGlkcl9hbGxvY191MzIoJmFtcDtodC0mZ3Q7aGFuZGxlX2lkciwgTlVMTCwgJmFtcDtoYW5kbGUsCkBAIC0xMDkxLDcgJiM0MzsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwKIAkJLyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lCiAJCSAqIGZyb20gdGhlIHRhYmxlJiMzOTtzIHBvb2wgb2Ygbm9kZWlkcy4KIAkJICovCi0JCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTsKJiM0MzsJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkLCAmYW1wO2Vycik7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7CiAJfQogCiAJaWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24KaW5kZXggYjJjYTlkNGU5OTFiZC4uZTJiMDNmMmI1ZTg5ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbgpAQCAtMzUzLDUgJiM0MzszNTMsMjggQEAKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyciYjMzQ7CiAgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzcwZmQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB1MzIgZmlsdGVyIHdoZW4gbm9kZSBJRCBwb29sIGlzIGV4aGF1c3RlZCAoNDA5NnRoIGZpbHRlciByZWplY3RlZCkmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZmlsdGVyJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDt1MzImIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiAmIzM0O25zUGx1Z2luJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O2Jhc2ggLWMgJiMzOTtmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJiMzOTsmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDsyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyAtZCBmaWx0ZXIgc2hvdyBkZXYgJERVTU1ZIGluZ3Jlc3MmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7ZmggODAwOjomIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzQwOTUmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGNsc2FjdCYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFUzMiBDbGFzc2lmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL2Nsc191MzIuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGFyZSBpbnRlcmVzdGluZy4gRXNzZW50aWFsbHksIGl0JiMzOTtzIG1ha2luZyB0aGUgYGdlbl9uZXdfa2lkYCBmdW5jdGlvbiBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgbW9yZSByb2J1c3QuIFByZXZpb3VzbHksIGlmIGBpZHJfYWxsb2NfdTMyYCBmYWlsZWQgdG8gYWxsb2NhdGUgYW4gSUQsIGl0IHdvdWxkIHNpbGVudGx5IHJldHVybiBlaXRoZXIgdGhlIG1heGltdW0gcG9zc2libGUgSUQgb3IgemVyby4gTm90IGlkZWFsLCBzaW5jZSB0aGlzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGhhcmQtdG8tZGVidWcgaXNzdWVzIGRvd24gdGhlIGxpbmUuCgpUaGlzIHBhdGNoIGZpeGVzIHRoYXQgYnkgbWFraW5nIGBnZW5fbmV3X2tpZGAgcmV0dXJuIGFuIGVycm9yIGRpcmVjdGx5LiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgdTMyX2luaXRgIGZvciB0aGUgY2FzZSB3aGVyZSBgcm9vdF9odC0mZ3Q7aGFuZGxlYCBpcyB6ZXJvIChsaWtlbHkgaW5kaWNhdGluZyBhbiBpc3N1ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24pLiBUbyBoZWxwIHdpdGggZGVidWdnaW5nLCBgdTMyX2tpZF9leHRhY2tgIGhhcyBiZWVuIGFkZGVkIHRvIHJldHVybiBhbiBleHRlbmRlZCBhY2sgbWVzc2FnZSwgd2hpY2ggaXMgYWx3YXlzIHVzZWZ1bC4gVGhlIGNvcmUgY2hhbmdlIGlzIGluIGB1MzJfY2hhbmdlYCwgd2hpY2ggbm93IGNvcnJlY3RseSBoYW5kbGVzIHRoZSBlcnJvciByZXR1cm5lZCBieSBgZ2VuX25ld19raWRgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZW5zdXJlcyB0aGF0IGVycm9yIHByb3BhZ2F0aW9uIGlzIGhhbmRsZWQgZ3JhY2VmdWxseS4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIHUzMiBjbGFzc2lmaWVyLiBVc2Vyc3BhY2UgY2FuIHJlYWNoIHRoaXMgY29kZSB2aWEgbmV0bGluayB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMsIHByb2JhYmx5IHdpdGggYSBjb21tYW5kIGxpa2UgYHRjIGZpbHRlciBhZGRgLiBHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBjb2RlIHRoYXQgY2FuIGJlIG1hbmlwdWxhdGVkIHRocm91Z2ggbmV0bGluayBmcm9tIHVzZXJzcGFjZSwgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSB1MzIgY2xhc3NpZmllciwgc28gSSYjMzk7bGwgY2hlY2sgYG5ldC9zY2hlZC9NYWtlZmlsZWAgZm9yIGBjbHNfdTMyLm9gIG9yIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZm9yIGBDT05GSUdfTkVUX0NMU19VMzJgLiBUaGlzJiMzOTtsbCBoZWxwIG1lIGJ1aWxkIGEgdGVzdCBzZXR1cCB0aGF0IHRyaWdnZXJzIHRoZSBhZmZlY3RlZCBjb2RlIHBhdGhzIHJlbGlhYmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xubmV0L3NjaGVkL0tjb25maWctNTM0LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTM1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTM2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02Nj1vYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVx0JiM0Mzs9IHNjaF9kdWFscGkyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cbm5ldC9zY2hlZC9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfTkVUX0NMU19VMzIpXHQmIzQzOz0gY2xzX3UzMi5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjktb2JqLSQoQ09ORklHX05FVF9DTFNfUk9VVEU0KVx0JiM0Mzs9IGNsc19yb3V0ZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIHUzMiBDbGFzc2lmaWVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBORVRfQ0xTX1UzMmAuIFRoYXQgY29uZmlnIG9wdGlvbiBpcyB0aGUga2V5IHRvIHRoaXMgd2hvbGUgdGhpbmcuIE15IGZpcnN0IG1vdmUgaGVyZSBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSDigJMgaW4gdGhpcyBjYXNlLCBgbmV0L3NjaGVkL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqYWxsKiB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgTkVUX0NMU19VMzJgLiBXaGF0IG90aGVyIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZD8gQXJlIHRoZXJlIGFueSBjb25mbGljdGluZyBvcHRpb25zPyBJcyBpdCBkZXBlbmRlbnQgb24gc29tZSBtb3JlIGZvdW5kYXRpb25hbCBtb2R1bGVzPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcGxhY2Ugd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgdGhlIG9ubHkgd2F5IHRvIGF2b2lkIGFueSBuYXN0eSBzdXJwcmlzZXMgZG93biB0aGUgbGluZS4gVGhhdCBLY29uZmlnIGZpbGUgaXMgd2hlcmUgYWxsIHRoZSBzZWNyZXRzIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19VMzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MzQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYE5FVF9DTFNfVTMyYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgTkVUX0NMU19VMzJgIGFjdHVhbGx5ICpkZXBlbmRzKiBvbi4gSSYjMzk7bSBub3QgZ29pbmcgdG8gbWFrZSBhc3N1bXB0aW9ucywgb3Igd2FzdGUgdGltZSBjaGFzaW5nIGRvd24gYSByZWQgaGVycmluZyBsYXRlci4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSBoYW5kZnVsIG9mIGtlcm5lbCBtb2R1bGVzIGludm9sdmVkLCBtYXliZSBzb21lIHNwZWNpZmljIGhlYWRlcnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzdGFjazsgd2hhdCBhcmUgdGhlIG90aGVyIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucywgYXJlIHRoZXJlIGFueSBoYXJkd2FyZSBzcGVjaWZpYyByZXF1aXJlbWVudHMsIGFyZSB0aGVyZSByZWxhdGVkIG1vZHVsZXMgb3IgbGlicmFyaWVzPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgcmVsYXRlZCB0ZXJtcy4gVGhlbiwgSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIHNlZSBpZiBhbnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIGBORVRfQ0xTX1UzMmAgZGVzY3JpYmVzIGV4dGVybmFsIGxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGVhc3kgdG8gbWlzcy4gSSB3YW50IGEgY29tcGxldGUgbWFwIG9mIGl0cyBwcmVjb25kaXRpb25zIGJlZm9yZSBJIGNvbnNpZGVyIHdoYXQgdG8gZG8gd2l0aCBpdC4gVGhhdCBrbm93bGVkZ2UsIGFzIGFsd2F5cywgaXMgdGhlIGZvdW5kYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHQgIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNsYXNzaWZ5IHBhY2tldHNcbiA1MTE6XHRcdCAgYWNjb3JkaW5nIHRvIG5ldGZpbHRlci9maXJld2FsbCBtYXJrcy5cbiA1MTI6XHRcbiA1MTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDUxNDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX2Z3LlxuIDUxNTpcdFxuIDUxNjpcdGNvbmZpZyBORVRfQ0xTX1UzMlxuIDUxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcJiMzNDtcbiA1MTg6XHRcdHNlbGVjdCBORVRfQ0xTXG4gNTE5Olx0XHRoZWxwXG4gNTIwOlx0XHQgIFNheSBZIGhlcmUgdG8gYmUgYWJsZSB0byBjbGFzc2lmeSBwYWNrZXRzIHVzaW5nIGEgdW5pdmVyc2FsXG4gNTIxOlx0XHQgIDMyYml0IHBpZWNlcyBiYXNlZCBjb21wYXJpc29uIHNjaGVtZS5cbiA1MjI6XHRcbiA1MjM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDUyNDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX3UzMi5cbiA1MjU6XHRcbiA1MjY6XHRjb25maWcgQ0xTX1UzMl9QRVJGXG4gNTI3Olx0XHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbiA1Mjg6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbiA1Mjk6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBORVRfQ0xTIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX0NMU2AuICBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBzZWxlY3Rpb24gY3JpdGVyaWEuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSB0aWVkIHRvIGFueXRoaW5nIGluY3JlZGlibHkgc3BlY2lmaWMsIGp1c3QgdGhlIGJyb2FkZXIgbmV0d29ya2luZyBjb25maWd1cmF0aW9ucy4gIFRoYXQmIzM5O3MgZ2VuZXJhbGx5IHdoYXQgSSYjMzk7ZCBleHBlY3Q7IGl0IHNob3VsZCBiZSBwcmV0dHkgZnVuZGFtZW50YWwuCgpIbW0sIGhhbmcgb24gYSBzZWNvbmQuLi4gYE5FVF9DTFNfVTMyYCDigJMgaXNuJiMzOTt0IHRoYXQgcGFydCBvZiB0aGUgdHJhZmZpYyBjb250cm9sIG9wdGlvbnMgdW5kZXIgdGhlIGBORVRfU0NIRURgIG1lbnUgaW4gYG1lbnVjb25maWdgPyAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiAgQmVzdCB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGtlZXAgbXkgZHVja3MgaW4gYSByb3cgd2l0aCB0aGVzZSBjb25maWcgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBwdWxsIHVwIHRoZSByZWxldmFudCBtZW51cyBhbmQgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX0NMU19VMzJgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfU0NIRURgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlbWVudCBoZXJlLiBHb29kLiBOb3csIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBgTkVUX0NMU19VMzJgIGhhcyBhbnkgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGJ1dCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvLiBKdXN0IHRob3NlIHR3bywgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSG1tLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggdG91Y2hlcyBgdTMyX2luaXRgLCBgZ2VuX25ld19raWRgLCBgdTMyX2tpZF9leHRhY2tgLCBhbmQgYHUzMl9jaGFuZ2VgLiBSaWdodCwgc28gYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgIGxvb2sgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIFNpbmNlIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfa2lkX2V4dGFja2AgYXJlIHN0YXRpYywgdGhleSBjYW4gcHJvYmFibHkgYmUgdW5kZXJzdG9vZCB0aHJvdWdoIHRoZWlyIHVzZSBpbiB0aGUgcHVibGljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTMyX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmM9MzUxPXN0YXRpYyBzdHJ1Y3QgdGNfdV9jb21tb24gKnRjX3VfY29tbW9uX2ZpbmQodm9pZCAqa2V5KVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYwLVxubmV0L3NjaGVkL2Nsc191MzIuYzozNjE6c3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYyLXtcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTQxNj1zdGF0aWMgdm9pZCB1MzJfZGVzdHJveV9rZXkoc3RydWN0IHRjX3Vfa25vZGUgKm4sIGJvb2wgZnJlZV9wZilcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQzMC0vKiB1MzJfZGVsZXRlX2tleV9yY3Ugc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZyZWUmIzM5O2luZyBhIGNvcGllZFxubmV0L3NjaGVkL2Nsc191MzIuYzo0MzE6ICogdmVyc2lvbiBvZiBhIHRjX3Vfa25vZGUgb2J0YWluZWQgZnJvbSB1MzJfaW5pdF9rbm9kZSgpLiBXaGVuXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjQzMjogKiBjb3BpZXMgYXJlIG9idGFpbmVkIGZyb20gdTMyX2luaXRfa25vZGUoKSB0aGUgc3RhdGlzdGljcyBhcmVcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDMzLSAqIHNoYXJlZCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjb3BpZXMgdG8gYWxsb3cgcmVhZGVycyB0b1xuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM9NDM4PXN0YXRpYyB2b2lkIHUzMl9kZWxldGVfa2V5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUwLSAqIHBlcmNwdSB2YXJpYWJsZXMuIE9ubHkgdXNlIHRoaXMgaWYgdGhlIGtleSBpcyBub3QgYSBjb3B5XG5uZXQvc2NoZWQvY2xzX3UzMi5jOjQ1MTogKiByZXR1cm5lZCBieSB1MzJfaW5pdF9rbm9kZSgpLiBTZWUgdTMyX2RlbGV0ZV9rZXlfcmN1KClcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUyLSAqIGZvciB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSB1c2VkIHdpdGgga2V5cyByZXR1cm4gZnJvbVxubmV0L3NjaGVkL2Nsc191MzIuYzo0NTM6ICogdTMyX2luaXRfa25vZGUoKVxubmV0L3NjaGVkL2Nsc191MzIuYy00NTQtICovXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz04MTA9c3RhdGljIHZvaWQgdTMyX3JlcGxhY2Vfa25vZGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCB0Y191X2NvbW1vbiAqdHBfYyxcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTgzNi1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6ODM3OnN0YXRpYyBzdHJ1Y3QgdGNfdV9rbm9kZSAqdTMyX2luaXRfa25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtODM4LVx0XHRcdFx0XHQgc3RydWN0IHRjX3Vfa25vZGUgKm4pXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz04ODg9c3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTkzOS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6OTQwOlx0XHRuZXcgPSB1MzJfaW5pdF9rbm9kZShuZXQsIHRwLCBuKTtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTQxLVx0XHRpZiAoIW5ldylcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE0ODk9c3RhdGljIHN0cnVjdCB0Y2ZfcHJvdG9fb3BzIGNsc191MzJfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDkxLVx0LmNsYXNzaWZ5XHQ9XHR1MzJfY2xhc3NpZnksXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE0OTI6XHQuaW5pdFx0XHQ9XHR1MzJfaW5pdCxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5My1cdC5kZXN0cm95XHQ9XHR1MzJfZGVzdHJveSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGFuZCBJbmxpbmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgLiBUaGV5JiMzOTtyZSAqc3RhdGljKiwgYnV0IHRoZXkmIzM5O3JlIGJlaW5nIGFzc2lnbmVkIHRvIGBjbHNfdTMyX29wc2AsIHdoaWNoIGlzIGEgYHRjZl9wcm90b19vcHNgIHN0cnVjdC4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTm93LCB0aGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpZiB0aGVzZSB3ZXJlIGZ1bGx5IGlubGluZWQgYmVpbmcgc3RhdGljLCB0aGVuIHRoZXkgd291bGRuJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBIb3dldmVyLCBzaW5jZSB3ZSYjMzk7cmUgKnRha2luZyB0aGVpciBhZGRyZXNzKiBhbmQgYXNzaWduaW5nIHRoZW0gdG8gZnVuY3Rpb24gcG9pbnRlcnMgKGluIGBjbHNfdTMyX29wc2ApLCB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogaW5saW5lIHRoZW0gY29tcGxldGVseS4gVGhpcyBpcyBrZXkuIFRoZSBhZGRyZXNzIGFzc2lnbm1lbnQgcHJldmVudHMgY29tcGxldGUgaW5saW5pbmcuCgpTbywgZGVzcGl0ZSBiZWluZyBzdGF0aWMsIGJlY2F1c2Ugd2UmIzM5O3JlIGFzc2lnbmluZyB0aGVpciBhZGRyZXNzZXMsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCAqYXJlKiBiZWhhdmluZyBsaWtlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhpcyBtb2R1bGUuIFRoZSBjb21waWxlciBoYXMgdG8gcHJvdmlkZSBhIHN5bWJvbCBhZGRyZXNzIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgYWRkcmVzcyBiZWluZyB0YWtlbiwgdGhleSBhcmUgdGhlIEFQSSBlbnRyeXBvaW50cywgZXZlbiBpZiB0aGV5IGFyZSBzdGF0aWMuCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xzX3UzMl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmM9MTM3Nj1zdGF0aWMgaW50IHUzMl9kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmZoLFxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ4OC1cbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ4OTpzdGF0aWMgc3RydWN0IHRjZl9wcm90b19vcHMgY2xzX3UzMl9vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5MC1cdC5raW5kXHRcdD1cdFwmIzM0O3UzMlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE1MDU9c3RhdGljIGludCBfX2luaXQgaW5pdF91MzIodm9pZClcbi0tXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE1MjMtXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE1MjQ6XHRyZXQgPSByZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFx1MDAyNmNsc191MzJfb3BzKTtcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTUyNS1cdGlmIChyZXQpXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNTMwPXN0YXRpYyB2b2lkIF9fZXhpdCBleGl0X3UzMih2b2lkKVxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMxLXtcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTUzMjpcdHVucmVnaXN0ZXJfdGNmX3Byb3RvX29wcyhcdTAwMjZjbHNfdTMyX29wcyk7XG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE1MzMtXHRrdmZyZWUodGNfdV9jb21tb25faGFzaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdTMyYCBDbGFzc2lmaWVyIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdTMyYCBjbGFzc2lmaWVyIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cy4gUmlnaHQgYXdheSwgSSBzZWUgYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGRpc3F1YWxpZnkgdGhlbS4gVGhleSBzZWVtIHRvIGJlIHRoZSBtYWluIGNhbGxiYWNrcywgdGhlIHByaW1hcnkgd2F5IHRoZSBjbGFzc2lmaWVyIGlzIGludGVyYWN0ZWQgd2l0aC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBwcm9taW5lbnQgZnVuY3Rpb25zIGx1cmtpbmcgYWJvdXQuCgpBbHJpZ2h0LCBhZnRlciBhIHF1aWNrIGNoZWNrLCBJJiMzOTttIGNvbmZpZGVudCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAgYXJlIHRoZSBjYW5kaWRhdGVzIEkgbmVlZC4gSSYjMzk7bGwgYWRkIHRob3NlIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4KCldhaXQgYSBtaW51dGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgeWVzIGB1MzJfaW5pdGAgaXMgc3RhdGljLiBCdXQsIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvIHRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyISBJdCBzZWVtcyBsaWtlIHRoZXNlIGFyZSBzdGlsbCB0aGUgY29ycmVjdCBmdW5jdGlvbnMgdG8gaW5jbHVkZS4KCkhhbmcgb24uIE9rYXksIHJpZ2h0LCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zISBOb3cgSSBzZWUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgbm90IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMg4oCTIHRoZXkgKmFyZSogdGhlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIGB1MzJgIGNsYXNzaWZpZXIg4oCTIHRoaXMgY29uZmlybXMgdGhleSBhcmUgYWJzb2x1dGVseSB0aGUgcmlnaHQgY2hvaWNlcy4gSSYjMzk7bSBnb29kIHRvIGdvIHdpdGggdGhvc2UuCgpMZXQmIzM5O3MgbW92ZSBvbiBhbmQgY2hlY2sgdGhlIGBORVRfU0NIRURgIGNvbmZpZyBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggaXQgbGlrZSBJIHdvdWxkIG9uIHRoZSBmbHk6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpSaWdodCwgc28gSSBzZWUgYE5FVF9TQ0hFRGAgaXMgYSBzdHJhaWdodGZvcndhcmQgYm9vbGVhbiDigJMgZWl0aGVyIGVuYWJsZWQgb3IgZGlzYWJsZWQsIG5vdGhpbmcgY29tcGxleCB0aGVyZS4gQnV0IGBORVRfQ0xTX1UzMmAgaXMgYSB0cmlzdGF0ZSwgdGhhdCBzdWdnZXN0cyBpdCBoYXMgbW9yZSBudWFuY2UuIEdpdmVuIHRoYXQsIGFuZCBsb29raW5nIGF0IHRoZSBjb250ZXh0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdG8gbWUgdGhhdCBib3RoIG5lZWQgdG8gYmUgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBicmFpbmVyIHRoZXJlLCByZWFsbHkuCgpOb3csIG15IGd1dCB0ZWxscyBtZSBgTkVUX0NMU19VMzJgIG1pZ2h0IGhhdmUgYSBmZXcgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kLiBUcmlzdGF0ZSBvcHRpb25zIG9mdGVuIGRvLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgaW50byB0aGUga2VybmVsIGNvbmZpZyBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCB0cmlwIHVzIHVwLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgYE5FVF9DTFNfVTMyYCBpcyB0aWVkIHRvLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVF9TQ0hfRlFfUElFXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzYtXHR0cmlzdGF0ZSBcJiMzNDtGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1Ncbm5ldC9zY2hlZC9LY29uZmlnLTM0OC1cdHRyaXN0YXRlIFwmIzM0O0luZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTM1MC1cdHNlbGVjdCBORVRfWEdSRVNTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDA2PWNvbmZpZyBORVRfU0NIX0JQRlxubmV0L3NjaGVkL0tjb25maWctNDA3LVx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQwODpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxubmV0L3NjaGVkL0tjb25maWctNDk1LVx0dHJpc3RhdGUgXCYjMzQ7Um91dGluZyBkZWNpc2lvbiAoUk9VVEUpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTI2PWNvbmZpZyBDTFNfVTMyX1BFUkZcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cdGJvb2wgXCYjMzQ7UGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTI4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTI5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy01MzQtXHRib29sIFwmIzM0O05ldGZpbHRlciBtYXJrcyBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1MzU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MzYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTUwPWNvbmZpZyBORVRfQ0xTX0NHUk9VUFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcbm5ldC9zY2hlZC9LY29uZmlnOjU1NDpcdGRlcGVuZHMgb24gQ0dST1VQU1xubmV0L3NjaGVkL0tjb25maWctNTU1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYwNT1jb25maWcgTkVUX0VNQVRDSF9TVEFDS1xubmV0L3NjaGVkL0tjb25maWctNjA2LVx0aW50IFwmIzM0O1N0YWNrIHNpemVcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjA4LVx0ZGVmYXVsdCBcJiMzNDszMlwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYxNT1jb25maWcgTkVUX0VNQVRDSF9DTVBcbm5ldC9zY2hlZC9LY29uZmlnLTYxNi1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBwYWNrZXQgZGF0YSBjb21wYXJpc29uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MjU9Y29uZmlnIE5FVF9FTUFUQ0hfTkJZVEVcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cdHRyaXN0YXRlIFwmIzM0O011bHRpIGJ5dGUgY29tcGFyaXNvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjI3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxubmV0L3NjaGVkL0tjb25maWctNjM2LVx0dHJpc3RhdGUgXCYjMzQ7VTMyIGtleVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjM3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MzgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjQ1PWNvbmZpZyBORVRfRU1BVENIX01FVEFcbm5ldC9zY2hlZC9LY29uZmlnLTY0Ni1cdHRyaXN0YXRlIFwmIzM0O01ldGFkYXRhXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTY0OC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NTY9Y29uZmlnIE5FVF9FTUFUQ0hfVEVYVFxubmV0L3NjaGVkL0tjb25maWctNjU3LVx0dHJpc3RhdGUgXCYjMzQ7VGV4dHNlYXJjaFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjU4Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXHRzZWxlY3QgVEVYVFNFQVJDSFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxubmV0L3NjaGVkL0tjb25maWctNjcxLVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIElkZW50aWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY3MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgKENBTj15IHx8IENBTj1tKVxubmV0L3NjaGVkL0tjb25maWctNjczLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxubmV0L3NjaGVkL0tjb25maWctNjgxLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZXRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY4MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgSVBfU0VUXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxubmV0L3NjaGVkL0tjb25maWctNjkxLVx0dHJpc3RhdGUgXCYjMzQ7SVB0YWJsZXMgTWF0Y2hlc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjkyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBORVRGSUxURVIgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXG5uZXQvc2NoZWQvS2NvbmZpZy02OTMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzE1PWNvbmZpZyBORVRfQUNUX1BPTElDRVxubmV0L3NjaGVkL0tjb25maWctNzE2LVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBQb2xpY2luZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzE3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcyODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MzY9Y29uZmlnIEdBQ1RfUFJPQlxubmV0L3NjaGVkL0tjb25maWctNzM3LVx0Ym9vbCBcJiMzNDtQcm9iYWJpbGl0eSBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzM5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc0Mj1jb25maWcgTkVUX0FDVF9NSVJSRURcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cdHRyaXN0YXRlIFwmIzM0O1JlZGlyZWN0aW5nIGFuZCBNaXJyb3JpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFNhbXBsaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NTQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXHRzZWxlY3QgUFNBTVBMRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcbm5ldC9zY2hlZC9LY29uZmlnLTc2NS1cdHRyaXN0YXRlIFwmIzM0O1N0YXRlbGVzcyBOQVRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc2Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NzQ9Y29uZmlnIE5FVF9BQ1RfUEVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBFeGFtcGxlIChEZWJ1ZylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc4NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxubmV0L3NjaGVkL0tjb25maWctNzk4LVx0dHJpc3RhdGUgXCYjMzQ7U0tCIEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgwMC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MDg9Y29uZmlnIE5FVF9BQ1RfQ1NVTVxubmV0L3NjaGVkL0tjb25maWctODA5LVx0dHJpc3RhdGUgXCYjMzQ7Q2hlY2tzdW0gVXBkYXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IElORVRcbm5ldC9zY2hlZC9LY29uZmlnLTgxMS1cdHNlbGVjdCBORVRfQ1JDMzJDXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODE5PWNvbmZpZyBORVRfQUNUX01QTFNcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cdHRyaXN0YXRlIFwmIzM0O01QTFMgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cdHRyaXN0YXRlIFwmIzM0O1ZsYW4gbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxubmV0L3NjaGVkL0tjb25maWctODQyLVx0dHJpc3RhdGUgXCYjMzQ7QlBGIGJhc2VkIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODQzOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODQ0LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg1Mz1jb25maWcgTkVUX0FDVF9DT05OTUFSS1xubmV0L3NjaGVkL0tjb25maWctODU0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBSZXRyaWV2ZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWc6ODU2Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xubmV0L3NjaGVkL0tjb25maWctODY2LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4Njc6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xubmV0L3NjaGVkL0tjb25maWctODY5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg4Mj1jb25maWcgTkVUX0FDVF9TS0JNT0Rcbm5ldC9zY2hlZC9LY29uZmlnLTg4My1cdHRyaXN0YXRlIFwmIzM0O3NrYiBkYXRhIG1vZGlmaWNhdGlvbiBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg4NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04OTM9Y29uZmlnIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlci1GRSBhY3Rpb24gYmFzZWQgb24gSUVURiBGb3JDRVMgSW50ZXJGRSBMRkJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg5NTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cdHNlbGVjdCBORVRfSUZFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcbm5ldC9zY2hlZC9LY29uZmlnLTkwNy1cdHRyaXN0YXRlIFwmIzM0O0lQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkwODpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MTc9Y29uZmlnIE5FVF9BQ1RfQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkxOC1cdHRyaXN0YXRlIFwmIzM0O2Nvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2ICghTkZfTkFUIHx8IE5GX05BVCkgXHUwMDI2XHUwMDI2IE5GX0ZMT1dfVEFCTEVcbm5ldC9zY2hlZC9LY29uZmlnLTkyMC1cdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTMwPWNvbmZpZyBORVRfQUNUX0dBVEVcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cdHRyaXN0YXRlIFwmIzM0O0ZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy05NDMtXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk0NDpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk0NS1cbm5ldC9zY2hlZC9LY29uZmlnPTk0Nj1jb25maWcgTkVUX0lGRV9TS0JQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBwcmlvIG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk0ODpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cbm5ldC9zY2hlZC9LY29uZmlnPTk1MD1jb25maWcgTkVUX0lGRV9TS0JUQ0lOREVYXG5uZXQvc2NoZWQvS2NvbmZpZy05NTEtXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiB0Y2luZGV4IG9uIElGRSBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTk1My1cbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcbm5ldC9zY2hlZC9LY29uZmlnLTk1NS1cdGJvb2wgXCYjMzQ7VEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NTY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTctXHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5FVF9DTFNfVTMyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgTkVUX0NMU19VMzJgIGNvbmZpZyBvcHRpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHNlZW1zIHByZXR0eSBzdGFuZGFsb25lLiBJdCYjMzk7cyBnb3Qgbm8gZGVwZW5kZW5jaWVzIGxpc3RlZCwgYXBhcnQgZnJvbSBiZWluZyB1bmRlciBgTkVUX1NDSEVEYC4gTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBgTkVUX1NDSEVEYC4uLiB0aGF0JiMzOTtzIGp1c3QgYSBtZW51Y29uZmlnLCBpc24mIzM5O3QgaXQ/IEl0JiMzOTtzIG5vdCBhIHJlYWwgbW9kdWxlIG9yIGEgY29yZSBmdW5jdGlvbiwgbW9yZSBvZiBhIHRvcC1sZXZlbCBncm91cGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gKmhpZGRlbiogZGVwZW5kZW5jaWVzLCBzbyBJIG5lZWQgdG8ga25vdyBpZiBgTkVUX1NDSEVEYCBpdHNlbGYgcmVsaWVzIG9uIGFueXRoaW5nIGVsc2UuIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgbHVya2luZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzU2CgkJCQkJCQlvdXRwdXQ6IDE1OAoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgdTMyIENsYXNzaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkZXBlbmRlbmNpZXM7IHRoYXQmIzM5O3MgZ29vZCB0byBrbm93IG9mZiB0aGUgYmF0LiBUaGUgcmVsZXZhbnQgRW5hYmxlQ29uZmlncyBhcmUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX1UzMmAsIGFzIGV4cGVjdGVkLgoKTXkgZm9jdXMgaXMgZHJhd24gdG8gdGhlc2Ugc3ltYm9sczogYHUzMl9pbml0YCwgYW5kIGB1MzJfY2hhbmdlYC4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoZXNlIGFyZSBsaWtlbHkga2V5IHRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgYWRkcmVzc2VkLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gdGhlIHUzMiBjbGFzc2lmaWVyLiBJdCBzZWVtcyBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZW4mIzM5O3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgbGVkIHRvIHBvdGVudGlhbCBzaWxlbnQgZmFpbHVyZXMgb3IgY29tcGxldGVseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGEgdmVyeSBuYXN0eSBidWcuCgpUaGUgY2hhbmdlcyBmb2N1cyBvbiBhZGRpbmcgcHJvcGVyIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0IGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAuIEZ1cnRoZXJtb3JlLCBpdCBsb29rcyBsaWtlIHRoZSBlcnJvciBpcyBwcm9wZXJseSBwcm9wYWdhdGVkIHZpYSBuZXRsaW5rIGV4dGFjayBpbiBgdTMyX2NoYW5nZWAuIEJlY2F1c2UgdGhpcyBpbXBhY3RzIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIGFuZCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgZnV6emluZyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhZnRlciBhbGwuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nLiBMb29rcyBsaWtlIGB1MzJfZGVsZXRlYCBpcyB1bnRvdWNoZWQsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGUgY29kZSBpcyBhZGRpbmcgYHUzMl9raWRfZXh0YWNrYCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIGBnZW5fbmV3X2tpZGAsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIG9ic2VydmF0aW9ucy4KCk9rYXksIEkmIzM5O20gc2F0aXNmaWVkLiBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCBub3cgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIG91dHB1dCB3aXRoIHRoaXMgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfaW5pdCYjMzQ7LAogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2luaXQmIzM0OywKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDk6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIHdpdGggSUQgYWxsb2NhdGlvbiBleGhhdXN0aW9uIGluIHRoZSB1MzIgcGFja2V0IGNsYXNzaWZpZXIgKGBnZW5fbmV3X2tpZGAgYW5kIGBnZW5fbmV3X2h0aWRgKS4gSXQgYWRkcyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByb3BhZ2F0aW9uIHdoZW4gdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCBvciBkdXBsaWNhdGUgaGFuZGxlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGFuZCBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODVlMmQ0MzQyYmQ5OWZjYjk1YjdjNWE0NGZjMjc2NmE1ZmNlZDlhMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDA5OjEyOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmMKaW5kZXggYWM2ZDBmYTVhNDBlMy4uYTNlNjVjOGNmMjllZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCkBAIC0zNzAsNiAmIzQzOzM3MCwxMCBAQCBzdGF0aWMgaW50IHUzMl9pbml0KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKQogCiAJcmVmY291bnRfc2V0KCZhbXA7cm9vdF9odC0mZ3Q7cmVmY250LCAxKTsKIAlyb290X2h0LSZndDtoYW5kbGUgPSB0cF9jID8gZ2VuX25ld19odGlkKHRwX2MsIHJvb3RfaHQpIDogaWQyaGFuZGxlKDApOwomIzQzOwlpZiAocm9vdF9odC0mZ3Q7aGFuZGxlID09IDApIHsKJiM0MzsJCWtmcmVlKHJvb3RfaHQpOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAlyb290X2h0LSZndDtwcmlvID0gdHAtJmd0O3ByaW87CiAJcm9vdF9odC0mZ3Q7aXNfcm9vdCA9IHRydWU7CiAJaWRyX2luaXQoJmFtcDtyb290X2h0LSZndDtoYW5kbGVfaWRyKTsKQEAgLTY5NSwyMSAmIzQzOzY5OSwzMyBAQCBzdGF0aWMgaW50IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKmFyZywgYm9vbCAqbGFzdCwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpCiYjNDM7c3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycikKIHsKIAl1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7CiAJdTMyIG1heCA9IGh0aWQgfCAweEZGRjsKIAomIzQzOwkqZXJyID0gMDsKJiM0MzsKIAlpZiAoaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsIEdGUF9LRVJORUwpKSB7CiAJCWluZGV4ID0gaHRpZCAmIzQzOyAxOwotCQlpZiAoaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsCi0JCQkJIEdGUF9LRVJORUwpKQotCQkJaW5kZXggPSBtYXg7CiYjNDM7CQkqZXJyID0gaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2luZGV4LCBtYXgsCiYjNDM7CQkJCSAgICAgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoKmVycikKJiM0MzsJCQlyZXR1cm4gMDsKIAl9CiAKIAlyZXR1cm4gaW5kZXg7CiB9CiAKJiM0MztzdGF0aWMgaW50IHUzMl9raWRfZXh0YWNrKGludCBlcnIsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CWlmIChlcnIgPT0gLUVOT1NQQykKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SGFzaCB0YWJsZSBub2RlIElEIHBvb2wgZXhoYXVzdGVkJiMzNDspOwomIzQzOwllbHNlCiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEJiMzNDspOwomIzQzOwlyZXR1cm4gZXJyOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICYjNDM7IDFdID0gewogCVtUQ0FfVTMyX0NMQVNTSURdCT0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbVENBX1UzMl9IQVNIXQkJPSB7IC50eXBlID0gTkxBX1UzMiB9LApAQCAtMTA3OSw3ICYjNDM7MTA5NSw5IEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsCiAJCSAqIGhhbmRsZSB3aGljaCBpcyB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBtYXRjaCBlbnRyeS4KIAkJICovCiAJCWlmICghVENfVTMyX05PREUoaGFuZGxlKSkgewotCQkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpOwomIzQzOwkJCWhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkLCAmYW1wO2Vycik7CiYjNDM7CQkJaWYgKGVycikKJiM0MzsJCQkJcmV0dXJuIHUzMl9raWRfZXh0YWNrKGVyciwgZXh0YWNrKTsKIAkJfSBlbHNlIHsKIAkJCWhhbmRsZSA9IGh0aWQgfCBUQ19VMzJfTk9ERShoYW5kbGUpOwogCQkJZXJyID0gaWRyX2FsbG9jX3UzMigmYW1wO2h0LSZndDtoYW5kbGVfaWRyLCBOVUxMLCAmYW1wO2hhbmRsZSwKQEAgLTEwOTEsNyAmIzQzOzExMDksOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLAogCQkvKiBUaGUgdXNlciBkaWQgbm90IGdpdmUgdXMgYSBoYW5kbGU7IGxldHMganVzdCBnZW5lcmF0ZSBvbmUKIAkJICogZnJvbSB0aGUgdGFibGUmIzM5O3MgcG9vbCBvZiBub2RlaWRzLgogCQkgKi8KLQkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpOwomIzQzOwkJaGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsICZhbXA7ZXJyKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIHUzMl9raWRfZXh0YWNrKGVyciwgZXh0YWNrKTsKIAl9CiAKIAlpZiAodGJbVENBX1UzMl9TRUxdID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvZmlsdGVycy91MzIuanNvbgppbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uCkBAIC0zNTMsNSAmIzQzOzM1MywyOCBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERFVjEgcGFyZW50IHJvb3QgZHJyJiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7NzBmZCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHUzMiBmaWx0ZXIgd2hlbiBub2RlIElEIHBvb2wgaXMgZXhoYXVzdGVkICg0MDk2dGggZmlsdGVyIHJlamVjdGVkKSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtmaWx0ZXImIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3UzMiYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGNsc2FjdCYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7YmFzaCAtYyAmIzM5O2ZvciBpIGluIHsxLi40MDk1fTsgZG8gZWNobyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgaW5ncmVzcyBwcmlvIDEgcHJvdG9jb2wgaXAgdTMyIG1hdGNoIHU4IDAgMCBhdCAwOyBkb25lIHwgJFRDIC1iIC0mIzM5OyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtmaCA4MDA6OiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7NDA5NSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0JiMzNDsKJiM0MzsgICAgICAgIF0KICAgICB9CiBdCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxCgkJCQkJCQlvdXRwdXQ6IDE1NAoJCQkJCQkJdGhvdWdodHM6IDkwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBFdmFsdWF0aW9uOiB1MzIgUGFja2V0IENsYXNzaWZpZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGUgYSBmdWxsLWJsb3duIEtNU0FOIGZ1enppbmcgc2Vzc2lvbj8gSXQgdG91Y2hlcyBgbmV0L3NjaGVkL2Nsc191MzIuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGhhbmRsZSBJRCBhbGxvY2F0aW9uLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgZ2VuX25ld19odGlkYCBhbmQgYGdlbl9uZXdfa2lkYCwgd2l0aCBhbiBhZGRlZCBzZWxmdGVzdCBmb3IgdGhlIG5vZGUgSUQgcG9vbCBleGhhdXN0aW9uIHNjZW5hcmlvLgoKTG9va2luZyBjbG9zZXIsIHRoZSBmaXJzdCBjaGFuZ2UgaW4gYHUzMl9pbml0YCBzZWVtcyB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgaW52YWxpZCBoYW5kbGUgdXNhZ2UgYnkgY2hlY2tpbmcgdGhlIHJldHVybiBvZiBgZ2VuX25ld19odGlkYCBhbmQgZnJlZWluZyBgcm9vdF9odGAgYW5kIHJldHVybmluZyBgLUVOT01FTWAgaWYgaXQgcmV0dXJucyAwLgoKVGhlIHNlY29uZCBwYXJ0IGlzIGluIGBnZW5fbmV3X2tpZGAuIFRoaXMgcmVmYWN0b3JzIGhvdyB3ZSBoYW5kbGUgSUQgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSW5zdGVhZCBvZiBzaWxlbnRseSByZXR1cm5pbmcgYG1heGAgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYnVncyBkb3duIHRoZSBsaW5lIGJ5IG5vdCBhY3R1YWxseSBmYWlsaW5nKSwgaXQgbm93IHByb3Blcmx5IHJlcG9ydHMgYW4gZXJyb3IgY29kZSB2aWEgdGhlIGBlcnJgIHBvaW50ZXIuIFRoaXMgaXMgcHVyZSBjb250cm9sLWZsb3cgY2hhbmdlLCB3aGljaCwgd2hpbGUgaW1wb3J0YW50LCBkb2VzbiYjMzk7dCBpbmhlcmVudGx5IGludHJvZHVjZSB0aGUga2luZCBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcyBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaC4KCkZpbmFsbHksIGluIGB1MzJfY2hhbmdlYCwgd2Ugc2VlIHRoZSB1cGRhdGVkIGNhbGwgdG8gYGdlbl9uZXdfa2lkYCwgbm93IGNoZWNraW5nIHRoZSBgZXJyYCB2YXJpYWJsZSBhbmQgcmV0dXJuaW5nIGZyb20gdGhlIGZ1bmN0aW9uIG9uIGZhaWx1cmUuCgpNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24g4oCTIHRoaW5ncyBsaWtlIGR1cGxpY2F0ZSBJRHMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzIGluIGVkZ2UgY2FzZXMuIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBmb3IgS01TQU4uIEkgZG9uJiMzOTt0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8gbGVha3MsIG9yIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGZpeCBhZGRyZXNzZXMgYW4gZXhpc3RpbmcgSUQgYWxsb2NhdGlvbiBmYWlsdXJlLCBub3QgYSBuZXcgY2xhc3Mgb2YgbWVtb3J5IGJ1Z3MuIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgT09CIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgZXJyYCBpcyBpbml0aWFsaXplZCBwcm9wZXJseS4gWXVwLCBgaW50IGVycjtgIGlzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBjb3JyZWN0bHkgaW4gYHUzMl9jaGFuZ2VgLiBBbHNvLCBgKmVyciA9IDA7YCBpcyBzZXQgd2l0aGluIGBnZW5fbmV3X2tpZGAuIFNvLCBubyBpbW1lZGlhdGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRoaXMgcGF0Y2ggaXMgbW9yZSBhYm91dCBwcmV2ZW50aW5nIGxvZ2ljYWwgZXJyb3JzIHJlbGF0ZWQgdG8gSUQgYWxsb2NhdGlvbiwgcmF0aGVyIHRoYW4gaW50cm9kdWNpbmcgbmV3IG1lbW9yeSBzYWZldHkgY29uY2VybnMuIFdlIGNhbiByZWx5IG9uIHN0YW5kYXJkIHRlc3RpbmcgYW5kIEtBU0FOIHRvIGNhdGNoIGFueSByZWdyZXNzaW9ucy4gQSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpc24mIzM5O3QganVzdGlmaWVkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIElEIGFsbG9jYXRpb24gZXhoYXVzdGlvbiBpbiB0aGUgdTMyIHBhY2tldCBjbGFzc2lmaWVyIChgZ2VuX25ld19raWRgIGFuZCBgZ2VuX25ld19odGlkYCkuIEl0IGFkZHMgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcm9wYWdhdGlvbiB3aGVuIHRoZSBJRFIgYWxsb2NhdGlvbiBmYWlscywgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgb3IgZHVwbGljYXRlIGhhbmRsZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBhbmQgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NC42Nzc2MTgyODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQxOTMyNjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIElEIGFsbG9jYXRpb24gZXhoYXVzdGlvbiBpbiB0aGUgdTMyIHBhY2tldCBjbGFzc2lmaWVyIChgZ2VuX25ld19raWRgIGFuZCBgZ2VuX25ld19odGlkYCkuIEl0IGFkZHMgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcm9wYWdhdGlvbiB3aGVuIHRoZSBJRFIgYWxsb2NhdGlvbiBmYWlscywgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgb3IgZHVwbGljYXRlIGhhbmRsZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBhbmQgc2VudCB0byB1c2Vyc3BhY2UsIG5vciBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHUzMiBjbGFzc2lmaWVyIHdoZXJlIGBpZHJfYWxsb2NfdTMyYCBmYWlsdXJlcyB3ZXJlIG5vdCBoYW5kbGVkIHByb3Blcmx5LCBsZWFkaW5nIHRvIHNpbGVudCBmYWlsdXJlcyBvciBpbmNvcnJlY3QgYmVoYXZpb3IuIEl0IGFkZHMgZXJyb3IgaGFuZGxpbmcgaW4gYGdlbl9uZXdfa2lkYCBhbmQgYHUzMl9pbml0YCwgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yIHZpYSBuZXRsaW5rIGV4dGFjayBpbiBgdTMyX2NoYW5nZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NC42Nzc2MjMxNTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDgyOTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDk6MTI6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc191MzIuYyBiL25ldC9zY2hlZC9jbHNfdTMyLmNcXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfdTMyLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXFxuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcXG4gXFxuIFxcdHJlZmNvdW50X3NldChcXHUwMDI2cm9vdF9odC1cXHUwMDNlcmVmY250LCAxKTtcXG4gXFx0cm9vdF9odC1cXHUwMDNlaGFuZGxlID0gdHBfYyA/IGdlbl9uZXdfaHRpZCh0cF9jLCByb290X2h0KSA6IGlkMmhhbmRsZSgwKTtcXG4rXFx0aWYgKHJvb3RfaHQtXFx1MDAzZWhhbmRsZSA9PSAwKSB7XFxuK1xcdFxcdGtmcmVlKHJvb3RfaHQpO1xcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXHRyb290X2h0LVxcdTAwM2VwcmlvID0gdHAtXFx1MDAzZXByaW87XFxuIFxcdHJvb3RfaHQtXFx1MDAzZWlzX3Jvb3QgPSB0cnVlO1xcbiBcXHRpZHJfaW5pdChcXHUwMDI2cm9vdF9odC1cXHUwMDNlaGFuZGxlX2lkcik7XFxuQEAgLTY5NSwyMSArNjk5LDMzIEBAIHN0YXRpYyBpbnQgdTMyX2RlbGV0ZShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdm9pZCAqYXJnLCBib29sICpsYXN0LFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXFxuK3N0YXRpYyB1MzIgZ2VuX25ld19raWQoc3RydWN0IHRjX3VfaG5vZGUgKmh0LCB1MzIgaHRpZCwgaW50ICplcnIpXFxuIHtcXG4gXFx0dTMyIGluZGV4ID0gaHRpZCB8IDB4ODAwO1xcbiBcXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xcbiBcXG4rXFx0KmVyciA9IDA7XFxuK1xcbiBcXHRpZiAoaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xcbiBcXHRcXHRpbmRleCA9IGh0aWQgKyAxO1xcbi1cXHRcXHRpZiAoaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LFxcbi1cXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCkpXFxuLVxcdFxcdFxcdGluZGV4ID0gbWF4O1xcbitcXHRcXHQqZXJyID0gaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZpbmRleCwgbWF4LFxcbitcXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoKmVycilcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBpbmRleDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCB1MzJfa2lkX2V4dGFjayhpbnQgZXJyLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuK3tcXG4rXFx0aWYgKGVyciA9PSAtRU5PU1BDKVxcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSGFzaCB0YWJsZSBub2RlIElEIHBvb2wgZXhoYXVzdGVkXFxcIik7XFxuK1xcdGVsc2VcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBub2RlIElEXFxcIik7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB1MzJfcG9saWN5W1RDQV9VMzJfTUFYICsgMV0gPSB7XFxuIFxcdFtUQ0FfVTMyX0NMQVNTSURdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiBcXHRbVENBX1UzMl9IQVNIXVxcdFxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5AQCAtMTA3OSw3ICsxMDk1LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4gXFx0XFx0ICogaGFuZGxlIHdoaWNoIGlzIHVzZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG1hdGNoIGVudHJ5LlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCFUQ19VMzJfTk9ERShoYW5kbGUpKSB7XFxuLVxcdFxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4rXFx0XFx0XFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFxcdTAwMjZlcnIpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRoYW5kbGUgPSBodGlkIHwgVENfVTMyX05PREUoaGFuZGxlKTtcXG4gXFx0XFx0XFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcXHUwMDI2aHQtXFx1MDAzZWhhbmRsZV9pZHIsIE5VTEwsIFxcdTAwMjZoYW5kbGUsXFxuQEAgLTEwOTEsNyArMTEwOSw5IEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuIFxcdFxcdC8qIFRoZSB1c2VyIGRpZCBub3QgZ2l2ZSB1cyBhIGhhbmRsZTsgbGV0cyBqdXN0IGdlbmVyYXRlIG9uZVxcbiBcXHRcXHQgKiBmcm9tIHRoZSB0YWJsZSdzIHBvb2wgb2Ygbm9kZWlkcy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4rXFx0XFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFxcdTAwMjZlcnIpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodGJbVENBX1UzMl9TRUxdID09IE5VTEwpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXFxuaW5kZXggYjJjYTlkNGU5OTFiZC4uZTJiMDNmMmI1ZTg5ZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cXG5AQCAtMzUzLDUgKzM1MywyOCBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI3MGZkXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJmaWx0ZXJcXFwiLFxcbisgICAgICAgICAgICBcXFwidTMyXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcInBsdWdpbnNcXFwiOiB7XFxuKyAgICAgICAgICAgIFxcXCJyZXF1aXJlc1xcXCI6IFxcXCJuc1BsdWdpblxcXCJcXG4rICAgICAgICB9LFxcbisgICAgICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBjbHNhY3RcXFwiLFxcbisgICAgICAgICAgICBcXFwiYmFzaCAtYyAnZm9yIGkgaW4gezEuLjQwOTV9OyBkbyBlY2hvIGZpbHRlciBhZGQgZGV2ICREVU1NWSBpbmdyZXNzIHByaW8gMSBwcm90b2NvbCBpcCB1MzIgbWF0Y2ggdTggMCAwIGF0IDA7IGRvbmUgfCAkVEMgLWIgLSdcXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiAkRFVNTVkgaW5ncmVzcyBwcmlvIDEgcHJvdG9jb2wgaXAgdTMyIG1hdGNoIHU4IDAgMCBhdCAwXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMlxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLWQgZmlsdGVyIHNob3cgZGV2ICREVU1NWSBpbmdyZXNzXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImZoIDgwMDo6XFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCI0MDk1XFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XFxcIlxcbisgICAgICAgIF1cXG4gICAgIH1cXG4gXVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMjo1NS4wNjMwMzA4MTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MDA2OTg0NTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4rXHRpZiAocm9vdF9odC1cdTAwM2VoYW5kbGUgPT0gMCkge1xuK1x0XHRrZnJlZShyb290X2h0KTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXHRyb290X2h0LVx1MDAzZXByaW8gPSB0cC1cdTAwM2VwcmlvO1xuIFx0cm9vdF9odC1cdTAwM2Vpc19yb290ID0gdHJ1ZTtcbiBcdGlkcl9pbml0KFx1MDAyNnJvb3RfaHQtXHUwMDNlaGFuZGxlX2lkcik7XG5AQCAtNjk1LDIxICs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXG4rc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuK1x0KmVyciA9IDA7XG4rXG4gXHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xuIFx0XHRpbmRleCA9IGh0aWQgKyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuK1x0XHQqZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuK1x0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCplcnIpXG4rXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4gXHRyZXR1cm4gaW5kZXg7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdTMyX2tpZF9leHRhY2soaW50IGVyciwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdGlmIChlcnIgPT0gLUVOT1NQQylcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcIik7XG4rXHRlbHNlXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiRmFpbGVkIHRvIGFsbG9jYXRlIG5vZGUgSURcIik7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCArIDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgKzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHtcbi1cdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCk7XG4rXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aGFuZGxlID0gaHRpZCB8IFRDX1UzMl9OT0RFKGhhbmRsZSk7XG4gXHRcdFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZoYW5kbGUsXG5AQCAtMTA5MSw3ICsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4gXHRcdCAqIGZyb20gdGhlIHRhYmxlJ3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuK1x0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSArMzUzLDI4IEBAXG4gICAgICAgICBcInRlYXJkb3duXCI6IFtcbiAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclwiXG4gICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCI3MGZkXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImZpbHRlclwiLFxuKyAgICAgICAgICAgIFwidTMyXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgY2xzYWN0XCIsXG4rICAgICAgICAgICAgXCJiYXNoIC1jICdmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJ1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzc1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJmaCA4MDA6OlwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiNDA5NVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEyOjU1LjA2MzAzMjE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTEzODU2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVTMyIENsYXNzaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL2Nsc191MzIuY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGludGVyZXN0aW5nLiBFc3NlbnRpYWxseSwgaXQncyBtYWtpbmcgdGhlIGBnZW5fbmV3X2tpZGAgZnVuY3Rpb24gaW4gdGhlIHUzMiBjbGFzc2lmaWVyIG1vcmUgcm9idXN0LiBQcmV2aW91c2x5LCBpZiBgaWRyX2FsbG9jX3UzMmAgZmFpbGVkIHRvIGFsbG9jYXRlIGFuIElELCBpdCB3b3VsZCBzaWxlbnRseSByZXR1cm4gZWl0aGVyIHRoZSBtYXhpbXVtIHBvc3NpYmxlIElEIG9yIHplcm8uIE5vdCBpZGVhbCwgc2luY2UgdGhpcyBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBoYXJkLXRvLWRlYnVnIGlzc3VlcyBkb3duIHRoZSBsaW5lLlxuXG5UaGlzIHBhdGNoIGZpeGVzIHRoYXQgYnkgbWFraW5nIGBnZW5fbmV3X2tpZGAgcmV0dXJuIGFuIGVycm9yIGRpcmVjdGx5LiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBgdTMyX2luaXRgIGZvciB0aGUgY2FzZSB3aGVyZSBgcm9vdF9odC1cdTAwM2VoYW5kbGVgIGlzIHplcm8gKGxpa2VseSBpbmRpY2F0aW5nIGFuIGlzc3VlIGR1cmluZyBpbml0aWFsaXphdGlvbikuIFRvIGhlbHAgd2l0aCBkZWJ1Z2dpbmcsIGB1MzJfa2lkX2V4dGFja2AgaGFzIGJlZW4gYWRkZWQgdG8gcmV0dXJuIGFuIGV4dGVuZGVkIGFjayBtZXNzYWdlLCB3aGljaCBpcyBhbHdheXMgdXNlZnVsLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHUzMl9jaGFuZ2VgLCB3aGljaCBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGVycm9yIHJldHVybmVkIGJ5IGBnZW5fbmV3X2tpZGAuIFRoaXMgaXMgaW1wb3J0YW50LCBhcyBpdCBlbnN1cmVzIHRoYXQgZXJyb3IgcHJvcGFnYXRpb24gaXMgaGFuZGxlZCBncmFjZWZ1bGx5LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSB1MzIgY2xhc3NpZmllci4gVXNlcnNwYWNlIGNhbiByZWFjaCB0aGlzIGNvZGUgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzLCBwcm9iYWJseSB3aXRoIGEgY29tbWFuZCBsaWtlIGB0YyBmaWx0ZXIgYWRkYC4gR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCB0aHJvdWdoIG5ldGxpbmsgZnJvbSB1c2Vyc3BhY2UsIGl04oCZcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIHRoZSB1MzIgY2xhc3NpZmllciwgc28gSSdsbCBjaGVjayBgbmV0L3NjaGVkL01ha2VmaWxlYCBmb3IgYGNsc191MzIub2Agb3IgYG5ldC9zY2hlZC9LY29uZmlnYCBmb3IgYENPTkZJR19ORVRfQ0xTX1UzMmAuIFRoaXMnbGwgaGVscCBtZSBidWlsZCBhIHRlc3Qgc2V0dXAgdGhhdCB0cmlnZ2VycyB0aGUgYWZmZWN0ZWQgY29kZSBwYXRocyByZWxpYWJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjAxLjY3NDQyMjMxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM2MDAwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTI2PWNvbmZpZyBDTFNfVTMyX1BFUkZcXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXFx0Ym9vbCBcXFwiUGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTUzNC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1MzU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUzNi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjY9b2JqLSQoQ09ORklHX05FVF9TQ0hfRFVBTFBJMilcXHQrPSBzY2hfZHVhbHBpMi5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxcbm5ldC9zY2hlZC9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfTkVUX0NMU19VMzIpXFx0Kz0gY2xzX3UzMi5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY5LW9iai0kKENPTkZJR19ORVRfQ0xTX1JPVVRFNClcXHQrPSBjbHNfcm91dGUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzowMS43MTg4MDc2NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM5MjcyNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIHUzMiBDbGFzc2lmaWVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgTkVUX0NMU19VMzJgLiBUaGF0IGNvbmZpZyBvcHRpb24gaXMgdGhlIGtleSB0byB0aGlzIHdob2xlIHRoaW5nLiBNeSBmaXJzdCBtb3ZlIGhlcmUgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUg4oCTIGluIHRoaXMgY2FzZSwgYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmFsbCogdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYE5FVF9DTFNfVTMyYC4gV2hhdCBvdGhlciBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3Rpbmcgb3B0aW9ucz8gSXMgaXQgZGVwZW5kZW50IG9uIHNvbWUgbW9yZSBmb3VuZGF0aW9uYWwgbW9kdWxlcz8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsJ3MgbmV0d29yayBzY2hlZHVsaW5nIGFyY2hpdGVjdHVyZS4gSXQncyB0aGUgb25seSB3YXkgdG8gYXZvaWQgYW55IG5hc3R5IHN1cnByaXNlcyBkb3duIHRoZSBsaW5lLiBUaGF0IEtjb25maWcgZmlsZSBpcyB3aGVyZSBhbGwgdGhlIHNlY3JldHMgcmVzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MDUuMjU4MDgxOTU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDc3NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MDUuMzAzMTYzOTAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwNjgzMjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBORVRfQ0xTX1UzMmAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgTkVUX0NMU19VMzJgIGFjdHVhbGx5ICpkZXBlbmRzKiBvbi4gSSdtIG5vdCBnb2luZyB0byBtYWtlIGFzc3VtcHRpb25zLCBvciB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBhIHJlZCBoZXJyaW5nIGxhdGVyLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdzIHByb2JhYmx5IGEgaGFuZGZ1bCBvZiBrZXJuZWwgbW9kdWxlcyBpbnZvbHZlZCwgbWF5YmUgc29tZSBzcGVjaWZpYyBoZWFkZXJzLCBhbmQgZGVmaW5pdGVseSBzb21lIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc3RhY2s7IHdoYXQgYXJlIHRoZSBvdGhlciByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMsIGFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLCBhcmUgdGhlcmUgcmVsYXRlZCBtb2R1bGVzIG9yIGxpYnJhcmllcz8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgcmVsYXRlZCB0ZXJtcy4gVGhlbiwgSSdsbCB0cmFjZSB0aHJvdWdoIGFueSBtb2R1bGUgZGVwZW5kZW5jaWVzLiBJJ20gYWxzbyBnb2luZyB0byBzZWUgaWYgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBgTkVUX0NMU19VMzJgIGRlc2NyaWJlcyBleHRlcm5hbCBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBlYXN5IHRvIG1pc3MuIEkgd2FudCBhIGNvbXBsZXRlIG1hcCBvZiBpdHMgcHJlY29uZGl0aW9ucyBiZWZvcmUgSSBjb25zaWRlciB3aGF0IHRvIGRvIHdpdGggaXQuIFRoYXQga25vd2xlZGdlLCBhcyBhbHdheXMsIGlzIHRoZSBmb3VuZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTAuMDA5OTk4NDgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0c1xcbiA1MTE6XFx0XFx0ICBhY2NvcmRpbmcgdG8gbmV0ZmlsdGVyL2ZpcmV3YWxsIG1hcmtzLlxcbiA1MTI6XFx0XFxuIDUxMzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTE0OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNsc19mdy5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIE5FVF9DTFNfVTMyXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuIDUxODpcXHRcXHRzZWxlY3QgTkVUX0NMU1xcbiA1MTk6XFx0XFx0aGVscFxcbiA1MjA6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGJlIGFibGUgdG8gY2xhc3NpZnkgcGFja2V0cyB1c2luZyBhIHVuaXZlcnNhbFxcbiA1MjE6XFx0XFx0ICAzMmJpdCBwaWVjZXMgYmFzZWQgY29tcGFyaXNvbiBzY2hlbWUuXFxuIDUyMjpcXHRcXG4gNTIzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA1MjQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2xzX3UzMi5cXG4gNTI1OlxcdFxcbiA1MjY6XFx0Y29uZmlnIENMU19VMzJfUEVSRlxcbiA1Mjc6XFx0XFx0Ym9vbCBcXFwiUGVyZm9ybWFuY2UgY291bnRlcnMgc3VwcG9ydFxcXCJcXG4gNTI4OlxcdFxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG4gNTI5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTAuMDEwMDcyMjYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0NTE2NzcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5FVF9DTFMgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX0NMU2AuICBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGluIGl0cyBzZWxlY3Rpb24gY3JpdGVyaWEuIEl0IGRvZXNuJ3QgYXBwZWFyIHRvIGJlIHRpZWQgdG8gYW55dGhpbmcgaW5jcmVkaWJseSBzcGVjaWZpYywganVzdCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiAgVGhhdCdzIGdlbmVyYWxseSB3aGF0IEknZCBleHBlY3Q7IGl0IHNob3VsZCBiZSBwcmV0dHkgZnVuZGFtZW50YWwuXG5cbkhtbSwgaGFuZyBvbiBhIHNlY29uZC4uLiBgTkVUX0NMU19VMzJgIOKAkyBpc24ndCB0aGF0IHBhcnQgb2YgdGhlIHRyYWZmaWMgY29udHJvbCBvcHRpb25zIHVuZGVyIHRoZSBgTkVUX1NDSEVEYCBtZW51IGluIGBtZW51Y29uZmlnYD8gIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gIEJlc3QgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3ksIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBrZWVwIG15IGR1Y2tzIGluIGEgcm93IHdpdGggdGhlc2UgY29uZmlnIG9wdGlvbnMuIExldCdzIHNlZS4uLiBJJ2xsIHB1bGwgdXAgdGhlIHJlbGV2YW50IG1lbnVzIGFuZCB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjE0LjQ1NTI0MTkzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2ODIwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjE0LjQ5NjkzNDQ2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTk2NTU2MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfQ0xTX1UzMmAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgTkVUX1NDSEVEYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gR29vZC4gTm93LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYE5FVF9DTFNfVTMyYCBoYXMgYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBidXQgaXQgZG9lc24ndCBzZWVtIHRvLiBKdXN0IHRob3NlIHR3bywgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSG1tLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggdG91Y2hlcyBgdTMyX2luaXRgLCBgZ2VuX25ld19raWRgLCBgdTMyX2tpZF9leHRhY2tgLCBhbmQgYHUzMl9jaGFuZ2VgLiBSaWdodCwgc28gYHUzMl9pbml0YCBhbmQgYHUzMl9jaGFuZ2VgIGxvb2sgbGlrZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIFNpbmNlIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfa2lkX2V4dGFja2AgYXJlIHN0YXRpYywgdGhleSBjYW4gcHJvYmFibHkgYmUgdW5kZXJzdG9vZCB0aHJvdWdoIHRoZWlyIHVzZSBpbiB0aGUgcHVibGljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzoxOS4wOTM0OTMyNjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjExOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInUzMl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuYz0zNTE9c3RhdGljIHN0cnVjdCB0Y191X2NvbW1vbiAqdGNfdV9jb21tb25fZmluZCh2b2lkICprZXkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTM2MC1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjM2MTpzdGF0aWMgaW50IHUzMl9pbml0KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMzYyLXtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9NDE2PXN0YXRpYyB2b2lkIHUzMl9kZXN0cm95X2tleShzdHJ1Y3QgdGNfdV9rbm9kZSAqbiwgYm9vbCBmcmVlX3BmKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy00MzAtLyogdTMyX2RlbGV0ZV9rZXlfcmN1IHNob3VsZCBiZSBjYWxsZWQgd2hlbiBmcmVlJ2luZyBhIGNvcGllZFxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDMxOiAqIHZlcnNpb24gb2YgYSB0Y191X2tub2RlIG9idGFpbmVkIGZyb20gdTMyX2luaXRfa25vZGUoKS4gV2hlblxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDMyOiAqIGNvcGllcyBhcmUgb2J0YWluZWQgZnJvbSB1MzJfaW5pdF9rbm9kZSgpIHRoZSBzdGF0aXN0aWNzIGFyZVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDMzLSAqIHNoYXJlZCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBjb3BpZXMgdG8gYWxsb3cgcmVhZGVycyB0b1xcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz00Mzg9c3RhdGljIHZvaWQgdTMyX2RlbGV0ZV9rZXlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQ1MC0gKiBwZXJjcHUgdmFyaWFibGVzLiBPbmx5IHVzZSB0aGlzIGlmIHRoZSBrZXkgaXMgbm90IGEgY29weVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDUxOiAqIHJldHVybmVkIGJ5IHUzMl9pbml0X2tub2RlKCkuIFNlZSB1MzJfZGVsZXRlX2tleV9yY3UoKVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtNDUyLSAqIGZvciB0aGUgdmFyaWFudCB0aGF0IHNob3VsZCBiZSB1c2VkIHdpdGgga2V5cyByZXR1cm4gZnJvbVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6NDUzOiAqIHUzMl9pbml0X2tub2RlKClcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTQ1NC0gKi9cXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODEwPXN0YXRpYyB2b2lkIHUzMl9yZXBsYWNlX2tub2RlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgdGNfdV9jb21tb24gKnRwX2MsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTgzNi1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjgzNzpzdGF0aWMgc3RydWN0IHRjX3Vfa25vZGUgKnUzMl9pbml0X2tub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXFxubmV0L3NjaGVkL2Nsc191MzIuYy04MzgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCB0Y191X2tub2RlICpuKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz04ODg9c3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTM5LVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6OTQwOlxcdFxcdG5ldyA9IHUzMl9pbml0X2tub2RlKG5ldCwgdHAsIG4pO1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtOTQxLVxcdFxcdGlmICghbmV3KVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDg5PXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNDkxLVxcdC5jbGFzc2lmeVxcdD1cXHR1MzJfY2xhc3NpZnksXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDkyOlxcdC5pbml0XFx0XFx0PVxcdHUzMl9pbml0LFxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5My1cXHQuZGVzdHJveVxcdD1cXHR1MzJfZGVzdHJveSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MTkuMTM5MTA3MjQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjU1NDM5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBhbmQgSW5saW5pbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAuIFRoZXkncmUgKnN0YXRpYyosIGJ1dCB0aGV5J3JlIGJlaW5nIGFzc2lnbmVkIHRvIGBjbHNfdTMyX29wc2AsIHdoaWNoIGlzIGEgYHRjZl9wcm90b19vcHNgIHN0cnVjdC4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGlmIHRoZXNlIHdlcmUgZnVsbHkgaW5saW5lZCBiZWluZyBzdGF0aWMsIHRoZW4gdGhleSB3b3VsZG4ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gY2VydGFpbiBjb25maWd1cmF0aW9ucy4gSG93ZXZlciwgc2luY2Ugd2UncmUgKnRha2luZyB0aGVpciBhZGRyZXNzKiBhbmQgYXNzaWduaW5nIHRoZW0gdG8gZnVuY3Rpb24gcG9pbnRlcnMgKGluIGBjbHNfdTMyX29wc2ApLCB0aGUgY29tcGlsZXIgKmNhbid0KiBpbmxpbmUgdGhlbSBjb21wbGV0ZWx5LiBUaGlzIGlzIGtleS4gVGhlIGFkZHJlc3MgYXNzaWdubWVudCBwcmV2ZW50cyBjb21wbGV0ZSBpbmxpbmluZy5cblxuU28sIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBiZWNhdXNlIHdlJ3JlIGFzc2lnbmluZyB0aGVpciBhZGRyZXNzZXMsIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCAqYXJlKiBiZWhhdmluZyBsaWtlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhpcyBtb2R1bGUuIFRoZSBjb21waWxlciBoYXMgdG8gcHJvdmlkZSBhIHN5bWJvbCBhZGRyZXNzIGJlY2F1c2Ugb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGUgYWRkcmVzcyBiZWluZyB0YWtlbiwgdGhleSBhcmUgdGhlIEFQSSBlbnRyeXBvaW50cywgZXZlbiBpZiB0aGV5IGFyZSBzdGF0aWMuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzoyNC4zNjQ2NTMzNDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTYxMzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsc191MzJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuYz0xMzc2PXN0YXRpYyBpbnQgdTMyX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdm9pZCAqZmgsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0ODgtXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDg5OnN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ5MC1cXHQua2luZFxcdFxcdD1cXHRcXFwidTMyXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTUwNT1zdGF0aWMgaW50IF9faW5pdCBpbml0X3UzMih2b2lkKVxcbi0tXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTIzLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTUyNDpcXHRyZXQgPSByZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFxcdTAwMjZjbHNfdTMyX29wcyk7XFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTI1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jPTE1MzA9c3RhdGljIHZvaWQgX19leGl0IGV4aXRfdTMyKHZvaWQpXFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMxLXtcXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjE1MzI6XFx0dW5yZWdpc3Rlcl90Y2ZfcHJvdG9fb3BzKFxcdTAwMjZjbHNfdTMyX29wcyk7XFxubmV0L3NjaGVkL2Nsc191MzIuYy0xNTMzLVxcdGt2ZnJlZSh0Y191X2NvbW1vbl9oYXNoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6MjQuNDA4ODE4NTIxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Njk2MzIxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdTMyYCBDbGFzc2lmaWVyIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHUzMmAgY2xhc3NpZmllciBhbmQgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMuIFJpZ2h0IGF3YXksIEkgc2VlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYC4gVGhleSdyZSBzdGF0aWMsIGJ1dCB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgZGlzcXVhbGlmeSB0aGVtLiBUaGV5IHNlZW0gdG8gYmUgdGhlIG1haW4gY2FsbGJhY2tzLCB0aGUgcHJpbWFyeSB3YXkgdGhlIGNsYXNzaWZpZXIgaXMgaW50ZXJhY3RlZCB3aXRoLiBMZXQgbWUganVzdCBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcHJvbWluZW50IGZ1bmN0aW9ucyBsdXJraW5nIGFib3V0LlxuXG5BbHJpZ2h0LCBhZnRlciBhIHF1aWNrIGNoZWNrLCBJJ20gY29uZmlkZW50IGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgdGhlIGNhbmRpZGF0ZXMgSSBuZWVkLiBJJ2xsIGFkZCB0aG9zZSB0byB0aGUgYEZvY3VzU3ltYm9sc2AuXG5cbldhaXQgYSBtaW51dGUsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgeWVzIGB1MzJfaW5pdGAgaXMgc3RhdGljLiBCdXQsIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gU28gdGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciEgSXQgc2VlbXMgbGlrZSB0aGVzZSBhcmUgc3RpbGwgdGhlIGNvcnJlY3QgZnVuY3Rpb25zIHRvIGluY2x1ZGUuXG5cbkhhbmcgb24uIE9rYXksIHJpZ2h0LCBJIG5lZWQgdG8gZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zISBOb3cgSSBzZWUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFNpbmNlIGB1MzJfaW5pdGAgYW5kIGB1MzJfY2hhbmdlYCBhcmUgbm90IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMg4oCTIHRoZXkgKmFyZSogdGhlIEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIGB1MzJgIGNsYXNzaWZpZXIg4oCTIHRoaXMgY29uZmlybXMgdGhleSBhcmUgYWJzb2x1dGVseSB0aGUgcmlnaHQgY2hvaWNlcy4gSSdtIGdvb2QgdG8gZ28gd2l0aCB0aG9zZS5cblxuTGV0J3MgbW92ZSBvbiBhbmQgY2hlY2sgdGhlIGBORVRfU0NIRURgIGNvbmZpZyBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgwNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozMC4yNzg0NTMyNzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzA4NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjMwLjMyMTc2NDkyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTcyOTg5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLCB0aGlua2luZyB0aHJvdWdoIGl0IGxpa2UgSSB3b3VsZCBvbiB0aGUgZmx5OlxuXG4qKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBzbyBJIHNlZSBgTkVUX1NDSEVEYCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBib29sZWFuIOKAkyBlaXRoZXIgZW5hYmxlZCBvciBkaXNhYmxlZCwgbm90aGluZyBjb21wbGV4IHRoZXJlLiBCdXQgYE5FVF9DTFNfVTMyYCBpcyBhIHRyaXN0YXRlLCB0aGF0IHN1Z2dlc3RzIGl0IGhhcyBtb3JlIG51YW5jZS4gR2l2ZW4gdGhhdCwgYW5kIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQsIGl0J3MgcHJldHR5IGNsZWFyIHRvIG1lIHRoYXQgYm90aCBuZWVkIHRvIGJlIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gYnJhaW5lciB0aGVyZSwgcmVhbGx5LlxuXG5Ob3csIG15IGd1dCB0ZWxscyBtZSBgTkVUX0NMU19VMzJgIG1pZ2h0IGhhdmUgYSBmZXcgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kLiBUcmlzdGF0ZSBvcHRpb25zIG9mdGVuIGRvLiBJdCdzIHRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgdHJpcCB1cyB1cC4gR290dGEgbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0J3Mgc2VlIHdoYXQgZWxzZSBgTkVUX0NMU19VMzJgIGlzIHRpZWQgdG8uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjM0Ljc3OTA2NjE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcwMjU0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXFxubmV0L3NjaGVkL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctMzUwLVxcdHNlbGVjdCBORVRfWEdSRVNTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNDA3LVxcdGJvb2wgXFxcIkJQRi1iYXNlZCBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxubmV0L3NjaGVkL0tjb25maWctNDA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctNDk3LVxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cXHRib29sIFxcXCJQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTI5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXFxubmV0L3NjaGVkL0tjb25maWctNTM0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBtYXJrcyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTM2LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXFxubmV0L3NjaGVkL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gQ0dST1VQU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXFx0aW50IFxcXCJTdGFjayBzaXplXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXFxubmV0L3NjaGVkL0tjb25maWctNjE2LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiTXVsdGkgYnl0ZSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cXHR0cmlzdGF0ZSBcXFwiVTMyIGtleVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjM4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXFxubmV0L3NjaGVkL0tjb25maWctNjQ2LVxcdHRyaXN0YXRlIFxcXCJNZXRhZGF0YVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXFxubmV0L3NjaGVkL0tjb25maWctNjU3LVxcdHRyaXN0YXRlIFxcXCJUZXh0c2VhcmNoXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXFx0c2VsZWN0IFRFWFRTRUFSQ0hcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cXHR0cmlzdGF0ZSBcXFwiQ0FOIElkZW50aWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjcyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXFxubmV0L3NjaGVkL0tjb25maWctNjczLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cXHR0cmlzdGF0ZSBcXFwiSVBzZXRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjgyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiBJUF9TRVRcXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cXHR0cmlzdGF0ZSBcXFwiSVB0YWJsZXMgTWF0Y2hlc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxubmV0L3NjaGVkL0tjb25maWctNzE2LVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzI3LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0JcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXFx0Ym9vbCBcXFwiUHJvYmFiaWxpdHkgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXFxubmV0L3NjaGVkL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFNhbXBsaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzU1LVxcdHNlbGVjdCBQU0FNUExFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzY3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzc2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBFeGFtcGxlIChEZWJ1ZylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzg1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXFx0dHJpc3RhdGUgXFxcIlNLQiBFZGl0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODAwLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXFxubmV0L3NjaGVkL0tjb25maWctODA5LVxcdHRyaXN0YXRlIFxcXCJDaGVja3N1bSBVcGRhdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctODExLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cXHR0cmlzdGF0ZSBcXFwiTVBMUyBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODIxOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXFx0dHJpc3RhdGUgXFxcIlZsYW4gbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXFx0dHJpc3RhdGUgXFxcIkJQRiBiYXNlZCBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODQzOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODU0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXFxubmV0L3NjaGVkL0tjb25maWctODgzLVxcdHRyaXN0YXRlIFxcXCJza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODg1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXFx0dHJpc3RhdGUgXFxcIkludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cXHRzZWxlY3QgTkVUX0lGRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXFx0dHJpc3RhdGUgXFxcIklQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTA4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxubmV0L3NjaGVkL0tjb25maWctOTIwLVxcdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXFxubmV0L3NjaGVkL0tjb25maWctOTQzLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTQ0OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXFxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTUzLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXFx0Ym9vbCBcXFwiVEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTU3LVxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozNC44MjI3NzQ3MDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzA5MDg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5FVF9DTFNfVTMyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYE5FVF9DTFNfVTMyYCBjb25maWcgb3B0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCBzZWVtcyBwcmV0dHkgc3RhbmRhbG9uZS4gSXQncyBnb3Qgbm8gZGVwZW5kZW5jaWVzIGxpc3RlZCwgYXBhcnQgZnJvbSBiZWluZyB1bmRlciBgTkVUX1NDSEVEYC4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIGBORVRfU0NIRURgLi4uIHRoYXQncyBqdXN0IGEgbWVudWNvbmZpZywgaXNuJ3QgaXQ/IEl0J3Mgbm90IGEgcmVhbCBtb2R1bGUgb3IgYSBjb3JlIGZ1bmN0aW9uLCBtb3JlIG9mIGEgdG9wLWxldmVsIGdyb3VwaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyAqaGlkZGVuKiBkZXBlbmRlbmNpZXMsIHNvIEkgbmVlZCB0byBrbm93IGlmIGBORVRfU0NIRURgIGl0c2VsZiByZWxpZXMgb24gYW55dGhpbmcgZWxzZS4gVGltZSB0byBnbyBzcGVsdW5raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgYG1lbnVjb25maWcgTkVUX1NDSEVEYC4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgbHVya2luZyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwMDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwOToxMzozOC41MzU4Njc2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwODkxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjM4LjU3OTk2MDIwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc4MzAzNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSB1MzIgQ2xhc3NpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkZXBlbmRlbmNpZXM7IHRoYXQncyBnb29kIHRvIGtub3cgb2ZmIHRoZSBiYXQuIFRoZSByZWxldmFudCBFbmFibGVDb25maWdzIGFyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9DTFNfVTMyYCwgYXMgZXhwZWN0ZWQuXG5cbk15IGZvY3VzIGlzIGRyYXduIHRvIHRoZXNlIHN5bWJvbHM6IGB1MzJfaW5pdGAsIGFuZCBgdTMyX2NoYW5nZWAuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IGtleSB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSB1MzIgY2xhc3NpZmllci4gSXQgc2VlbXMgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmVuJ3QgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuIFRoaXMgbGVkIHRvIHBvdGVudGlhbCBzaWxlbnQgZmFpbHVyZXMgb3IgY29tcGxldGVseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGEgdmVyeSBuYXN0eSBidWcuXG5cblRoZSBjaGFuZ2VzIGZvY3VzIG9uIGFkZGluZyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgaW4gYGdlbl9uZXdfa2lkYCBhbmQgYHUzMl9pbml0YC4gRnVydGhlcm1vcmUsIGl0IGxvb2tzIGxpa2UgdGhlIGVycm9yIGlzIHByb3Blcmx5IHByb3BhZ2F0ZWQgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gQmVjYXVzZSB0aGlzIGltcGFjdHMgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgYW5kIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWZ0ZXIgYWxsLlxuXG5Ob3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcuIExvb2tzIGxpa2UgYHUzMl9kZWxldGVgIGlzIHVudG91Y2hlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZSBjb2RlIGlzIGFkZGluZyBgdTMyX2tpZF9leHRhY2tgIGFuZCBpdCdzIG1vZGlmeWluZyBgZ2VuX25ld19raWRgLCBgdTMyX2luaXRgIGFuZCBgdTMyX2NoYW5nZWAgd2hpY2ggY29uZmlybXMgbXkgaW5pdGlhbCBvYnNlcnZhdGlvbnMuXG5cbk9rYXksIEknbSBzYXRpc2ZpZWQuIEknbGwgdXNlIGBzZXQtcmVzdWx0c2Agbm93IHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBvdXRwdXQgd2l0aCB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM1NiwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDk6MTM6NDUuMDU4MjY2NzQzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2MDcwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1MzJfaW5pdFwiLFxuICAgIFwidTMyX2NoYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSB1MzIgY2xhc3NpZmllciB3aGVyZSBgaWRyX2FsbG9jX3UzMmAgZmFpbHVyZXMgd2VyZSBub3QgaGFuZGxlZCBwcm9wZXJseSwgbGVhZGluZyB0byBzaWxlbnQgZmFpbHVyZXMgb3IgaW5jb3JyZWN0IGJlaGF2aW9yLiBJdCBhZGRzIGVycm9yIGhhbmRsaW5nIGluIGBnZW5fbmV3X2tpZGAgYW5kIGB1MzJfaW5pdGAsIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciB2aWEgbmV0bGluayBleHRhY2sgaW4gYHUzMl9jaGFuZ2VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2luaXRcIixcbiAgICBcInUzMl9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgdTMyIGNsYXNzaWZpZXIgd2hlcmUgYGlkcl9hbGxvY191MzJgIGZhaWx1cmVzIHdlcmUgbm90IGhhbmRsZWQgcHJvcGVybHksIGxlYWRpbmcgdG8gc2lsZW50IGZhaWx1cmVzIG9yIGluY29ycmVjdCBiZWhhdmlvci4gSXQgYWRkcyBlcnJvciBoYW5kbGluZyBpbiBgZ2VuX25ld19raWRgIGFuZCBgdTMyX2luaXRgLCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IgdmlhIG5ldGxpbmsgZXh0YWNrIGluIGB1MzJfY2hhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMjg4MDQ0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk2NDA1NTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMzI5NDU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTYzNjM4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg1ZTJkNDM0MmJkOTlmY2I5NWI3YzVhNDRmYzI3NjZhNWZjZWQ5YTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAwOToxMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCBhYzZkMGZhNWE0MGUzLi5hM2U2NWM4Y2YyOWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xuQEAgLTM3MCw2ICszNzAsMTAgQEAgc3RhdGljIGludCB1MzJfaW5pdChzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbiBcbiBcdHJlZmNvdW50X3NldChcdTAwMjZyb290X2h0LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRyb290X2h0LVx1MDAzZWhhbmRsZSA9IHRwX2MgPyBnZW5fbmV3X2h0aWQodHBfYywgcm9vdF9odCkgOiBpZDJoYW5kbGUoMCk7XG4rXHRpZiAocm9vdF9odC1cdTAwM2VoYW5kbGUgPT0gMCkge1xuK1x0XHRrZnJlZShyb290X2h0KTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4gXHRyb290X2h0LVx1MDAzZXByaW8gPSB0cC1cdTAwM2VwcmlvO1xuIFx0cm9vdF9odC1cdTAwM2Vpc19yb290ID0gdHJ1ZTtcbiBcdGlkcl9pbml0KFx1MDAyNnJvb3RfaHQtXHUwMDNlaGFuZGxlX2lkcik7XG5AQCAtNjk1LDIxICs2OTksMzMgQEAgc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICphcmcsIGJvb2wgKmxhc3QsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi1zdGF0aWMgdTMyIGdlbl9uZXdfa2lkKHN0cnVjdCB0Y191X2hub2RlICpodCwgdTMyIGh0aWQpXG4rc3RhdGljIHUzMiBnZW5fbmV3X2tpZChzdHJ1Y3QgdGNfdV9obm9kZSAqaHQsIHUzMiBodGlkLCBpbnQgKmVycilcbiB7XG4gXHR1MzIgaW5kZXggPSBodGlkIHwgMHg4MDA7XG4gXHR1MzIgbWF4ID0gaHRpZCB8IDB4RkZGO1xuIFxuK1x0KmVyciA9IDA7XG4rXG4gXHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LCBHRlBfS0VSTkVMKSkge1xuIFx0XHRpbmRleCA9IGh0aWQgKyAxO1xuLVx0XHRpZiAoaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuLVx0XHRcdFx0IEdGUF9LRVJORUwpKVxuLVx0XHRcdGluZGV4ID0gbWF4O1xuK1x0XHQqZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZpbmRleCwgbWF4LFxuK1x0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCplcnIpXG4rXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4gXHRyZXR1cm4gaW5kZXg7XG4gfVxuIFxuK3N0YXRpYyBpbnQgdTMyX2tpZF9leHRhY2soaW50IGVyciwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdGlmIChlcnIgPT0gLUVOT1NQQylcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJIYXNoIHRhYmxlIG5vZGUgSUQgcG9vbCBleGhhdXN0ZWRcIik7XG4rXHRlbHNlXG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiRmFpbGVkIHRvIGFsbG9jYXRlIG5vZGUgSURcIik7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdTMyX3BvbGljeVtUQ0FfVTMyX01BWCArIDFdID0ge1xuIFx0W1RDQV9VMzJfQ0xBU1NJRF1cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtUQ0FfVTMyX0hBU0hdXHRcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbkBAIC0xMDc5LDcgKzEwOTUsOSBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHQgKiBoYW5kbGUgd2hpY2ggaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgbWF0Y2ggZW50cnkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIVRDX1UzMl9OT0RFKGhhbmRsZSkpIHtcbi1cdFx0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCk7XG4rXHRcdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQsIFx1MDAyNmVycik7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiB1MzJfa2lkX2V4dGFjayhlcnIsIGV4dGFjayk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0aGFuZGxlID0gaHRpZCB8IFRDX1UzMl9OT0RFKGhhbmRsZSk7XG4gXHRcdFx0ZXJyID0gaWRyX2FsbG9jX3UzMihcdTAwMjZodC1cdTAwM2VoYW5kbGVfaWRyLCBOVUxMLCBcdTAwMjZoYW5kbGUsXG5AQCAtMTA5MSw3ICsxMTA5LDkgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcbiBcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4gXHRcdCAqIGZyb20gdGhlIHRhYmxlJ3MgcG9vbCBvZiBub2RlaWRzLlxuIFx0XHQgKi9cbi1cdFx0aGFuZGxlID0gZ2VuX25ld19raWQoaHQsIGh0aWQpO1xuK1x0XHRoYW5kbGUgPSBnZW5fbmV3X2tpZChodCwgaHRpZCwgXHUwMDI2ZXJyKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gdTMyX2tpZF9leHRhY2soZXJyLCBleHRhY2spO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG5pbmRleCBiMmNhOWQ0ZTk5MWJkLi5lMmIwM2YyYjVlODlmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9maWx0ZXJzL3UzMi5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2ZpbHRlcnMvdTMyLmpzb25cbkBAIC0zNTMsNSArMzUzLDI4IEBAXG4gICAgICAgICBcInRlYXJkb3duXCI6IFtcbiAgICAgICAgICAgICBcIiRUQyBxZGlzYyBkZWwgZGV2ICRERVYxIHBhcmVudCByb290IGRyclwiXG4gICAgICAgICBdXG4rICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCI3MGZkXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdTMyIGZpbHRlciB3aGVuIG5vZGUgSUQgcG9vbCBpcyBleGhhdXN0ZWQgKDQwOTZ0aCBmaWx0ZXIgcmVqZWN0ZWQpXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcImZpbHRlclwiLFxuKyAgICAgICAgICAgIFwidTMyXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgY2xzYWN0XCIsXG4rICAgICAgICAgICAgXCJiYXNoIC1jICdmb3IgaSBpbiB7MS4uNDA5NX07IGRvIGVjaG8gZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMDsgZG9uZSB8ICRUQyAtYiAtJ1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgJERVTU1ZIGluZ3Jlc3MgcHJpbyAxIHByb3RvY29sIGlwIHUzMiBtYXRjaCB1OCAwIDAgYXQgMFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1kIGZpbHRlciBzaG93IGRldiAkRFVNTVkgaW5ncmVzc1wiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJmaCA4MDA6OlwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiNDA5NVwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgY2xzYWN0XCJcbisgICAgICAgIF1cbiAgICAgfVxuIF1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjQ1LjEzMzI5NTQ1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTYzNjIwMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEV2YWx1YXRpb246IHUzMiBQYWNrZXQgQ2xhc3NpZmllciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBkb2VzIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGUgYSBmdWxsLWJsb3duIEtNU0FOIGZ1enppbmcgc2Vzc2lvbj8gSXQgdG91Y2hlcyBgbmV0L3NjaGVkL2Nsc191MzIuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGhhbmRsZSBJRCBhbGxvY2F0aW9uLiBXZSdyZSBsb29raW5nIGF0IGBnZW5fbmV3X2h0aWRgIGFuZCBgZ2VuX25ld19raWRgLCB3aXRoIGFuIGFkZGVkIHNlbGZ0ZXN0IGZvciB0aGUgbm9kZSBJRCBwb29sIGV4aGF1c3Rpb24gc2NlbmFyaW8uXG5cbkxvb2tpbmcgY2xvc2VyLCB0aGUgZmlyc3QgY2hhbmdlIGluIGB1MzJfaW5pdGAgc2VlbXMgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGludmFsaWQgaGFuZGxlIHVzYWdlIGJ5IGNoZWNraW5nIHRoZSByZXR1cm4gb2YgYGdlbl9uZXdfaHRpZGAgYW5kIGZyZWVpbmcgYHJvb3RfaHRgIGFuZCByZXR1cm5pbmcgYC1FTk9NRU1gIGlmIGl0IHJldHVybnMgMC5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIGluIGBnZW5fbmV3X2tpZGAuIFRoaXMgcmVmYWN0b3JzIGhvdyB3ZSBoYW5kbGUgSUQgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSW5zdGVhZCBvZiBzaWxlbnRseSByZXR1cm5pbmcgYG1heGAgKHdoaWNoIGNvdWxkIGxlYWQgdG8gYnVncyBkb3duIHRoZSBsaW5lIGJ5IG5vdCBhY3R1YWxseSBmYWlsaW5nKSwgaXQgbm93IHByb3Blcmx5IHJlcG9ydHMgYW4gZXJyb3IgY29kZSB2aWEgdGhlIGBlcnJgIHBvaW50ZXIuIFRoaXMgaXMgcHVyZSBjb250cm9sLWZsb3cgY2hhbmdlLCB3aGljaCwgd2hpbGUgaW1wb3J0YW50LCBkb2Vzbid0IGluaGVyZW50bHkgaW50cm9kdWNlIHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgaXNzdWVzIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5GaW5hbGx5LCBpbiBgdTMyX2NoYW5nZWAsIHdlIHNlZSB0aGUgdXBkYXRlZCBjYWxsIHRvIGBnZW5fbmV3X2tpZGAsIG5vdyBjaGVja2luZyB0aGUgYGVycmAgdmFyaWFibGUgYW5kIHJldHVybmluZyBmcm9tIHRoZSBmdW5jdGlvbiBvbiBmYWlsdXJlLlxuXG5NeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24g4oCTIHRoaW5ncyBsaWtlIGR1cGxpY2F0ZSBJRHMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzIGluIGVkZ2UgY2FzZXMuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgZm9yIEtNU0FOLiBJIGRvbid0IHNlZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8gbGVha3MsIG9yIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGZpeCBhZGRyZXNzZXMgYW4gZXhpc3RpbmcgSUQgYWxsb2NhdGlvbiBmYWlsdXJlLCBub3QgYSBuZXcgY2xhc3Mgb2YgbWVtb3J5IGJ1Z3MuIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgT09CIGlzc3VlcyByZWxhdGVkIHRvIElEIGV4aGF1c3Rpb24uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGVycmAgaXMgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIFl1cCwgYGludCBlcnI7YCBpcyBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQgY29ycmVjdGx5IGluIGB1MzJfY2hhbmdlYC4gQWxzbywgYCplcnIgPSAwO2AgaXMgc2V0IHdpdGhpbiBgZ2VuX25ld19raWRgLiBTbywgbm8gaW1tZWRpYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBwYXRjaCBpcyBtb3JlIGFib3V0IHByZXZlbnRpbmcgbG9naWNhbCBlcnJvcnMgcmVsYXRlZCB0byBJRCBhbGxvY2F0aW9uLCByYXRoZXIgdGhhbiBpbnRyb2R1Y2luZyBuZXcgbWVtb3J5IHNhZmV0eSBjb25jZXJucy4gV2UgY2FuIHJlbHkgb24gc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4gdG8gY2F0Y2ggYW55IHJlZ3Jlc3Npb25zLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzbid0IGp1c3RpZmllZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzcxLCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA5OjEzOjU4LjA5NjkxODI3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIHdpdGggSUQgYWxsb2NhdGlvbiBleGhhdXN0aW9uIGluIHRoZSB1MzIgcGFja2V0IGNsYXNzaWZpZXIgKGBnZW5fbmV3X2tpZGAgYW5kIGBnZW5fbmV3X2h0aWRgKS4gSXQgYWRkcyBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByb3BhZ2F0aW9uIHdoZW4gdGhlIElEUiBhbGxvY2F0aW9uIGZhaWxzLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCBvciBkdXBsaWNhdGUgaGFuZGxlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGFuZCBzZW50IHRvIHVzZXJzcGFjZSwgbm9yIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBJRCBhbGxvY2F0aW9uIGV4aGF1c3Rpb24gaW4gdGhlIHUzMiBwYWNrZXQgY2xhc3NpZmllciAoYGdlbl9uZXdfa2lkYCBhbmQgYGdlbl9uZXdfaHRpZGApLiBJdCBhZGRzIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJvcGFnYXRpb24gd2hlbiB0aGUgSURSIGFsbG9jYXRpb24gZmFpbHMsIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIG9yIGR1cGxpY2F0ZSBoYW5kbGVzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYW5kIHNlbnQgdG8gdXNlcnNwYWNlLCBub3IgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoaXMgY29kZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[1] Phase: Succeeded StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 09:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 09:14:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2] Phase: Succeeded StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 09:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 09:14:09 +0000 UTC FinishedAt: 2026-08-25 09:14:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow7t7k8/series-workflow7t7k8-convert-artifact-2849126815/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 09:14:19 +0000 UTC FinishedAt: 2026-08-25 09:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 09:14:19 +0000 UTC FinishedAt: 2026-08-25 09:32:49 +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:*7b924ebd-3049-4e22-884b-bb54fbcc8904,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-workflow7t7k8/series-workflow7t7k8-convert-artifact-2849126815/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": "a538f6d9-811d-46f3-a205-9c2d3e38aceb", "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-workflow7t7k8/series-workflow7t7k8-build-action-1796909989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 09:14:19 +0000 UTC FinishedAt: 2026-08-25 09:32:39 +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:*7b924ebd-3049-4e22-884b-bb54fbcc8904,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-workflow7t7k8/series-workflow7t7k8-convert-artifact-2849126815/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": "a538f6d9-811d-46f3-a205-9c2d3e38aceb", "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-workflow7t7k8/series-workflow7t7k8-build-action-1796909989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 09:32:49 +0000 UTC FinishedAt: 2026-08-25 09:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 09:32:49 +0000 UTC FinishedAt: 2026-08-25 09:32:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 09:32:49 +0000 UTC FinishedAt: 2026-08-25 09:33:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 09:32:49 +0000 UTC FinishedAt: 2026-08-25 09:33:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow7t7k8/series-workflow7t7k8-convert-artifact-4212901166/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 09:33:10 +0000 UTC FinishedAt: 2026-08-25 09:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 09:33:10 +0000 UTC FinishedAt: 2026-08-25 09:35:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a538f6d9-811d-46f3-a205-9c2d3e38aceb,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-workflow7t7k8/series-workflow7t7k8-build-action-1796909989/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-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 09:35:15 +0000 UTC FinishedAt: 2026-08-25 09:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 09:35:15 +0000 UTC FinishedAt: 2026-08-25 09:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 09:35:15 +0000 UTC FinishedAt: 2026-08-25 09:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 09:35:15 +0000 UTC FinishedAt: 2026-08-25 09:54:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b924ebd-3049-4e22-884b-bb54fbcc8904,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-workflow7t7k8/series-workflow7t7k8-convert-artifact-4212901166/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": "e52b7fd6-95e2-4620-a583-8073c8428f1d", "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-workflow7t7k8/series-workflow7t7k8-build-action-458521666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 09:35:15 +0000 UTC FinishedAt: 2026-08-25 09:54:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7b924ebd-3049-4e22-884b-bb54fbcc8904,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-workflow7t7k8/series-workflow7t7k8-convert-artifact-4212901166/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": "e52b7fd6-95e2-4620-a583-8073c8428f1d", "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-workflow7t7k8/series-workflow7t7k8-build-action-458521666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 09:54:13 +0000 UTC FinishedAt: 2026-08-25 09:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 09:54:13 +0000 UTC FinishedAt: 2026-08-25 09:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 09:54:13 +0000 UTC FinishedAt: 2026-08-25 09:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 09:54:13 +0000 UTC FinishedAt: 2026-08-25 09:56:10 +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:*e52b7fd6-95e2-4620-a583-8073c8428f1d,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-workflow7t7k8/series-workflow7t7k8-build-action-458521666/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-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +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":["u32_init","u32_change"],"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:*a538f6d9-811d-46f3-a205-9c2d3e38aceb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e52b7fd6-95e2-4620-a583-8073c8428f1d,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-workflow7t7k8/series-workflow7t7k8-build-action-1796909989/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-workflow7t7k8/series-workflow7t7k8-build-action-458521666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 09:56:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 09:56:24 +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":["u32_init","u32_change"],"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-workflow7t7k8/series-workflow7t7k8-convert-artifact-1160689875/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 09:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 09:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 09:56:20 +0000 UTC FinishedAt: 2026-08-25 09:56:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 09:56:30 +0000 UTC FinishedAt: 2026-08-25 12:58:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t7k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_init","u32_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32"],"series_id":"e0e20c4d-7805-41b5-81ff-1b84a431ea27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 09:56:30 +0000 UTC FinishedAt: 2026-08-25 12:58:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a538f6d9-811d-46f3-a205-9c2d3e38aceb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e52b7fd6-95e2-4620-a583-8073c8428f1d,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-workflow7t7k8/series-workflow7t7k8-build-action-1796909989/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-workflow7t7k8/series-workflow7t7k8-build-action-458521666/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-workflow7t7k8/series-workflow7t7k8-convert-artifact-1160689875/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,}