Name: series-workflowsrsgc Phase: Succeeded StartedAt: 2026-06-29 17:54:48 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[0] Phase: Succeeded StartedAt: 2026-06-29 17:54:48 +0000 UTC FinishedAt: 2026-06-29 18:11:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 17:54:48 +0000 UTC FinishedAt: 2026-06-29 18:11:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET" ], "series_id": "d7a5d083-90d5-4a32-ac86-3dd2759b5e6d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "check_map_func_compatibility", "check_helper_call", "may_update_sockmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkmIzM0OywKICAgICYjMzQ7Y2hlY2tfaGVscGVyX2NhbGwmIzM0OywKICAgICYjMzQ7bWF5X3VwZGF0ZV9zb2NrbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjRmZDA3MDkzZmE1NzQ3MjhmMGZmNmU3NWY3OTFlMDRhMTJiYTcxMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDE4OjA4OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjVhZWE0MjcxY2QwODkuLjU4ZDc2NmMzNDYyNmU1IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDg5LDExICYjNDM7ODQ4OSw3IEBAIHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbiBcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTMzNiwxNyAmIzQzOzMzNiw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZm1vZF9yZXRfZnJlcGxhY2Uodm9pZClcbiB9XG4gXG4gXG4tc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpXG4te1xuLVx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XG4tXHRcdFwmIzM0O2ZyZXBsYWNlL2Nsc19yZWRpcmVjdFwmIzM0Oyxcbi1cdH07XG4tXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFwmIzM0Oy4vZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmJwZi5vXCYjMzQ7LFxuLVx0XHRcdFx0ICBcJiMzNDsuL3Rlc3RfY2xzX3JlZGlyZWN0LmJwZi5vXCYjMzQ7LFxuLVx0XHRcdFx0ICBBUlJBWV9TSVpFKHByb2dfbmFtZSksXG4tXHRcdFx0XHQgIHByb2dfbmFtZSwgZmFsc2UsIE5VTEwpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKHZvaWQpXG4ge1xuIFx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XG5AQCAtNTk5LDggJiM0Mzs1ODgsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2UoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfcmVwbGFjZV92ZXJpZnlcJiMzNDspKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92ZXJpZnkoKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfc29ja21hcF91cGRhdGVcJiMzNDspKVxuLVx0XHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZVwmIzM0OykpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3JldHVybl9jb2RlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmdW5jX21hcF9wcm9nX2NvbXBhdGliaWxpdHlcJiMzNDspKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLjMzZjc4OGUyNzg2ZGFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC03LDcgJiM0Mzs3LDYgQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3Byb2dzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NrbXNnX2xvYWRfaGVscGVycy5za2VsLmhcJiMzNDtcbi0jaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9wcm9nc19xdWVyeS5za2VsLmhcJiMzNDtcbkBAIC0yMzUsNTMgJiM0MzsyMzQsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NrbXNnX2hlbHBlcnNfd2l0aF9saW5rKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuIFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXG4te1xuLVx0aW50IGVyciwgcHJvZywgc3JjO1xuLVx0c3RydWN0IHRlc3Rfc29ja21hcF91cGRhdGUgKnNrZWw7XG4tXHRzdHJ1Y3QgYnBmX21hcCAqZHN0X21hcDtcbi1cdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xuLVx0Y2hhciBkdW1teVsxNF0gPSB7MH07XG4tXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4tXHRcdC5kYXRhX2luID0gZHVtbXksXG4tXHRcdC5kYXRhX3NpemVfaW4gPSBzaXplb2YoZHVtbXkpLFxuLVx0XHQucmVwZWF0ID0gMSxcbi1cdCk7XG4tXHRfX3M2NCBzaztcbi1cbi1cdHNrID0gY29ubmVjdGVkX3NvY2tldF92NCgpO1xuLVx0aWYgKCFBU1NFUlRfTkVRKHNrLCAtMSwgXCYjMzQ7Y29ubmVjdGVkX3NvY2tldF92NFwmIzM0OykpXG4tXHRcdHJldHVybjtcbi1cbi1cdHNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7XG4tXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG4tXHRcdGdvdG8gY2xvc2Vfc2s7XG4tXG4tXHRwcm9nID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuY29weV9zb2NrX21hcCk7XG4tXHRzcmMgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3JjKTtcbi1cdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUClcbi1cdFx0ZHN0X21hcCA9IHNrZWwtXHUwMDNlbWFwcy5kc3Rfc29ja19tYXA7XG4tXHRlbHNlXG4tXHRcdGRzdF9tYXAgPSBza2VsLVx1MDAzZW1hcHMuZHN0X3NvY2tfaGFzaDtcbi1cbi1cdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oc3JjLCBcdTAwMjZ6ZXJvLCBcdTAwMjZzaywgQlBGX05PRVhJU1QpO1xuLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt1cGRhdGVfZWxlbShzcmMpXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csIFx1MDAyNnRvcHRzKTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX05FUSh0b3B0cy5yZXR2YWwsIDAsIFwmIzM0O3Rlc3RfcnVuIHJldHZhbFwmIzM0OykpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y29tcGFyZV9jb29raWVzKHNrZWwtXHUwMDNlbWFwcy5zcmMsIGRzdF9tYXApO1xuLVxuLW91dDpcbi1cdHRlc3Rfc29ja21hcF91cGRhdGVfX2Rlc3Ryb3koc2tlbCk7XG4tY2xvc2Vfc2s6XG4tXHRjbG9zZShzayk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUgKnNrZWw7XG5AQCAtMTM4NSwxMCAmIzQzOzEzMzcsNiBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NrbXNnX2hlbHBlcnMoQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja2hhc2ggc2tfbXNnIGxvYWQgaGVscGVyc1wmIzM0OykpXG4gXHRcdHRlc3Rfc2ttc2dfaGVscGVycyhCUEZfTUFQX1RZUEVfU09DS0hBU0gpO1xuLVx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB1cGRhdGVcJiMzNDspKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2toYXNoIHVwZGF0ZVwmIzM0OykpXG4tXHRcdHRlc3Rfc29ja21hcF91cGRhdGUoQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgdXBkYXRlIGluIHVuc2FmZSBjb250ZXh0XCYjMzQ7KSlcbiBcdFx0dGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIGNvcHlcJiMzNDspKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsMzQgJiM0MzswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLS8vIENvcHlyaWdodCAoYykgMjAyMCBGYWNlYm9va1xuLVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9wa3RfY2xzLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2VuZGlhbi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdHlwZShrZXksIGludCk7XG4tXHRfX3R5cGUodmFsdWUsIGludCk7XG4tXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpO1xuLX0gc29ja19tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbi1cbi1TRUMoXCYjMzQ7ZnJlcGxhY2UvY2xzX3JlZGlyZWN0XCYjMzQ7KVxuLWludCBmcmVwbGFjZV9jbHNfcmVkaXJlY3RfdGVzdChzdHJ1Y3QgX19za19idWZmICpza2IpXG4te1xuLVx0aW50IHJldCA9IDA7XG4tXHRjb25zdCBpbnQgemVybyA9IDA7XG4tXHRzdHJ1Y3QgYnBmX3NvY2sgKnNrO1xuLVxuLVx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFx1MDAyNnNvY2tfbWFwLCBcdTAwMjZ6ZXJvKTtcbi1cdGlmICghc2spXG4tXHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbi1cbi1cdHJldCA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oXHUwMDI2c29ja19tYXAsIFx1MDAyNnplcm8sIHNrLCAwKTtcbi1cdGJwZl9za19yZWxlYXNlKHNrKTtcbi1cbi1cdHJldHVybiByZXQgPT0gMCA/IFRDX0FDVF9PSyA6IFRDX0FDVF9TSE9UO1xuLX1cbi1cbi1jaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsNDggJiM0MzswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLS8vIENvcHlyaWdodCAoYykgMjAyMCBDbG91ZGZsYXJlXG4tI2luY2x1ZGUgXCYjMzQ7dm1saW51eC5oXCYjMzQ7XG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IHNyYyBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuLVxuLXN0cnVjdCB7XG4tXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuLVx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbi1cdF9fdHlwZShrZXksIF9fdTMyKTtcbi1cdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuLX0gZHN0X3NvY2tfbWFwIFNFQyhcJiMzNDsubWFwc1wmIzM0Oyk7XG4tXG4tc3RydWN0IHtcbi1cdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS0hBU0gpO1xuLVx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbi1cdF9fdHlwZShrZXksIF9fdTMyKTtcbi1cdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuLX0gZHN0X3NvY2tfaGFzaCBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuLVxuLVNFQyhcJiMzNDt0Y1wmIzM0Oylcbi1pbnQgY29weV9zb2NrX21hcCh2b2lkICpjdHgpXG4te1xuLVx0c3RydWN0IGJwZl9zb2NrICpzaztcbi1cdGJvb2wgZmFpbGVkID0gZmFsc2U7XG4tXHRfX3UzMiBrZXkgPSAwO1xuLVxuLVx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFx1MDAyNnNyYywgXHUwMDI2a2V5KTtcbi1cdGlmICghc2spXG4tXHRcdHJldHVybiBTS19EUk9QO1xuLVxuLVx0aWYgKGJwZl9tYXBfdXBkYXRlX2VsZW0oXHUwMDI2ZHN0X3NvY2tfbWFwLCBcdTAwMjZrZXksIHNrLCAwKSlcbi1cdFx0ZmFpbGVkID0gdHJ1ZTtcbi1cbi1cdGlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNmRzdF9zb2NrX2hhc2gsIFx1MDAyNmtleSwgc2ssIDApKVxuLVx0XHRmYWlsZWQgPSB0cnVlO1xuLVxuLVx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuLVx0cmV0dXJuIGZhaWxlZCA/IFNLX0RST1AgOiBTS19QQVNTO1xuLX1cbi1cbi1jaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcbmluZGV4IGZlNGIxMjMxODdiODZlLi5iMTEwMjYxMjM2OTAzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuY1xuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2FuZF9tdXRhdGUodm9pZClcbiB9XG4gXG4gU0VDKFwmIzM0O2FjdGlvblwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cdTAwM2Vzayk7XG5AQCAtODIsNyAmIzQzOzgyLDcgQEAgaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB9XG4gXG4gU0VDKFwmIzM0O2NsYXNzaWZpZXJcJiMzNDspXG4tX19zdWNjZXNzXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCYjMzQ7KVxuIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXHUwMDNlc2spO1xuQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4gfVxuIFxuIFNFQyhcJiMzNDtmbG93X2Rpc3NlY3RvclwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xuQEAgLTk4LDcgJiM0Mzs5OCw3IEBAIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX2RlbGV0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxuIH1cbiBcbiBTRUMoXCYjMzQ7Zmxvd19kaXNzZWN0b3JcJiMzNDspXG4tX19mYWlsdXJlIF9fbXNnKFwmIzM0O3Byb2dyYW0gb2YgdGhpcyB0eXBlIGNhbm5vdCB1c2UgaGVscGVyIGJwZl9za19yZWxlYXNlXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwmIzM0OylcbiBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl91cGRhdGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZClcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2FuZF91cGRhdGUoKTsgLyogbm8gYWNjZXNzIHRvIHNrYi1cdTAwM2VzayAqL1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcbiB9XG4gXG4gU0VDKFwmIzM0O3hkcFwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eSYjMzQ7LAogICAgJiMzNDtjaGVja19oZWxwZXJfY2FsbCYjMzQ7LAogICAgJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY0ZmQwNzA5M2ZhNTc0NzI4ZjBmZjZlNzVmNzkxZTA0YTEyYmE3MTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxODowODowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyNWFlYTQyNzFjZDA4OS4uNThkNzY2YzM0NjI2ZTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTg0ODksMTEgJiM0Mzs4NDg5LDcgQEAgc3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKQogCQkJcmV0dXJuIHRydWU7CiAJCWJyZWFrOwogCWNhc2UgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSOgotCWNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDoKLQljYXNlIEJQRl9QUk9HX1RZUEVfWERQOgogCWNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SOgogCWNhc2UgQlBGX1BST0dfVFlQRV9TS19MT09LVVA6CiAJCXJldHVybiB0cnVlOwogCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKaW5kZXggOTJjMjA4MDNlYTc2NWQuLmQzYTk1NDE1OGMzMzI3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCkBAIC0zMzYsMTcgJiM0MzszMzYsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Ztb2RfcmV0X2ZyZXBsYWNlKHZvaWQpCiB9CiAKIAotc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpCi17Ci0JY29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7Ci0JCSYjMzQ7ZnJlcGxhY2UvY2xzX3JlZGlyZWN0JiMzNDssCi0JfTsKLQl0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKCYjMzQ7Li9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYnBmLm8mIzM0OywKLQkJCQkgICYjMzQ7Li90ZXN0X2Nsc19yZWRpcmVjdC5icGYubyYjMzQ7LAotCQkJCSAgQVJSQVlfU0laRShwcm9nX25hbWUpLAotCQkJCSAgcHJvZ19uYW1lLCBmYWxzZSwgTlVMTCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQodm9pZCkKIHsKIAljb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHsKQEAgLTU5OSw4ICYjNDM7NTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpCiAJCXRlc3RfZnVuY19yZXBsYWNlKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmdW5jX3JlcGxhY2VfdmVyaWZ5JiMzNDspKQogCQl0ZXN0X2Z1bmNfcmVwbGFjZV92ZXJpZnkoKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2Z1bmNfc29ja21hcF91cGRhdGUmIzM0OykpCi0JCXRlc3RfZnVuY19zb2NrbWFwX3VwZGF0ZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnVuY19yZXBsYWNlX3JldHVybl9jb2RlJiMzNDspKQogCQl0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnVuY19tYXBfcHJvZ19jb21wYXRpYmlsaXR5JiMzNDspKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi4zM2Y3ODhlMjc4NmRhZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtNyw3ICYjNDM7Nyw2IEBACiAKICNpbmNsdWRlICYjMzQ7dGVzdF9wcm9ncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oJiMzNDsKLSNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX3VwZGF0ZS5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2F0dGFjaC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3NvY2ttYXBfcHJvZ3NfcXVlcnkuc2tlbC5oJiMzNDsKQEAgLTIzNSw1MyAmIzQzOzIzNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2ttc2dfaGVscGVyc193aXRoX2xpbmsoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpCiAJdGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpCi17Ci0JaW50IGVyciwgcHJvZywgc3JjOwotCXN0cnVjdCB0ZXN0X3NvY2ttYXBfdXBkYXRlICpza2VsOwotCXN0cnVjdCBicGZfbWFwICpkc3RfbWFwOwotCWNvbnN0IF9fdTMyIHplcm8gPSAwOwotCWNoYXIgZHVtbXlbMTRdID0gezB9OwotCUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cywKLQkJLmRhdGFfaW4gPSBkdW1teSwKLQkJLmRhdGFfc2l6ZV9pbiA9IHNpemVvZihkdW1teSksCi0JCS5yZXBlYXQgPSAxLAotCSk7Ci0JX19zNjQgc2s7Ci0KLQlzayA9IGNvbm5lY3RlZF9zb2NrZXRfdjQoKTsKLQlpZiAoIUFTU0VSVF9ORVEoc2ssIC0xLCAmIzM0O2Nvbm5lY3RlZF9zb2NrZXRfdjQmIzM0OykpCi0JCXJldHVybjsKLQotCXNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7Ci0JaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7b3Blbl9hbmRfbG9hZCYjMzQ7KSkKLQkJZ290byBjbG9zZV9zazsKLQotCXByb2cgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC0mZ3Q7cHJvZ3MuY29weV9zb2NrX21hcCk7Ci0Jc3JjID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zcmMpOwotCWlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUCkKLQkJZHN0X21hcCA9IHNrZWwtJmd0O21hcHMuZHN0X3NvY2tfbWFwOwotCWVsc2UKLQkJZHN0X21hcCA9IHNrZWwtJmd0O21hcHMuZHN0X3NvY2tfaGFzaDsKLQotCWVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oc3JjLCAmYW1wO3plcm8sICZhbXA7c2ssIEJQRl9OT0VYSVNUKTsKLQlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dXBkYXRlX2VsZW0oc3JjKSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0KLQllcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csICZhbXA7dG9wdHMpOwotCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1biYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfTkVRKHRvcHRzLnJldHZhbCwgMCwgJiMzNDt0ZXN0X3J1biByZXR2YWwmIzM0OykpCi0JCWdvdG8gb3V0OwotCi0JY29tcGFyZV9jb29raWVzKHNrZWwtJmd0O21hcHMuc3JjLCBkc3RfbWFwKTsKLQotb3V0OgotCXRlc3Rfc29ja21hcF91cGRhdGVfX2Rlc3Ryb3koc2tlbCk7Ci1jbG9zZV9zazoKLQljbG9zZShzayk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSh2b2lkKQogewogCXN0cnVjdCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUgKnNrZWw7CkBAIC0xMzg1LDEwICYjNDM7MTMzNyw2IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiAJCXRlc3Rfc2ttc2dfaGVscGVycyhCUEZfTUFQX1RZUEVfU09DS01BUCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NraGFzaCBza19tc2cgbG9hZCBoZWxwZXJzJiMzNDspKQogCQl0ZXN0X3NrbXNnX2hlbHBlcnMoQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdXBkYXRlJiMzNDspKQotCQl0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2toYXNoIHVwZGF0ZSYjMzQ7KSkKLQkJdGVzdF9zb2NrbWFwX3VwZGF0ZShCUEZfTUFQX1RZUEVfU09DS0hBU0gpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCB1cGRhdGUgaW4gdW5zYWZlIGNvbnRleHQmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjb3B5JiMzNDspKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDAKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jCiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsMzQgJiM0MzswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgRmFjZWJvb2sKLQotI2luY2x1ZGUgJmx0O2xpbnV4L3N0ZGRlZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3BrdF9jbHMuaCZndDsKLSNpbmNsdWRlICZsdDticGYvYnBmX2VuZGlhbi5oJmd0OwotI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwotCi1zdHJ1Y3QgewotCV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS01BUCk7Ci0JX190eXBlKGtleSwgaW50KTsKLQlfX3R5cGUodmFsdWUsIGludCk7Ci0JX191aW50KG1heF9lbnRyaWVzLCAyKTsKLX0gc29ja19tYXAgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7Ci0KLVNFQygmIzM0O2ZyZXBsYWNlL2Nsc19yZWRpcmVjdCYjMzQ7KQotaW50IGZyZXBsYWNlX2Nsc19yZWRpcmVjdF90ZXN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKLXsKLQlpbnQgcmV0ID0gMDsKLQljb25zdCBpbnQgemVybyA9IDA7Ci0Jc3RydWN0IGJwZl9zb2NrICpzazsKLQotCXNrID0gYnBmX21hcF9sb29rdXBfZWxlbSgmYW1wO3NvY2tfbWFwLCAmYW1wO3plcm8pOwotCWlmICghc2spCi0JCXJldHVybiBUQ19BQ1RfU0hPVDsKLQotCXJldCA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oJmFtcDtzb2NrX21hcCwgJmFtcDt6ZXJvLCBzaywgMCk7Ci0JYnBmX3NrX3JlbGVhc2Uoc2spOwotCi0JcmV0dXJuIHJldCA9PSAwID8gVENfQUNUX09LIDogVENfQUNUX1NIT1Q7Ci19Ci0KLWNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDY0ZWE1MzZlM2Q4MS4uMDAwMDAwMDAwMDAwMDAKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuYwomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDQ4ICYjNDM7MCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAotLy8gQ29weXJpZ2h0IChjKSAyMDIwIENsb3VkZmxhcmUKLSNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKLSNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKLQotc3RydWN0IHsKLQlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApOwotCV9fdWludChtYXhfZW50cmllcywgMSk7Ci0JX190eXBlKGtleSwgX191MzIpOwotCV9fdHlwZSh2YWx1ZSwgX191NjQpOwotfSBzcmMgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7Ci0KLXN0cnVjdCB7Ci0JX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKLQlfX3VpbnQobWF4X2VudHJpZXMsIDEpOwotCV9fdHlwZShrZXksIF9fdTMyKTsKLQlfX3R5cGUodmFsdWUsIF9fdTY0KTsKLX0gZHN0X3NvY2tfbWFwIFNFQygmIzM0Oy5tYXBzJiMzNDspOwotCi1zdHJ1Y3QgewotCV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS0hBU0gpOwotCV9fdWludChtYXhfZW50cmllcywgMSk7Ci0JX190eXBlKGtleSwgX191MzIpOwotCV9fdHlwZSh2YWx1ZSwgX191NjQpOwotfSBkc3Rfc29ja19oYXNoIFNFQygmIzM0Oy5tYXBzJiMzNDspOwotCi1TRUMoJiMzNDt0YyYjMzQ7KQotaW50IGNvcHlfc29ja19tYXAodm9pZCAqY3R4KQotewotCXN0cnVjdCBicGZfc29jayAqc2s7Ci0JYm9vbCBmYWlsZWQgPSBmYWxzZTsKLQlfX3UzMiBrZXkgPSAwOwotCi0Jc2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKCZhbXA7c3JjLCAmYW1wO2tleSk7Ci0JaWYgKCFzaykKLQkJcmV0dXJuIFNLX0RST1A7Ci0KLQlpZiAoYnBmX21hcF91cGRhdGVfZWxlbSgmYW1wO2RzdF9zb2NrX21hcCwgJmFtcDtrZXksIHNrLCAwKSkKLQkJZmFpbGVkID0gdHJ1ZTsKLQotCWlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKCZhbXA7ZHN0X3NvY2tfaGFzaCwgJmFtcDtrZXksIHNrLCAwKSkKLQkJZmFpbGVkID0gdHJ1ZTsKLQotCWJwZl9za19yZWxlYXNlKHNrKTsKLQlyZXR1cm4gZmFpbGVkID8gU0tfRFJPUCA6IFNLX1BBU1M7Ci19Ci0KLWNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmMKaW5kZXggZmU0YjEyMzE4N2I4NmUuLmIxMTAyNjEyMzY5MDM3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYwpAQCAtNzQsNyAmIzQzOzc0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSh2b2lkKQogfQogCiBTRUMoJiMzNDthY3Rpb24mIzM0OykKLV9fc3VjY2VzcwomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHQmIzM0OykKIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CiAJdGVzdF9zb2NrbWFwX211dGF0ZShza2ItJmd0O3NrKTsKQEAgLTgyLDcgJiM0Mzs4Miw3IEBAIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpCiB9CiAKIFNFQygmIzM0O2NsYXNzaWZpZXImIzM0OykKLV9fc3VjY2VzcwomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHQmIzM0OykKIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CiAJdGVzdF9zb2NrbWFwX211dGF0ZShza2ItJmd0O3NrKTsKQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpCiB9CiAKIFNFQygmIzM0O2Zsb3dfZGlzc2VjdG9yJiMzNDspCi1fX3N1Y2Nlc3MKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0JiMzNDspCiBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl9kZWxldGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZCkKIHsKIAl0ZXN0X3NvY2ttYXBfZGVsZXRlKCk7CkBAIC05OCw3ICYjNDM7OTgsNyBAQCBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl9kZWxldGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZCkKIH0KIAogU0VDKCYjMzQ7Zmxvd19kaXNzZWN0b3ImIzM0OykKLV9fZmFpbHVyZSBfX21zZygmIzM0O3Byb2dyYW0gb2YgdGhpcyB0eXBlIGNhbm5vdCB1c2UgaGVscGVyIGJwZl9za19yZWxlYXNlJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dCYjMzQ7KQogaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfdXBkYXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpCiB7CiAJdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfdXBkYXRlKCk7IC8qIG5vIGFjY2VzcyB0byBza2ItJmd0O3NrICovCkBAIC0xNzksNyAmIzQzOzE3OSw3IEBAIGludCB0ZXN0X3NvY2tvcHNfdXBkYXRlX2RlZGljYXRlZChzdHJ1Y3QgYnBmX3NvY2tfb3BzICpjdHgpCiB9CiAKIFNFQygmIzM0O3hkcCYjMzQ7KQotX19zdWNjZXNzCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dCYjMzQ7KQogaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpCiB7CiAJdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBjb3JlIGNoYW5nZTogaXQmIzM5O3MgbW9kaWZ5aW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtYXlfdXBkYXRlX3NvY2ttYXBgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSByZW1vdmluZyBjZXJ0YWluIEJQRiBwcm9ncmFtIHR5cGVzIGZyb20gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLCBzbyBsZXQgbWUgcXVpY2tseSByZWZlcmVuY2UgaXQ6CgpgYGBjCiAJY2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0NMUzoKLQljYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOgotCWNhc2UgQlBGX1BST0dfVFlQRV9YRFA6CiAJY2FzZSBCUEZfUFJPR19UWVBFX1NLX1JFVVNFUE9SVDoKLQljYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6CiAJY2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDoKIAkJcmV0dXJuIHRydWU7CmBgYAoKUmlnaHQsIEkgc2VlIGl0IG5vdy4gVGhlIHBhdGNoIGlzIHN0cmlwcGluZyBvdXQgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVGhpcyBtZWFucyB0aGUgZnVuY3Rpb24gd2lsbCBub3cgZXZhbHVhdGUgYXMgYGZhbHNlYCBvciBwcm9iYWJseSByZXR1cm4gYW4gZXJyb3IgZm9yIHRob3NlIHR5cGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgdmVyaWZpZXImIzM5O3MgYmVoYXZpb3IuIEl0IGxvb2tzIGxpa2UgaXQgaW1wYWN0cyBzb21lIG9mIHRoZSB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTgyMjc9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDY4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0Njk6c3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NzAte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTA5PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg0LVx0XHQgICAgZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfbG9va3VwX2VsZW0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4NTpcdFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg2LVx0XHRcdGdvdG8gZXJyb3I7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTMtXHRcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTk0Olx0XHQgICAgIW1heV91cGRhdGVfc29ja21hcChlbnYsIGZ1bmNfaWQpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTUtXHRcdFx0Z290byBlcnJvcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjMzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgdGlnaHRlbmluZyB0aGUgcmVzdHJpY3Rpb25zIG9uIHdoaWNoIEJQRiBwcm9ncmFtIHR5cGVzIGNhbiBhY3R1YWxseSBtb2RpZnkgYSBgc29ja21hcGAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYCBmcm9tIHRoZSBsaXN0IG9mIGFsbG93ZWQgcHJvZ3JhbSB0eXBlcy4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEJQRiB2ZXJpZmllci4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtTZWN1cml0eSBvciBjb3JyZWN0bmVzcyBmaXgsIHByZXZlbnRpbmcgc29tZSBraW5kIG9mIGNyYXNoIG9yIHN0YXRlIGNvcnJ1cHRpb24sIHByb2JhYmx5LiYjMzQ7IFNvLCBpcyB0aGlzIGZ1enphYmxlPyBEZWZpbml0ZWx5LCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllcjsgdGhhdCYjMzk7cyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZW4gSSBnZXQgYSBsaXR0bGUgc3VzcGljaW91czogJiMzNDtXb24mIzM5O3QgZnV6emluZyBqdXN0IGVuZCB1cCB0cmlnZ2VyaW5nIHZlcmlmaWVyIHJlamVjdGlvbnMgYmVjYXVzZSB3ZSYjMzk7cmUganVzdCAqcmVzdHJpY3RpbmcqIGZ1bmN0aW9uYWxpdHk/JiMzNDsgVGhhdCYjMzk7cyBhIHZhbGlkIGNvbmNlcm4uIEJ1dCBpdCYjMzk7cyBzdGlsbCBhIGNvcmUga2VybmVsIGNoYW5nZSwgYW5kIHRoZSBjaGFuZ2UgaXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgYXJlYS4KCkFscmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBleGFjdCBjb2RlIGluIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHRvIGJlIHN1cmUuIEdvdHRhIHNlZSAqZXhhY3RseSogd2hhdCYjMzk7cyBjaGFuZ2luZyB0byByZWZpbmUgbXkgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0NjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ODQ2OTpcdHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbjg0NzA6XHR7XG44NDcxOlx0XHRlbnVtIGJwZl9hdHRhY2hfdHlwZSBlYXR5cGUgPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZTtcbjg0NzI6XHRcdGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlID0gcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVx1MDAzZXByb2cpO1xuODQ3MzpcdFxuODQ3NDpcdFx0aWYgKGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX3VwZGF0ZV9lbGVtIFx1MDAyNlx1MDAyNlxuODQ3NTpcdFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2RlbGV0ZV9lbGVtKVxuODQ3NjpcdFx0XHRyZXR1cm4gZmFsc2U7XG44NDc3Olx0XG44NDc4Olx0XHQvKiBJdCYjMzk7cyBub3QgcG9zc2libGUgdG8gZ2V0IGFjY2VzcyB0byBhIGxvY2tlZCBzdHJ1Y3Qgc29jayBpbiB0aGVzZVxuODQ3OTpcdFx0ICogY29udGV4dHMsIHNvIHVwZGF0aW5nIGlzIHNhZmUuXG44NDgwOlx0XHQgKi9cbjg0ODE6XHRcdHN3aXRjaCAodHlwZSkge1xuODQ4MjpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG44NDgzOlx0XHRcdGlmIChlYXR5cGUgPT0gQlBGX1RSQUNFX0lURVIpXG44NDg0Olx0XHRcdFx0cmV0dXJuIHRydWU7XG44NDg1Olx0XHRcdGJyZWFrO1xuODQ4NjpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tfT1BTOlxuODQ4NzpcdFx0XHQvKiBtYXBfdXBkYXRlIGFsbG93ZWQgb25seSB2aWEgZGVkaWNhdGVkIGhlbHBlcnMgd2l0aCBldmVudCB0eXBlIGNoZWNrcyAqL1xuODQ4ODpcdFx0XHRpZiAoZnVuY19pZCA9PSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW0pXG44NDg5Olx0XHRcdFx0cmV0dXJuIHRydWU7XG44NDkwOlx0XHRcdGJyZWFrO1xuODQ5MTpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XG44NDkyOlx0XHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxuODQ5MzpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDpcbjg0OTQ6XHRcdFx0cmV0dXJuIHRydWU7XG44NDk1Olx0XHRkZWZhdWx0OlxuODQ5NjpcdFx0XHRicmVhaztcbjg0OTc6XHRcdH1cbjg0OTg6XHRcbjg0OTk6XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxuXCYjMzQ7KTtcbjg1MDA6XHRcdHJldHVybiBmYWxzZTtcbjg1MDE6XHR9XG44NTAyOlx0XG44NTAzOlx0Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG44NTA0Olx0e1xuODUwNTpcdFx0cmV0dXJuIGVudi1cdTAwM2Vwcm9nLVx1MDAzZWppdF9yZXF1ZXN0ZWQgXHUwMDI2XHUwMDI2XG44NTA2Olx0XHQgICAgICAgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscygpO1xuODUwNzpcdH1cbjg1MDg6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsaW1pdHMgaG93IGNlcnRhaW4gQlBGIHByb2dyYW0gdHlwZXMgY2FuIHVwZGF0ZSBzb2NrbWFwcy4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O0lzIHRoaXMgZnV6ei13b3J0aHk/JiMzNDsgQW5kIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nICYjMzQ7WWVzISYjMzQ7IEFueSB0aW1lIHdlIGFsdGVyIHZlcmlmaWVyIGJlaGF2aW9yLCB3ZSBuZWVkIHRvIHN0cmVzcy10ZXN0IGl0LiBUaGUgcG90ZW50aWFsIGZvciByZWdyZXNzaW9ucyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBpcyBoaWdoLgoKTGV0JiMzOTtzIGhvbmUgaW4gb24gdGhlIGtleSBzeW1ib2xzOiBgbWF5X3VwZGF0ZV9zb2NrbWFwYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBXYWl0IGEgbWludXRlLCBhcmVuJiMzOTt0IHRob3NlIHN0YXRpYyBmdW5jdGlvbnM/IEFoLCB5ZXMsIHRoZXkgYXJlLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHRvIGJ1aWxkIGEgc29saWQgZnV6emVyIHRhcmdldC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcyBnb2luZyB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz04NTAzPWJvb2wgYnBmX2FsbG93X3RhaWxfY2FsbF9pbl9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTA4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1MDk6c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUxMC1cdFx0XHRcdFx0c3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMTgyPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDYxMy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDYxNDpcdGVyciA9IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoZW52LCBtZXRhLm1hcC5wdHIsIGZ1bmNfaWQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNjE1LVx0aWYgKGVycilcbi0tXG5zY3JpcHRzL2JwZl9kb2MucHk9NjA3PUNvbXBhdGliaWxpdHkgYmV0d2VlbiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBtYXAgdHlwZXMgY2FuIGJlIGZvdW5kIGluIHRoZVxuc2NyaXB0cy9icGZfZG9jLnB5OjYwODoqKmNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkqKlxcXFwgKCkgZnVuY3Rpb24gaW4gZmlsZSAqa2VybmVsL2JwZi92ZXJpZmllci5jKi5cbnNjcmlwdHMvYnBmX2RvYy5weS02MDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3OAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFZlcmlmaWNhdGlvbiBhbmQgU29ja21hcCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlIHBhdGgsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludCBpcyBgY2hlY2tfaGVscGVyX2NhbGxgLiBUaGF0JiMzOTtzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZzsgaXQmIzM5O3MgdGhlIGFuY2hvciBwb2ludCBmb3IgdGhpcyBzcGVjaWZpYyBhc3BlY3Qgb2YgQlBGLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIGlzIGtleSBoZXJlLgoKTm93LCB3aGlsZSBpdCYjMzk7cyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGluIHRoZSAqdHJhZGl0aW9uYWwqIHNlbnNlIG9mIHBhY2tldCBwcm9jZXNzaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnJlcXVlbnQgcG9pbnQgb2YgZXhlY3V0aW9uIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIHRoaW5raW5nIGFib3V0IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBsYXRlci4gYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHNlZW1zIGxpa2UgYW5vdGhlciByZWxldmFudCBmdW5jdGlvbiB0byBleGFtaW5lLiBUaGVuIEkgYWxzbyBuZWVkIHRvIGZvY3VzIG9uIGBtYXlfdXBkYXRlX3NvY2ttYXBgLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJQRiBzeXNjYWxscyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgc29ja21hcCBpdHNlbGYuLi4gdGhhdCBmZWVscyBsaWtlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCAqYW5kKiBwZXJoYXBzIGBDT05GSUdfQ0dST1VQX0JQRmAgb3IgZXZlbiBgQ09ORklHX05FVGAuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBsb29rIGZvciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUxNj1Qb3dlclBDLCBBUk0sIEFSTTY0LCBNSVBTLCBSSVNDLVYsIHMzOTAsIGFuZCBBUkMgYW5kIGNhbiBiZSBlbmFibGVkIHRocm91Z2hcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0OjUxNzpDT05GSUdfQlBGX0pJVC4gVGhlIEpJVCBjb21waWxlciBpcyB0cmFuc3BhcmVudGx5IGludm9rZWQgZm9yIGVhY2hcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUxOC1hdHRhY2hlZCBmaWx0ZXIgZnJvbSB1c2VyIHNwYWNlIG9yIGZvciBpbnRlcm5hbCBrZXJuZWwgdXNlcnMgaWYgaXQgaGFzXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q9NTI4PUV4YW1wbGUgb3V0cHV0IGZyb20gZG1lc2c6OlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzNi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0OjUzNzpXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCBicGZfaml0X2VuYWJsZSBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzOC1zZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbCByZXR1cm4gaW4gZmFpbHVyZS4gVGhpcyBpcyBldmVuIHRoZSBjYXNlIGZvclxuLS1cbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q9MzU9b3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCB0byB1c2Ugc2NoZWRfZXh0OlxuLS1cbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtMzgtXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjM5OiAgICBDT05GSUdfQlBGPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDAtICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MTogICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDI6ICAgIENPTkZJR19CUEZfSklUPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ0OiAgICBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NTogICAgQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhY2UvZnByb2JldHJhY2UucnN0PTg0PXBhcmFtZXRlcnMgYnkgaXRzIG5hbWUgaW5zdGVhZCBvZiBgYCRhcmdOYGAuIFRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgaWYgdGhlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Zwcm9iZXRyYWNlLnJzdDo4NTprZXJuZWwgaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19CUEZfU1lTQ0FMTCBhbmQgQ09ORklHX0RFQlVHX0lORk9fQlRGLlxuRG9jdW1lbnRhdGlvbi90cmFjZS9mcHJvYmV0cmFjZS5yc3QtODYtSWYgdXNlciBvbmx5IHNwZWNpZnkgdGhlIEJURiBhcmd1bWVudCwgdGhlIGV2ZW50JiMzOTtzIGFyZ3VtZW50IG5hbWUgaXMgYWxzb1xuLS1cbk1ha2VmaWxlPTE1NDc9ZW5kaWZcbk1ha2VmaWxlLTE1NDgtXG5NYWtlZmlsZToxNTQ5OmlmZGVmIENPTkZJR19CUEZcbk1ha2VmaWxlLTE1NTAtaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGXG4tLVxuYXJjaC9hcmMvbmV0L01ha2VmaWxlPTM9aWZlcSAoJChDT05GSUdfSVNBX0FSQ1YyKSx5KVxuYXJjaC9hcmMvbmV0L01ha2VmaWxlOjQ6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NTpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9hcmN2Mi5vXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGUtNi1lbmRpZlxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjU6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy02LUNPTkZJR19JS0NPTkZJRz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9Mz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNS1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnLTEtIyBDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE8gaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9pbXhydF9kZWZjb25maWc6MjpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9hcm0vY29uZmlncy9pbXhydF9kZWZjb25maWctMy1DT05GSUdfU0NIRURfQVVUT0dST1VQPXlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jPTg9c3RhdGljIGJvb2wgX3VucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQodm9pZClcbmFyY2gvYXJtL2tlcm5lbC9zcGVjdHJlLmMtOS17XG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jOjEwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmFyY2gvYXJtL2tlcm5lbC9zcGVjdHJlLmMtMTEtXHRyZXR1cm4gIXN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkO1xuLS1cbmFyY2gvYXJtL25ldC9NYWtlZmlsZS0zLVxuYXJjaC9hcm0vbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0XzMyLm9cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTU9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjY6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NzpDT05GSUdfQlBGX0pJVD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM2PWJvb2wgaW5zbl9tYXlfYWNjZXNzX3VzZXIodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVzcik7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzktYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVx0XHQgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Mi1zdGF0aWMgaW5saW5lXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Mz1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ3LX1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQ4OiNlbmRpZiAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmM9MTExPXN0YXRpYyBib29sIF91bnByaXZpbGVnZWRfZWJwZl9lbmFibGVkKHZvaWQpXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExMi17XG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jOjExMzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExNC1cdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYz0xMTY4PXZvaWQgX19pbml0IHNwZWN0cmVfYmhiX3BhdGNoX2NsZWFyYmhiKHN0cnVjdCBhbHRfaW5zdHIgKmFsdCxcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExNzktXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jOjExODA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTgxLSNkZWZpbmUgRUJQRl9XQVJOIFwmIzM0O1VucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQsIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXFxuXCYjMzQ7XG4tLVxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL2FybTY0L25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOC1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0zNjU9Q09ORklHX0NHUk9VUF9ORVRfUFJJTz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjM2NjpDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjctQ09ORklHX0JUPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTktQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzgxPUNPTkZJR19DR1JPVVBfTkVUX1BSSU89eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozODI6Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzgzLUNPTkZJR19CVD1tXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctMTEtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc9Nz1DT05GSUdfRVhQRVJUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy05LSMgQ09ORklHX1NZU0ZTX1NZU0NBTEwgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZy05LSMgQ09ORklHX1NZU0ZTX1NZU0NBTEwgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctMTEtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNV9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc9Mz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9MTY9Q09ORklHX0JMS19ERVZfSU5JVFJEPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZy0xOC1DT05GSUdfVVNFUkZBVUxURkQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9Nz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6ODpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTAtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTUtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlPTY9aWZlcSAoJChDT05GSUdfMzJCSVQpLHkpXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjk6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm9cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMTAtZW5kaWZcbi0tXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnPTE2PUNPTkZJR19LQUxMU1lNU19BTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvZnNwMl9kZWZjb25maWctMTgtQ09ORklHX0VYUEVSVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnOjU6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWctNi1DT05GSUdfVklSVF9DUFVfQUNDT1VOVElOR19OQVRJVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTI4PUNPTkZJR19CTEtfREVWX0lOSVRSRD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoyOTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9OTQ9Q09ORklHX0ROU19SRVNPTFZFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo5NTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy05Ni0jIENPTkZJR19XSVJFTEVTUyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9MU009eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWT15XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vIGJwZl9qaXRfY29tcCQoQklUUykub1xuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS02LVxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZT03PWlmZGVmIENPTkZJR19QUEM2NFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy02LUNPTkZJR19JS0NPTkZJRz15XG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg9Q09ORklHX1BPU0lYX0FVWF9DTE9DS1M9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTE6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMjpDT05GSUdfQlBGX0xTTT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTMtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz03PUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0xTTT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTItQ09ORklHX1NDSEVEX0NPUkU9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0zPUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWctNS0jIENPTkZJR19DUFVfSVNPTEFUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPXN0YXRpYyBpbmxpbmUgdm9pZCBzd2FwX2V4X2VudHJ5X2ZpeHVwKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmEsXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Ni1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTc6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD01OT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTYwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo2MTojZWxzZSAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTYzPXN0YXRpYyBpbmxpbmUgYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Ny1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6Njg6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY5LVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU9ODE9b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKVx0JiM0Mzs9IHRyYWNlLm9cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUtODItXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcdCYjNDM7PSBicGYub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS04NC1cbi0tXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTQtI1xuYXJjaC9zMzkwL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfSEFWRV9QTkVUSUQpICYjNDM7PSBwbmV0Lm9cbi0tXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXBfJChCSVRTKS5vXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS02LWlmZXEgKCQoQklUUyksMzIpXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9hc21fMzIub1xuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtOC1lbmRpZlxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19ub3JldHVybiBleF9oYW5kbGVyX21zcl9tY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGJvb2wgd3Jtc3IpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTUyLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjUzOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfWDg2XzY0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU0LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqeCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM9MjY1PXZvaWQgKmNhbGx0aHVua3NfdHJhbnNsYXRlX2NhbGxfZGVzdCh2b2lkICpkZXN0KVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgwLVxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYzoyODE6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4Mi1zdGF0aWMgYm9vbCBpc19jYWxsdGh1bmsodm9pZCAqYWRkcilcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0xNjU1PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqc3BlY3RyZV92Ml9tb2R1bGVfc3RyaW5nKHZvaWQpIHsgcmV0dXJuIFwmIzM0O1wmIzM0OzsgfVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjItXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzoxNjYzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjQtdm9pZCB1bnByaXZfZWJwZl9ub3RpZnkoaW50IG5ld19zdGF0ZSlcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jPTE4NT1zdGF0aWMgc3RydWN0IG9yY19lbnRyeSAqb3JjX2JwZl9maW5kKHVuc2lnbmVkIGxvbmcgaXApXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4Ni17XG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg4LVx0aWYgKGJwZl9oYXNfZnJhbWVfcG9pbnRlcihpcCkpXG4tLVxuYXJjaC94ODYvbmV0L01ha2VmaWxlPTY9aWZlcSAoJChDT05GSUdfWDg2XzMyKSx5KVxuYXJjaC94ODYvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS04LWVsc2VcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuY3J5cHRvL01ha2VmaWxlPTI0PW9iai0kKENPTkZJR19DUllQVE9fU0tDSVBIRVIyKSAmIzQzOz0gY3J5cHRvX3NrY2lwaGVyLm9cbmNyeXB0by9NYWtlZmlsZToyNTppZmVxICgkKENPTkZJR19CUEZfU1lTQ0FMTCkseSlcbmNyeXB0by9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfQ1JZUFRPX1NLQ0lQSEVSMikgJiM0Mzs9IGJwZl9jcnlwdG9fc2tjaXBoZXIub1xuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oPTE2NT1zdGF0aWMgaW5saW5lIHZvaWQgZGV2aWNlX3BtX2luaXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3MS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oOjE3MjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaC0xNzMtc3RydWN0IGJwZl93c19sb2NrIHsgfTtcbi0tXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTE2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3YWtldXBfc291cmNlc19zdGF0c19mb3BzID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMTcwLVxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jOjExNzE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jLTExNzItI2luY2x1ZGUgXHUwMDNjbGludXgvYnRmLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX3NvdXJjZXNfYnBmX2luaXQodm9pZCkge31cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYzoxMjM0OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMjM1LVxuLS1cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU9Nz1yYy1jb3JlLSQoQ09ORklHX01FRElBX0NFQ19SQykgJiM0Mzs9IGtleW1hcHMvcmMtY2VjLm9cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU6ODpyYy1jb3JlLSQoQ09ORklHX0JQRl9MSVJDX01PREUyKSAmIzQzOz0gYnBmLWxpcmMub1xuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS05LVxuLS1cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9NDg9c3RydWN0IGlyX3Jhd19ldmVudF9jdHJsIHtcbi0tXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTYyLVxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDo2MzojaWZkZWYgQ09ORklHX0JQRl9MSVJDX01PREUyXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTY0LVx0dTMyXHRcdFx0XHRicGZfc2FtcGxlO1xuLS1cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9MzM3PXN0YXRpYyBpbmxpbmUgdm9pZCBsaXJjX3VucmVnaXN0ZXIoc3RydWN0IHJjX2RldiAqZGV2KSB7IH1cbi0tXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTM0Mi0gKi9cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg6MzQzOiNpZmRlZiBDT05GSUdfQlBGX0xJUkNfTU9ERTJcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtMzQ0LXZvaWQgbGlyY19icGZfZnJlZShzdHJ1Y3QgcmNfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU9NjQ9ZW5kaWZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlOjY2OmlmZXEgKCQoQ09ORklHX0JQRl9TWVNDQUxMKSx5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZS02Ny1uZnAtb2JqcyAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9hcHAuYz0xOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mcF9hcHBfdHlwZSAqYXBwc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMTktXHRbTkZQX0FQUF9DT1JFX05JQ11cdD0gXHUwMDI2YXBwX25pYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jOjIwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jLTIxLVx0W05GUF9BUFBfQlBGX05JQ11cdD0gXHUwMDI2YXBwX2JwZixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGU9NT1uZXRkZXZzaW0tb2JqcyA6PSBcXFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjg6aWZlcSAoJChDT05GSUdfQlBGX1NZU0NBTEwpLHkpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUtOS1uZXRkZXZzaW0tb2JqcyAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTc2PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3ODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc5LWludCBuc2ltX2JwZl9kZXZfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbi0tXG5mcy9NYWtlZmlsZT0xMjk9b2JqLSQoQ09ORklHX1pPTkVGU19GUylcdFx0JiM0Mzs9IHpvbmVmcy9cbmZzL01ha2VmaWxlOjEzMDpvYmotJChDT05GSUdfQlBGX0xTTSlcdFx0JiM0Mzs9IGJwZl9mc19rZnVuY3Mub1xuZnMvTWFrZWZpbGUtMTMxLW9iai0kKENPTkZJR19SRVNDVFJMX0ZTKVx0JiM0Mzs9IHJlc2N0cmwvXG4tLVxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaD0xMDY9ZnN2ZXJpdHlfbXNnKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKmxldmVsLFxuLS1cbmZzL3Zlcml0eS9mc3Zlcml0eV9wcml2YXRlLmgtMTE1LVxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaDoxMTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaC0xMTctdm9pZCBfX2luaXQgZnN2ZXJpdHlfaW5pdF9icGYodm9pZCk7XG4tLVxuZnMvdmVyaXR5L21lYXN1cmUuYz0xMDU9RVhQT1JUX1NZTUJPTF9HUEwoZnN2ZXJpdHlfZ2V0X2RpZ2VzdCk7XG5mcy92ZXJpdHkvbWVhc3VyZS5jLTEwNi1cbmZzL3Zlcml0eS9tZWFzdXJlLmM6MTA3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTA4LVxuLS1cbmZzL3Zlcml0eS9tZWFzdXJlLmM9MTgzPXZvaWQgX19pbml0IGZzdmVyaXR5X2luaXRfYnBmKHZvaWQpXG4tLVxuZnMvdmVyaXR5L21lYXN1cmUuYy0xODctXG5mcy92ZXJpdHkvbWVhc3VyZS5jOjE4ODojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXG4tLVxuaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oLTI5OC1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaDoyOTk6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgtMzAwLSNkZWZpbmUgQlBGX1JBV19UUCgpIFNUUlVDVF9BTElHTigpO1x0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oPTExPXN0cnVjdCBicGZfcHJvZ19hcnJheTtcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmgtMTItXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oOjEzOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxuaW5jbHVkZS9saW51eC9icGYtY2dyb3VwLWRlZnMuaC0xNC0vKiBNYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50bHkgYXR0YWNoYWJsZSBwZXItY2dyb3VwIExTTSBob29rcy4gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE1MDk9c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbms7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTAtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MTE6I2lmZGVmIENPTkZJR19CUEZfSklUXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTItaW50IGJwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yMTkzPXN0YXRpYyBpbmxpbmUgYm9vbCBpc190cmFjaW5nX211bHRpKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yMTk4LVxuaW5jbHVkZS9saW51eC9icGYuaDoyMTk5OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMDAtLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yMzQ4PWludCBicGZfcHJvZ19jdHhfYXJnX2luZm9faW5pdChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yMzUwLVxuaW5jbHVkZS9saW51eC9icGYuaDoyMzUxOiNpZiBkZWZpbmVkKENPTkZJR19DR1JPVVBfQlBGKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSlcbmluY2x1ZGUvbGludXgvYnBmLmgtMjM1Mi1pbnQgYnBmX3RyYW1wb2xpbmVfbGlua19jZ3JvdXBfc2hpbShzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yNTUwPXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9ydW5fY3R4ICpicGZfc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpuZXdfY3R4KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1My1cbmluY2x1ZGUvbGludXgvYnBmLmg6MjU1NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NTUtXHRvbGRfY3R4ID0gY3VycmVudC1cdTAwM2VicGZfY3R4O1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjU2MT1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Jlc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpvbGRfY3R4KVxuaW5jbHVkZS9saW51eC9icGYuaC0yNTYyLXtcbmluY2x1ZGUvbGludXgvYnBmLmg6MjU2MzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NjQtXHRjdXJyZW50LVx1MDAzZWJwZl9jdHggPSBvbGRfY3R4O1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjY1ND1ib29sIGJwZl9qaXRfYnlwYXNzX3NwZWNfdjQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU4LVxuaW5jbHVkZS9saW51eC9icGYuaDoyNjU5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmluY2x1ZGUvbGludXgvYnBmLmgtMjY2MC1ERUNMQVJFX1BFUl9DUFUoaW50LCBicGZfcHJvZ19hY3RpdmUpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzA0Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKmZwLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMDQ5LVxuaW5jbHVkZS9saW51eC9icGYuaDozMDUwOiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMwNTEtaW50IGJwZl9wYXRjaF9jYWxsX2FyZ3Moc3RydWN0IGJwZl9pbnNuICppbnNuLCB1MzIgc3RhY2tfZGVwdGgpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzIyMD1icGZfcHJvZ19ydW5fYXJyYXlfc2xlZXBhYmxlKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hcnJheSAqYXJyYXksXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMjY4LVxuaW5jbHVkZS9saW51eC9icGYuaDozMjY5OiNlbHNlIC8qICFDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzI3MC1zdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0KHUzMiB1ZmQpXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zNTYyPXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfYXJlbmFfdmlvbGF0aW9uKGJvb2wgd3JpdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1NjUtfVxuaW5jbHVkZS9saW51eC9icGYuaDozNTY2OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzU2Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM1NzQ9YnBmX3Byb2JlX3JlYWRfa2VybmVsX2NvbW1vbih2b2lkICpkc3QsIHUzMiBzaXplLCBjb25zdCB2b2lkICp1bnNhZmVfcHRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3Ny1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzU3ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19CUEZfRVZFTlRTKSlcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3OS1cdFx0cmV0ID0gY29weV9mcm9tX2tlcm5lbF9ub2ZhdWx0KGRzdCwgdW5zYWZlX3B0ciwgc2l6ZSk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zNjI0PXZvaWQgdW5wcml2X2VicGZfbm90aWZ5KGludCBuZXdfc3RhdGUpO1xuaW5jbHVkZS9saW51eC9icGYuaC0zNjI1LVxuaW5jbHVkZS9saW51eC9icGYuaDozNjI2OiNpZiBkZWZpbmVkKENPTkZJR19ORVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMzYyNy1pbnQgYnBmX2Rldl9ib3VuZF9rZnVuY19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzczMT1zdGF0aWMgaW5saW5lIGludCBicGZfcHJvZ190ZXN0X3J1bl9zeXNjYWxsKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3MzctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3Mzg6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM5LXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2dldF9mcm9tX2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mzc2Mz1zdGF0aWMgaW5saW5lIGludCBzb2NrX21hcF9saW5rX2NyZWF0ZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2Ni19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3Njc6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuaW5jbHVkZS9saW51eC9icGYuaDozNzY4OiNlbmRpZiAvKiBDT05GSUdfTkVUIFx1MDAyNlx1MDAyNiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM3NzE9YnBmX3Byb2dfaW5jX21pc3Nlc19jb3VudGVycyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXJyYXkgKmFycmF5KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc4NS1cbmluY2x1ZGUvbGludXgvYnBmLmg6Mzc4NjojaWYgZGVmaW5lZChDT05GSUdfSU5FVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxuaW5jbHVkZS9saW51eC9icGYuaC0zNzg3LXZvaWQgYnBmX3NrX3JldXNlcG9ydF9kZXRhY2goc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM3OTM9c3RhdGljIGlubGluZSB2b2lkIGJwZl9za19yZXVzZXBvcnRfZGV0YWNoKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTYtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3OTc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzk4LXN0YXRpYyBpbmxpbmUgaW50IGJwZl9mZF9yZXVzZXBvcnRfYXJyYXlfbG9va3VwX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4MDQ9c3RhdGljIGlubGluZSBpbnQgYnBmX2ZkX3JldXNlcG9ydF9hcnJheV91cGRhdGVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzgwOS19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MTA6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuaW5jbHVkZS9saW51eC9icGYuaDozODExOiNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19JTkVUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTItXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zODE0PXN0cnVjdCBicGZfa2V5IHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTktXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MjA6I2lmIGRlZmluZWQoQ09ORklHX0tFWVMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgyMS1zdHJ1Y3QgYnBmX2tleSAqYnBmX2xvb2t1cF91c2VyX2tleShzMzIgc2VyaWFsLCB1NjQgZmxhZ3MpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg1ND1zdGF0aWMgaW5saW5lIHMzMiBicGZfa2V5X3NlcmlhbChjb25zdCBzdHJ1Y3QgYnBmX2tleSAqa2V5KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1Ny19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NTg6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0tFWVMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTCkgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTQxMTI9aW50IGJwZl9zdHJlYW1fc3RhZ2VfZHVtcF9zdGFjayhzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSAqc3MpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODc5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIGNoYW5nZSwgYW5kIGl0IHNlZW1zIHRoZSBwYXRjaCBpdHNlbGYgaXMgbmVzdGxlZCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZSBhY2NvbXBhbnlpbmcgdGVzdCBpcyBsb2NhdGVkIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIGdpdmVuLCBhIGZvdW5kYXRpb25hbCByZXF1aXJlbWVudC4KCk5vdywgYmVjYXVzZSBpdCYjMzk7cyBCUEYgcmVsYXRlZCwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50LiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgc3RyYWlnaHRmb3J3YXJkLCBsaWtlIGBDT05GSUdfQ0dST1VQX0JQRmAsIG9yIHBlcmhhcHMgYENPTkZJR19ORVRgIG9yIGBDT05GSUdfQlBGX0pJVGAuIFVzdWFsbHksIGEgdmVyaWZpZXIgY2hhbmdlIHdvdWxkIGp1c3QgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IGJlY2F1c2UgdGhpcyBpcyBzb2NrbWFwIHJlbGF0ZWQsIGl0IG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgb3IgYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGludm9sdmVkLgoKTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ha2VmaWxlYHMgd2l0aGluIHRoZSBrZXJuZWwuIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGtlcm5lbC9icGYvTWFrZWZpbGVgIGFuZCB0aGVuIG1vdmUgdG8gYG5ldC9jb3JlL01ha2VmaWxlYCB0byBzZWUgaWYgSSBjYW4gc3BvdCBhbnkgZGlyZWN0IHJlZmVyZW5jZXMgdG8gc29ja21hcCB0aGF0IGNvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvY2ttYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBDb3JlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIGZvciBzb2NrZXQgYW5kIEJQRi1yZWxhdGVkIGNvZGUgYXJlLCBsaWtlbHkgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gTXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtsbCBiZSBpbiB0aGUgYG5ldC9jb3JlL2AgZGlyZWN0b3J5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGlzIHRoZSBgTWFrZWZpbGVgIHRoZXJlLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgYnVpbGRpbmcgdGhhdCBwYXJ0IG9mIHRoZSBrZXJuZWwsIGFuZCB0aGUgYnVpbGQgc3lzdGVtIG9mdGVuIGNvbnRhaW5zIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIG1hY3JvcyBmb3IgZGlmZmVyZW50IGZlYXR1cmVzLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBgTWFrZWZpbGVgIGxvb2tpbmcgZm9yIGRpcmVjdGl2ZXMsIGluY2x1ZGVzLCBvciB2YXJpYWJsZXMgdGhhdCByZWZlcmVuY2UgJiMzNDtzb2NrJiMzNDsgb3IgJiMzNDticGYmIzM0OyDigJMgdGhvc2UgYXJlIHRoZSBrZXl3b3JkcyB0aGF0JiMzOTtsbCBwb2ludCBtZSB0byB0aGUgZmlsZXMgSSBuZWVkLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSBoZWFkZXJzIG9yIHNvdXJjZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0xXVFVOTkVMKSAmIzQzOz0gbHd0dW5uZWwub1xubmV0L2NvcmUvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0xXVFVOTkVMX0JQRikgJiM0Mzs9IGx3dF9icGYub1xubmV0L2NvcmUvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0RTVF9DQUNIRSkgJiM0Mzs9IGRzdF9jYWNoZS5vXG4tLVxubmV0L2NvcmUvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xubmV0L2NvcmUvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3NrX3N0b3JhZ2Uub1xubmV0L2NvcmUvTWFrZWZpbGUtNDctb2JqLSQoQ09ORklHX09GKVx0JiM0Mzs9IG9mX25ldC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2Ygc29ja19tYXAubyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBzb2NrX21hcC5vYCBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG5hbWUuIEJ1dCBoYW5nIG9uLi4uIGBzb2NrX21hcC5vYCByZXNpZGVzIGluIGBuZXQvY29yZS9gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGEgYml0IGJldHRlci4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGEgY29yZSBjb21wb25lbnQuIExldCBtZSBvcGVuIHVwIGBuZXQvY29yZS9zb2NrX21hcC5jYCBhbmQgcXVpY2tseSBzY2FuIHRoZSBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIGFyZSBhdCBwbGF5IGhlcmUuIFRoaXMgd2F5IEkgY2FuIGRldGVybWluZSB3aHkgdGhpcyBtb2R1bGUgaXMgZm91bmQgaW4gYSBjb3JlIGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NvY2tfbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc29ja19tYXAuYz0xNDc1PXN0YXRpYyBpbnQgc29ja19tYXBfcHJvZ19saW5rX2xvb2t1cChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Byb2cgKioqcHByb2csXG4tLVxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVx0XHRicmVhaztcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXG5uZXQvY29yZS9zb2NrX21hcC5jLTE0OTEtXHRjYXNlIEJQRl9TS19TS0JfU1RSRUFNX1BBUlNFUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBWZXJpZmllciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlLCB0aGUgcHJpbWFyeSBlbmFibGVyLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aGF0LiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgKnNwZWNpZmljKiBjb25maWdzIGluIHBsYXk/IEkgbmVlZCB0byBjaGVjay4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBhYm91dCBhbnkgcHJvZ3JhbSB0eXBlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGZvciBgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNgIG9yIGBCUEZfUFJPR19UWVBFX1hEUGAuIEhtbSwgSSB3b25kZXIgaWYgYENPTkZJR19ORVRfQ0xTX0JQRmAgaXMgaW52b2x2ZWQ/CgpXYWl0LCB0aGUgdmVyaWZpZXIgaGFuZGxlcyBhbGwgdHlwZXMgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWN0aXZlLCByaWdodD8gVGhvdWdoLCBJIHN1cHBvc2Ugc29tZSBvZiB0aG9zZSB0eXBlcyBtaWdodCBiZSB1bmF2YWlsYWJsZSBpZiBgQ09ORklHX05FVGAgaXMgZGlzYWJsZWQuIEhvd2V2ZXIsIHRoYXQmIzM5O3Mgbm90IGEgbGlrZWx5IHNjZW5hcmlvLiBgQ09ORklHX05FVGAgaXMgcHJhY3RpY2FsbHkgYWx3YXlzIGVuYWJsZWQuIFN0aWxsLCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhcm91bmQgdGhlIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHNlY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYXJlYSBzcGVjaWZpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21heV91cGRhdGVfc29ja21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODIyNz1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBhcmcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NjgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQ2OTpzdGF0aWMgYm9vbCBtYXlfdXBkYXRlX3NvY2ttYXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ3MC17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg1MDk9c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODQtXHRcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTg1Olx0XHQgICAgIW1heV91cGRhdGVfc29ja21hcChlbnYsIGZ1bmNfaWQpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODYtXHRcdFx0Z290byBlcnJvcjtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5My1cdFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1OTQ6XHRcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5NS1cdFx0XHRnb3RvIGVycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFRhcmdldHMgZm9yIEJQRiBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbWF5X3VwZGF0ZV9zb2NrbWFwYCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoaXMgZnVuY3Rpb24sIGFzIEkgcmVjYWxsLCBpcyBjYWxsZWQgZnJvbSBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFyZ2V0IHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseTogYG1heV91cGRhdGVfc29ja21hcGAgYW5kIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YC4gSG93ZXZlciwgYm90aCBvZiB0aGVzZSBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgY291bGQgYmUgYSBwcm9ibGVtIOKAkyB0aGV5IG1pZ2h0IGJlIGlubGluZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkxldCYjMzk7cyBkbyBzb21lIHF1aWNrIGNoZWNrcy4gWWVzLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgaXMgYWxzbyBzdGF0aWMsIHNvIG15IGluaXRpYWwgdGFyZ2V0IGlzIHByb2JhYmx5IG5vdCB0aGUgcmlnaHQgb25lLiBMZXQgbWUgY2hlY2sgYGNoZWNrX2hlbHBlcl9jYWxsYCBqdXN0IHRvIG1ha2Ugc3VyZSDigJMgYWgsIGFuZCB0aGF0JiMzOTtzIGFsc28gc3RhdGljLiBPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGFib3V0IHRoZSBtYWluIGVudHJ5IHBvaW50LCBgYnBmX2NoZWNrYD8gWWVzLCBpdCYjMzk7cyBleHBvcnRlZCBhbmQgdGh1cyBhY2Nlc3NpYmxlIGJ1dCBpdOKAmXMgdG9vIGdlbmVyaWMuCgpJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBwcm92aWRpbmcgYm90aCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgYW5kIGBtYXlfdXBkYXRlX3NvY2ttYXBgLiBGdXp6ZXJzIGNhbiB1c3VhbGx5IGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIG5vdCBmdWxseSBpbmxpbmVkLiBJdCYjMzk7cyB3b3J0aCBhIHNob3QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9idmlvdXMgb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIHZpc2liaWxpdHkgb3IgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnYCBmaWxlLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRDT05GSUdfQkxLX0RFVl9MT09QPXlcbiAgIDI6XHRDT05GSUdfQk9PVFBBUkFNX0hBUkRMT0NLVVBfUEFOSUM9eVxuICAgMzpcdENPTkZJR19CT09UUEFSQU1fU09GVExPQ0tVUF9QQU5JQz0xXG4gICA0Olx0Q09ORklHX0JQRj15XG4gICA1Olx0Q09ORklHX0JQRl9FVkVOVFM9eVxuICAgNjpcdENPTkZJR19CUEZfSklUPXlcbiAgIDc6XHRDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERT15XG4gICA4Olx0Q09ORklHX0JQRl9MSVJDX01PREUyPXlcbiAgIDk6XHRDT05GSUdfQlBGX0xTTT15XG4gIDEwOlx0Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcbiAgMTE6XHRDT05GSUdfQlBGX1NZU0NBTEw9eVxuICAxMjpcdCMgQ09ORklHX0JQRl9VTlBSSVZfREVGQVVMVF9PRkYgaXMgbm90IHNldFxuICAxMzpcdENPTkZJR19DR1JPVVBfQlBGPXlcbiAgMTQ6XHRDT05GSUdfQ1JZUFRPX0hNQUM9eVxuICAxNTpcdENPTkZJR19DUllQVE9fU0hBMjU2PXlcbiAgMTY6XHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJPXlcbiAgMTc6XHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX0hBU0g9eVxuICAxODpcdENPTkZJR19DUllQVE9fVVNFUl9BUElfU0tDSVBIRVI9eVxuICAxOTpcdENPTkZJR19DUllQVE9fU0tDSVBIRVI9eVxuICAyMDpcdENPTkZJR19DUllQVE9fRUNCPXlcbiAgMjE6XHRDT05GSUdfQ1JZUFRPX0FFUz15XG4gIDIyOlx0Q09ORklHX0RFQlVHX0lORk89eVxuICAyMzpcdENPTkZJR19ERUJVR19JTkZPX0JURj15XG4gIDI0Olx0Q09ORklHX0RFQlVHX0lORk9fRFdBUkY0PXlcbiAgMjU6XHRDT05GSUdfRE1BQlVGX0hFQVBTPXlcbiAgMjY6XHRDT05GSUdfRE1BQlVGX0hFQVBTX1NZU1RFTT15XG4gIDI3Olx0Q09ORklHX0RVTU1ZPXlcbiAgMjg6XHRDT05GSUdfRFlOQU1JQ19GVFJBQ0U9eVxuICAyOTpcdENPTkZJR19GUFJPQkU9eVxuICAzMDpcdENPTkZJR19GVFJBQ0VfU1lTQ0FMTFM9eVxuICAzMTpcdENPTkZJR19GVU5DVElPTl9FUlJPUl9JTkpFQ1RJT049eVxuICAzMjpcdENPTkZJR19GVU5DVElPTl9UUkFDRVI9eVxuICAzMzpcdENPTkZJR19GU19WRVJJVFk9eVxuICAzNDpcdENPTkZJR19HRU5FVkU9eVxuICAzNTpcdENPTkZJR19JS0NPTkZJRz15XG4gIDM2Olx0Q09ORklHX0lLQ09ORklHX1BST0M9eVxuICAzNzpcdENPTkZJR19JTUE9eVxuICAzODpcdENPTkZJR19JTUFfUkVBRF9QT0xJQ1k9eVxuICAzOTpcdENPTkZJR19JTUFfV1JJVEVfUE9MSUNZPXlcbiAgNDA6XHRDT05GSUdfSU5FVF9FU1A9eVxuICA0MTpcdENPTkZJR19JUF9ORl9GSUxURVI9eVxuICA0MjpcdENPTkZJR19JUF9ORl9SQVc9eVxuICA0MzpcdENPTkZJR19JUF9ORl9UQVJHRVRfU1lOUFJPWFk9eVxuICA0NDpcdENPTkZJR19JUFY2PXlcbiAgNDU6XHRDT05GSUdfSVBWNl9GT1U9eVxuICA0NjpcdENPTkZJR19JUFY2X0ZPVV9UVU5ORUw9eVxuICA0NzpcdENPTkZJR19JUFY2X0dSRT15XG4gIDQ4Olx0Q09ORklHX0lQVjZfSU9BTTZfTFdUVU5ORUw9eVxuICA0OTpcdENPTkZJR19JUFY2X1NFRzZfQlBGPXlcbiAgNTA6XHRDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiAgNTE6XHRDT05GSUdfSVBWNl9TSVQ9eVxuICA1MjpcdENPTkZJR19JUFY2X1RVTk5FTD15XG4gIDUzOlx0Q09ORklHX0tFWVM9eVxuICA1NDpcdENPTkZJR19MSVJDPXlcbiAgNTU6XHRDT05GSUdfTElWRVBBVENIPXlcbiAgNTY6XHRDT05GSUdfTFdUVU5ORUw9eVxuICA1NzpcdENPTkZJR19MV1RVTk5FTF9CUEY9eVxuICA1ODpcdENPTkZJR19NT0RVTEVfU0lHPXlcbiAgNTk6XHRDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMPXlcbiAgNjA6XHRDT05GSUdfTU9EVUxFX1VOTE9BRD15XG4gIDYxOlx0Q09ORklHX01PRFVMRVM9eVxuICA2MjpcdENPTkZJR19NT0RWRVJTSU9OUz15XG4gIDYzOlx0Q09ORklHX01QTFM9eVxuICA2NDpcdENPTkZJR19NUExTX0lQVFVOTkVMPXlcbiAgNjU6XHRDT05GSUdfTVBMU19ST1VUSU5HPXlcbiAgNjY6XHRDT05GSUdfTVBUQ1A9eVxuICA2NzpcdENPTkZJR19ORVRfQUNUX0dBQ1Q9eVxuICA2ODpcdENPTkZJR19ORVRfQUNUX01JUlJFRD15XG4gIDY5Olx0Q09ORklHX05FVF9BQ1RfU0tCTU9EPXlcbiAgNzA6XHRDT05GSUdfTkVUX0NMUz15XG4gIDcxOlx0Q09ORklHX05FVF9DTFNfQUNUPXlcbiAgNzI6XHRDT05GSUdfTkVUX0NMU19CUEY9eVxuICA3MzpcdENPTkZJR19ORVRfQ0xTX0ZMT1dFUj15XG4gIDc0Olx0Q09ORklHX05FVF9DTFNfTUFUQ0hBTEw9eVxuICA3NTpcdENPTkZJR19ORVRfRk9VPXlcbiAgNzY6XHRDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbiAgNzc6XHRDT05GSUdfTkVUX0lQR1JFPXlcbiAgNzg6XHRDT05GSUdfTkVUX0lQR1JFX0RFTVVYPXlcbiAgNzk6XHRDT05GSUdfTkVUX0lQSVA9eVxuICA4MDpcdENPTkZJR19ORVRfTVBMU19HU089eVxuICA4MTpcdENPTkZJR19ORVRfU0NIX0JQRj15XG4gIDgyOlx0Q09ORklHX05FVF9TQ0hfRlE9eVxuICA4MzpcdENPTkZJR19ORVRfU0NIX0lOR1JFU1M9eVxuICA4NDpcdENPTkZJR19ORVRfU0NIX0hUQj15XG4gIDg1Olx0Q09ORklHX05FVF9TQ0hFRD15XG4gIDg2Olx0Q09ORklHX05FVERFVlNJTT15XG4gIDg3Olx0Q09ORklHX05FVEZJTFRFUj15XG4gIDg4Olx0Q09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15XG4gIDg5Olx0Q09ORklHX05FVEZJTFRFUl9TWU5QUk9YWT15XG4gIDkwOlx0Q09ORklHX05FVEZJTFRFUl9YVF9DT05OTUFSSz15XG4gIDkxOlx0Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT15XG4gIDkyOlx0Q09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ1Q9eVxuICA5MzpcdENPTkZJR19ORVRLSVQ9eVxuICA5NDpcdENPTkZJR19ORl9DT05OVFJBQ0s9eVxuICA5NTpcdENPTkZJR19ORl9DT05OVFJBQ0tfTUFSSz15XG4gIDk2Olx0Q09ORklHX05GX0NPTk5UUkFDS19aT05FUz15XG4gIDk3Olx0Q09ORklHX05GX0RFRlJBR19JUFY0PXlcbiAgOTg6XHRDT05GSUdfTkZfREVGUkFHX0lQVjY9eVxuICA5OTpcdENPTkZJR19ORl9UQUJMRVM9eVxuIDEwMDpcdENPTkZJR19ORl9UQUJMRVNfSU5FVD15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTMyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIFNvY2ttYXAgSW1wbGVtZW50YXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciB0aGlzIHNvY2ttYXAgaW1wbGVtZW50YXRpb24uIEFic29sdXRlbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbm9uLW5lZ290aWFibGUgcHJlcmVxdWlzaXRlLiBXZSBjYW4mIzM5O3QgZG8gYW55dGhpbmcgQlBGLXJlbGF0ZWQgd2l0aG91dCBpdC4gTm93LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHNvY2ttYXAsIGFuZCBob3cgZGVlcGx5IGl0IGludGVyZmFjZXMgd2l0aCBuZXR3b3JrIHN0cmVhbXMsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGFsc28gbmVlZGluZyBgQ09ORklHX0JQRl9TVFJFQU1fUEFSU0VSYC4gVGhpcyBmZWVscyByaWdodCwgZG9lc24mIzM5O3QgaXQ/IEl0IGp1c3Qgc2VlbXMgaW5jcmVkaWJseSBsaWtlbHkgdGhhdCBzdHJlYW0gcGFyc2luZyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgbWFraW5nIGl0IGFsbCBzaW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgcXVpY2sgcGFzcyBvdmVyIGBuZXQvY29yZS9zb2NrX21hcC5jYC4gQSBmcmVzaCBsb29rIGFsd2F5cyBoZWxwcyBjbGFyaWZ5IGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGdvdGNoYXMuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLCBhbnkgc3VidGxlIGludGVycGxheS4gTmVlZCB0byBiZSBjZXJ0YWluIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc29ja19tYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9zb2NrX21hcC5jPTE0NzU9c3RhdGljIGludCBzb2NrX21hcF9wcm9nX2xpbmtfbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfcHJvZyAqKipwcHJvZyxcbi0tXG5uZXQvY29yZS9zb2NrX21hcC5jLTE0ODktXHRcdGJyZWFrO1xubmV0L2NvcmUvc29ja19tYXAuYzoxNDkwOiNpZiBJU19FTkFCTEVEKENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUilcbm5ldC9jb3JlL3NvY2tfbWFwLmMtMTQ5MS1cdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAgaGFuZGxlcyB0aGUgdmVyaWZpZXImIzM5O3MgbmVlZHMsIHdoaWNoIGlzIGdvb2QuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX05FVGAgaXMgZXNzZW50aWFsLiBBaCwgeWVzLCBgc29ja21hcGAgaXMgZGVmaW5pdGVseSBuZXR3b3JraW5nLXJlbGF0ZWQuIFRoZXJlZm9yZSwgdGhlIGNvcmUgcmVxdWlyZW1lbnRzIGFyZSBnb2luZyB0byBiZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ORVRgLiBJIHNob3VsZCByZXR1cm4gYEJQRl9TWVNDQUxMYCBhbmQgYE5FVGAgYXMgYSBiYXNpYyBzZXQuCgpXYWl0IGEgc2Vjb25kLCB0aGlzIHBhdGNoIHJlbW92ZXMgc29tZSBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBhbGxvd2VkIGxpc3QuIFNwZWNpZmljYWxseSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVG8gYWRlcXVhdGVseSB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZXNlIHByb2dyYW0gdHlwZXMsIHdoaWNoIG1lYW5zIGVuYWJsaW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKTGV0JiMzOTtzIHNlZSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCByZXF1aXJlcyBgQ09ORklHX05FVF9DTFNfQlBGYC4gYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCBuZWVkcyBlaXRoZXIgYENPTkZJR19ORVRfQUNUX0JQRmAgb3IgYENPTkZJR19ORVRfQ0xTX0FDVGAuIEJvdGggYEJQRl9QUk9HX1RZUEVfWERQYCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgIHJlcXVpcmUgYENPTkZJR19ORVRgLiBJdCYjMzk7cyBzdGFydGluZyB0byBsb29rIGxpa2UgYENPTkZJR19ORVRfQ0xTX0JQRmAgYW5kIGBDT05GSUdfTkVUX0FDVF9CUEZgIGFyZSB3aXNlIGFkZGl0aW9ucyB0byBteSBjb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIHRoaW5rIEkmIzM5O2xsIGRpdmUgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGVzZSBwcm9ncmFtIHR5cGVzIGJlZm9yZSBtYWtpbmcgYW55IGZpbmFsIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTQ2MzY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19kaXJlY3RfcGt0X2RhdGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY1NC1cdC8qIFByb2dyYW0gdHlwZXMgd2l0aCBkaXJlY3QgcmVhZCAmIzQzOyB3cml0ZSBhY2Nlc3MgZ28gaGVyZSEgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjU1Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0NMUzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjU2LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTYyODY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19za2IoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mjg5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTYyOTA6XHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MjkxLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1ODMKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbDogZXZlbiBpZiBhIHN1YnN5c3RlbSBmb3IgYSBzcGVjaWZpYyBCUEYgcHJvZ3JhbSB0eXBlIGlzbiYjMzk7dCBhY3RpdmUsIHRoZSB2ZXJpZmllciB3aWxsICpzdGlsbCogcnVuIGl0cyBjaGVja3Mgb24gdGhhdCBwcm9ncmFtIHR5cGUsIGFzIGxvbmcgYXMgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4gVGhlIHByb2dyYW0gdHlwZXMgdGhlbXNlbHZlcyBhcmUgbGFpZCBvdXQgaW4gYGluY2x1ZGUvdWFwaS9saW51eC9icGYuaGAsIGFuZCB0aGUgdmVyaWZpZXIgZG9lcyBpdHMgam9iIGxvb2tpbmcgdGhlbSBvdmVyIGF0IGxvYWQgdGltZS4gU3VyZSwgeW91IG5lZWQgdGhlIHN1YnN5c3RlbSB0byAqYWN0dWFsbHkqIGF0dGFjaCB0aGUgcHJvZ3JhbXMsIGJ1dCB0aGUgdmVyaWZpY2F0aW9uIGhhcHBlbnMgdXBmcm9udC4gU28sIGVuYWJsaW5nIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVub3VnaCB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBjb2RlLgoKU28sIHRvIHJlY2FwIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGlzIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlc3RyaWN0aW5nIHdoYXQgQlBGIHByb2dyYW0gdHlwZXMgY2FuIHRvdWNoIGEgc29ja21hcC4gVGhpcyBhbHRlcnMgdGhlIHZlcmlmaWVyJiMzOTtzIGJlaGF2aW9yIHRvIGVuaGFuY2Ugc2FmZXR5LCBhbmQgdGh1cyBuZWVkcyB0YXJnZXRlZCBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYG1heV91cGRhdGVfc29ja21hcGAsIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgYXJlIGtleSBhcmVhcy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlBGX1NZU0NBTExgIGFuZCBgTkVUYCBhcmUgbmVjZXNzYXJ5LgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgdGFyZ2V0czogSSYjMzk7dmUgY2hlY2tlZCBhbmQgY29uZmlybWVkIHRoYXQgYG1heV91cGRhdGVfc29ja21hcGAsIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGdvb2QsIGl0IG5hcnJvd3MgdGhlIHNjb3BlIGEgYml0LiBUaGUgbWFpbiBlbnRyeSBwb2ludCwgYGJwZl9jaGVja2AsIGlzIGEgbGl0dGxlIHRvbyBicm9hZCBmb3IgdGFyZ2V0ZWQgZnV6emluZy4KCk15IGFwcHJvYWNoIHdpbGwgYmUgdG8gZm9jdXMgb24gYGNoZWNrX2hlbHBlcl9jYWxsYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBUaGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgdGhlIHZlcmlmaWVyIGNvcnJlY3RseSBlbmZvcmNlcyB0aGVzZSBuZXcgcmVzdHJpY3Rpb25zLgoKTGV0JiMzOTtzIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5JiMzNDssCiAgICAmIzM0O2NoZWNrX2hlbHBlcl9jYWxsJiMzNDssCiAgICAmIzM0O21heV91cGRhdGVfc29ja21hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXN0cmljdHMgdGhlIEJQRiBwcm9ncmFtIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdXBkYXRlIGEgc29ja21hcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBwcmV2ZW50cyBjZXJ0YWluIHByb2dyYW0gdHlwZXMgZnJvbSBwZXJmb3JtaW5nIHBvdGVudGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZSB2ZXJpZmllciB3aXRoIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2YWx1YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eSYjMzQ7LAogICAgJiMzNDtjaGVja19oZWxwZXJfY2FsbCYjMzQ7LAogICAgJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxMC40NzEzMDEyMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODAwNTQ0NjQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eVwiLFxuICAgIFwiY2hlY2tfaGVscGVyX2NhbGxcIixcbiAgICBcIm1heV91cGRhdGVfc29ja21hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxMC40NzEzMDg2NTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NzgyNzc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY0ZmQwNzA5M2ZhNTc0NzI4ZjBmZjZlNzVmNzkxZTA0YTEyYmE3MTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDg6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggMjVhZWE0MjcxY2QwODkuLjU4ZDc2NmMzNDYyNmU1IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC04NDg5LDExICs4NDg5LDcgQEAgc3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxcbiBcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfWERQOlxcbiBcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XFxuIFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19MT09LVVA6XFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuQEAgLTMzNiwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9mbW9kX3JldF9mcmVwbGFjZSh2b2lkKVxcbiB9XFxuIFxcbiBcXG4tc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpXFxuLXtcXG4tXFx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XFxuLVxcdFxcdFxcXCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcXFwiLFxcbi1cXHR9O1xcbi1cXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFxcXCIuL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5icGYub1xcXCIsXFxuLVxcdFxcdFxcdFxcdCAgXFxcIi4vdGVzdF9jbHNfcmVkaXJlY3QuYnBmLm9cXFwiLFxcbi1cXHRcXHRcXHRcXHQgIEFSUkFZX1NJWkUocHJvZ19uYW1lKSxcXG4tXFx0XFx0XFx0XFx0ICBwcm9nX25hbWUsIGZhbHNlLCBOVUxMKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCh2b2lkKVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKnByb2dfbmFtZVtdID0ge1xcbkBAIC01OTksOCArNTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmdW5jX3JlcGxhY2VfdmVyaWZ5XFxcIikpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlX3ZlcmlmeSgpO1xcbi1cXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnVuY19zb2NrbWFwX3VwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcImZ1bmNfcmVwbGFjZV9yZXR1cm5fY29kZVxcXCIpKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnVuY19tYXBfcHJvZ19jb21wYXRpYmlsaXR5XFxcIikpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbmluZGV4IGNiMzIyOTcxMWY5M2EzLi4zM2Y3ODhlMjc4NmRhZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5AQCAtNyw3ICs3LDYgQEBcXG4gXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3Byb2dzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NrbXNnX2xvYWRfaGVscGVycy5za2VsLmhcXFwiXFxuLSNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9wcm9nc19xdWVyeS5za2VsLmhcXFwiXFxuQEAgLTIzNSw1MyArMjM0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9za21zZ19oZWxwZXJzX3dpdGhfbGluayhlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4gXFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXFxuLXtcXG4tXFx0aW50IGVyciwgcHJvZywgc3JjO1xcbi1cXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3VwZGF0ZSAqc2tlbDtcXG4tXFx0c3RydWN0IGJwZl9tYXAgKmRzdF9tYXA7XFxuLVxcdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xcbi1cXHRjaGFyIGR1bW15WzE0XSA9IHswfTtcXG4tXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbi1cXHRcXHQuZGF0YV9pbiA9IGR1bW15LFxcbi1cXHRcXHQuZGF0YV9zaXplX2luID0gc2l6ZW9mKGR1bW15KSxcXG4tXFx0XFx0LnJlcGVhdCA9IDEsXFxuLVxcdCk7XFxuLVxcdF9fczY0IHNrO1xcbi1cXG4tXFx0c2sgPSBjb25uZWN0ZWRfc29ja2V0X3Y0KCk7XFxuLVxcdGlmICghQVNTRVJUX05FUShzaywgLTEsIFxcXCJjb25uZWN0ZWRfc29ja2V0X3Y0XFxcIikpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7XFxuLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbi1cXHRcXHRnb3RvIGNsb3NlX3NrO1xcbi1cXG4tXFx0cHJvZyA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5jb3B5X3NvY2tfbWFwKTtcXG4tXFx0c3JjID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zcmMpO1xcbi1cXHRpZiAobWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1NPQ0tNQVApXFxuLVxcdFxcdGRzdF9tYXAgPSBza2VsLVxcdTAwM2VtYXBzLmRzdF9zb2NrX21hcDtcXG4tXFx0ZWxzZVxcbi1cXHRcXHRkc3RfbWFwID0gc2tlbC1cXHUwMDNlbWFwcy5kc3Rfc29ja19oYXNoO1xcbi1cXG4tXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShzcmMsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2c2ssIEJQRl9OT0VYSVNUKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidXBkYXRlX2VsZW0oc3JjKVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuLVxcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMocHJvZywgXFx1MDAyNnRvcHRzKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdGlmICghQVNTRVJUX05FUSh0b3B0cy5yZXR2YWwsIDAsIFxcXCJ0ZXN0X3J1biByZXR2YWxcXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjb21wYXJlX2Nvb2tpZXMoc2tlbC1cXHUwMDNlbWFwcy5zcmMsIGRzdF9tYXApO1xcbi1cXG4tb3V0Olxcbi1cXHR0ZXN0X3NvY2ttYXBfdXBkYXRlX19kZXN0cm95KHNrZWwpO1xcbi1jbG9zZV9zazpcXG4tXFx0Y2xvc2Uoc2spO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUodm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlICpza2VsO1xcbkBAIC0xMzg1LDEwICsxMzM3LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2toYXNoIHNrX21zZyBsb2FkIGhlbHBlcnNcXFwiKSlcXG4gXFx0XFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XFxuLVxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHVwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4tXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2toYXNoIHVwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHVwZGF0ZSBpbiB1bnNhZmUgY29udGV4dFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY29weVxcXCIpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmNcXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmNcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsMzQgKzAsMCBAQFxcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgRmFjZWJvb2tcXG4tXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGRkZWYuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGt0X2Nscy5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9lbmRpYW4uaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbi1cXG4tc3RydWN0IHtcXG4tXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4tXFx0X190eXBlKGtleSwgaW50KTtcXG4tXFx0X190eXBlKHZhbHVlLCBpbnQpO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpO1xcbi19IHNvY2tfbWFwIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4tXFxuLVNFQyhcXFwiZnJlcGxhY2UvY2xzX3JlZGlyZWN0XFxcIilcXG4taW50IGZyZXBsYWNlX2Nsc19yZWRpcmVjdF90ZXN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4te1xcbi1cXHRpbnQgcmV0ID0gMDtcXG4tXFx0Y29uc3QgaW50IHplcm8gPSAwO1xcbi1cXHRzdHJ1Y3QgYnBmX3NvY2sgKnNrO1xcbi1cXG4tXFx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFxcdTAwMjZzb2NrX21hcCwgXFx1MDAyNnplcm8pO1xcbi1cXHRpZiAoIXNrKVxcbi1cXHRcXHRyZXR1cm4gVENfQUNUX1NIT1Q7XFxuLVxcbi1cXHRyZXQgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKFxcdTAwMjZzb2NrX21hcCwgXFx1MDAyNnplcm8sIHNrLCAwKTtcXG4tXFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldCA9PSAwID8gVENfQUNUX09LIDogVENfQUNUX1NIT1Q7XFxuLX1cXG4tXFxuLWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmNcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNDggKzAsMCBAQFxcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgQ2xvdWRmbGFyZVxcbi0jaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbi0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbi1cXHRfX3R5cGUoa2V5LCBfX3UzMik7XFxuLVxcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xcbi19IHNyYyBTRUMoXFxcIi5tYXBzXFxcIik7XFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbi1cXHRfX3R5cGUoa2V5LCBfX3UzMik7XFxuLVxcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xcbi19IGRzdF9zb2NrX21hcCBTRUMoXFxcIi5tYXBzXFxcIik7XFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTtcXG4tXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4tXFx0X190eXBlKGtleSwgX191MzIpO1xcbi1cXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcXG4tfSBkc3Rfc29ja19oYXNoIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4tXFxuLVNFQyhcXFwidGNcXFwiKVxcbi1pbnQgY29weV9zb2NrX21hcCh2b2lkICpjdHgpXFxuLXtcXG4tXFx0c3RydWN0IGJwZl9zb2NrICpzaztcXG4tXFx0Ym9vbCBmYWlsZWQgPSBmYWxzZTtcXG4tXFx0X191MzIga2V5ID0gMDtcXG4tXFxuLVxcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcXHUwMDI2c3JjLCBcXHUwMDI2a2V5KTtcXG4tXFx0aWYgKCFzaylcXG4tXFx0XFx0cmV0dXJuIFNLX0RST1A7XFxuLVxcbi1cXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcXHUwMDI2ZHN0X3NvY2tfbWFwLCBcXHUwMDI2a2V5LCBzaywgMCkpXFxuLVxcdFxcdGZhaWxlZCA9IHRydWU7XFxuLVxcbi1cXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcXHUwMDI2ZHN0X3NvY2tfaGFzaCwgXFx1MDAyNmtleSwgc2ssIDApKVxcbi1cXHRcXHRmYWlsZWQgPSB0cnVlO1xcbi1cXG4tXFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xcbi1cXHRyZXR1cm4gZmFpbGVkID8gU0tfRFJPUCA6IFNLX1BBU1M7XFxuLX1cXG4tXFxuLWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXFxuaW5kZXggZmU0YjEyMzE4N2I4NmUuLmIxMTAyNjEyMzY5MDM3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKHZvaWQpXFxuIH1cXG4gXFxuIFNFQyhcXFwiYWN0aW9uXFxcIilcXG4tX19zdWNjZXNzXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFxcXCIpXFxuIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXFx1MDAzZXNrKTtcXG5AQCAtODIsNyArODIsNyBAQCBpbnQgdGVzdF9zY2hlZF9hY3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbiB9XFxuIFxcbiBTRUMoXFxcImNsYXNzaWZpZXJcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3Rfc2NoZWRfY2xzKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cXHUwMDNlc2spO1xcbkBAIC05MCw3ICs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIH1cXG4gXFxuIFNFQyhcXFwiZmxvd19kaXNzZWN0b3JcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xcbkBAIC05OCw3ICs5OCw3IEBAIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX2RlbGV0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxcbiB9XFxuIFxcbiBTRUMoXFxcImZsb3dfZGlzc2VjdG9yXFxcIilcXG4tX19mYWlsdXJlIF9fbXNnKFxcXCJwcm9ncmFtIG9mIHRoaXMgdHlwZSBjYW5ub3QgdXNlIGhlbHBlciBicGZfc2tfcmVsZWFzZVxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFxcXCIpXFxuIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX3VwZGF0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxcbiB7XFxuIFxcdHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX3VwZGF0ZSgpOyAvKiBubyBhY2Nlc3MgdG8gc2tiLVxcdTAwM2VzayAqL1xcbkBAIC0xNzksNyArMTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcXG4gfVxcbiBcXG4gU0VDKFxcXCJ4ZHBcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjExLjMyMDIzNjQ5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcxNTY0OTkyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlcIixcbiAgICBcImNoZWNrX2hlbHBlcl9jYWxsXCIsXG4gICAgXCJtYXlfdXBkYXRlX3NvY2ttYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgdGhlIEJQRiBwcm9ncmFtIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdXBkYXRlIGEgc29ja21hcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBwcmV2ZW50cyBjZXJ0YWluIHByb2dyYW0gdHlwZXMgZnJvbSBwZXJmb3JtaW5nIHBvdGVudGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZSB2ZXJpZmllciB3aXRoIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2YWx1YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NGZkMDcwOTNmYTU3NDcyOGYwZmY2ZTc1Zjc5MWUwNGExMmJhNzExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDg6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDI1YWVhNDI3MWNkMDg5Li41OGQ3NjZjMzQ2MjZlNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtODQ4OSwxMSArODQ4OSw3IEBAIHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbiBcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTMzNiwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9mbW9kX3JldF9mcmVwbGFjZSh2b2lkKVxuIH1cbiBcbiBcbi1zdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUodm9pZClcbi17XG4tXHRjb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHtcbi1cdFx0XCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcIixcbi1cdH07XG4tXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFwiLi9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYnBmLm9cIixcbi1cdFx0XHRcdCAgXCIuL3Rlc3RfY2xzX3JlZGlyZWN0LmJwZi5vXCIsXG4tXHRcdFx0XHQgIEFSUkFZX1NJWkUocHJvZ19uYW1lKSxcbi1cdFx0XHRcdCAgcHJvZ19uYW1lLCBmYWxzZSwgTlVMTCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQodm9pZClcbiB7XG4gXHRjb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHtcbkBAIC01OTksOCArNTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZ1bmNfcmVwbGFjZV92ZXJpZnlcIikpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZlcmlmeSgpO1xuLVx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmdW5jX3NvY2ttYXBfdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiZnVuY19yZXBsYWNlX3JldHVybl9jb2RlXCIpKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmdW5jX21hcF9wcm9nX2NvbXBhdGliaWxpdHlcIikpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMzNmNzg4ZTI3ODZkYWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNyArNyw2IEBAXG4gXG4gI2luY2x1ZGUgXCJ0ZXN0X3Byb2dzLmhcIlxuICNpbmNsdWRlIFwidGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oXCJcbi0jaW5jbHVkZSBcInRlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcIlxuICNpbmNsdWRlIFwidGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2F0dGFjaC5za2VsLmhcIlxuICNpbmNsdWRlIFwidGVzdF9zb2NrbWFwX3Byb2dzX3F1ZXJ5LnNrZWwuaFwiXG5AQCAtMjM1LDUzICsyMzQsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NrbXNnX2hlbHBlcnNfd2l0aF9saW5rKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuIFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXG4te1xuLVx0aW50IGVyciwgcHJvZywgc3JjO1xuLVx0c3RydWN0IHRlc3Rfc29ja21hcF91cGRhdGUgKnNrZWw7XG4tXHRzdHJ1Y3QgYnBmX21hcCAqZHN0X21hcDtcbi1cdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xuLVx0Y2hhciBkdW1teVsxNF0gPSB7MH07XG4tXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4tXHRcdC5kYXRhX2luID0gZHVtbXksXG4tXHRcdC5kYXRhX3NpemVfaW4gPSBzaXplb2YoZHVtbXkpLFxuLVx0XHQucmVwZWF0ID0gMSxcbi1cdCk7XG4tXHRfX3M2NCBzaztcbi1cbi1cdHNrID0gY29ubmVjdGVkX3NvY2tldF92NCgpO1xuLVx0aWYgKCFBU1NFUlRfTkVRKHNrLCAtMSwgXCJjb25uZWN0ZWRfc29ja2V0X3Y0XCIpKVxuLVx0XHRyZXR1cm47XG4tXG4tXHRza2VsID0gdGVzdF9zb2NrbWFwX3VwZGF0ZV9fb3Blbl9hbmRfbG9hZCgpO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwib3Blbl9hbmRfbG9hZFwiKSlcbi1cdFx0Z290byBjbG9zZV9zaztcbi1cbi1cdHByb2cgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5jb3B5X3NvY2tfbWFwKTtcbi1cdHNyYyA9IGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zcmMpO1xuLVx0aWYgKG1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TT0NLTUFQKVxuLVx0XHRkc3RfbWFwID0gc2tlbC1cdTAwM2VtYXBzLmRzdF9zb2NrX21hcDtcbi1cdGVsc2Vcbi1cdFx0ZHN0X21hcCA9IHNrZWwtXHUwMDNlbWFwcy5kc3Rfc29ja19oYXNoO1xuLVxuLVx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShzcmMsIFx1MDAyNnplcm8sIFx1MDAyNnNrLCBCUEZfTk9FWElTVCk7XG4tXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidXBkYXRlX2VsZW0oc3JjKVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csIFx1MDAyNnRvcHRzKTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1blwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9ORVEodG9wdHMucmV0dmFsLCAwLCBcInRlc3RfcnVuIHJldHZhbFwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjb21wYXJlX2Nvb2tpZXMoc2tlbC1cdTAwM2VtYXBzLnNyYywgZHN0X21hcCk7XG4tXG4tb3V0OlxuLVx0dGVzdF9zb2NrbWFwX3VwZGF0ZV9fZGVzdHJveShza2VsKTtcbi1jbG9zZV9zazpcbi1cdGNsb3NlKHNrKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlKHZvaWQpXG4ge1xuIFx0c3RydWN0IHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSAqc2tlbDtcbkBAIC0xMzg1LDEwICsxMzM3LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja2hhc2ggc2tfbXNnIGxvYWQgaGVscGVyc1wiKSlcbiBcdFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4tXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja2hhc2ggdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgdXBkYXRlIGluIHVuc2FmZSBjb250ZXh0XCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjb3B5XCIpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuKysrIC9kZXYvbnVsbFxuQEAgLTEsMzQgKzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tLy8gQ29weXJpZ2h0IChjKSAyMDIwIEZhY2Vib29rXG4tXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvc3RkZGVmLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BrdF9jbHMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfZW5kaWFuLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuLVxuLXN0cnVjdCB7XG4tXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuLVx0X190eXBlKGtleSwgaW50KTtcbi1cdF9fdHlwZSh2YWx1ZSwgaW50KTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMik7XG4tfSBzb2NrX21hcCBTRUMoXCIubWFwc1wiKTtcbi1cbi1TRUMoXCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcIilcbi1pbnQgZnJlcGxhY2VfY2xzX3JlZGlyZWN0X3Rlc3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuLXtcbi1cdGludCByZXQgPSAwO1xuLVx0Y29uc3QgaW50IHplcm8gPSAwO1xuLVx0c3RydWN0IGJwZl9zb2NrICpzaztcbi1cbi1cdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrX21hcCwgXHUwMDI2emVybyk7XG4tXHRpZiAoIXNrKVxuLVx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4tXG4tXHRyZXQgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNnNvY2tfbWFwLCBcdTAwMjZ6ZXJvLCBzaywgMCk7XG4tXHRicGZfc2tfcmVsZWFzZShzayk7XG4tXG4tXHRyZXR1cm4gcmV0ID09IDAgPyBUQ19BQ1RfT0sgOiBUQ19BQ1RfU0hPVDtcbi19XG4tXG4tY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xuKysrIC9kZXYvbnVsbFxuQEAgLTEsNDggKzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tLy8gQ29weXJpZ2h0IChjKSAyMDIwIENsb3VkZmxhcmVcbi0jaW5jbHVkZSBcInZtbGludXguaFwiXG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IHNyYyBTRUMoXCIubWFwc1wiKTtcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IGRzdF9zb2NrX21hcCBTRUMoXCIubWFwc1wiKTtcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4tXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuLVx0X190eXBlKGtleSwgX191MzIpO1xuLVx0X190eXBlKHZhbHVlLCBfX3U2NCk7XG4tfSBkc3Rfc29ja19oYXNoIFNFQyhcIi5tYXBzXCIpO1xuLVxuLVNFQyhcInRjXCIpXG4taW50IGNvcHlfc29ja19tYXAodm9pZCAqY3R4KVxuLXtcbi1cdHN0cnVjdCBicGZfc29jayAqc2s7XG4tXHRib29sIGZhaWxlZCA9IGZhbHNlO1xuLVx0X191MzIga2V5ID0gMDtcbi1cbi1cdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzcmMsIFx1MDAyNmtleSk7XG4tXHRpZiAoIXNrKVxuLVx0XHRyZXR1cm4gU0tfRFJPUDtcbi1cbi1cdGlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNmRzdF9zb2NrX21hcCwgXHUwMDI2a2V5LCBzaywgMCkpXG4tXHRcdGZhaWxlZCA9IHRydWU7XG4tXG4tXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcdTAwMjZkc3Rfc29ja19oYXNoLCBcdTAwMjZrZXksIHNrLCAwKSlcbi1cdFx0ZmFpbGVkID0gdHJ1ZTtcbi1cbi1cdGJwZl9za19yZWxlYXNlKHNrKTtcbi1cdHJldHVybiBmYWlsZWQgPyBTS19EUk9QIDogU0tfUEFTUztcbi19XG4tXG4tY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcbmluZGV4IGZlNGIxMjMxODdiODZlLi5iMTEwMjYxMjM2OTAzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSh2b2lkKVxuIH1cbiBcbiBTRUMoXCJhY3Rpb25cIilcbi1fX3N1Y2Nlc3NcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cdTAwM2Vzayk7XG5AQCAtODIsNyArODIsNyBAQCBpbnQgdGVzdF9zY2hlZF9hY3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuIH1cbiBcbiBTRUMoXCJjbGFzc2lmaWVyXCIpXG4tX19zdWNjZXNzXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwiKVxuIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXHUwMDNlc2spO1xuQEAgLTkwLDcgKzkwLDcgQEAgaW50IHRlc3Rfc2NoZWRfY2xzKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB9XG4gXG4gU0VDKFwiZmxvd19kaXNzZWN0b3JcIilcbi1fX3N1Y2Nlc3NcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xuQEAgLTk4LDcgKzk4LDcgQEAgaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4gfVxuIFxuIFNFQyhcImZsb3dfZGlzc2VjdG9yXCIpXG4tX19mYWlsdXJlIF9fbXNnKFwicHJvZ3JhbSBvZiB0aGlzIHR5cGUgY2Fubm90IHVzZSBoZWxwZXIgYnBmX3NrX3JlbGVhc2VcIilcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfdXBkYXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfdXBkYXRlKCk7IC8qIG5vIGFjY2VzcyB0byBza2ItXHUwMDNlc2sgKi9cbkBAIC0xNzksNyArMTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcbiB9XG4gXG4gU0VDKFwieGRwXCIpXG4tX19zdWNjZXNzXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwiKVxuIGludCB0ZXN0X3hkcChzdHJ1Y3QgeGRwX21kICpjdHggX19hbHdheXNfdW51c2VkKVxuIHtcbiBcdHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MTEuMzIwMjQwMTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3OTYzMDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBjb3JlIGNoYW5nZTogaXQncyBtb2RpZnlpbmcgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNwZWNpZmljYWxseSB0aGUgYG1heV91cGRhdGVfc29ja21hcGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZXkncmUgcmVtb3ZpbmcgY2VydGFpbiBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gbGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGl0OlxuXG5gYGBjXG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbmBgYFxuXG5SaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcGF0Y2ggaXMgc3RyaXBwaW5nIG91dCBgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNgLCBgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1RgLCBgQlBGX1BST0dfVFlQRV9YRFBgLCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyBldmFsdWF0ZSBhcyBgZmFsc2VgIG9yIHByb2JhYmx5IHJldHVybiBhbiBlcnJvciBmb3IgdGhvc2UgdHlwZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSB2ZXJpZmllcidzIGJlaGF2aW9yLiBJdCBsb29rcyBsaWtlIGl0IGltcGFjdHMgc29tZSBvZiB0aGUgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxNi40OTk4NzUzOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5OTM0Mzg0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXlfdXBkYXRlX3NvY2ttYXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTgyMjc9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NjgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0Njk6c3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDcwLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTA5PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODQtXFx0XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1ODU6XFx0XFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU4Ni1cXHRcXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTMtXFx0XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1OTQ6XFx0XFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5NS1cXHRcXHRcXHRnb3RvIGVycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxOS42OTkyMzE2NTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQxMTEwMTMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gSXQgbG9va3MgbGlrZSB3ZSdyZSB0aWdodGVuaW5nIHRoZSByZXN0cmljdGlvbnMgb24gd2hpY2ggQlBGIHByb2dyYW0gdHlwZXMgY2FuIGFjdHVhbGx5IG1vZGlmeSBhIGBzb2NrbWFwYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlbW92aW5nIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AsIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAsIGBCUEZfUFJPR19UWVBFX1hEUGAsIGFuZCBgQlBGX1BST0dfVFlQRV9GTE9XX0RJU1NFQ1RPUmAgZnJvbSB0aGUgbGlzdCBvZiBhbGxvd2VkIHByb2dyYW0gdHlwZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBCUEYgdmVyaWZpZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJTZWN1cml0eSBvciBjb3JyZWN0bmVzcyBmaXgsIHByZXZlbnRpbmcgc29tZSBraW5kIG9mIGNyYXNoIG9yIHN0YXRlIGNvcnJ1cHRpb24sIHByb2JhYmx5LlwiIFNvLCBpcyB0aGlzIGZ1enphYmxlPyBEZWZpbml0ZWx5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyOyB0aGF0J3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cblRoZW4gSSBnZXQgYSBsaXR0bGUgc3VzcGljaW91czogXCJXb24ndCBmdXp6aW5nIGp1c3QgZW5kIHVwIHRyaWdnZXJpbmcgdmVyaWZpZXIgcmVqZWN0aW9ucyBiZWNhdXNlIHdlJ3JlIGp1c3QgKnJlc3RyaWN0aW5nKiBmdW5jdGlvbmFsaXR5P1wiIFRoYXQncyBhIHZhbGlkIGNvbmNlcm4uIEJ1dCBpdCdzIHN0aWxsIGEgY29yZSBrZXJuZWwgY2hhbmdlLCBhbmQgdGhlIGNoYW5nZSBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc28gaXQncyBhIGNyaXRpY2FsIGFyZWEuXG5cbkFscmlnaHQsIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IGNvZGUgaW4gYG1heV91cGRhdGVfc29ja21hcGAgdG8gYmUgc3VyZS4gR290dGEgc2VlICpleGFjdGx5KiB3aGF0J3MgY2hhbmdpbmcgdG8gcmVmaW5lIG15IGZ1enppbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MzIuMTEwMzM3NTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODQ2OSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiODQ2OTpcXHRzdGF0aWMgYm9vbCBtYXlfdXBkYXRlX3NvY2ttYXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGZ1bmNfaWQpXFxuODQ3MDpcXHR7XFxuODQ3MTpcXHRcXHRlbnVtIGJwZl9hdHRhY2hfdHlwZSBlYXR5cGUgPSBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlO1xcbjg0NzI6XFx0XFx0ZW51bSBicGZfcHJvZ190eXBlIHR5cGUgPSByZXNvbHZlX3Byb2dfdHlwZShlbnYtXFx1MDAzZXByb2cpO1xcbjg0NzM6XFx0XFxuODQ3NDpcXHRcXHRpZiAoZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfdXBkYXRlX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG44NDc1OlxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9kZWxldGVfZWxlbSlcXG44NDc2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG44NDc3OlxcdFxcbjg0Nzg6XFx0XFx0LyogSXQncyBub3QgcG9zc2libGUgdG8gZ2V0IGFjY2VzcyB0byBhIGxvY2tlZCBzdHJ1Y3Qgc29jayBpbiB0aGVzZVxcbjg0Nzk6XFx0XFx0ICogY29udGV4dHMsIHNvIHVwZGF0aW5nIGlzIHNhZmUuXFxuODQ4MDpcXHRcXHQgKi9cXG44NDgxOlxcdFxcdHN3aXRjaCAodHlwZSkge1xcbjg0ODI6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuODQ4MzpcXHRcXHRcXHRpZiAoZWF0eXBlID09IEJQRl9UUkFDRV9JVEVSKVxcbjg0ODQ6XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuODQ4NTpcXHRcXHRcXHRicmVhaztcXG44NDg2OlxcdFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TT0NLX09QUzpcXG44NDg3OlxcdFxcdFxcdC8qIG1hcF91cGRhdGUgYWxsb3dlZCBvbmx5IHZpYSBkZWRpY2F0ZWQgaGVscGVycyB3aXRoIGV2ZW50IHR5cGUgY2hlY2tzICovXFxuODQ4ODpcXHRcXHRcXHRpZiAoZnVuY19pZCA9PSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW0pXFxuODQ4OTpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG44NDkwOlxcdFxcdFxcdGJyZWFrO1xcbjg0OTE6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XFxuODQ5MjpcXHRcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxcbjg0OTM6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDpcXG44NDk0OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjg0OTU6XFx0XFx0ZGVmYXVsdDpcXG44NDk2OlxcdFxcdFxcdGJyZWFrO1xcbjg0OTc6XFx0XFx0fVxcbjg0OTg6XFx0XFxuODQ5OTpcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcXFxcblxcXCIpO1xcbjg1MDA6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjg1MDE6XFx0fVxcbjg1MDI6XFx0XFxuODUwMzpcXHRib29sIGJwZl9hbGxvd190YWlsX2NhbGxfaW5fc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG44NTA0OlxcdHtcXG44NTA1OlxcdFxcdHJldHVybiBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWppdF9yZXF1ZXN0ZWQgXFx1MDAyNlxcdTAwMjZcXG44NTA2OlxcdFxcdCAgICAgICBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKCk7XFxuODUwNzpcXHR9XFxuODUwODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MzIuMTE0MTQ0NTg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzNjI5MjUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsaW1pdHMgaG93IGNlcnRhaW4gQlBGIHByb2dyYW0gdHlwZXMgY2FuIHVwZGF0ZSBzb2NrbWFwcy4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBcIklzIHRoaXMgZnV6ei13b3J0aHk/XCIgQW5kIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIFwiWWVzIVwiIEFueSB0aW1lIHdlIGFsdGVyIHZlcmlmaWVyIGJlaGF2aW9yLCB3ZSBuZWVkIHRvIHN0cmVzcy10ZXN0IGl0LiBUaGUgcG90ZW50aWFsIGZvciByZWdyZXNzaW9ucyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBpcyBoaWdoLlxuXG5MZXQncyBob25lIGluIG9uIHRoZSBrZXkgc3ltYm9sczogYG1heV91cGRhdGVfc29ja21hcGAgYW5kIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YC4gV2FpdCBhIG1pbnV0ZSwgYXJlbid0IHRob3NlIHN0YXRpYyBmdW5jdGlvbnM/IEFoLCB5ZXMsIHRoZXkgYXJlLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHRvIGJ1aWxkIGEgc29saWQgZnV6emVyIHRhcmdldC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcyBnb2luZyB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjM1Ljk1MDQ0MDE3OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTEyMTIyODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTg1MDM9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUwOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODUwOTpzdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUxMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDE4Mj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDYxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA2MTQ6XFx0ZXJyID0gY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShlbnYsIG1ldGEubWFwLnB0ciwgZnVuY19pZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNjE1LVxcdGlmIChlcnIpXFxuLS1cXG5zY3JpcHRzL2JwZl9kb2MucHk9NjA3PUNvbXBhdGliaWxpdHkgYmV0d2VlbiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBtYXAgdHlwZXMgY2FuIGJlIGZvdW5kIGluIHRoZVxcbnNjcmlwdHMvYnBmX2RvYy5weTo2MDg6KipjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KipcXFxcXFxcXCAoKSBmdW5jdGlvbiBpbiBmaWxlICprZXJuZWwvYnBmL3ZlcmlmaWVyLmMqLlxcbnNjcmlwdHMvYnBmX2RvYy5weS02MDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjM5LjQ2MjU3MTMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyNjEyNDgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFZlcmlmaWNhdGlvbiBhbmQgU29ja21hcCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29kZSBwYXRoLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQgaXMgYGNoZWNrX2hlbHBlcl9jYWxsYC4gVGhhdCdzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZzsgaXQncyB0aGUgYW5jaG9yIHBvaW50IGZvciB0aGlzIHNwZWNpZmljIGFzcGVjdCBvZiBCUEYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcywgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgaXMga2V5IGhlcmUuXG5cbk5vdywgd2hpbGUgaXQncyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGluIHRoZSAqdHJhZGl0aW9uYWwqIHNlbnNlIG9mIHBhY2tldCBwcm9jZXNzaW5nLCBpdCdzIGRlZmluaXRlbHkgYSBmcmVxdWVudCBwb2ludCBvZiBleGVjdXRpb24gZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbi4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgd2hlbiB0aGlua2luZyBhYm91dCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgbGF0ZXIuIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCBzZWVtcyBsaWtlIGFub3RoZXIgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZXhhbWluZS4gVGhlbiBJIGFsc28gbmVlZCB0byBmb2N1cyBvbiBgbWF5X3VwZGF0ZV9zb2NrbWFwYC5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJQRiBzeXNjYWxscyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgc29ja21hcCBpdHNlbGYuLi4gdGhhdCBmZWVscyBsaWtlIGl0J3MgZGVwZW5kZW50IG9uIGBDT05GSUdfQlBGX1NZU0NBTExgICphbmQqIHBlcmhhcHMgYENPTkZJR19DR1JPVVBfQlBGYCBvciBldmVuIGBDT05GSUdfTkVUYC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBsb29rIGZvciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6NDQuNDg4Njk5ODA3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMyNjA2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTMxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01MTY9UG93ZXJQQywgQVJNLCBBUk02NCwgTUlQUywgUklTQy1WLCBzMzkwLCBhbmQgQVJDIGFuZCBjYW4gYmUgZW5hYmxlZCB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTE3OkNPTkZJR19CUEZfSklULiBUaGUgSklUIGNvbXBpbGVyIGlzIHRyYW5zcGFyZW50bHkgaW52b2tlZCBmb3IgZWFjaFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUxOC1hdHRhY2hlZCBmaWx0ZXIgZnJvbSB1c2VyIHNwYWNlIG9yIGZvciBpbnRlcm5hbCBrZXJuZWwgdXNlcnMgaWYgaXQgaGFzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01Mjg9RXhhbXBsZSBvdXRwdXQgZnJvbSBkbWVzZzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdC01MzYtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTM3OldoZW4gQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OIGlzIGVuYWJsZWQsIGJwZl9qaXRfZW5hYmxlIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzOC1zZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbCByZXR1cm4gaW4gZmFpbHVyZS4gVGhpcyBpcyBldmVuIHRoZSBjYXNlIGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zNT1vcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIHRvIHVzZSBzY2hlZF9leHQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM4LVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6Mzk6ICAgIENPTkZJR19CUEY9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDAtICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDE6ICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MjogICAgQ09ORklHX0JQRl9KSVQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NDogICAgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ1OiAgICBDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mcHJvYmV0cmFjZS5yc3Q9ODQ9cGFyYW1ldGVycyBieSBpdHMgbmFtZSBpbnN0ZWFkIG9mIGBgJGFyZ05gYC4gVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBpZiB0aGVcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Zwcm9iZXRyYWNlLnJzdDo4NTprZXJuZWwgaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19CUEZfU1lTQ0FMTCBhbmQgQ09ORklHX0RFQlVHX0lORk9fQlRGLlxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnByb2JldHJhY2UucnN0LTg2LUlmIHVzZXIgb25seSBzcGVjaWZ5IHRoZSBCVEYgYXJndW1lbnQsIHRoZSBldmVudCdzIGFyZ3VtZW50IG5hbWUgaXMgYWxzb1xcbi0tXFxuTWFrZWZpbGU9MTU0Nz1lbmRpZlxcbk1ha2VmaWxlLTE1NDgtXFxuTWFrZWZpbGU6MTU0OTppZmRlZiBDT05GSUdfQlBGXFxuTWFrZWZpbGUtMTU1MC1pZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZcXG4tLVxcbmFyY2gvYXJjL25ldC9NYWtlZmlsZT0zPWlmZXEgKCQoQ09ORklHX0lTQV9BUkNWMikseSlcXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NDpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NTpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9hcmN2Mi5vXFxuYXJjaC9hcmMvbmV0L01ha2VmaWxlLTYtZW5kaWZcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnLTUtQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnLTEtIyBDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE8gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnOjI6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL2FybS9jb25maWdzL2lteHJ0X2RlZmNvbmZpZy0zLUNPTkZJR19TQ0hFRF9BVVRPR1JPVVA9eVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NwZWN0cmUuYz04PXN0YXRpYyBib29sIF91bnByaXZpbGVnZWRfZWJwZl9lbmFibGVkKHZvaWQpXFxuYXJjaC9hcm0va2VybmVsL3NwZWN0cmUuYy05LXtcXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jOjEwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jLTExLVxcdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XFxuLS1cXG5hcmNoL2FybS9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL2FybS9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF8zMi5vXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTU9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo2OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo3OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MzY9Ym9vbCBpbnNuX21heV9hY2Nlc3NfdXNlcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZXNyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zOS1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcdFxcdCAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDg6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYz0xMTE9c3RhdGljIGJvb2wgX3VucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExMi17XFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYzoxMTM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmMtMTE0LVxcdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jPTExNjg9dm9pZCBfX2luaXQgc3BlY3RyZV9iaGJfcGF0Y2hfY2xlYXJiaGIoc3RydWN0IGFsdF9pbnN0ciAqYWx0LFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTc5LVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmM6MTE4MDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTgxLSNkZWZpbmUgRUJQRl9XQVJOIFxcXCJVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcXFxuXFxcIlxcbi0tXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9Nj1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0zNjU9Q09ORklHX0NHUk9VUF9ORVRfUFJJTz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzozNjY6Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTM2Ny1DT05GSUdfQlQ9bVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz02PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6NzpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzgxPUNPTkZJR19DR1JPVVBfTkVUX1BSSU89eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MzgyOkNPTkZJR19CUEZfU1RSRUFNX1BBUlNFUj15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0zODMtQ09ORklHX0JUPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctOS0jIENPTkZJR19TWVNGU19TWVNDQUxMIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc9Nz1DT05GSUdfRVhQRVJUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy0xMS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNV9kZWZjb25maWctNS1DT05GSUdfVEFTS1NUQVRTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZy01LUNPTkZJR19UQVNLU1RBVFM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9MTY9Q09ORklHX0JMS19ERVZfSU5JVFJEPXlcXG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzoxNzpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTE4LUNPTkZJR19VU0VSRkFVTFRGRD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTc9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNC1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR182NEJJVCkseSlcXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS03LWVsc2VcXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6ODpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvZnNwMl9kZWZjb25maWc9MTY9Q09ORklHX0tBTExTWU1TX0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnLTE4LUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZy02LUNPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HX05BVElWRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0yOD1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjI5OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz05ND1DT05GSUdfRE5TX1JFU09MVkVSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo5NTpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctOTYtIyBDT05GSUdfV0lSRUxFU1MgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9MU009eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy0xMC1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS00LSNcXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl9qaXRfY29tcCQoQklUUykub1xcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNi1cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlPTc9aWZkZWYgQ09ORklHX1BQQzY0XFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctNi1DT05GSUdfSUtDT05GSUc9eVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BUkNIX1JWNjRJKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTItXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6ODpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04PUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjExOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyOkNPTkZJR19CUEZfTFNNPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTMtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTc9Q09ORklHX1BPU0lYX0FVWF9DTE9DS1M9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0xTTT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyLUNPTkZJR19TQ0hFRF9DT1JFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0zPUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcXG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZy01LSMgQ09ORklHX0NQVV9JU09MQVRJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Mz1zdGF0aWMgaW5saW5lIHZvaWQgc3dhcF9leF9lbnRyeV9maXh1cChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICphLFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Ni1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjU3OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD01OT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02MC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjYxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD02Mz1zdGF0aWMgaW5saW5lIGJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjY4OiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjktXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19UUkFDRVBPSU5UUylcXHQrPSB0cmFjZS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS04Mi1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQrPSBicGYub1xcbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUtODQtXFxuLS1cXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTQtI1xcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX0hBVkVfUE5FVElEKSArPSBwbmV0Lm9cXG4tLVxcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTQtI1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcF8kKEJJVFMpLm9cXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS02LWlmZXEgKCQoQklUUyksMzIpXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9hc21fMzIub1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTgtZW5kaWZcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19ub3JldHVybiBleF9oYW5kbGVyX21zcl9tY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGJvb2wgd3Jtc3IpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTItXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjUzOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19YODZfNjQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU0LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqeCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYz0yNjU9dm9pZCAqY2FsbHRodW5rc190cmFuc2xhdGVfY2FsbF9kZXN0KHZvaWQgKmRlc3QpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4MC1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jOjI4MTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4Mi1zdGF0aWMgYm9vbCBpc19jYWxsdGh1bmsodm9pZCAqYWRkcilcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTE2NTU9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpzcGVjdHJlX3YyX21vZHVsZV9zdHJpbmcodm9pZCkgeyByZXR1cm4gXFxcIlxcXCI7IH1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjItXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MTY2MzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMTY2NC12b2lkIHVucHJpdl9lYnBmX25vdGlmeShpbnQgbmV3X3N0YXRlKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg2LXtcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cXHRpZiAoYnBmX2hhc19mcmFtZV9wb2ludGVyKGlwKSlcXG4tLVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTgtZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5jcnlwdG8vTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0NSWVBUT19TS0NJUEhFUjIpICs9IGNyeXB0b19za2NpcGhlci5vXFxuY3J5cHRvL01ha2VmaWxlOjI1OmlmZXEgKCQoQ09ORklHX0JQRl9TWVNDQUxMKSx5KVxcbmNyeXB0by9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfQ1JZUFRPX1NLQ0lQSEVSMikgKz0gYnBmX2NyeXB0b19za2NpcGhlci5vXFxuLS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaD0xNjU9c3RhdGljIGlubGluZSB2b2lkIGRldmljZV9wbV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3MS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaDoxNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3My1zdHJ1Y3QgYnBmX3dzX2xvY2sgeyB9O1xcbi0tXFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jPTExNjM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd2FrZXVwX3NvdXJjZXNfc3RhdHNfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMTcwLVxcbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYzoxMTcxOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmMtMTE3Mi0jaW5jbHVkZSBcXHUwMDNjbGludXgvYnRmLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX3NvdXJjZXNfYnBmX2luaXQodm9pZCkge31cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM6MTIzNDojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jLTEyMzUtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTc9cmMtY29yZS0kKENPTkZJR19NRURJQV9DRUNfUkMpICs9IGtleW1hcHMvcmMtY2VjLm9cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjg6cmMtY29yZS0kKENPTkZJR19CUEZfTElSQ19NT0RFMikgKz0gYnBmLWxpcmMub1xcbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9NDg9c3RydWN0IGlyX3Jhd19ldmVudF9jdHJsIHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtNjItXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDo2MzojaWZkZWYgQ09ORklHX0JQRl9MSVJDX01PREUyXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaC02NC1cXHR1MzJcXHRcXHRcXHRcXHRicGZfc2FtcGxlO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaD0zMzc9c3RhdGljIGlubGluZSB2b2lkIGxpcmNfdW5yZWdpc3RlcihzdHJ1Y3QgcmNfZGV2ICpkZXYpIHsgfVxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaC0zNDItICovXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDozNDM6I2lmZGVmIENPTkZJR19CUEZfTElSQ19NT0RFMlxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtMzQ0LXZvaWQgbGlyY19icGZfZnJlZShzdHJ1Y3QgcmNfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZT02ND1lbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZTo2NjppZmVxICgkKENPTkZJR19CUEZfU1lTQ0FMTCkseSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTY3LW5mcC1vYmpzICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jPTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZwX2FwcF90eXBlICphcHBzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMTktXFx0W05GUF9BUFBfQ09SRV9OSUNdXFx0PSBcXHUwMDI2YXBwX25pYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9hcHAuYzoyMDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMjEtXFx0W05GUF9BUFBfQlBGX05JQ11cXHQ9IFxcdTAwMjZhcHBfYnBmLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlPTU9bmV0ZGV2c2ltLW9ianMgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjg6aWZlcSAoJChDT05GSUdfQlBGX1NZU0NBTEwpLHkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlLTktbmV0ZGV2c2ltLW9ianMgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTE3Nj12b2lkIG5zaW1fdWRwX3R1bm5lbHNfaW5mb19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3ODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3OS1pbnQgbnNpbV9icGZfZGV2X2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuLS1cXG5mcy9NYWtlZmlsZT0xMjk9b2JqLSQoQ09ORklHX1pPTkVGU19GUylcXHRcXHQrPSB6b25lZnMvXFxuZnMvTWFrZWZpbGU6MTMwOm9iai0kKENPTkZJR19CUEZfTFNNKVxcdFxcdCs9IGJwZl9mc19rZnVuY3Mub1xcbmZzL01ha2VmaWxlLTEzMS1vYmotJChDT05GSUdfUkVTQ1RSTF9GUylcXHQrPSByZXNjdHJsL1xcbi0tXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaD0xMDY9ZnN2ZXJpdHlfbXNnKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKmxldmVsLFxcbi0tXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaC0xMTUtXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaDoxMTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL3Zlcml0eS9mc3Zlcml0eV9wcml2YXRlLmgtMTE3LXZvaWQgX19pbml0IGZzdmVyaXR5X2luaXRfYnBmKHZvaWQpO1xcbi0tXFxuZnMvdmVyaXR5L21lYXN1cmUuYz0xMDU9RVhQT1JUX1NZTUJPTF9HUEwoZnN2ZXJpdHlfZ2V0X2RpZ2VzdCk7XFxuZnMvdmVyaXR5L21lYXN1cmUuYy0xMDYtXFxuZnMvdmVyaXR5L21lYXN1cmUuYzoxMDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTA4LVxcbi0tXFxuZnMvdmVyaXR5L21lYXN1cmUuYz0xODM9dm9pZCBfX2luaXQgZnN2ZXJpdHlfaW5pdF9icGYodm9pZClcXG4tLVxcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTg3LVxcbmZzL3Zlcml0eS9tZWFzdXJlLmM6MTg4OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaC0yOTgtXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oOjI5OTojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG5pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgtMzAwLSNkZWZpbmUgQlBGX1JBV19UUCgpIFNUUlVDVF9BTElHTigpO1xcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmg9MTE9c3RydWN0IGJwZl9wcm9nX2FycmF5O1xcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmgtMTItXFxuaW5jbHVkZS9saW51eC9icGYtY2dyb3VwLWRlZnMuaDoxMzojaWZkZWYgQ09ORklHX0JQRl9MU01cXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oLTE0LS8qIE1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnRseSBhdHRhY2hhYmxlIHBlci1jZ3JvdXAgTFNNIGhvb2tzLiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xNTA5PXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MTE6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTEyLWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0yMTkzPXN0YXRpYyBpbmxpbmUgYm9vbCBpc190cmFjaW5nX211bHRpKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIxOTgtXFxuaW5jbHVkZS9saW51eC9icGYuaDoyMTk5OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMDAtLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIzNDg9aW50IGJwZl9wcm9nX2N0eF9hcmdfaW5mb19pbml0KHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjM1MC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIzNTE6I2lmIGRlZmluZWQoQ09ORklHX0NHUk9VUF9CUEYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9MU00pXFxuaW5jbHVkZS9saW51eC9icGYuaC0yMzUyLWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjU1MD1zdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcnVuX2N0eCAqYnBmX3NldF9ydW5fY3R4KHN0cnVjdCBicGZfcnVuX2N0eCAqbmV3X2N0eClcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1My1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI1NTQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1NS1cXHRvbGRfY3R4ID0gY3VycmVudC1cXHUwMDNlYnBmX2N0eDtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjU2MT1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Jlc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpvbGRfY3R4KVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU2Mi17XFxuaW5jbHVkZS9saW51eC9icGYuaDoyNTYzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NjQtXFx0Y3VycmVudC1cXHUwMDNlYnBmX2N0eCA9IG9sZF9jdHg7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTI2NTQ9Ym9vbCBicGZfaml0X2J5cGFzc19zcGVjX3Y0KHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU4LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjY1OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjYwLURFQ0xBUkVfUEVSX0NQVShpbnQsIGJwZl9wcm9nX2FjdGl2ZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwNDc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipmcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDQ5LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzA1MDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzA1MS1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMyMjA9YnBmX3Byb2dfcnVuX2FycmF5X3NsZWVwYWJsZShjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXJyYXkgKmFycmF5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMjY4LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzI2OTojZWxzZSAvKiAhQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMjcwLXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19nZXQodTMyIHVmZClcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzU2Mj1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X2FyZW5hX3Zpb2xhdGlvbihib29sIHdyaXRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1NjUtfVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzU2NjojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNTY3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNTc0PWJwZl9wcm9iZV9yZWFkX2tlcm5lbF9jb21tb24odm9pZCAqZHN0LCB1MzIgc2l6ZSwgY29uc3Qgdm9pZCAqdW5zYWZlX3B0cilcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3Ny1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM1Nzg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JQRl9FVkVOVFMpKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3OS1cXHRcXHRyZXQgPSBjb3B5X2Zyb21fa2VybmVsX25vZmF1bHQoZHN0LCB1bnNhZmVfcHRyLCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzYyND12b2lkIHVucHJpdl9lYnBmX25vdGlmeShpbnQgbmV3X3N0YXRlKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM2MjUtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNjI2OiNpZiBkZWZpbmVkKENPTkZJR19ORVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzYyNy1pbnQgYnBmX2Rldl9ib3VuZF9rZnVuY19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzMxPXN0YXRpYyBpbmxpbmUgaW50IGJwZl9wcm9nX3Rlc3RfcnVuX3N5c2NhbGwoc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM3LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzczODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM5LXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2dldF9mcm9tX2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzYzPXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2xpbmtfY3JlYXRlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3NjYtfVxcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzc2NzojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzY4OiNlbmRpZiAvKiBDT05GSUdfTkVUIFxcdTAwMjZcXHUwMDI2IENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzc3MT1icGZfcHJvZ19pbmNfbWlzc2VzX2NvdW50ZXJzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hcnJheSAqYXJyYXkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3ODUtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzg2OiNpZiBkZWZpbmVkKENPTkZJR19JTkVUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3ODctdm9pZCBicGZfc2tfcmV1c2Vwb3J0X2RldGFjaChzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzkzPXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfc2tfcmV1c2Vwb3J0X2RldGFjaChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTYtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzk3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTgtc3RhdGljIGlubGluZSBpbnQgYnBmX2ZkX3JldXNlcG9ydF9hcnJheV9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zODA0PXN0YXRpYyBpbmxpbmUgaW50IGJwZl9mZF9yZXVzZXBvcnRfYXJyYXlfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgwOS19XFxuaW5jbHVkZS9saW51eC9icGYuaDozODEwOiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MTE6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0lORVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgxMi1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzgxND1zdHJ1Y3QgYnBmX2tleSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTktXFxuaW5jbHVkZS9saW51eC9icGYuaDozODIwOiNpZiBkZWZpbmVkKENPTkZJR19LRVlTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MjEtc3RydWN0IGJwZl9rZXkgKmJwZl9sb29rdXBfdXNlcl9rZXkoczMyIHNlcmlhbCwgdTY0IGZsYWdzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg1ND1zdGF0aWMgaW5saW5lIHMzMiBicGZfa2V5X3NlcmlhbChjb25zdCBzdHJ1Y3QgYnBmX2tleSAqa2V5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zODU3LX1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NTg6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0tFWVMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9NDExMj1pbnQgYnBmX3N0cmVhbV9zdGFnZV9kdW1wX3N0YWNrKHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlICpzcyk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjQ3LjQyMTMxODA5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODA2MTEwNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJQRiBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXRzZWxmIGlzIG5lc3RsZWQgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgYWNjb21wYW55aW5nIHRlc3QgaXMgbG9jYXRlZCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYSBnaXZlbiwgYSBmb3VuZGF0aW9uYWwgcmVxdWlyZW1lbnQuXG5cbk5vdywgYmVjYXVzZSBpdCdzIEJQRiByZWxhdGVkLCBJIG5lZWQgdG8gY29uc2lkZXIgd2hpY2ggb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQuIEl0IGNvdWxkIGJlIHNvbWV0aGluZyBzdHJhaWdodGZvcndhcmQsIGxpa2UgYENPTkZJR19DR1JPVVBfQlBGYCwgb3IgcGVyaGFwcyBgQ09ORklHX05FVGAgb3IgYENPTkZJR19CUEZfSklUYC4gVXN1YWxseSwgYSB2ZXJpZmllciBjaGFuZ2Ugd291bGQganVzdCBuZWVkIGBDT05GSUdfQlBGX1NZU0NBTExgLCBidXQgYmVjYXVzZSB0aGlzIGlzIHNvY2ttYXAgcmVsYXRlZCwgaXQgbWlnaHQgYmUgbW9yZSBzcGVjaWZpYy4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgb3IgYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGludm9sdmVkLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgTWFrZWZpbGVgcyB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgdGhlbiBtb3ZlIHRvIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gc2VlIGlmIEkgY2FuIHNwb3QgYW55IGRpcmVjdCByZWZlcmVuY2VzIHRvIHNvY2ttYXAgdGhhdCBjb3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gVGhhdCdzIHRoZSBiZXN0IHdheSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg3OSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODo1NS4yMjc0MzMxNDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI5Njk3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6NTUuMzYxNzQ3NDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjQyMTU5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIE5ldHdvcmsgQ29yZSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgZm9yIHNvY2tldCBhbmQgQlBGLXJlbGF0ZWQgY29kZSBhcmUsIGxpa2VseSBpbiB0aGUgYnVpbGQgc3lzdGVtLiBNeSBndXQgdGVsbHMgbWUgaXQnbGwgYmUgaW4gdGhlIGBuZXQvY29yZS9gIGRpcmVjdG9yeSwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBsb29rIGF0IGlzIHRoZSBgTWFrZWZpbGVgIHRoZXJlLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyB0aGF0IHBhcnQgb2YgdGhlIGtlcm5lbCwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gb2Z0ZW4gY29udGFpbnMgY29uZGl0aW9uYWwgbG9naWMgb3IgbWFjcm9zIGZvciBkaWZmZXJlbnQgZmVhdHVyZXMuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgYE1ha2VmaWxlYCBsb29raW5nIGZvciBkaXJlY3RpdmVzLCBpbmNsdWRlcywgb3IgdmFyaWFibGVzIHRoYXQgcmVmZXJlbmNlIFwic29ja1wiIG9yIFwiYnBmXCIg4oCTIHRob3NlIGFyZSB0aGUga2V5d29yZHMgdGhhdCdsbCBwb2ludCBtZSB0byB0aGUgZmlsZXMgSSBuZWVkLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSBoZWFkZXJzIG9yIHNvdXJjZSBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzODYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTowMS4xMjU5NzE2OTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDY0NDQ5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0xXVFVOTkVMKSArPSBsd3R1bm5lbC5vXFxubmV0L2NvcmUvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0xXVFVOTkVMX0JQRikgKz0gbHd0X2JwZi5vXFxubmV0L2NvcmUvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0RTVF9DQUNIRSkgKz0gZHN0X2NhY2hlLm9cXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTQ1PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc29ja19tYXAub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX3NrX3N0b3JhZ2Uub1xcbm5ldC9jb3JlL01ha2VmaWxlLTQ3LW9iai0kKENPTkZJR19PRilcXHQrPSBvZl9uZXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTowMS41NzA2MjM5MjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2ODkyMzg4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2Ygc29ja19tYXAubyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHNvY2tfbWFwLm9gIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgbmFtZS4gQnV0IGhhbmcgb24uLi4gYHNvY2tfbWFwLm9gIHJlc2lkZXMgaW4gYG5ldC9jb3JlL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYSBiaXQgYmV0dGVyLiBUaGlzIHVzdWFsbHkgbWVhbnMgaXQncyBhIGNvcmUgY29tcG9uZW50LiBMZXQgbWUgb3BlbiB1cCBgbmV0L2NvcmUvc29ja19tYXAuY2AgYW5kIHF1aWNrbHkgc2NhbiB0aGUgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVsYXRpb25zaGlwcyBhcmUgYXQgcGxheSBoZXJlLiBUaGlzIHdheSBJIGNhbiBkZXRlcm1pbmUgd2h5IHRoaXMgbW9kdWxlIGlzIGZvdW5kIGluIGEgY29yZSBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6MTUuMjU5ODY2NDg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMyNjEzNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9zb2NrX21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3NvY2tfbWFwLmM9MTQ3NT1zdGF0aWMgaW50IHNvY2tfbWFwX3Byb2dfbGlua19sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9wcm9nICoqKnBwcm9nLFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDkxLVxcdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOToxNS40MjMxNDAyODJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MzA0NTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFZlcmlmaWVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgdGhlIHByaW1hcnkgZW5hYmxlci4gTXkgaW5pdGlhbCBmb2N1cyBoYXMgdG8gYmUgb24gdGhhdC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyICpzcGVjaWZpYyogY29uZmlncyBpbiBwbGF5PyBJIG5lZWQgdG8gY2hlY2suIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgYWJvdXQgYW55IHByb2dyYW0gdHlwZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucywgbGlrZSBmb3IgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCBvciBgQlBGX1BST0dfVFlQRV9YRFBgLiBIbW0sIEkgd29uZGVyIGlmIGBDT05GSUdfTkVUX0NMU19CUEZgIGlzIGludm9sdmVkP1xuXG5XYWl0LCB0aGUgdmVyaWZpZXIgaGFuZGxlcyBhbGwgdHlwZXMgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWN0aXZlLCByaWdodD8gVGhvdWdoLCBJIHN1cHBvc2Ugc29tZSBvZiB0aG9zZSB0eXBlcyBtaWdodCBiZSB1bmF2YWlsYWJsZSBpZiBgQ09ORklHX05FVGAgaXMgZGlzYWJsZWQuIEhvd2V2ZXIsIHRoYXQncyBub3QgYSBsaWtlbHkgc2NlbmFyaW8uIGBDT05GSUdfTkVUYCBpcyBwcmFjdGljYWxseSBhbHdheXMgZW5hYmxlZC4gU3RpbGwsIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGFyb3VuZCB0aGUgYG1heV91cGRhdGVfc29ja21hcGAgc2VjdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTGV0J3MgY29uZmlybSB0aGF0IGFyZWEgc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOToxOS45MDYxOTI1MzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njc1MDEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXlfdXBkYXRlX3NvY2ttYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz04MjI3PXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDY4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NDY5OnN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ3MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUwOT1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg0LVxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTg1OlxcdFxcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODYtXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTkzLVxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTk0OlxcdFxcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTUtXFx0XFx0XFx0Z290byBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6MjAuMDcyOTUxMTU1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzM1MTk1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBUYXJnZXRzIGZvciBCUEYgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmdW5jdGlvbiwgYXMgSSByZWNhbGwsIGlzIGNhbGxlZCBmcm9tIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5OiBgbWF5X3VwZGF0ZV9zb2NrbWFwYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBIb3dldmVyLCBib3RoIG9mIHRoZXNlIGFyZSBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0g4oCTIHRoZXkgbWlnaHQgYmUgaW5saW5lZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5MZXQncyBkbyBzb21lIHF1aWNrIGNoZWNrcy4gWWVzLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgaXMgYWxzbyBzdGF0aWMsIHNvIG15IGluaXRpYWwgdGFyZ2V0IGlzIHByb2JhYmx5IG5vdCB0aGUgcmlnaHQgb25lLiBMZXQgbWUgY2hlY2sgYGNoZWNrX2hlbHBlcl9jYWxsYCBqdXN0IHRvIG1ha2Ugc3VyZSDigJMgYWgsIGFuZCB0aGF0J3MgYWxzbyBzdGF0aWMuIE9rYXksIGxldCdzIHNlZSwgd2hhdCBhYm91dCB0aGUgbWFpbiBlbnRyeSBwb2ludCwgYGJwZl9jaGVja2A/IFllcywgaXQncyBleHBvcnRlZCBhbmQgdGh1cyBhY2Nlc3NpYmxlIGJ1dCBpdOKAmXMgdG9vIGdlbmVyaWMuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgcHJvdmlkaW5nIGJvdGggYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIGFuZCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gRnV6emVycyBjYW4gdXN1YWxseSBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBub3QgZnVsbHkgaW5saW5lZC4gSXQncyB3b3J0aCBhIHNob3QuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVycyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgdmlzaWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZ2AgZmlsZS4gSXQncyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTM0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjI1LjU0NjQ3NDg5OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRDT05GSUdfQkxLX0RFVl9MT09QPXlcXG4gICAyOlxcdENPTkZJR19CT09UUEFSQU1fSEFSRExPQ0tVUF9QQU5JQz15XFxuICAgMzpcXHRDT05GSUdfQk9PVFBBUkFNX1NPRlRMT0NLVVBfUEFOSUM9MVxcbiAgIDQ6XFx0Q09ORklHX0JQRj15XFxuICAgNTpcXHRDT05GSUdfQlBGX0VWRU5UUz15XFxuICAgNjpcXHRDT05GSUdfQlBGX0pJVD15XFxuICAgNzpcXHRDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERT15XFxuICAgODpcXHRDT05GSUdfQlBGX0xJUkNfTU9ERTI9eVxcbiAgIDk6XFx0Q09ORklHX0JQRl9MU009eVxcbiAgMTA6XFx0Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcXG4gIDExOlxcdENPTkZJR19CUEZfU1lTQ0FMTD15XFxuICAxMjpcXHQjIENPTkZJR19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGIGlzIG5vdCBzZXRcXG4gIDEzOlxcdENPTkZJR19DR1JPVVBfQlBGPXlcXG4gIDE0OlxcdENPTkZJR19DUllQVE9fSE1BQz15XFxuICAxNTpcXHRDT05GSUdfQ1JZUFRPX1NIQTI1Nj15XFxuICAxNjpcXHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJPXlcXG4gIDE3OlxcdENPTkZJR19DUllQVE9fVVNFUl9BUElfSEFTSD15XFxuICAxODpcXHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX1NLQ0lQSEVSPXlcXG4gIDE5OlxcdENPTkZJR19DUllQVE9fU0tDSVBIRVI9eVxcbiAgMjA6XFx0Q09ORklHX0NSWVBUT19FQ0I9eVxcbiAgMjE6XFx0Q09ORklHX0NSWVBUT19BRVM9eVxcbiAgMjI6XFx0Q09ORklHX0RFQlVHX0lORk89eVxcbiAgMjM6XFx0Q09ORklHX0RFQlVHX0lORk9fQlRGPXlcXG4gIDI0OlxcdENPTkZJR19ERUJVR19JTkZPX0RXQVJGND15XFxuICAyNTpcXHRDT05GSUdfRE1BQlVGX0hFQVBTPXlcXG4gIDI2OlxcdENPTkZJR19ETUFCVUZfSEVBUFNfU1lTVEVNPXlcXG4gIDI3OlxcdENPTkZJR19EVU1NWT15XFxuICAyODpcXHRDT05GSUdfRFlOQU1JQ19GVFJBQ0U9eVxcbiAgMjk6XFx0Q09ORklHX0ZQUk9CRT15XFxuICAzMDpcXHRDT05GSUdfRlRSQUNFX1NZU0NBTExTPXlcXG4gIDMxOlxcdENPTkZJR19GVU5DVElPTl9FUlJPUl9JTkpFQ1RJT049eVxcbiAgMzI6XFx0Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XFxuICAzMzpcXHRDT05GSUdfRlNfVkVSSVRZPXlcXG4gIDM0OlxcdENPTkZJR19HRU5FVkU9eVxcbiAgMzU6XFx0Q09ORklHX0lLQ09ORklHPXlcXG4gIDM2OlxcdENPTkZJR19JS0NPTkZJR19QUk9DPXlcXG4gIDM3OlxcdENPTkZJR19JTUE9eVxcbiAgMzg6XFx0Q09ORklHX0lNQV9SRUFEX1BPTElDWT15XFxuICAzOTpcXHRDT05GSUdfSU1BX1dSSVRFX1BPTElDWT15XFxuICA0MDpcXHRDT05GSUdfSU5FVF9FU1A9eVxcbiAgNDE6XFx0Q09ORklHX0lQX05GX0ZJTFRFUj15XFxuICA0MjpcXHRDT05GSUdfSVBfTkZfUkFXPXlcXG4gIDQzOlxcdENPTkZJR19JUF9ORl9UQVJHRVRfU1lOUFJPWFk9eVxcbiAgNDQ6XFx0Q09ORklHX0lQVjY9eVxcbiAgNDU6XFx0Q09ORklHX0lQVjZfRk9VPXlcXG4gIDQ2OlxcdENPTkZJR19JUFY2X0ZPVV9UVU5ORUw9eVxcbiAgNDc6XFx0Q09ORklHX0lQVjZfR1JFPXlcXG4gIDQ4OlxcdENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMPXlcXG4gIDQ5OlxcdENPTkZJR19JUFY2X1NFRzZfQlBGPXlcXG4gIDUwOlxcdENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eVxcbiAgNTE6XFx0Q09ORklHX0lQVjZfU0lUPXlcXG4gIDUyOlxcdENPTkZJR19JUFY2X1RVTk5FTD15XFxuICA1MzpcXHRDT05GSUdfS0VZUz15XFxuICA1NDpcXHRDT05GSUdfTElSQz15XFxuICA1NTpcXHRDT05GSUdfTElWRVBBVENIPXlcXG4gIDU2OlxcdENPTkZJR19MV1RVTk5FTD15XFxuICA1NzpcXHRDT05GSUdfTFdUVU5ORUxfQlBGPXlcXG4gIDU4OlxcdENPTkZJR19NT0RVTEVfU0lHPXlcXG4gIDU5OlxcdENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEw9eVxcbiAgNjA6XFx0Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxcbiAgNjE6XFx0Q09ORklHX01PRFVMRVM9eVxcbiAgNjI6XFx0Q09ORklHX01PRFZFUlNJT05TPXlcXG4gIDYzOlxcdENPTkZJR19NUExTPXlcXG4gIDY0OlxcdENPTkZJR19NUExTX0lQVFVOTkVMPXlcXG4gIDY1OlxcdENPTkZJR19NUExTX1JPVVRJTkc9eVxcbiAgNjY6XFx0Q09ORklHX01QVENQPXlcXG4gIDY3OlxcdENPTkZJR19ORVRfQUNUX0dBQ1Q9eVxcbiAgNjg6XFx0Q09ORklHX05FVF9BQ1RfTUlSUkVEPXlcXG4gIDY5OlxcdENPTkZJR19ORVRfQUNUX1NLQk1PRD15XFxuICA3MDpcXHRDT05GSUdfTkVUX0NMUz15XFxuICA3MTpcXHRDT05GSUdfTkVUX0NMU19BQ1Q9eVxcbiAgNzI6XFx0Q09ORklHX05FVF9DTFNfQlBGPXlcXG4gIDczOlxcdENPTkZJR19ORVRfQ0xTX0ZMT1dFUj15XFxuICA3NDpcXHRDT05GSUdfTkVUX0NMU19NQVRDSEFMTD15XFxuICA3NTpcXHRDT05GSUdfTkVUX0ZPVT15XFxuICA3NjpcXHRDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG4gIDc3OlxcdENPTkZJR19ORVRfSVBHUkU9eVxcbiAgNzg6XFx0Q09ORklHX05FVF9JUEdSRV9ERU1VWD15XFxuICA3OTpcXHRDT05GSUdfTkVUX0lQSVA9eVxcbiAgODA6XFx0Q09ORklHX05FVF9NUExTX0dTTz15XFxuICA4MTpcXHRDT05GSUdfTkVUX1NDSF9CUEY9eVxcbiAgODI6XFx0Q09ORklHX05FVF9TQ0hfRlE9eVxcbiAgODM6XFx0Q09ORklHX05FVF9TQ0hfSU5HUkVTUz15XFxuICA4NDpcXHRDT05GSUdfTkVUX1NDSF9IVEI9eVxcbiAgODU6XFx0Q09ORklHX05FVF9TQ0hFRD15XFxuICA4NjpcXHRDT05GSUdfTkVUREVWU0lNPXlcXG4gIDg3OlxcdENPTkZJR19ORVRGSUxURVI9eVxcbiAgODg6XFx0Q09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15XFxuICA4OTpcXHRDT05GSUdfTkVURklMVEVSX1NZTlBST1hZPXlcXG4gIDkwOlxcdENPTkZJR19ORVRGSUxURVJfWFRfQ09OTk1BUks9eVxcbiAgOTE6XFx0Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT15XFxuICA5MjpcXHRDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DVD15XFxuICA5MzpcXHRDT05GSUdfTkVUS0lUPXlcXG4gIDk0OlxcdENPTkZJR19ORl9DT05OVFJBQ0s9eVxcbiAgOTU6XFx0Q09ORklHX05GX0NPTk5UUkFDS19NQVJLPXlcXG4gIDk2OlxcdENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVM9eVxcbiAgOTc6XFx0Q09ORklHX05GX0RFRlJBR19JUFY0PXlcXG4gIDk4OlxcdENPTkZJR19ORl9ERUZSQUdfSVBWNj15XFxuICA5OTpcXHRDT05GSUdfTkZfVEFCTEVTPXlcXG4gMTAwOlxcdENPTkZJR19ORl9UQUJMRVNfSU5FVD15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjI1LjU0NjYzNDU1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODM2NjQ5NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgU29ja21hcCBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciB0aGlzIHNvY2ttYXAgaW1wbGVtZW50YXRpb24uIEFic29sdXRlbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbm9uLW5lZ290aWFibGUgcHJlcmVxdWlzaXRlLiBXZSBjYW4ndCBkbyBhbnl0aGluZyBCUEYtcmVsYXRlZCB3aXRob3V0IGl0LiBOb3csIGdpdmVuIHRoZSBuYXR1cmUgb2Ygc29ja21hcCwgYW5kIGhvdyBkZWVwbHkgaXQgaW50ZXJmYWNlcyB3aXRoIG5ldHdvcmsgc3RyZWFtcywgSSdtIGxlYW5pbmcgdG93YXJkcyBhbHNvIG5lZWRpbmcgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAuIFRoaXMgZmVlbHMgcmlnaHQsIGRvZXNuJ3QgaXQ/IEl0IGp1c3Qgc2VlbXMgaW5jcmVkaWJseSBsaWtlbHkgdGhhdCBzdHJlYW0gcGFyc2luZyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgbWFraW5nIGl0IGFsbCBzaW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdGFrZSBhbm90aGVyIHF1aWNrIHBhc3Mgb3ZlciBgbmV0L2NvcmUvc29ja19tYXAuY2AuIEEgZnJlc2ggbG9vayBhbHdheXMgaGVscHMgY2xhcmlmeSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBnb3RjaGFzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLCBhbnkgc3VidGxlIGludGVycGxheS4gTmVlZCB0byBiZSBjZXJ0YWluIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjM0LjM4MzI4NzcxOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0OTU2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZfU1RSRUFNX1BBUlNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9zb2NrX21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3NvY2tfbWFwLmM9MTQ3NT1zdGF0aWMgaW50IHNvY2tfbWFwX3Byb2dfbGlua19sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9wcm9nICoqKnBwcm9nLFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDkxLVxcdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTozNC41NDgyNTQ1NTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxNTA0MTI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBoYW5kbGVzIHRoZSB2ZXJpZmllcidzIG5lZWRzLCB3aGljaCBpcyBnb29kLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19ORVRgIGlzIGVzc2VudGlhbC4gQWgsIHllcywgYHNvY2ttYXBgIGlzIGRlZmluaXRlbHkgbmV0d29ya2luZy1yZWxhdGVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIHJlcXVpcmVtZW50cyBhcmUgZ29pbmcgdG8gYmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcmV0dXJuIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFzIGEgYmFzaWMgc2V0LlxuXG5XYWl0IGEgc2Vjb25kLCB0aGlzIHBhdGNoIHJlbW92ZXMgc29tZSBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBhbGxvd2VkIGxpc3QuIFNwZWNpZmljYWxseSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVG8gYWRlcXVhdGVseSB0ZXN0IHRoaXMsIEknbGwgbmVlZCB0byBiZSBhYmxlIHRvIGxvYWQgdGhlc2UgcHJvZ3JhbSB0eXBlcywgd2hpY2ggbWVhbnMgZW5hYmxpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkxldCdzIHNlZSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCByZXF1aXJlcyBgQ09ORklHX05FVF9DTFNfQlBGYC4gYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCBuZWVkcyBlaXRoZXIgYENPTkZJR19ORVRfQUNUX0JQRmAgb3IgYENPTkZJR19ORVRfQ0xTX0FDVGAuIEJvdGggYEJQRl9QUk9HX1RZUEVfWERQYCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgIHJlcXVpcmUgYENPTkZJR19ORVRgLiBJdCdzIHN0YXJ0aW5nIHRvIGxvb2sgbGlrZSBgQ09ORklHX05FVF9DTFNfQlBGYCBhbmQgYENPTkZJR19ORVRfQUNUX0JQRmAgYXJlIHdpc2UgYWRkaXRpb25zIHRvIG15IGNvbmZpZ3VyYXRpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEkgdGhpbmsgSSdsbCBkaXZlIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlc2UgcHJvZ3JhbSB0eXBlcyBiZWZvcmUgbWFraW5nIGFueSBmaW5hbCBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjQwLjM2MzMwMDU2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE5ODE3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz00NjM2PXN0YXRpYyBib29sIG1heV9hY2Nlc3NfZGlyZWN0X3BrdF9kYXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY1NC1cXHQvKiBQcm9ncmFtIHR5cGVzIHdpdGggZGlyZWN0IHJlYWQgKyB3cml0ZSBhY2Nlc3MgZ28gaGVyZSEgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDY1NTpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjU2LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1Q6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTYyODY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19za2IoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTYyODktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2MjkwOlxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MjkxLVxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1Q6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjQwLjQ1NTI4OTQ4NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODg2NjY2MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWw6IGV2ZW4gaWYgYSBzdWJzeXN0ZW0gZm9yIGEgc3BlY2lmaWMgQlBGIHByb2dyYW0gdHlwZSBpc24ndCBhY3RpdmUsIHRoZSB2ZXJpZmllciB3aWxsICpzdGlsbCogcnVuIGl0cyBjaGVja3Mgb24gdGhhdCBwcm9ncmFtIHR5cGUsIGFzIGxvbmcgYXMgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LiBUaGUgcHJvZ3JhbSB0eXBlcyB0aGVtc2VsdmVzIGFyZSBsYWlkIG91dCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oYCwgYW5kIHRoZSB2ZXJpZmllciBkb2VzIGl0cyBqb2IgbG9va2luZyB0aGVtIG92ZXIgYXQgbG9hZCB0aW1lLiBTdXJlLCB5b3UgbmVlZCB0aGUgc3Vic3lzdGVtIHRvICphY3R1YWxseSogYXR0YWNoIHRoZSBwcm9ncmFtcywgYnV0IHRoZSB2ZXJpZmljYXRpb24gaGFwcGVucyB1cGZyb250LiBTbywgZW5hYmxpbmcgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUuXG5cblNvLCB0byByZWNhcCBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuXG4qICAgKipSZWFzb25pbmc6KiogVGhpcyBwYXRjaCBpcyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCByZXN0cmljdGluZyB3aGF0IEJQRiBwcm9ncmFtIHR5cGVzIGNhbiB0b3VjaCBhIHNvY2ttYXAuIFRoaXMgYWx0ZXJzIHRoZSB2ZXJpZmllcidzIGJlaGF2aW9yIHRvIGVuaGFuY2Ugc2FmZXR5LCBhbmQgdGh1cyBuZWVkcyB0YXJnZXRlZCBmdXp6aW5nLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBtYXlfdXBkYXRlX3NvY2ttYXBgLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIGFyZSBrZXkgYXJlYXMuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFyZSBuZWNlc3NhcnkuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgdGFyZ2V0czogSSd2ZSBjaGVja2VkIGFuZCBjb25maXJtZWQgdGhhdCBgbWF5X3VwZGF0ZV9zb2NrbWFwYCwgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLCBhbmQgYGNoZWNrX2hlbHBlcl9jYWxsYCBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyBnb29kLCBpdCBuYXJyb3dzIHRoZSBzY29wZSBhIGJpdC4gVGhlIG1haW4gZW50cnkgcG9pbnQsIGBicGZfY2hlY2tgLCBpcyBhIGxpdHRsZSB0b28gYnJvYWQgZm9yIHRhcmdldGVkIGZ1enppbmcuXG5cbk15IGFwcHJvYWNoIHdpbGwgYmUgdG8gZm9jdXMgb24gYGNoZWNrX2hlbHBlcl9jYWxsYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBUaGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgdGhlIHZlcmlmaWVyIGNvcnJlY3RseSBlbmZvcmNlcyB0aGVzZSBuZXcgcmVzdHJpY3Rpb25zLlxuXG5MZXQncyBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU4MywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6NDguMzQxOTYwMTg3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzY3OTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eVwiLFxuICAgIFwiY2hlY2tfaGVscGVyX2NhbGxcIixcbiAgICBcIm1heV91cGRhdGVfc29ja21hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5XCIsXG4gICAgXCJjaGVja19oZWxwZXJfY2FsbFwiLFxuICAgIFwibWF5X3VwZGF0ZV9zb2NrbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsrsgc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 17:54:48 +0000 UTC FinishedAt: 2026-06-29 18:09:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "NET" ], "series_id": "d7a5d083-90d5-4a32-ac86-3dd2759b5e6d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "check_map_func_compatibility", "check_helper_call", "may_update_sockmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkmIzM0OywKICAgICYjMzQ7Y2hlY2tfaGVscGVyX2NhbGwmIzM0OywKICAgICYjMzQ7bWF5X3VwZGF0ZV9zb2NrbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjRmZDA3MDkzZmE1NzQ3MjhmMGZmNmU3NWY3OTFlMDRhMTJiYTcxMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDE4OjA4OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMjVhZWE0MjcxY2QwODkuLjU4ZDc2NmMzNDYyNmU1IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDg5LDExICYjNDM7ODQ4OSw3IEBAIHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbiBcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTMzNiwxNyAmIzQzOzMzNiw2IEBAIHN0YXRpYyB2b2lkIHRlc3RfZm1vZF9yZXRfZnJlcGxhY2Uodm9pZClcbiB9XG4gXG4gXG4tc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpXG4te1xuLVx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XG4tXHRcdFwmIzM0O2ZyZXBsYWNlL2Nsc19yZWRpcmVjdFwmIzM0Oyxcbi1cdH07XG4tXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFwmIzM0Oy4vZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmJwZi5vXCYjMzQ7LFxuLVx0XHRcdFx0ICBcJiMzNDsuL3Rlc3RfY2xzX3JlZGlyZWN0LmJwZi5vXCYjMzQ7LFxuLVx0XHRcdFx0ICBBUlJBWV9TSVpFKHByb2dfbmFtZSksXG4tXHRcdFx0XHQgIHByb2dfbmFtZSwgZmFsc2UsIE5VTEwpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKHZvaWQpXG4ge1xuIFx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XG5AQCAtNTk5LDggJiM0Mzs1ODgsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2UoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfcmVwbGFjZV92ZXJpZnlcJiMzNDspKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92ZXJpZnkoKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfc29ja21hcF91cGRhdGVcJiMzNDspKVxuLVx0XHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZVwmIzM0OykpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3JldHVybl9jb2RlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmdW5jX21hcF9wcm9nX2NvbXBhdGliaWxpdHlcJiMzNDspKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuaW5kZXggY2IzMjI5NzExZjkzYTMuLjMzZjc4OGUyNzg2ZGFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbkBAIC03LDcgJiM0Mzs3LDYgQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3Byb2dzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NrbXNnX2xvYWRfaGVscGVycy5za2VsLmhcJiMzNDtcbi0jaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9wcm9nc19xdWVyeS5za2VsLmhcJiMzNDtcbkBAIC0yMzUsNTMgJiM0MzsyMzQsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NrbXNnX2hlbHBlcnNfd2l0aF9saW5rKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuIFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXG4te1xuLVx0aW50IGVyciwgcHJvZywgc3JjO1xuLVx0c3RydWN0IHRlc3Rfc29ja21hcF91cGRhdGUgKnNrZWw7XG4tXHRzdHJ1Y3QgYnBmX21hcCAqZHN0X21hcDtcbi1cdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xuLVx0Y2hhciBkdW1teVsxNF0gPSB7MH07XG4tXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4tXHRcdC5kYXRhX2luID0gZHVtbXksXG4tXHRcdC5kYXRhX3NpemVfaW4gPSBzaXplb2YoZHVtbXkpLFxuLVx0XHQucmVwZWF0ID0gMSxcbi1cdCk7XG4tXHRfX3M2NCBzaztcbi1cbi1cdHNrID0gY29ubmVjdGVkX3NvY2tldF92NCgpO1xuLVx0aWYgKCFBU1NFUlRfTkVRKHNrLCAtMSwgXCYjMzQ7Y29ubmVjdGVkX3NvY2tldF92NFwmIzM0OykpXG4tXHRcdHJldHVybjtcbi1cbi1cdHNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7XG4tXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG4tXHRcdGdvdG8gY2xvc2Vfc2s7XG4tXG4tXHRwcm9nID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuY29weV9zb2NrX21hcCk7XG4tXHRzcmMgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3JjKTtcbi1cdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUClcbi1cdFx0ZHN0X21hcCA9IHNrZWwtXHUwMDNlbWFwcy5kc3Rfc29ja19tYXA7XG4tXHRlbHNlXG4tXHRcdGRzdF9tYXAgPSBza2VsLVx1MDAzZW1hcHMuZHN0X3NvY2tfaGFzaDtcbi1cbi1cdGVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oc3JjLCBcdTAwMjZ6ZXJvLCBcdTAwMjZzaywgQlBGX05PRVhJU1QpO1xuLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt1cGRhdGVfZWxlbShzcmMpXCYjMzQ7KSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csIFx1MDAyNnRvcHRzKTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspKVxuLVx0XHRnb3RvIG91dDtcbi1cdGlmICghQVNTRVJUX05FUSh0b3B0cy5yZXR2YWwsIDAsIFwmIzM0O3Rlc3RfcnVuIHJldHZhbFwmIzM0OykpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y29tcGFyZV9jb29raWVzKHNrZWwtXHUwMDNlbWFwcy5zcmMsIGRzdF9tYXApO1xuLVxuLW91dDpcbi1cdHRlc3Rfc29ja21hcF91cGRhdGVfX2Rlc3Ryb3koc2tlbCk7XG4tY2xvc2Vfc2s6XG4tXHRjbG9zZShzayk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUgKnNrZWw7XG5AQCAtMTM4NSwxMCAmIzQzOzEzMzcsNiBAQCB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIFx0XHR0ZXN0X3NrbXNnX2hlbHBlcnMoQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja2hhc2ggc2tfbXNnIGxvYWQgaGVscGVyc1wmIzM0OykpXG4gXHRcdHRlc3Rfc2ttc2dfaGVscGVycyhCUEZfTUFQX1RZUEVfU09DS0hBU0gpO1xuLVx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c29ja21hcCB1cGRhdGVcJiMzNDspKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2toYXNoIHVwZGF0ZVwmIzM0OykpXG4tXHRcdHRlc3Rfc29ja21hcF91cGRhdGUoQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgdXBkYXRlIGluIHVuc2FmZSBjb250ZXh0XCYjMzQ7KSlcbiBcdFx0dGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzb2NrbWFwIGNvcHlcJiMzNDspKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsMzQgJiM0MzswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLS8vIENvcHlyaWdodCAoYykgMjAyMCBGYWNlYm9va1xuLVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9wa3RfY2xzLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2VuZGlhbi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdHlwZShrZXksIGludCk7XG4tXHRfX3R5cGUodmFsdWUsIGludCk7XG4tXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpO1xuLX0gc29ja19tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbi1cbi1TRUMoXCYjMzQ7ZnJlcGxhY2UvY2xzX3JlZGlyZWN0XCYjMzQ7KVxuLWludCBmcmVwbGFjZV9jbHNfcmVkaXJlY3RfdGVzdChzdHJ1Y3QgX19za19idWZmICpza2IpXG4te1xuLVx0aW50IHJldCA9IDA7XG4tXHRjb25zdCBpbnQgemVybyA9IDA7XG4tXHRzdHJ1Y3QgYnBmX3NvY2sgKnNrO1xuLVxuLVx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFx1MDAyNnNvY2tfbWFwLCBcdTAwMjZ6ZXJvKTtcbi1cdGlmICghc2spXG4tXHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbi1cbi1cdHJldCA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oXHUwMDI2c29ja19tYXAsIFx1MDAyNnplcm8sIHNrLCAwKTtcbi1cdGJwZl9za19yZWxlYXNlKHNrKTtcbi1cbi1cdHJldHVybiByZXQgPT0gMCA/IFRDX0FDVF9PSyA6IFRDX0FDVF9TSE9UO1xuLX1cbi1cbi1jaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbFxuQEAgLTEsNDggJiM0MzswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLS8vIENvcHlyaWdodCAoYykgMjAyMCBDbG91ZGZsYXJlXG4tI2luY2x1ZGUgXCYjMzQ7dm1saW51eC5oXCYjMzQ7XG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IHNyYyBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuLVxuLXN0cnVjdCB7XG4tXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuLVx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbi1cdF9fdHlwZShrZXksIF9fdTMyKTtcbi1cdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuLX0gZHN0X3NvY2tfbWFwIFNFQyhcJiMzNDsubWFwc1wmIzM0Oyk7XG4tXG4tc3RydWN0IHtcbi1cdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS0hBU0gpO1xuLVx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbi1cdF9fdHlwZShrZXksIF9fdTMyKTtcbi1cdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuLX0gZHN0X3NvY2tfaGFzaCBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuLVxuLVNFQyhcJiMzNDt0Y1wmIzM0Oylcbi1pbnQgY29weV9zb2NrX21hcCh2b2lkICpjdHgpXG4te1xuLVx0c3RydWN0IGJwZl9zb2NrICpzaztcbi1cdGJvb2wgZmFpbGVkID0gZmFsc2U7XG4tXHRfX3UzMiBrZXkgPSAwO1xuLVxuLVx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFx1MDAyNnNyYywgXHUwMDI2a2V5KTtcbi1cdGlmICghc2spXG4tXHRcdHJldHVybiBTS19EUk9QO1xuLVxuLVx0aWYgKGJwZl9tYXBfdXBkYXRlX2VsZW0oXHUwMDI2ZHN0X3NvY2tfbWFwLCBcdTAwMjZrZXksIHNrLCAwKSlcbi1cdFx0ZmFpbGVkID0gdHJ1ZTtcbi1cbi1cdGlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNmRzdF9zb2NrX2hhc2gsIFx1MDAyNmtleSwgc2ssIDApKVxuLVx0XHRmYWlsZWQgPSB0cnVlO1xuLVxuLVx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuLVx0cmV0dXJuIGZhaWxlZCA/IFNLX0RST1AgOiBTS19QQVNTO1xuLX1cbi1cbi1jaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcbmluZGV4IGZlNGIxMjMxODdiODZlLi5iMTEwMjYxMjM2OTAzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuY1xuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2FuZF9tdXRhdGUodm9pZClcbiB9XG4gXG4gU0VDKFwmIzM0O2FjdGlvblwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cdTAwM2Vzayk7XG5AQCAtODIsNyAmIzQzOzgyLDcgQEAgaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB9XG4gXG4gU0VDKFwmIzM0O2NsYXNzaWZpZXJcJiMzNDspXG4tX19zdWNjZXNzXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCYjMzQ7KVxuIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXHUwMDNlc2spO1xuQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4gfVxuIFxuIFNFQyhcJiMzNDtmbG93X2Rpc3NlY3RvclwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xuQEAgLTk4LDcgJiM0Mzs5OCw3IEBAIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX2RlbGV0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxuIH1cbiBcbiBTRUMoXCYjMzQ7Zmxvd19kaXNzZWN0b3JcJiMzNDspXG4tX19mYWlsdXJlIF9fbXNnKFwmIzM0O3Byb2dyYW0gb2YgdGhpcyB0eXBlIGNhbm5vdCB1c2UgaGVscGVyIGJwZl9za19yZWxlYXNlXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwmIzM0OylcbiBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl91cGRhdGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZClcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2FuZF91cGRhdGUoKTsgLyogbm8gYWNjZXNzIHRvIHNrYi1cdTAwM2VzayAqL1xuQEAgLTE3OSw3ICYjNDM7MTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcbiB9XG4gXG4gU0VDKFwmIzM0O3hkcFwmIzM0Oylcbi1fX3N1Y2Nlc3NcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcJiMzNDspXG4gaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eSYjMzQ7LAogICAgJiMzNDtjaGVja19oZWxwZXJfY2FsbCYjMzQ7LAogICAgJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY0ZmQwNzA5M2ZhNTc0NzI4ZjBmZjZlNzVmNzkxZTA0YTEyYmE3MTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxODowODowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAyNWFlYTQyNzFjZDA4OS4uNThkNzY2YzM0NjI2ZTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTg0ODksMTEgJiM0Mzs4NDg5LDcgQEAgc3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKQogCQkJcmV0dXJuIHRydWU7CiAJCWJyZWFrOwogCWNhc2UgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSOgotCWNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDoKLQljYXNlIEJQRl9QUk9HX1RZUEVfWERQOgogCWNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SOgogCWNhc2UgQlBGX1BST0dfVFlQRV9TS19MT09LVVA6CiAJCXJldHVybiB0cnVlOwogCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKaW5kZXggOTJjMjA4MDNlYTc2NWQuLmQzYTk1NDE1OGMzMzI3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCkBAIC0zMzYsMTcgJiM0MzszMzYsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Ztb2RfcmV0X2ZyZXBsYWNlKHZvaWQpCiB9CiAKIAotc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpCi17Ci0JY29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7Ci0JCSYjMzQ7ZnJlcGxhY2UvY2xzX3JlZGlyZWN0JiMzNDssCi0JfTsKLQl0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKCYjMzQ7Li9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYnBmLm8mIzM0OywKLQkJCQkgICYjMzQ7Li90ZXN0X2Nsc19yZWRpcmVjdC5icGYubyYjMzQ7LAotCQkJCSAgQVJSQVlfU0laRShwcm9nX25hbWUpLAotCQkJCSAgcHJvZ19uYW1lLCBmYWxzZSwgTlVMTCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQodm9pZCkKIHsKIAljb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHsKQEAgLTU5OSw4ICYjNDM7NTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpCiAJCXRlc3RfZnVuY19yZXBsYWNlKCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmdW5jX3JlcGxhY2VfdmVyaWZ5JiMzNDspKQogCQl0ZXN0X2Z1bmNfcmVwbGFjZV92ZXJpZnkoKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2Z1bmNfc29ja21hcF91cGRhdGUmIzM0OykpCi0JCXRlc3RfZnVuY19zb2NrbWFwX3VwZGF0ZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnVuY19yZXBsYWNlX3JldHVybl9jb2RlJiMzNDspKQogCQl0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnVuY19tYXBfcHJvZ19jb21wYXRpYmlsaXR5JiMzNDspKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi4zM2Y3ODhlMjc4NmRhZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtNyw3ICYjNDM7Nyw2IEBACiAKICNpbmNsdWRlICYjMzQ7dGVzdF9wcm9ncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oJiMzNDsKLSNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX3VwZGF0ZS5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2F0dGFjaC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3NvY2ttYXBfcHJvZ3NfcXVlcnkuc2tlbC5oJiMzNDsKQEAgLTIzNSw1MyAmIzQzOzIzNCw2IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2ttc2dfaGVscGVyc193aXRoX2xpbmsoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpCiAJdGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpCi17Ci0JaW50IGVyciwgcHJvZywgc3JjOwotCXN0cnVjdCB0ZXN0X3NvY2ttYXBfdXBkYXRlICpza2VsOwotCXN0cnVjdCBicGZfbWFwICpkc3RfbWFwOwotCWNvbnN0IF9fdTMyIHplcm8gPSAwOwotCWNoYXIgZHVtbXlbMTRdID0gezB9OwotCUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cywKLQkJLmRhdGFfaW4gPSBkdW1teSwKLQkJLmRhdGFfc2l6ZV9pbiA9IHNpemVvZihkdW1teSksCi0JCS5yZXBlYXQgPSAxLAotCSk7Ci0JX19zNjQgc2s7Ci0KLQlzayA9IGNvbm5lY3RlZF9zb2NrZXRfdjQoKTsKLQlpZiAoIUFTU0VSVF9ORVEoc2ssIC0xLCAmIzM0O2Nvbm5lY3RlZF9zb2NrZXRfdjQmIzM0OykpCi0JCXJldHVybjsKLQotCXNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7Ci0JaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7b3Blbl9hbmRfbG9hZCYjMzQ7KSkKLQkJZ290byBjbG9zZV9zazsKLQotCXByb2cgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC0mZ3Q7cHJvZ3MuY29weV9zb2NrX21hcCk7Ci0Jc3JjID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5zcmMpOwotCWlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU09DS01BUCkKLQkJZHN0X21hcCA9IHNrZWwtJmd0O21hcHMuZHN0X3NvY2tfbWFwOwotCWVsc2UKLQkJZHN0X21hcCA9IHNrZWwtJmd0O21hcHMuZHN0X3NvY2tfaGFzaDsKLQotCWVyciA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oc3JjLCAmYW1wO3plcm8sICZhbXA7c2ssIEJQRl9OT0VYSVNUKTsKLQlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dXBkYXRlX2VsZW0oc3JjKSYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0KLQllcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csICZhbXA7dG9wdHMpOwotCWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1biYjMzQ7KSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFBU1NFUlRfTkVRKHRvcHRzLnJldHZhbCwgMCwgJiMzNDt0ZXN0X3J1biByZXR2YWwmIzM0OykpCi0JCWdvdG8gb3V0OwotCi0JY29tcGFyZV9jb29raWVzKHNrZWwtJmd0O21hcHMuc3JjLCBkc3RfbWFwKTsKLQotb3V0OgotCXRlc3Rfc29ja21hcF91cGRhdGVfX2Rlc3Ryb3koc2tlbCk7Ci1jbG9zZV9zazoKLQljbG9zZShzayk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSh2b2lkKQogewogCXN0cnVjdCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUgKnNrZWw7CkBAIC0xMzg1LDEwICYjNDM7MTMzNyw2IEBAIHZvaWQgdGVzdF9zb2NrbWFwX2Jhc2ljKHZvaWQpCiAJCXRlc3Rfc2ttc2dfaGVscGVycyhCUEZfTUFQX1RZUEVfU09DS01BUCk7CiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtzb2NraGFzaCBza19tc2cgbG9hZCBoZWxwZXJzJiMzNDspKQogCQl0ZXN0X3NrbXNnX2hlbHBlcnMoQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdXBkYXRlJiMzNDspKQotCQl0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKLQlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2toYXNoIHVwZGF0ZSYjMzQ7KSkKLQkJdGVzdF9zb2NrbWFwX3VwZGF0ZShCUEZfTUFQX1RZUEVfU09DS0hBU0gpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCB1cGRhdGUgaW4gdW5zYWZlIGNvbnRleHQmIzM0OykpCiAJCXRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjb3B5JiMzNDspKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDAKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5jCiYjNDM7JiM0MzsmIzQzOyAvZGV2L251bGwKQEAgLTEsMzQgJiM0MzswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgRmFjZWJvb2sKLQotI2luY2x1ZGUgJmx0O2xpbnV4L3N0ZGRlZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L3BrdF9jbHMuaCZndDsKLSNpbmNsdWRlICZsdDticGYvYnBmX2VuZGlhbi5oJmd0OwotI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwotCi1zdHJ1Y3QgewotCV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS01BUCk7Ci0JX190eXBlKGtleSwgaW50KTsKLQlfX3R5cGUodmFsdWUsIGludCk7Ci0JX191aW50KG1heF9lbnRyaWVzLCAyKTsKLX0gc29ja19tYXAgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7Ci0KLVNFQygmIzM0O2ZyZXBsYWNlL2Nsc19yZWRpcmVjdCYjMzQ7KQotaW50IGZyZXBsYWNlX2Nsc19yZWRpcmVjdF90ZXN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikKLXsKLQlpbnQgcmV0ID0gMDsKLQljb25zdCBpbnQgemVybyA9IDA7Ci0Jc3RydWN0IGJwZl9zb2NrICpzazsKLQotCXNrID0gYnBmX21hcF9sb29rdXBfZWxlbSgmYW1wO3NvY2tfbWFwLCAmYW1wO3plcm8pOwotCWlmICghc2spCi0JCXJldHVybiBUQ19BQ1RfU0hPVDsKLQotCXJldCA9IGJwZl9tYXBfdXBkYXRlX2VsZW0oJmFtcDtzb2NrX21hcCwgJmFtcDt6ZXJvLCBzaywgMCk7Ci0JYnBmX3NrX3JlbGVhc2Uoc2spOwotCi0JcmV0dXJuIHJldCA9PSAwID8gVENfQUNUX09LIDogVENfQUNUX1NIT1Q7Ci19Ci0KLWNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDY0ZWE1MzZlM2Q4MS4uMDAwMDAwMDAwMDAwMDAKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuYwomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDQ4ICYjNDM7MCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAotLy8gQ29weXJpZ2h0IChjKSAyMDIwIENsb3VkZmxhcmUKLSNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKLSNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKLQotc3RydWN0IHsKLQlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApOwotCV9fdWludChtYXhfZW50cmllcywgMSk7Ci0JX190eXBlKGtleSwgX191MzIpOwotCV9fdHlwZSh2YWx1ZSwgX191NjQpOwotfSBzcmMgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7Ci0KLXN0cnVjdCB7Ci0JX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKLQlfX3VpbnQobWF4X2VudHJpZXMsIDEpOwotCV9fdHlwZShrZXksIF9fdTMyKTsKLQlfX3R5cGUodmFsdWUsIF9fdTY0KTsKLX0gZHN0X3NvY2tfbWFwIFNFQygmIzM0Oy5tYXBzJiMzNDspOwotCi1zdHJ1Y3QgewotCV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfU09DS0hBU0gpOwotCV9fdWludChtYXhfZW50cmllcywgMSk7Ci0JX190eXBlKGtleSwgX191MzIpOwotCV9fdHlwZSh2YWx1ZSwgX191NjQpOwotfSBkc3Rfc29ja19oYXNoIFNFQygmIzM0Oy5tYXBzJiMzNDspOwotCi1TRUMoJiMzNDt0YyYjMzQ7KQotaW50IGNvcHlfc29ja19tYXAodm9pZCAqY3R4KQotewotCXN0cnVjdCBicGZfc29jayAqc2s7Ci0JYm9vbCBmYWlsZWQgPSBmYWxzZTsKLQlfX3UzMiBrZXkgPSAwOwotCi0Jc2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKCZhbXA7c3JjLCAmYW1wO2tleSk7Ci0JaWYgKCFzaykKLQkJcmV0dXJuIFNLX0RST1A7Ci0KLQlpZiAoYnBmX21hcF91cGRhdGVfZWxlbSgmYW1wO2RzdF9zb2NrX21hcCwgJmFtcDtrZXksIHNrLCAwKSkKLQkJZmFpbGVkID0gdHJ1ZTsKLQotCWlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKCZhbXA7ZHN0X3NvY2tfaGFzaCwgJmFtcDtrZXksIHNrLCAwKSkKLQkJZmFpbGVkID0gdHJ1ZTsKLQotCWJwZl9za19yZWxlYXNlKHNrKTsKLQlyZXR1cm4gZmFpbGVkID8gU0tfRFJPUCA6IFNLX1BBU1M7Ci19Ci0KLWNoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmMKaW5kZXggZmU0YjEyMzE4N2I4NmUuLmIxMTAyNjEyMzY5MDM3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYwpAQCAtNzQsNyAmIzQzOzc0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSh2b2lkKQogfQogCiBTRUMoJiMzNDthY3Rpb24mIzM0OykKLV9fc3VjY2VzcwomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHQmIzM0OykKIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CiAJdGVzdF9zb2NrbWFwX211dGF0ZShza2ItJmd0O3NrKTsKQEAgLTgyLDcgJiM0Mzs4Miw3IEBAIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpCiB9CiAKIFNFQygmIzM0O2NsYXNzaWZpZXImIzM0OykKLV9fc3VjY2VzcwomIzQzO19fZmFpbHVyZSBfX21zZygmIzM0O2Nhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHQmIzM0OykKIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpCiB7CiAJdGVzdF9zb2NrbWFwX211dGF0ZShza2ItJmd0O3NrKTsKQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpCiB9CiAKIFNFQygmIzM0O2Zsb3dfZGlzc2VjdG9yJiMzNDspCi1fX3N1Y2Nlc3MKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0JiMzNDspCiBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl9kZWxldGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZCkKIHsKIAl0ZXN0X3NvY2ttYXBfZGVsZXRlKCk7CkBAIC05OCw3ICYjNDM7OTgsNyBAQCBpbnQgdGVzdF9mbG93X2Rpc3NlY3Rvcl9kZWxldGUoc3RydWN0IF9fc2tfYnVmZiAqc2tiIF9fYWx3YXlzX3VudXNlZCkKIH0KIAogU0VDKCYjMzQ7Zmxvd19kaXNzZWN0b3ImIzM0OykKLV9fZmFpbHVyZSBfX21zZygmIzM0O3Byb2dyYW0gb2YgdGhpcyB0eXBlIGNhbm5vdCB1c2UgaGVscGVyIGJwZl9za19yZWxlYXNlJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dCYjMzQ7KQogaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfdXBkYXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpCiB7CiAJdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfdXBkYXRlKCk7IC8qIG5vIGFjY2VzcyB0byBza2ItJmd0O3NrICovCkBAIC0xNzksNyAmIzQzOzE3OSw3IEBAIGludCB0ZXN0X3NvY2tvcHNfdXBkYXRlX2RlZGljYXRlZChzdHJ1Y3QgYnBmX3NvY2tfb3BzICpjdHgpCiB9CiAKIFNFQygmIzM0O3hkcCYjMzQ7KQotX19zdWNjZXNzCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7Y2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dCYjMzQ7KQogaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpCiB7CiAJdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBjb3JlIGNoYW5nZTogaXQmIzM5O3MgbW9kaWZ5aW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtYXlfdXBkYXRlX3NvY2ttYXBgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSByZW1vdmluZyBjZXJ0YWluIEJQRiBwcm9ncmFtIHR5cGVzIGZyb20gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlLCBzbyBsZXQgbWUgcXVpY2tseSByZWZlcmVuY2UgaXQ6CgpgYGBjCiAJY2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6Ci0JY2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0NMUzoKLQljYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOgotCWNhc2UgQlBGX1BST0dfVFlQRV9YRFA6CiAJY2FzZSBCUEZfUFJPR19UWVBFX1NLX1JFVVNFUE9SVDoKLQljYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6CiAJY2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDoKIAkJcmV0dXJuIHRydWU7CmBgYAoKUmlnaHQsIEkgc2VlIGl0IG5vdy4gVGhlIHBhdGNoIGlzIHN0cmlwcGluZyBvdXQgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVGhpcyBtZWFucyB0aGUgZnVuY3Rpb24gd2lsbCBub3cgZXZhbHVhdGUgYXMgYGZhbHNlYCBvciBwcm9iYWJseSByZXR1cm4gYW4gZXJyb3IgZm9yIHRob3NlIHR5cGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgdmVyaWZpZXImIzM5O3MgYmVoYXZpb3IuIEl0IGxvb2tzIGxpa2UgaXQgaW1wYWN0cyBzb21lIG9mIHRoZSB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTgyMjc9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDY4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0Njk6c3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NzAte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTA5PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg0LVx0XHQgICAgZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfbG9va3VwX2VsZW0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4NTpcdFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg2LVx0XHRcdGdvdG8gZXJyb3I7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTMtXHRcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTk0Olx0XHQgICAgIW1heV91cGRhdGVfc29ja21hcChlbnYsIGZ1bmNfaWQpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTUtXHRcdFx0Z290byBlcnJvcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjMzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgdGlnaHRlbmluZyB0aGUgcmVzdHJpY3Rpb25zIG9uIHdoaWNoIEJQRiBwcm9ncmFtIHR5cGVzIGNhbiBhY3R1YWxseSBtb2RpZnkgYSBgc29ja21hcGAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYCBmcm9tIHRoZSBsaXN0IG9mIGFsbG93ZWQgcHJvZ3JhbSB0eXBlcy4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEJQRiB2ZXJpZmllci4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtTZWN1cml0eSBvciBjb3JyZWN0bmVzcyBmaXgsIHByZXZlbnRpbmcgc29tZSBraW5kIG9mIGNyYXNoIG9yIHN0YXRlIGNvcnJ1cHRpb24sIHByb2JhYmx5LiYjMzQ7IFNvLCBpcyB0aGlzIGZ1enphYmxlPyBEZWZpbml0ZWx5LCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB2ZXJpZmllcjsgdGhhdCYjMzk7cyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZW4gSSBnZXQgYSBsaXR0bGUgc3VzcGljaW91czogJiMzNDtXb24mIzM5O3QgZnV6emluZyBqdXN0IGVuZCB1cCB0cmlnZ2VyaW5nIHZlcmlmaWVyIHJlamVjdGlvbnMgYmVjYXVzZSB3ZSYjMzk7cmUganVzdCAqcmVzdHJpY3RpbmcqIGZ1bmN0aW9uYWxpdHk/JiMzNDsgVGhhdCYjMzk7cyBhIHZhbGlkIGNvbmNlcm4uIEJ1dCBpdCYjMzk7cyBzdGlsbCBhIGNvcmUga2VybmVsIGNoYW5nZSwgYW5kIHRoZSBjaGFuZ2UgaXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgYXJlYS4KCkFscmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBleGFjdCBjb2RlIGluIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHRvIGJlIHN1cmUuIEdvdHRhIHNlZSAqZXhhY3RseSogd2hhdCYjMzk7cyBjaGFuZ2luZyB0byByZWZpbmUgbXkgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0NjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ODQ2OTpcdHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbjg0NzA6XHR7XG44NDcxOlx0XHRlbnVtIGJwZl9hdHRhY2hfdHlwZSBlYXR5cGUgPSBlbnYtXHUwMDNlcHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZTtcbjg0NzI6XHRcdGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlID0gcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVx1MDAzZXByb2cpO1xuODQ3MzpcdFxuODQ3NDpcdFx0aWYgKGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX3VwZGF0ZV9lbGVtIFx1MDAyNlx1MDAyNlxuODQ3NTpcdFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2RlbGV0ZV9lbGVtKVxuODQ3NjpcdFx0XHRyZXR1cm4gZmFsc2U7XG44NDc3Olx0XG44NDc4Olx0XHQvKiBJdCYjMzk7cyBub3QgcG9zc2libGUgdG8gZ2V0IGFjY2VzcyB0byBhIGxvY2tlZCBzdHJ1Y3Qgc29jayBpbiB0aGVzZVxuODQ3OTpcdFx0ICogY29udGV4dHMsIHNvIHVwZGF0aW5nIGlzIHNhZmUuXG44NDgwOlx0XHQgKi9cbjg0ODE6XHRcdHN3aXRjaCAodHlwZSkge1xuODQ4MjpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG44NDgzOlx0XHRcdGlmIChlYXR5cGUgPT0gQlBGX1RSQUNFX0lURVIpXG44NDg0Olx0XHRcdFx0cmV0dXJuIHRydWU7XG44NDg1Olx0XHRcdGJyZWFrO1xuODQ4NjpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tfT1BTOlxuODQ4NzpcdFx0XHQvKiBtYXBfdXBkYXRlIGFsbG93ZWQgb25seSB2aWEgZGVkaWNhdGVkIGhlbHBlcnMgd2l0aCBldmVudCB0eXBlIGNoZWNrcyAqL1xuODQ4ODpcdFx0XHRpZiAoZnVuY19pZCA9PSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW0pXG44NDg5Olx0XHRcdFx0cmV0dXJuIHRydWU7XG44NDkwOlx0XHRcdGJyZWFrO1xuODQ5MTpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XG44NDkyOlx0XHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxuODQ5MzpcdFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDpcbjg0OTQ6XHRcdFx0cmV0dXJuIHRydWU7XG44NDk1Olx0XHRkZWZhdWx0OlxuODQ5NjpcdFx0XHRicmVhaztcbjg0OTc6XHRcdH1cbjg0OTg6XHRcbjg0OTk6XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxuXCYjMzQ7KTtcbjg1MDA6XHRcdHJldHVybiBmYWxzZTtcbjg1MDE6XHR9XG44NTAyOlx0XG44NTAzOlx0Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG44NTA0Olx0e1xuODUwNTpcdFx0cmV0dXJuIGVudi1cdTAwM2Vwcm9nLVx1MDAzZWppdF9yZXF1ZXN0ZWQgXHUwMDI2XHUwMDI2XG44NTA2Olx0XHQgICAgICAgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscygpO1xuODUwNzpcdH1cbjg1MDg6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsaW1pdHMgaG93IGNlcnRhaW4gQlBGIHByb2dyYW0gdHlwZXMgY2FuIHVwZGF0ZSBzb2NrbWFwcy4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O0lzIHRoaXMgZnV6ei13b3J0aHk/JiMzNDsgQW5kIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nICYjMzQ7WWVzISYjMzQ7IEFueSB0aW1lIHdlIGFsdGVyIHZlcmlmaWVyIGJlaGF2aW9yLCB3ZSBuZWVkIHRvIHN0cmVzcy10ZXN0IGl0LiBUaGUgcG90ZW50aWFsIGZvciByZWdyZXNzaW9ucyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBpcyBoaWdoLgoKTGV0JiMzOTtzIGhvbmUgaW4gb24gdGhlIGtleSBzeW1ib2xzOiBgbWF5X3VwZGF0ZV9zb2NrbWFwYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBXYWl0IGEgbWludXRlLCBhcmVuJiMzOTt0IHRob3NlIHN0YXRpYyBmdW5jdGlvbnM/IEFoLCB5ZXMsIHRoZXkgYXJlLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHRvIGJ1aWxkIGEgc29saWQgZnV6emVyIHRhcmdldC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcyBnb2luZyB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz04NTAzPWJvb2wgYnBmX2FsbG93X3RhaWxfY2FsbF9pbl9zdWJwcm9ncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTA4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1MDk6c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUxMC1cdFx0XHRcdFx0c3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMTgyPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDYxMy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDYxNDpcdGVyciA9IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoZW52LCBtZXRhLm1hcC5wdHIsIGZ1bmNfaWQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNjE1LVx0aWYgKGVycilcbi0tXG5zY3JpcHRzL2JwZl9kb2MucHk9NjA3PUNvbXBhdGliaWxpdHkgYmV0d2VlbiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBtYXAgdHlwZXMgY2FuIGJlIGZvdW5kIGluIHRoZVxuc2NyaXB0cy9icGZfZG9jLnB5OjYwODoqKmNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkqKlxcXFwgKCkgZnVuY3Rpb24gaW4gZmlsZSAqa2VybmVsL2JwZi92ZXJpZmllci5jKi5cbnNjcmlwdHMvYnBmX2RvYy5weS02MDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3OAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFZlcmlmaWNhdGlvbiBhbmQgU29ja21hcCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlIHBhdGgsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludCBpcyBgY2hlY2tfaGVscGVyX2NhbGxgLiBUaGF0JiMzOTtzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZzsgaXQmIzM5O3MgdGhlIGFuY2hvciBwb2ludCBmb3IgdGhpcyBzcGVjaWZpYyBhc3BlY3Qgb2YgQlBGLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIGlzIGtleSBoZXJlLgoKTm93LCB3aGlsZSBpdCYjMzk7cyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGluIHRoZSAqdHJhZGl0aW9uYWwqIHNlbnNlIG9mIHBhY2tldCBwcm9jZXNzaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnJlcXVlbnQgcG9pbnQgb2YgZXhlY3V0aW9uIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIHRoaW5raW5nIGFib3V0IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBsYXRlci4gYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHNlZW1zIGxpa2UgYW5vdGhlciByZWxldmFudCBmdW5jdGlvbiB0byBleGFtaW5lLiBUaGVuIEkgYWxzbyBuZWVkIHRvIGZvY3VzIG9uIGBtYXlfdXBkYXRlX3NvY2ttYXBgLgoKTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJQRiBzeXNjYWxscyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgc29ja21hcCBpdHNlbGYuLi4gdGhhdCBmZWVscyBsaWtlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9TWVNDQUxMYCAqYW5kKiBwZXJoYXBzIGBDT05GSUdfQ0dST1VQX0JQRmAgb3IgZXZlbiBgQ09ORklHX05FVGAuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBsb29rIGZvciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MzEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUxNj1Qb3dlclBDLCBBUk0sIEFSTTY0LCBNSVBTLCBSSVNDLVYsIHMzOTAsIGFuZCBBUkMgYW5kIGNhbiBiZSBlbmFibGVkIHRocm91Z2hcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0OjUxNzpDT05GSUdfQlBGX0pJVC4gVGhlIEpJVCBjb21waWxlciBpcyB0cmFuc3BhcmVudGx5IGludm9rZWQgZm9yIGVhY2hcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUxOC1hdHRhY2hlZCBmaWx0ZXIgZnJvbSB1c2VyIHNwYWNlIG9yIGZvciBpbnRlcm5hbCBrZXJuZWwgdXNlcnMgaWYgaXQgaGFzXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q9NTI4PUV4YW1wbGUgb3V0cHV0IGZyb20gZG1lc2c6OlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzNi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0OjUzNzpXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCBicGZfaml0X2VuYWJsZSBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzOC1zZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbCByZXR1cm4gaW4gZmFpbHVyZS4gVGhpcyBpcyBldmVuIHRoZSBjYXNlIGZvclxuLS1cbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q9MzU9b3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCB0byB1c2Ugc2NoZWRfZXh0OlxuLS1cbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtMzgtXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjM5OiAgICBDT05GSUdfQlBGPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDAtICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MTogICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDI6ICAgIENPTkZJR19CUEZfSklUPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ0OiAgICBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NTogICAgQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhY2UvZnByb2JldHJhY2UucnN0PTg0PXBhcmFtZXRlcnMgYnkgaXRzIG5hbWUgaW5zdGVhZCBvZiBgYCRhcmdOYGAuIFRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgaWYgdGhlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Zwcm9iZXRyYWNlLnJzdDo4NTprZXJuZWwgaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19CUEZfU1lTQ0FMTCBhbmQgQ09ORklHX0RFQlVHX0lORk9fQlRGLlxuRG9jdW1lbnRhdGlvbi90cmFjZS9mcHJvYmV0cmFjZS5yc3QtODYtSWYgdXNlciBvbmx5IHNwZWNpZnkgdGhlIEJURiBhcmd1bWVudCwgdGhlIGV2ZW50JiMzOTtzIGFyZ3VtZW50IG5hbWUgaXMgYWxzb1xuLS1cbk1ha2VmaWxlPTE1NDc9ZW5kaWZcbk1ha2VmaWxlLTE1NDgtXG5NYWtlZmlsZToxNTQ5OmlmZGVmIENPTkZJR19CUEZcbk1ha2VmaWxlLTE1NTAtaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGXG4tLVxuYXJjaC9hcmMvbmV0L01ha2VmaWxlPTM9aWZlcSAoJChDT05GSUdfSVNBX0FSQ1YyKSx5KVxuYXJjaC9hcmMvbmV0L01ha2VmaWxlOjQ6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NTpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9hcmN2Mi5vXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGUtNi1lbmRpZlxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjU6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy02LUNPTkZJR19JS0NPTkZJRz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9Mz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNS1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnLTEtIyBDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE8gaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9pbXhydF9kZWZjb25maWc6MjpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9hcm0vY29uZmlncy9pbXhydF9kZWZjb25maWctMy1DT05GSUdfU0NIRURfQVVUT0dST1VQPXlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jPTg9c3RhdGljIGJvb2wgX3VucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQodm9pZClcbmFyY2gvYXJtL2tlcm5lbC9zcGVjdHJlLmMtOS17XG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jOjEwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmFyY2gvYXJtL2tlcm5lbC9zcGVjdHJlLmMtMTEtXHRyZXR1cm4gIXN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkO1xuLS1cbmFyY2gvYXJtL25ldC9NYWtlZmlsZS0zLVxuYXJjaC9hcm0vbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0XzMyLm9cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTU9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjY6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NzpDT05GSUdfQlBGX0pJVD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM2PWJvb2wgaW5zbl9tYXlfYWNjZXNzX3VzZXIodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVzcik7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzktYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVx0XHQgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Mi1zdGF0aWMgaW5saW5lXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Mz1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ3LX1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQ4OiNlbmRpZiAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmM9MTExPXN0YXRpYyBib29sIF91bnByaXZpbGVnZWRfZWJwZl9lbmFibGVkKHZvaWQpXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExMi17XG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jOjExMzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExNC1cdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYz0xMTY4PXZvaWQgX19pbml0IHNwZWN0cmVfYmhiX3BhdGNoX2NsZWFyYmhiKHN0cnVjdCBhbHRfaW5zdHIgKmFsdCxcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExNzktXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jOjExODA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTgxLSNkZWZpbmUgRUJQRl9XQVJOIFwmIzM0O1VucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQsIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXFxuXCYjMzQ7XG4tLVxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL2FybTY0L25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOC1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0zNjU9Q09ORklHX0NHUk9VUF9ORVRfUFJJTz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjM2NjpDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0zNjctQ09ORklHX0JUPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTktQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzgxPUNPTkZJR19DR1JPVVBfTkVUX1BSSU89eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzozODI6Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzgzLUNPTkZJR19CVD1tXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctMTEtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc9Nz1DT05GSUdfRVhQRVJUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy05LSMgQ09ORklHX1NZU0ZTX1NZU0NBTEwgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZy05LSMgQ09ORklHX1NZU0ZTX1NZU0NBTEwgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctMTEtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNV9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc9Mz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9MTY9Q09ORklHX0JMS19ERVZfSU5JVFJEPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZy0xOC1DT05GSUdfVVNFUkZBVUxURkQ9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9Nz1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6ODpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTAtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTUtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlPTY9aWZlcSAoJChDT05GSUdfMzJCSVQpLHkpXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjk6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm9cbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMTAtZW5kaWZcbi0tXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfNjRCSVQpLHkpXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnPTE2PUNPTkZJR19LQUxMU1lNU19BTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvZnNwMl9kZWZjb25maWctMTgtQ09ORklHX0VYUEVSVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnOjU6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWctNi1DT05GSUdfVklSVF9DUFVfQUNDT1VOVElOR19OQVRJVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTI4PUNPTkZJR19CTEtfREVWX0lOSVRSRD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoyOTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9OTQ9Q09ORklHX0ROU19SRVNPTFZFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo5NTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy05Ni0jIENPTkZJR19XSVJFTEVTUyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6NzpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9MU009eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWT15XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vIGJwZl9qaXRfY29tcCQoQklUUykub1xuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS02LVxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZT03PWlmZGVmIENPTkZJR19QUEM2NFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy02LUNPTkZJR19JS0NPTkZJRz15XG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTg9Q09ORklHX1BPU0lYX0FVWF9DTE9DS1M9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTE6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMjpDT05GSUdfQlBGX0xTTT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTMtQ09ORklHX1BSRUVNUFQ9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz03PUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0xTTT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTItQ09ORklHX1NDSEVEX0NPUkU9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0zPUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWctNS0jIENPTkZJR19DUFVfSVNPTEFUSU9OIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPXN0YXRpYyBpbmxpbmUgdm9pZCBzd2FwX2V4X2VudHJ5X2ZpeHVwKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmEsXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Ni1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTc6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU4LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD01OT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTYwLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo2MTojZWxzZSAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTYzPXN0YXRpYyBpbmxpbmUgYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Ny1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6Njg6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY5LVxuLS1cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGU9ODE9b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKVx0JiM0Mzs9IHRyYWNlLm9cbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUtODItXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcdCYjNDM7PSBicGYub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS04NC1cbi0tXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTQtI1xuYXJjaC9zMzkwL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfSEFWRV9QTkVUSUQpICYjNDM7PSBwbmV0Lm9cbi0tXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXBfJChCSVRTKS5vXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS02LWlmZXEgKCQoQklUUyksMzIpXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9hc21fMzIub1xuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtOC1lbmRpZlxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19ub3JldHVybiBleF9oYW5kbGVyX21zcl9tY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGJvb2wgd3Jtc3IpXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTUyLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjUzOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfWDg2XzY0KVxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU0LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqeCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM9MjY1PXZvaWQgKmNhbGx0aHVua3NfdHJhbnNsYXRlX2NhbGxfZGVzdCh2b2lkICpkZXN0KVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgwLVxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYzoyODE6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4Mi1zdGF0aWMgYm9vbCBpc19jYWxsdGh1bmsodm9pZCAqYWRkcilcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0xNjU1PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqc3BlY3RyZV92Ml9tb2R1bGVfc3RyaW5nKHZvaWQpIHsgcmV0dXJuIFwmIzM0O1wmIzM0OzsgfVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjItXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzoxNjYzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjQtdm9pZCB1bnByaXZfZWJwZl9ub3RpZnkoaW50IG5ld19zdGF0ZSlcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jPTE4NT1zdGF0aWMgc3RydWN0IG9yY19lbnRyeSAqb3JjX2JwZl9maW5kKHVuc2lnbmVkIGxvbmcgaXApXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4Ni17XG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg4LVx0aWYgKGJwZl9oYXNfZnJhbWVfcG9pbnRlcihpcCkpXG4tLVxuYXJjaC94ODYvbmV0L01ha2VmaWxlPTY9aWZlcSAoJChDT05GSUdfWDg2XzMyKSx5KVxuYXJjaC94ODYvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS04LWVsc2VcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuY3J5cHRvL01ha2VmaWxlPTI0PW9iai0kKENPTkZJR19DUllQVE9fU0tDSVBIRVIyKSAmIzQzOz0gY3J5cHRvX3NrY2lwaGVyLm9cbmNyeXB0by9NYWtlZmlsZToyNTppZmVxICgkKENPTkZJR19CUEZfU1lTQ0FMTCkseSlcbmNyeXB0by9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfQ1JZUFRPX1NLQ0lQSEVSMikgJiM0Mzs9IGJwZl9jcnlwdG9fc2tjaXBoZXIub1xuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oPTE2NT1zdGF0aWMgaW5saW5lIHZvaWQgZGV2aWNlX3BtX2luaXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3MS1cbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oOjE3MjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaC0xNzMtc3RydWN0IGJwZl93c19sb2NrIHsgfTtcbi0tXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTE2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3YWtldXBfc291cmNlc19zdGF0c19mb3BzID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMTcwLVxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jOjExNzE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jLTExNzItI2luY2x1ZGUgXHUwMDNjbGludXgvYnRmLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX3NvdXJjZXNfYnBmX2luaXQodm9pZCkge31cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYzoxMjM0OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMjM1LVxuLS1cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU9Nz1yYy1jb3JlLSQoQ09ORklHX01FRElBX0NFQ19SQykgJiM0Mzs9IGtleW1hcHMvcmMtY2VjLm9cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU6ODpyYy1jb3JlLSQoQ09ORklHX0JQRl9MSVJDX01PREUyKSAmIzQzOz0gYnBmLWxpcmMub1xuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS05LVxuLS1cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9NDg9c3RydWN0IGlyX3Jhd19ldmVudF9jdHJsIHtcbi0tXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTYyLVxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDo2MzojaWZkZWYgQ09ORklHX0JQRl9MSVJDX01PREUyXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTY0LVx0dTMyXHRcdFx0XHRicGZfc2FtcGxlO1xuLS1cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9MzM3PXN0YXRpYyBpbmxpbmUgdm9pZCBsaXJjX3VucmVnaXN0ZXIoc3RydWN0IHJjX2RldiAqZGV2KSB7IH1cbi0tXG5kcml2ZXJzL21lZGlhL3JjL3JjLWNvcmUtcHJpdi5oLTM0Mi0gKi9cbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg6MzQzOiNpZmRlZiBDT05GSUdfQlBGX0xJUkNfTU9ERTJcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtMzQ0LXZvaWQgbGlyY19icGZfZnJlZShzdHJ1Y3QgcmNfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU9NjQ9ZW5kaWZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlOjY2OmlmZXEgKCQoQ09ORklHX0JQRl9TWVNDQUxMKSx5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZS02Ny1uZnAtb2JqcyAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9hcHAuYz0xOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mcF9hcHBfdHlwZSAqYXBwc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMTktXHRbTkZQX0FQUF9DT1JFX05JQ11cdD0gXHUwMDI2YXBwX25pYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jOjIwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jLTIxLVx0W05GUF9BUFBfQlBGX05JQ11cdD0gXHUwMDI2YXBwX2JwZixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGU9NT1uZXRkZXZzaW0tb2JqcyA6PSBcXFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjg6aWZlcSAoJChDT05GSUdfQlBGX1NZU0NBTEwpLHkpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUtOS1uZXRkZXZzaW0tb2JqcyAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTc2PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3ODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc5LWludCBuc2ltX2JwZl9kZXZfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbi0tXG5mcy9NYWtlZmlsZT0xMjk9b2JqLSQoQ09ORklHX1pPTkVGU19GUylcdFx0JiM0Mzs9IHpvbmVmcy9cbmZzL01ha2VmaWxlOjEzMDpvYmotJChDT05GSUdfQlBGX0xTTSlcdFx0JiM0Mzs9IGJwZl9mc19rZnVuY3Mub1xuZnMvTWFrZWZpbGUtMTMxLW9iai0kKENPTkZJR19SRVNDVFJMX0ZTKVx0JiM0Mzs9IHJlc2N0cmwvXG4tLVxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaD0xMDY9ZnN2ZXJpdHlfbXNnKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKmxldmVsLFxuLS1cbmZzL3Zlcml0eS9mc3Zlcml0eV9wcml2YXRlLmgtMTE1LVxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaDoxMTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaC0xMTctdm9pZCBfX2luaXQgZnN2ZXJpdHlfaW5pdF9icGYodm9pZCk7XG4tLVxuZnMvdmVyaXR5L21lYXN1cmUuYz0xMDU9RVhQT1JUX1NZTUJPTF9HUEwoZnN2ZXJpdHlfZ2V0X2RpZ2VzdCk7XG5mcy92ZXJpdHkvbWVhc3VyZS5jLTEwNi1cbmZzL3Zlcml0eS9tZWFzdXJlLmM6MTA3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTA4LVxuLS1cbmZzL3Zlcml0eS9tZWFzdXJlLmM9MTgzPXZvaWQgX19pbml0IGZzdmVyaXR5X2luaXRfYnBmKHZvaWQpXG4tLVxuZnMvdmVyaXR5L21lYXN1cmUuYy0xODctXG5mcy92ZXJpdHkvbWVhc3VyZS5jOjE4ODojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXG4tLVxuaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oLTI5OC1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaDoyOTk6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgtMzAwLSNkZWZpbmUgQlBGX1JBV19UUCgpIFNUUlVDVF9BTElHTigpO1x0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oPTExPXN0cnVjdCBicGZfcHJvZ19hcnJheTtcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmgtMTItXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oOjEzOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxuaW5jbHVkZS9saW51eC9icGYtY2dyb3VwLWRlZnMuaC0xNC0vKiBNYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50bHkgYXR0YWNoYWJsZSBwZXItY2dyb3VwIExTTSBob29rcy4gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE1MDk9c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbms7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTAtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MTE6I2lmZGVmIENPTkZJR19CUEZfSklUXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTItaW50IGJwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yMTkzPXN0YXRpYyBpbmxpbmUgYm9vbCBpc190cmFjaW5nX211bHRpKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yMTk4LVxuaW5jbHVkZS9saW51eC9icGYuaDoyMTk5OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMDAtLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yMzQ4PWludCBicGZfcHJvZ19jdHhfYXJnX2luZm9faW5pdChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yMzUwLVxuaW5jbHVkZS9saW51eC9icGYuaDoyMzUxOiNpZiBkZWZpbmVkKENPTkZJR19DR1JPVVBfQlBGKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSlcbmluY2x1ZGUvbGludXgvYnBmLmgtMjM1Mi1pbnQgYnBmX3RyYW1wb2xpbmVfbGlua19jZ3JvdXBfc2hpbShzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0yNTUwPXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9ydW5fY3R4ICpicGZfc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpuZXdfY3R4KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1My1cbmluY2x1ZGUvbGludXgvYnBmLmg6MjU1NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NTUtXHRvbGRfY3R4ID0gY3VycmVudC1cdTAwM2VicGZfY3R4O1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjU2MT1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Jlc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpvbGRfY3R4KVxuaW5jbHVkZS9saW51eC9icGYuaC0yNTYyLXtcbmluY2x1ZGUvbGludXgvYnBmLmg6MjU2MzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NjQtXHRjdXJyZW50LVx1MDAzZWJwZl9jdHggPSBvbGRfY3R4O1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjY1ND1ib29sIGJwZl9qaXRfYnlwYXNzX3NwZWNfdjQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU4LVxuaW5jbHVkZS9saW51eC9icGYuaDoyNjU5OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmluY2x1ZGUvbGludXgvYnBmLmgtMjY2MC1ERUNMQVJFX1BFUl9DUFUoaW50LCBicGZfcHJvZ19hY3RpdmUpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzA0Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKmZwLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMDQ5LVxuaW5jbHVkZS9saW51eC9icGYuaDozMDUwOiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMwNTEtaW50IGJwZl9wYXRjaF9jYWxsX2FyZ3Moc3RydWN0IGJwZl9pbnNuICppbnNuLCB1MzIgc3RhY2tfZGVwdGgpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzIyMD1icGZfcHJvZ19ydW5fYXJyYXlfc2xlZXBhYmxlKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hcnJheSAqYXJyYXksXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMjY4LVxuaW5jbHVkZS9saW51eC9icGYuaDozMjY5OiNlbHNlIC8qICFDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzI3MC1zdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfZ2V0KHUzMiB1ZmQpXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zNTYyPXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfYXJlbmFfdmlvbGF0aW9uKGJvb2wgd3JpdGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1NjUtfVxuaW5jbHVkZS9saW51eC9icGYuaDozNTY2OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzU2Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM1NzQ9YnBmX3Byb2JlX3JlYWRfa2VybmVsX2NvbW1vbih2b2lkICpkc3QsIHUzMiBzaXplLCBjb25zdCB2b2lkICp1bnNhZmVfcHRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3Ny1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzU3ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19CUEZfRVZFTlRTKSlcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3OS1cdFx0cmV0ID0gY29weV9mcm9tX2tlcm5lbF9ub2ZhdWx0KGRzdCwgdW5zYWZlX3B0ciwgc2l6ZSk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zNjI0PXZvaWQgdW5wcml2X2VicGZfbm90aWZ5KGludCBuZXdfc3RhdGUpO1xuaW5jbHVkZS9saW51eC9icGYuaC0zNjI1LVxuaW5jbHVkZS9saW51eC9icGYuaDozNjI2OiNpZiBkZWZpbmVkKENPTkZJR19ORVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMzYyNy1pbnQgYnBmX2Rldl9ib3VuZF9rZnVuY19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MzczMT1zdGF0aWMgaW5saW5lIGludCBicGZfcHJvZ190ZXN0X3J1bl9zeXNjYWxsKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3MzctXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3Mzg6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM5LXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2dldF9mcm9tX2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mzc2Mz1zdGF0aWMgaW5saW5lIGludCBzb2NrX21hcF9saW5rX2NyZWF0ZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2Ni19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3Njc6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuaW5jbHVkZS9saW51eC9icGYuaDozNzY4OiNlbmRpZiAvKiBDT05GSUdfTkVUIFx1MDAyNlx1MDAyNiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM3NzE9YnBmX3Byb2dfaW5jX21pc3Nlc19jb3VudGVycyhjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXJyYXkgKmFycmF5KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzc4NS1cbmluY2x1ZGUvbGludXgvYnBmLmg6Mzc4NjojaWYgZGVmaW5lZChDT05GSUdfSU5FVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxuaW5jbHVkZS9saW51eC9icGYuaC0zNzg3LXZvaWQgYnBmX3NrX3JldXNlcG9ydF9kZXRhY2goc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM3OTM9c3RhdGljIGlubGluZSB2b2lkIGJwZl9za19yZXVzZXBvcnRfZGV0YWNoKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTYtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM3OTc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzk4LXN0YXRpYyBpbmxpbmUgaW50IGJwZl9mZF9yZXVzZXBvcnRfYXJyYXlfbG9va3VwX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4MDQ9c3RhdGljIGlubGluZSBpbnQgYnBmX2ZkX3JldXNlcG9ydF9hcnJheV91cGRhdGVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzgwOS19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MTA6I2VuZGlmIC8qIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xuaW5jbHVkZS9saW51eC9icGYuaDozODExOiNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19JTkVUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTItXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0zODE0PXN0cnVjdCBicGZfa2V5IHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTktXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MjA6I2lmIGRlZmluZWQoQ09ORklHX0tFWVMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgyMS1zdHJ1Y3QgYnBmX2tleSAqYnBmX2xvb2t1cF91c2VyX2tleShzMzIgc2VyaWFsLCB1NjQgZmxhZ3MpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg1ND1zdGF0aWMgaW5saW5lIHMzMiBicGZfa2V5X3NlcmlhbChjb25zdCBzdHJ1Y3QgYnBmX2tleSAqa2V5KVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1Ny19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NTg6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0tFWVMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTCkgKi9cbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTQxMTI9aW50IGJwZl9zdHJlYW1fc3RhZ2VfZHVtcF9zdGFjayhzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSAqc3MpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODc5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIGNoYW5nZSwgYW5kIGl0IHNlZW1zIHRoZSBwYXRjaCBpdHNlbGYgaXMgbmVzdGxlZCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoZSBhY2NvbXBhbnlpbmcgdGVzdCBpcyBsb2NhdGVkIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIGdpdmVuLCBhIGZvdW5kYXRpb25hbCByZXF1aXJlbWVudC4KCk5vdywgYmVjYXVzZSBpdCYjMzk7cyBCUEYgcmVsYXRlZCwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50LiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgc3RyYWlnaHRmb3J3YXJkLCBsaWtlIGBDT05GSUdfQ0dST1VQX0JQRmAsIG9yIHBlcmhhcHMgYENPTkZJR19ORVRgIG9yIGBDT05GSUdfQlBGX0pJVGAuIFVzdWFsbHksIGEgdmVyaWZpZXIgY2hhbmdlIHdvdWxkIGp1c3QgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYnV0IGJlY2F1c2UgdGhpcyBpcyBzb2NrbWFwIHJlbGF0ZWQsIGl0IG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgb3IgYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGludm9sdmVkLgoKTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYE1ha2VmaWxlYHMgd2l0aGluIHRoZSBrZXJuZWwuIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGtlcm5lbC9icGYvTWFrZWZpbGVgIGFuZCB0aGVuIG1vdmUgdG8gYG5ldC9jb3JlL01ha2VmaWxlYCB0byBzZWUgaWYgSSBjYW4gc3BvdCBhbnkgZGlyZWN0IHJlZmVyZW5jZXMgdG8gc29ja21hcCB0aGF0IGNvdWxkIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvY2ttYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgTmV0d29yayBDb3JlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIGZvciBzb2NrZXQgYW5kIEJQRi1yZWxhdGVkIGNvZGUgYXJlLCBsaWtlbHkgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gTXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtsbCBiZSBpbiB0aGUgYG5ldC9jb3JlL2AgZGlyZWN0b3J5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGlzIHRoZSBgTWFrZWZpbGVgIHRoZXJlLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgYnVpbGRpbmcgdGhhdCBwYXJ0IG9mIHRoZSBrZXJuZWwsIGFuZCB0aGUgYnVpbGQgc3lzdGVtIG9mdGVuIGNvbnRhaW5zIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIG1hY3JvcyBmb3IgZGlmZmVyZW50IGZlYXR1cmVzLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBgTWFrZWZpbGVgIGxvb2tpbmcgZm9yIGRpcmVjdGl2ZXMsIGluY2x1ZGVzLCBvciB2YXJpYWJsZXMgdGhhdCByZWZlcmVuY2UgJiMzNDtzb2NrJiMzNDsgb3IgJiMzNDticGYmIzM0OyDigJMgdGhvc2UgYXJlIHRoZSBrZXl3b3JkcyB0aGF0JiMzOTtsbCBwb2ludCBtZSB0byB0aGUgZmlsZXMgSSBuZWVkLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSBoZWFkZXJzIG9yIHNvdXJjZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0xXVFVOTkVMKSAmIzQzOz0gbHd0dW5uZWwub1xubmV0L2NvcmUvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0xXVFVOTkVMX0JQRikgJiM0Mzs9IGx3dF9icGYub1xubmV0L2NvcmUvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0RTVF9DQUNIRSkgJiM0Mzs9IGRzdF9jYWNoZS5vXG4tLVxubmV0L2NvcmUvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xubmV0L2NvcmUvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3NrX3N0b3JhZ2Uub1xubmV0L2NvcmUvTWFrZWZpbGUtNDctb2JqLSQoQ09ORklHX09GKVx0JiM0Mzs9IG9mX25ldC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2Ygc29ja19tYXAubyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBzb2NrX21hcC5vYCBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG5hbWUuIEJ1dCBoYW5nIG9uLi4uIGBzb2NrX21hcC5vYCByZXNpZGVzIGluIGBuZXQvY29yZS9gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGEgYml0IGJldHRlci4gVGhpcyB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGEgY29yZSBjb21wb25lbnQuIExldCBtZSBvcGVuIHVwIGBuZXQvY29yZS9zb2NrX21hcC5jYCBhbmQgcXVpY2tseSBzY2FuIHRoZSBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIGFyZSBhdCBwbGF5IGhlcmUuIFRoaXMgd2F5IEkgY2FuIGRldGVybWluZSB3aHkgdGhpcyBtb2R1bGUgaXMgZm91bmQgaW4gYSBjb3JlIGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NvY2tfbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc29ja19tYXAuYz0xNDc1PXN0YXRpYyBpbnQgc29ja19tYXBfcHJvZ19saW5rX2xvb2t1cChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Byb2cgKioqcHByb2csXG4tLVxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVx0XHRicmVhaztcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXG5uZXQvY29yZS9zb2NrX21hcC5jLTE0OTEtXHRjYXNlIEJQRl9TS19TS0JfU1RSRUFNX1BBUlNFUjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBWZXJpZmllciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlLCB0aGUgcHJpbWFyeSBlbmFibGVyLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiB0aGF0LiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgKnNwZWNpZmljKiBjb25maWdzIGluIHBsYXk/IEkgbmVlZCB0byBjaGVjay4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBhYm91dCBhbnkgcHJvZ3JhbSB0eXBlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGZvciBgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNgIG9yIGBCUEZfUFJPR19UWVBFX1hEUGAuIEhtbSwgSSB3b25kZXIgaWYgYENPTkZJR19ORVRfQ0xTX0JQRmAgaXMgaW52b2x2ZWQ/CgpXYWl0LCB0aGUgdmVyaWZpZXIgaGFuZGxlcyBhbGwgdHlwZXMgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWN0aXZlLCByaWdodD8gVGhvdWdoLCBJIHN1cHBvc2Ugc29tZSBvZiB0aG9zZSB0eXBlcyBtaWdodCBiZSB1bmF2YWlsYWJsZSBpZiBgQ09ORklHX05FVGAgaXMgZGlzYWJsZWQuIEhvd2V2ZXIsIHRoYXQmIzM5O3Mgbm90IGEgbGlrZWx5IHNjZW5hcmlvLiBgQ09ORklHX05FVGAgaXMgcHJhY3RpY2FsbHkgYWx3YXlzIGVuYWJsZWQuIFN0aWxsLCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhcm91bmQgdGhlIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHNlY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYXJlYSBzcGVjaWZpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21heV91cGRhdGVfc29ja21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODIyNz1zdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBhcmcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NjgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQ2OTpzdGF0aWMgYm9vbCBtYXlfdXBkYXRlX3NvY2ttYXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ3MC17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg1MDk9c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODQtXHRcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTg1Olx0XHQgICAgIW1heV91cGRhdGVfc29ja21hcChlbnYsIGZ1bmNfaWQpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODYtXHRcdFx0Z290byBlcnJvcjtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5My1cdFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1OTQ6XHRcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5NS1cdFx0XHRnb3RvIGVycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFRhcmdldHMgZm9yIEJQRiBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbWF5X3VwZGF0ZV9zb2NrbWFwYCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoaXMgZnVuY3Rpb24sIGFzIEkgcmVjYWxsLCBpcyBjYWxsZWQgZnJvbSBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFyZ2V0IHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseTogYG1heV91cGRhdGVfc29ja21hcGAgYW5kIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YC4gSG93ZXZlciwgYm90aCBvZiB0aGVzZSBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgY291bGQgYmUgYSBwcm9ibGVtIOKAkyB0aGV5IG1pZ2h0IGJlIGlubGluZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkxldCYjMzk7cyBkbyBzb21lIHF1aWNrIGNoZWNrcy4gWWVzLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgaXMgYWxzbyBzdGF0aWMsIHNvIG15IGluaXRpYWwgdGFyZ2V0IGlzIHByb2JhYmx5IG5vdCB0aGUgcmlnaHQgb25lLiBMZXQgbWUgY2hlY2sgYGNoZWNrX2hlbHBlcl9jYWxsYCBqdXN0IHRvIG1ha2Ugc3VyZSDigJMgYWgsIGFuZCB0aGF0JiMzOTtzIGFsc28gc3RhdGljLiBPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGFib3V0IHRoZSBtYWluIGVudHJ5IHBvaW50LCBgYnBmX2NoZWNrYD8gWWVzLCBpdCYjMzk7cyBleHBvcnRlZCBhbmQgdGh1cyBhY2Nlc3NpYmxlIGJ1dCBpdOKAmXMgdG9vIGdlbmVyaWMuCgpJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBwcm92aWRpbmcgYm90aCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgYW5kIGBtYXlfdXBkYXRlX3NvY2ttYXBgLiBGdXp6ZXJzIGNhbiB1c3VhbGx5IGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIG5vdCBmdWxseSBpbmxpbmVkLiBJdCYjMzk7cyB3b3J0aCBhIHNob3QuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9idmlvdXMgb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIHZpc2liaWxpdHkgb3IgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnYCBmaWxlLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRDT05GSUdfQkxLX0RFVl9MT09QPXlcbiAgIDI6XHRDT05GSUdfQk9PVFBBUkFNX0hBUkRMT0NLVVBfUEFOSUM9eVxuICAgMzpcdENPTkZJR19CT09UUEFSQU1fU09GVExPQ0tVUF9QQU5JQz0xXG4gICA0Olx0Q09ORklHX0JQRj15XG4gICA1Olx0Q09ORklHX0JQRl9FVkVOVFM9eVxuICAgNjpcdENPTkZJR19CUEZfSklUPXlcbiAgIDc6XHRDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERT15XG4gICA4Olx0Q09ORklHX0JQRl9MSVJDX01PREUyPXlcbiAgIDk6XHRDT05GSUdfQlBGX0xTTT15XG4gIDEwOlx0Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcbiAgMTE6XHRDT05GSUdfQlBGX1NZU0NBTEw9eVxuICAxMjpcdCMgQ09ORklHX0JQRl9VTlBSSVZfREVGQVVMVF9PRkYgaXMgbm90IHNldFxuICAxMzpcdENPTkZJR19DR1JPVVBfQlBGPXlcbiAgMTQ6XHRDT05GSUdfQ1JZUFRPX0hNQUM9eVxuICAxNTpcdENPTkZJR19DUllQVE9fU0hBMjU2PXlcbiAgMTY6XHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJPXlcbiAgMTc6XHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX0hBU0g9eVxuICAxODpcdENPTkZJR19DUllQVE9fVVNFUl9BUElfU0tDSVBIRVI9eVxuICAxOTpcdENPTkZJR19DUllQVE9fU0tDSVBIRVI9eVxuICAyMDpcdENPTkZJR19DUllQVE9fRUNCPXlcbiAgMjE6XHRDT05GSUdfQ1JZUFRPX0FFUz15XG4gIDIyOlx0Q09ORklHX0RFQlVHX0lORk89eVxuICAyMzpcdENPTkZJR19ERUJVR19JTkZPX0JURj15XG4gIDI0Olx0Q09ORklHX0RFQlVHX0lORk9fRFdBUkY0PXlcbiAgMjU6XHRDT05GSUdfRE1BQlVGX0hFQVBTPXlcbiAgMjY6XHRDT05GSUdfRE1BQlVGX0hFQVBTX1NZU1RFTT15XG4gIDI3Olx0Q09ORklHX0RVTU1ZPXlcbiAgMjg6XHRDT05GSUdfRFlOQU1JQ19GVFJBQ0U9eVxuICAyOTpcdENPTkZJR19GUFJPQkU9eVxuICAzMDpcdENPTkZJR19GVFJBQ0VfU1lTQ0FMTFM9eVxuICAzMTpcdENPTkZJR19GVU5DVElPTl9FUlJPUl9JTkpFQ1RJT049eVxuICAzMjpcdENPTkZJR19GVU5DVElPTl9UUkFDRVI9eVxuICAzMzpcdENPTkZJR19GU19WRVJJVFk9eVxuICAzNDpcdENPTkZJR19HRU5FVkU9eVxuICAzNTpcdENPTkZJR19JS0NPTkZJRz15XG4gIDM2Olx0Q09ORklHX0lLQ09ORklHX1BST0M9eVxuICAzNzpcdENPTkZJR19JTUE9eVxuICAzODpcdENPTkZJR19JTUFfUkVBRF9QT0xJQ1k9eVxuICAzOTpcdENPTkZJR19JTUFfV1JJVEVfUE9MSUNZPXlcbiAgNDA6XHRDT05GSUdfSU5FVF9FU1A9eVxuICA0MTpcdENPTkZJR19JUF9ORl9GSUxURVI9eVxuICA0MjpcdENPTkZJR19JUF9ORl9SQVc9eVxuICA0MzpcdENPTkZJR19JUF9ORl9UQVJHRVRfU1lOUFJPWFk9eVxuICA0NDpcdENPTkZJR19JUFY2PXlcbiAgNDU6XHRDT05GSUdfSVBWNl9GT1U9eVxuICA0NjpcdENPTkZJR19JUFY2X0ZPVV9UVU5ORUw9eVxuICA0NzpcdENPTkZJR19JUFY2X0dSRT15XG4gIDQ4Olx0Q09ORklHX0lQVjZfSU9BTTZfTFdUVU5ORUw9eVxuICA0OTpcdENPTkZJR19JUFY2X1NFRzZfQlBGPXlcbiAgNTA6XHRDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbiAgNTE6XHRDT05GSUdfSVBWNl9TSVQ9eVxuICA1MjpcdENPTkZJR19JUFY2X1RVTk5FTD15XG4gIDUzOlx0Q09ORklHX0tFWVM9eVxuICA1NDpcdENPTkZJR19MSVJDPXlcbiAgNTU6XHRDT05GSUdfTElWRVBBVENIPXlcbiAgNTY6XHRDT05GSUdfTFdUVU5ORUw9eVxuICA1NzpcdENPTkZJR19MV1RVTk5FTF9CUEY9eVxuICA1ODpcdENPTkZJR19NT0RVTEVfU0lHPXlcbiAgNTk6XHRDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMPXlcbiAgNjA6XHRDT05GSUdfTU9EVUxFX1VOTE9BRD15XG4gIDYxOlx0Q09ORklHX01PRFVMRVM9eVxuICA2MjpcdENPTkZJR19NT0RWRVJTSU9OUz15XG4gIDYzOlx0Q09ORklHX01QTFM9eVxuICA2NDpcdENPTkZJR19NUExTX0lQVFVOTkVMPXlcbiAgNjU6XHRDT05GSUdfTVBMU19ST1VUSU5HPXlcbiAgNjY6XHRDT05GSUdfTVBUQ1A9eVxuICA2NzpcdENPTkZJR19ORVRfQUNUX0dBQ1Q9eVxuICA2ODpcdENPTkZJR19ORVRfQUNUX01JUlJFRD15XG4gIDY5Olx0Q09ORklHX05FVF9BQ1RfU0tCTU9EPXlcbiAgNzA6XHRDT05GSUdfTkVUX0NMUz15XG4gIDcxOlx0Q09ORklHX05FVF9DTFNfQUNUPXlcbiAgNzI6XHRDT05GSUdfTkVUX0NMU19CUEY9eVxuICA3MzpcdENPTkZJR19ORVRfQ0xTX0ZMT1dFUj15XG4gIDc0Olx0Q09ORklHX05FVF9DTFNfTUFUQ0hBTEw9eVxuICA3NTpcdENPTkZJR19ORVRfRk9VPXlcbiAgNzY6XHRDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbiAgNzc6XHRDT05GSUdfTkVUX0lQR1JFPXlcbiAgNzg6XHRDT05GSUdfTkVUX0lQR1JFX0RFTVVYPXlcbiAgNzk6XHRDT05GSUdfTkVUX0lQSVA9eVxuICA4MDpcdENPTkZJR19ORVRfTVBMU19HU089eVxuICA4MTpcdENPTkZJR19ORVRfU0NIX0JQRj15XG4gIDgyOlx0Q09ORklHX05FVF9TQ0hfRlE9eVxuICA4MzpcdENPTkZJR19ORVRfU0NIX0lOR1JFU1M9eVxuICA4NDpcdENPTkZJR19ORVRfU0NIX0hUQj15XG4gIDg1Olx0Q09ORklHX05FVF9TQ0hFRD15XG4gIDg2Olx0Q09ORklHX05FVERFVlNJTT15XG4gIDg3Olx0Q09ORklHX05FVEZJTFRFUj15XG4gIDg4Olx0Q09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15XG4gIDg5Olx0Q09ORklHX05FVEZJTFRFUl9TWU5QUk9YWT15XG4gIDkwOlx0Q09ORklHX05FVEZJTFRFUl9YVF9DT05OTUFSSz15XG4gIDkxOlx0Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT15XG4gIDkyOlx0Q09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ1Q9eVxuICA5MzpcdENPTkZJR19ORVRLSVQ9eVxuICA5NDpcdENPTkZJR19ORl9DT05OVFJBQ0s9eVxuICA5NTpcdENPTkZJR19ORl9DT05OVFJBQ0tfTUFSSz15XG4gIDk2Olx0Q09ORklHX05GX0NPTk5UUkFDS19aT05FUz15XG4gIDk3Olx0Q09ORklHX05GX0RFRlJBR19JUFY0PXlcbiAgOTg6XHRDT05GSUdfTkZfREVGUkFHX0lQVjY9eVxuICA5OTpcdENPTkZJR19ORl9UQUJMRVM9eVxuIDEwMDpcdENPTkZJR19ORl9UQUJMRVNfSU5FVD15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTMyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIFNvY2ttYXAgSW1wbGVtZW50YXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciB0aGlzIHNvY2ttYXAgaW1wbGVtZW50YXRpb24uIEFic29sdXRlbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbm9uLW5lZ290aWFibGUgcHJlcmVxdWlzaXRlLiBXZSBjYW4mIzM5O3QgZG8gYW55dGhpbmcgQlBGLXJlbGF0ZWQgd2l0aG91dCBpdC4gTm93LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHNvY2ttYXAsIGFuZCBob3cgZGVlcGx5IGl0IGludGVyZmFjZXMgd2l0aCBuZXR3b3JrIHN0cmVhbXMsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGFsc28gbmVlZGluZyBgQ09ORklHX0JQRl9TVFJFQU1fUEFSU0VSYC4gVGhpcyBmZWVscyByaWdodCwgZG9lc24mIzM5O3QgaXQ/IEl0IGp1c3Qgc2VlbXMgaW5jcmVkaWJseSBsaWtlbHkgdGhhdCBzdHJlYW0gcGFyc2luZyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgbWFraW5nIGl0IGFsbCBzaW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgcXVpY2sgcGFzcyBvdmVyIGBuZXQvY29yZS9zb2NrX21hcC5jYC4gQSBmcmVzaCBsb29rIGFsd2F5cyBoZWxwcyBjbGFyaWZ5IGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGdvdGNoYXMuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLCBhbnkgc3VidGxlIGludGVycGxheS4gTmVlZCB0byBiZSBjZXJ0YWluIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvc29ja19tYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9zb2NrX21hcC5jPTE0NzU9c3RhdGljIGludCBzb2NrX21hcF9wcm9nX2xpbmtfbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfcHJvZyAqKipwcHJvZyxcbi0tXG5uZXQvY29yZS9zb2NrX21hcC5jLTE0ODktXHRcdGJyZWFrO1xubmV0L2NvcmUvc29ja19tYXAuYzoxNDkwOiNpZiBJU19FTkFCTEVEKENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUilcbm5ldC9jb3JlL3NvY2tfbWFwLmMtMTQ5MS1cdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAgaGFuZGxlcyB0aGUgdmVyaWZpZXImIzM5O3MgbmVlZHMsIHdoaWNoIGlzIGdvb2QuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX05FVGAgaXMgZXNzZW50aWFsLiBBaCwgeWVzLCBgc29ja21hcGAgaXMgZGVmaW5pdGVseSBuZXR3b3JraW5nLXJlbGF0ZWQuIFRoZXJlZm9yZSwgdGhlIGNvcmUgcmVxdWlyZW1lbnRzIGFyZSBnb2luZyB0byBiZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ORVRgLiBJIHNob3VsZCByZXR1cm4gYEJQRl9TWVNDQUxMYCBhbmQgYE5FVGAgYXMgYSBiYXNpYyBzZXQuCgpXYWl0IGEgc2Vjb25kLCB0aGlzIHBhdGNoIHJlbW92ZXMgc29tZSBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBhbGxvd2VkIGxpc3QuIFNwZWNpZmljYWxseSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVG8gYWRlcXVhdGVseSB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIHRoZXNlIHByb2dyYW0gdHlwZXMsIHdoaWNoIG1lYW5zIGVuYWJsaW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKTGV0JiMzOTtzIHNlZSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCByZXF1aXJlcyBgQ09ORklHX05FVF9DTFNfQlBGYC4gYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCBuZWVkcyBlaXRoZXIgYENPTkZJR19ORVRfQUNUX0JQRmAgb3IgYENPTkZJR19ORVRfQ0xTX0FDVGAuIEJvdGggYEJQRl9QUk9HX1RZUEVfWERQYCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgIHJlcXVpcmUgYENPTkZJR19ORVRgLiBJdCYjMzk7cyBzdGFydGluZyB0byBsb29rIGxpa2UgYENPTkZJR19ORVRfQ0xTX0JQRmAgYW5kIGBDT05GSUdfTkVUX0FDVF9CUEZgIGFyZSB3aXNlIGFkZGl0aW9ucyB0byBteSBjb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJIHRoaW5rIEkmIzM5O2xsIGRpdmUgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGVzZSBwcm9ncmFtIHR5cGVzIGJlZm9yZSBtYWtpbmcgYW55IGZpbmFsIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTQ2MzY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19kaXJlY3RfcGt0X2RhdGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY1NC1cdC8qIFByb2dyYW0gdHlwZXMgd2l0aCBkaXJlY3QgcmVhZCAmIzQzOyB3cml0ZSBhY2Nlc3MgZ28gaGVyZSEgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjU1Olx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0NMUzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjU2LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTYyODY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19za2IoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Mjg5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTYyOTA6XHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MjkxLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1ODMKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbDogZXZlbiBpZiBhIHN1YnN5c3RlbSBmb3IgYSBzcGVjaWZpYyBCUEYgcHJvZ3JhbSB0eXBlIGlzbiYjMzk7dCBhY3RpdmUsIHRoZSB2ZXJpZmllciB3aWxsICpzdGlsbCogcnVuIGl0cyBjaGVja3Mgb24gdGhhdCBwcm9ncmFtIHR5cGUsIGFzIGxvbmcgYXMgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4gVGhlIHByb2dyYW0gdHlwZXMgdGhlbXNlbHZlcyBhcmUgbGFpZCBvdXQgaW4gYGluY2x1ZGUvdWFwaS9saW51eC9icGYuaGAsIGFuZCB0aGUgdmVyaWZpZXIgZG9lcyBpdHMgam9iIGxvb2tpbmcgdGhlbSBvdmVyIGF0IGxvYWQgdGltZS4gU3VyZSwgeW91IG5lZWQgdGhlIHN1YnN5c3RlbSB0byAqYWN0dWFsbHkqIGF0dGFjaCB0aGUgcHJvZ3JhbXMsIGJ1dCB0aGUgdmVyaWZpY2F0aW9uIGhhcHBlbnMgdXBmcm9udC4gU28sIGVuYWJsaW5nIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVub3VnaCB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBjb2RlLgoKU28sIHRvIHJlY2FwIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGlzIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlc3RyaWN0aW5nIHdoYXQgQlBGIHByb2dyYW0gdHlwZXMgY2FuIHRvdWNoIGEgc29ja21hcC4gVGhpcyBhbHRlcnMgdGhlIHZlcmlmaWVyJiMzOTtzIGJlaGF2aW9yIHRvIGVuaGFuY2Ugc2FmZXR5LCBhbmQgdGh1cyBuZWVkcyB0YXJnZXRlZCBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYG1heV91cGRhdGVfc29ja21hcGAsIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgYXJlIGtleSBhcmVhcy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlBGX1NZU0NBTExgIGFuZCBgTkVUYCBhcmUgbmVjZXNzYXJ5LgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgdGFyZ2V0czogSSYjMzk7dmUgY2hlY2tlZCBhbmQgY29uZmlybWVkIHRoYXQgYG1heV91cGRhdGVfc29ja21hcGAsIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGdvb2QsIGl0IG5hcnJvd3MgdGhlIHNjb3BlIGEgYml0LiBUaGUgbWFpbiBlbnRyeSBwb2ludCwgYGJwZl9jaGVja2AsIGlzIGEgbGl0dGxlIHRvbyBicm9hZCBmb3IgdGFyZ2V0ZWQgZnV6emluZy4KCk15IGFwcHJvYWNoIHdpbGwgYmUgdG8gZm9jdXMgb24gYGNoZWNrX2hlbHBlcl9jYWxsYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBUaGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgdGhlIHZlcmlmaWVyIGNvcnJlY3RseSBlbmZvcmNlcyB0aGVzZSBuZXcgcmVzdHJpY3Rpb25zLgoKTGV0JiMzOTtzIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5JiMzNDssCiAgICAmIzM0O2NoZWNrX2hlbHBlcl9jYWxsJiMzNDssCiAgICAmIzM0O21heV91cGRhdGVfc29ja21hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXN0cmljdHMgdGhlIEJQRiBwcm9ncmFtIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdXBkYXRlIGEgc29ja21hcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBwcmV2ZW50cyBjZXJ0YWluIHByb2dyYW0gdHlwZXMgZnJvbSBwZXJmb3JtaW5nIHBvdGVudGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZSB2ZXJpZmllciB3aXRoIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2YWx1YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eSYjMzQ7LAogICAgJiMzNDtjaGVja19oZWxwZXJfY2FsbCYjMzQ7LAogICAgJiMzNDttYXlfdXBkYXRlX3NvY2ttYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxMC40NzEzMDEyMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODAwNTQ0NjQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eVwiLFxuICAgIFwiY2hlY2tfaGVscGVyX2NhbGxcIixcbiAgICBcIm1heV91cGRhdGVfc29ja21hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxMC40NzEzMDg2NTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NzgyNzc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY0ZmQwNzA5M2ZhNTc0NzI4ZjBmZjZlNzVmNzkxZTA0YTEyYmE3MTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDg6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggMjVhZWE0MjcxY2QwODkuLjU4ZDc2NmMzNDYyNmU1IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC04NDg5LDExICs4NDg5LDcgQEAgc3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxcbiBcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfWERQOlxcbiBcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxcbi1cXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XFxuIFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19MT09LVVA6XFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuQEAgLTMzNiwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9mbW9kX3JldF9mcmVwbGFjZSh2b2lkKVxcbiB9XFxuIFxcbiBcXG4tc3RhdGljIHZvaWQgdGVzdF9mdW5jX3NvY2ttYXBfdXBkYXRlKHZvaWQpXFxuLXtcXG4tXFx0Y29uc3QgY2hhciAqcHJvZ19uYW1lW10gPSB7XFxuLVxcdFxcdFxcXCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcXFwiLFxcbi1cXHR9O1xcbi1cXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFxcXCIuL2ZyZXBsYWNlX2Nsc19yZWRpcmVjdC5icGYub1xcXCIsXFxuLVxcdFxcdFxcdFxcdCAgXFxcIi4vdGVzdF9jbHNfcmVkaXJlY3QuYnBmLm9cXFwiLFxcbi1cXHRcXHRcXHRcXHQgIEFSUkFZX1NJWkUocHJvZ19uYW1lKSxcXG4tXFx0XFx0XFx0XFx0ICBwcm9nX25hbWUsIGZhbHNlLCBOVUxMKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCh2b2lkKVxcbiB7XFxuIFxcdGNvbnN0IGNoYXIgKnByb2dfbmFtZVtdID0ge1xcbkBAIC01OTksOCArNTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmdW5jX3JlcGxhY2VfdmVyaWZ5XFxcIikpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlX3ZlcmlmeSgpO1xcbi1cXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnVuY19zb2NrbWFwX3VwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcImZ1bmNfcmVwbGFjZV9yZXR1cm5fY29kZVxcXCIpKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnVuY19tYXBfcHJvZ19jb21wYXRpYmlsaXR5XFxcIikpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbmluZGV4IGNiMzIyOTcxMWY5M2EzLi4zM2Y3ODhlMjc4NmRhZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcXG5AQCAtNyw3ICs3LDYgQEBcXG4gXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3Byb2dzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NrbXNnX2xvYWRfaGVscGVycy5za2VsLmhcXFwiXFxuLSNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9wcm9nc19xdWVyeS5za2VsLmhcXFwiXFxuQEAgLTIzNSw1MyArMjM0LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9za21zZ19oZWxwZXJzX3dpdGhfbGluayhlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4gXFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXFxuLXtcXG4tXFx0aW50IGVyciwgcHJvZywgc3JjO1xcbi1cXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX3VwZGF0ZSAqc2tlbDtcXG4tXFx0c3RydWN0IGJwZl9tYXAgKmRzdF9tYXA7XFxuLVxcdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xcbi1cXHRjaGFyIGR1bW15WzE0XSA9IHswfTtcXG4tXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxcbi1cXHRcXHQuZGF0YV9pbiA9IGR1bW15LFxcbi1cXHRcXHQuZGF0YV9zaXplX2luID0gc2l6ZW9mKGR1bW15KSxcXG4tXFx0XFx0LnJlcGVhdCA9IDEsXFxuLVxcdCk7XFxuLVxcdF9fczY0IHNrO1xcbi1cXG4tXFx0c2sgPSBjb25uZWN0ZWRfc29ja2V0X3Y0KCk7XFxuLVxcdGlmICghQVNTRVJUX05FUShzaywgLTEsIFxcXCJjb25uZWN0ZWRfc29ja2V0X3Y0XFxcIikpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdHNrZWwgPSB0ZXN0X3NvY2ttYXBfdXBkYXRlX19vcGVuX2FuZF9sb2FkKCk7XFxuLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbi1cXHRcXHRnb3RvIGNsb3NlX3NrO1xcbi1cXG4tXFx0cHJvZyA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5jb3B5X3NvY2tfbWFwKTtcXG4tXFx0c3JjID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zcmMpO1xcbi1cXHRpZiAobWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1NPQ0tNQVApXFxuLVxcdFxcdGRzdF9tYXAgPSBza2VsLVxcdTAwM2VtYXBzLmRzdF9zb2NrX21hcDtcXG4tXFx0ZWxzZVxcbi1cXHRcXHRkc3RfbWFwID0gc2tlbC1cXHUwMDNlbWFwcy5kc3Rfc29ja19oYXNoO1xcbi1cXG4tXFx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShzcmMsIFxcdTAwMjZ6ZXJvLCBcXHUwMDI2c2ssIEJQRl9OT0VYSVNUKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidXBkYXRlX2VsZW0oc3JjKVxcXCIpKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuLVxcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMocHJvZywgXFx1MDAyNnRvcHRzKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdGlmICghQVNTRVJUX05FUSh0b3B0cy5yZXR2YWwsIDAsIFxcXCJ0ZXN0X3J1biByZXR2YWxcXFwiKSlcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjb21wYXJlX2Nvb2tpZXMoc2tlbC1cXHUwMDNlbWFwcy5zcmMsIGRzdF9tYXApO1xcbi1cXG4tb3V0Olxcbi1cXHR0ZXN0X3NvY2ttYXBfdXBkYXRlX19kZXN0cm95KHNrZWwpO1xcbi1jbG9zZV9zazpcXG4tXFx0Y2xvc2Uoc2spO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUodm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlICpza2VsO1xcbkBAIC0xMzg1LDEwICsxMzM3LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2toYXNoIHNrX21zZyBsb2FkIGhlbHBlcnNcXFwiKSlcXG4gXFx0XFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XFxuLVxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHVwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4tXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2toYXNoIHVwZGF0ZVxcXCIpKVxcbi1cXHRcXHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzb2NrbWFwIHVwZGF0ZSBpbiB1bnNhZmUgY29udGV4dFxcXCIpKVxcbiBcXHRcXHR0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUoKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgY29weVxcXCIpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmNcXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfY2xzX3JlZGlyZWN0LmNcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsMzQgKzAsMCBAQFxcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgRmFjZWJvb2tcXG4tXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGRkZWYuaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGt0X2Nscy5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9lbmRpYW4uaFxcdTAwM2VcXG4tI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbi1cXG4tc3RydWN0IHtcXG4tXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4tXFx0X190eXBlKGtleSwgaW50KTtcXG4tXFx0X190eXBlKHZhbHVlLCBpbnQpO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDIpO1xcbi19IHNvY2tfbWFwIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4tXFxuLVNFQyhcXFwiZnJlcGxhY2UvY2xzX3JlZGlyZWN0XFxcIilcXG4taW50IGZyZXBsYWNlX2Nsc19yZWRpcmVjdF90ZXN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4te1xcbi1cXHRpbnQgcmV0ID0gMDtcXG4tXFx0Y29uc3QgaW50IHplcm8gPSAwO1xcbi1cXHRzdHJ1Y3QgYnBmX3NvY2sgKnNrO1xcbi1cXG4tXFx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFxcdTAwMjZzb2NrX21hcCwgXFx1MDAyNnplcm8pO1xcbi1cXHRpZiAoIXNrKVxcbi1cXHRcXHRyZXR1cm4gVENfQUNUX1NIT1Q7XFxuLVxcbi1cXHRyZXQgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKFxcdTAwMjZzb2NrX21hcCwgXFx1MDAyNnplcm8sIHNrLCAwKTtcXG4tXFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldCA9PSAwID8gVENfQUNUX09LIDogVENfQUNUX1NIT1Q7XFxuLX1cXG4tXFxuLWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmNcXG4rKysgL2Rldi9udWxsXFxuQEAgLTEsNDggKzAsMCBAQFxcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbi0vLyBDb3B5cmlnaHQgKGMpIDIwMjAgQ2xvdWRmbGFyZVxcbi0jaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbi0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbi1cXHRfX3R5cGUoa2V5LCBfX3UzMik7XFxuLVxcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xcbi19IHNyYyBTRUMoXFxcIi5tYXBzXFxcIik7XFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xcbi1cXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xcbi1cXHRfX3R5cGUoa2V5LCBfX3UzMik7XFxuLVxcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xcbi19IGRzdF9zb2NrX21hcCBTRUMoXFxcIi5tYXBzXFxcIik7XFxuLVxcbi1zdHJ1Y3Qge1xcbi1cXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tIQVNIKTtcXG4tXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4tXFx0X190eXBlKGtleSwgX191MzIpO1xcbi1cXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcXG4tfSBkc3Rfc29ja19oYXNoIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4tXFxuLVNFQyhcXFwidGNcXFwiKVxcbi1pbnQgY29weV9zb2NrX21hcCh2b2lkICpjdHgpXFxuLXtcXG4tXFx0c3RydWN0IGJwZl9zb2NrICpzaztcXG4tXFx0Ym9vbCBmYWlsZWQgPSBmYWxzZTtcXG4tXFx0X191MzIga2V5ID0gMDtcXG4tXFxuLVxcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcXHUwMDI2c3JjLCBcXHUwMDI2a2V5KTtcXG4tXFx0aWYgKCFzaylcXG4tXFx0XFx0cmV0dXJuIFNLX0RST1A7XFxuLVxcbi1cXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcXHUwMDI2ZHN0X3NvY2tfbWFwLCBcXHUwMDI2a2V5LCBzaywgMCkpXFxuLVxcdFxcdGZhaWxlZCA9IHRydWU7XFxuLVxcbi1cXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcXHUwMDI2ZHN0X3NvY2tfaGFzaCwgXFx1MDAyNmtleSwgc2ssIDApKVxcbi1cXHRcXHRmYWlsZWQgPSB0cnVlO1xcbi1cXG4tXFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xcbi1cXHRyZXR1cm4gZmFpbGVkID8gU0tfRFJPUCA6IFNLX1BBU1M7XFxuLX1cXG4tXFxuLWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXFxuaW5kZXggZmU0YjEyMzE4N2I4NmUuLmIxMTAyNjEyMzY5MDM3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKHZvaWQpXFxuIH1cXG4gXFxuIFNFQyhcXFwiYWN0aW9uXFxcIilcXG4tX19zdWNjZXNzXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFxcXCIpXFxuIGludCB0ZXN0X3NjaGVkX2FjdChzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXFx1MDAzZXNrKTtcXG5AQCAtODIsNyArODIsNyBAQCBpbnQgdGVzdF9zY2hlZF9hY3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbiB9XFxuIFxcbiBTRUMoXFxcImNsYXNzaWZpZXJcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3Rfc2NoZWRfY2xzKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cXHUwMDNlc2spO1xcbkBAIC05MCw3ICs5MCw3IEBAIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXFxuIH1cXG4gXFxuIFNFQyhcXFwiZmxvd19kaXNzZWN0b3JcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xcbkBAIC05OCw3ICs5OCw3IEBAIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX2RlbGV0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxcbiB9XFxuIFxcbiBTRUMoXFxcImZsb3dfZGlzc2VjdG9yXFxcIilcXG4tX19mYWlsdXJlIF9fbXNnKFxcXCJwcm9ncmFtIG9mIHRoaXMgdHlwZSBjYW5ub3QgdXNlIGhlbHBlciBicGZfc2tfcmVsZWFzZVxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFxcXCIpXFxuIGludCB0ZXN0X2Zsb3dfZGlzc2VjdG9yX3VwZGF0ZShzdHJ1Y3QgX19za19idWZmICpza2IgX19hbHdheXNfdW51c2VkKVxcbiB7XFxuIFxcdHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX3VwZGF0ZSgpOyAvKiBubyBhY2Nlc3MgdG8gc2tiLVxcdTAwM2VzayAqL1xcbkBAIC0xNzksNyArMTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcXG4gfVxcbiBcXG4gU0VDKFxcXCJ4ZHBcXFwiKVxcbi1fX3N1Y2Nlc3NcXG4rX19mYWlsdXJlIF9fbXNnKFxcXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XFxcIilcXG4gaW50IHRlc3RfeGRwKHN0cnVjdCB4ZHBfbWQgKmN0eCBfX2Fsd2F5c191bnVzZWQpXFxuIHtcXG4gXFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfbXV0YXRlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjExLjMyMDIzNjQ5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcxNTY0OTkyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlcIixcbiAgICBcImNoZWNrX2hlbHBlcl9jYWxsXCIsXG4gICAgXCJtYXlfdXBkYXRlX3NvY2ttYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgdGhlIEJQRiBwcm9ncmFtIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdXBkYXRlIGEgc29ja21hcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBwcmV2ZW50cyBjZXJ0YWluIHByb2dyYW0gdHlwZXMgZnJvbSBwZXJmb3JtaW5nIHBvdGVudGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZSB2ZXJpZmllciB3aXRoIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2YWx1YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NGZkMDcwOTNmYTU3NDcyOGYwZmY2ZTc1Zjc5MWUwNGExMmJhNzExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTg6MDg6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDI1YWVhNDI3MWNkMDg5Li41OGQ3NjZjMzQ2MjZlNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtODQ4OSwxMSArODQ4OSw3IEBAIHN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcbiBcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA5MmMyMDgwM2VhNzY1ZC4uZDNhOTU0MTU4YzMzMjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTMzNiwxNyArMzM2LDYgQEAgc3RhdGljIHZvaWQgdGVzdF9mbW9kX3JldF9mcmVwbGFjZSh2b2lkKVxuIH1cbiBcbiBcbi1zdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUodm9pZClcbi17XG4tXHRjb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHtcbi1cdFx0XCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcIixcbi1cdH07XG4tXHR0ZXN0X2ZleGl0X2JwZjJicGZfY29tbW9uKFwiLi9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYnBmLm9cIixcbi1cdFx0XHRcdCAgXCIuL3Rlc3RfY2xzX3JlZGlyZWN0LmJwZi5vXCIsXG4tXHRcdFx0XHQgIEFSUkFZX1NJWkUocHJvZ19uYW1lKSxcbi1cdFx0XHRcdCAgcHJvZ19uYW1lLCBmYWxzZSwgTlVMTCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQodm9pZClcbiB7XG4gXHRjb25zdCBjaGFyICpwcm9nX25hbWVbXSA9IHtcbkBAIC01OTksOCArNTg4LDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZ1bmNfcmVwbGFjZV92ZXJpZnlcIikpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZlcmlmeSgpO1xuLVx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmdW5jX3NvY2ttYXBfdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X2Z1bmNfc29ja21hcF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiZnVuY19yZXBsYWNlX3JldHVybl9jb2RlXCIpKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV9yZXR1cm5fY29kZSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmdW5jX21hcF9wcm9nX2NvbXBhdGliaWxpdHlcIikpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMzNmNzg4ZTI3ODZkYWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNyArNyw2IEBAXG4gXG4gI2luY2x1ZGUgXCJ0ZXN0X3Byb2dzLmhcIlxuICNpbmNsdWRlIFwidGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oXCJcbi0jaW5jbHVkZSBcInRlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcIlxuICNpbmNsdWRlIFwidGVzdF9zb2NrbWFwX3NrYl92ZXJkaWN0X2F0dGFjaC5za2VsLmhcIlxuICNpbmNsdWRlIFwidGVzdF9zb2NrbWFwX3Byb2dzX3F1ZXJ5LnNrZWwuaFwiXG5AQCAtMjM1LDUzICsyMzQsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NrbXNnX2hlbHBlcnNfd2l0aF9saW5rKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuIFx0dGVzdF9za21zZ19sb2FkX2hlbHBlcnNfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF91cGRhdGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5cGUpXG4te1xuLVx0aW50IGVyciwgcHJvZywgc3JjO1xuLVx0c3RydWN0IHRlc3Rfc29ja21hcF91cGRhdGUgKnNrZWw7XG4tXHRzdHJ1Y3QgYnBmX21hcCAqZHN0X21hcDtcbi1cdGNvbnN0IF9fdTMyIHplcm8gPSAwO1xuLVx0Y2hhciBkdW1teVsxNF0gPSB7MH07XG4tXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4tXHRcdC5kYXRhX2luID0gZHVtbXksXG4tXHRcdC5kYXRhX3NpemVfaW4gPSBzaXplb2YoZHVtbXkpLFxuLVx0XHQucmVwZWF0ID0gMSxcbi1cdCk7XG4tXHRfX3M2NCBzaztcbi1cbi1cdHNrID0gY29ubmVjdGVkX3NvY2tldF92NCgpO1xuLVx0aWYgKCFBU1NFUlRfTkVRKHNrLCAtMSwgXCJjb25uZWN0ZWRfc29ja2V0X3Y0XCIpKVxuLVx0XHRyZXR1cm47XG4tXG4tXHRza2VsID0gdGVzdF9zb2NrbWFwX3VwZGF0ZV9fb3Blbl9hbmRfbG9hZCgpO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwib3Blbl9hbmRfbG9hZFwiKSlcbi1cdFx0Z290byBjbG9zZV9zaztcbi1cbi1cdHByb2cgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5jb3B5X3NvY2tfbWFwKTtcbi1cdHNyYyA9IGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zcmMpO1xuLVx0aWYgKG1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TT0NLTUFQKVxuLVx0XHRkc3RfbWFwID0gc2tlbC1cdTAwM2VtYXBzLmRzdF9zb2NrX21hcDtcbi1cdGVsc2Vcbi1cdFx0ZHN0X21hcCA9IHNrZWwtXHUwMDNlbWFwcy5kc3Rfc29ja19oYXNoO1xuLVxuLVx0ZXJyID0gYnBmX21hcF91cGRhdGVfZWxlbShzcmMsIFx1MDAyNnplcm8sIFx1MDAyNnNrLCBCUEZfTk9FWElTVCk7XG4tXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidXBkYXRlX2VsZW0oc3JjKVwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKHByb2csIFx1MDAyNnRvcHRzKTtcbi1cdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1blwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXHRpZiAoIUFTU0VSVF9ORVEodG9wdHMucmV0dmFsLCAwLCBcInRlc3RfcnVuIHJldHZhbFwiKSlcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjb21wYXJlX2Nvb2tpZXMoc2tlbC1cdTAwM2VtYXBzLnNyYywgZHN0X21hcCk7XG4tXG4tb3V0OlxuLVx0dGVzdF9zb2NrbWFwX3VwZGF0ZV9fZGVzdHJveShza2VsKTtcbi1jbG9zZV9zazpcbi1cdGNsb3NlKHNrKTtcbi19XG4tXG4gc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlKHZvaWQpXG4ge1xuIFx0c3RydWN0IHRlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZSAqc2tlbDtcbkBAIC0xMzg1LDEwICsxMzM3LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja2hhc2ggc2tfbXNnIGxvYWQgaGVscGVyc1wiKSlcbiBcdFx0dGVzdF9za21zZ19oZWxwZXJzKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4tXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja2hhc2ggdXBkYXRlXCIpKVxuLVx0XHR0ZXN0X3NvY2ttYXBfdXBkYXRlKEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNvY2ttYXAgdXBkYXRlIGluIHVuc2FmZSBjb250ZXh0XCIpKVxuIFx0XHR0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjb3B5XCIpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCA3ZTk0NDEyZDQ3YTVjYS4uMDAwMDAwMDAwMDAwMDBcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV9jbHNfcmVkaXJlY3QuY1xuKysrIC9kZXYvbnVsbFxuQEAgLTEsMzQgKzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tLy8gQ29weXJpZ2h0IChjKSAyMDIwIEZhY2Vib29rXG4tXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvc3RkZGVmLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BrdF9jbHMuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfZW5kaWFuLmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuLVxuLXN0cnVjdCB7XG4tXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuLVx0X190eXBlKGtleSwgaW50KTtcbi1cdF9fdHlwZSh2YWx1ZSwgaW50KTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMik7XG4tfSBzb2NrX21hcCBTRUMoXCIubWFwc1wiKTtcbi1cbi1TRUMoXCJmcmVwbGFjZS9jbHNfcmVkaXJlY3RcIilcbi1pbnQgZnJlcGxhY2VfY2xzX3JlZGlyZWN0X3Rlc3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuLXtcbi1cdGludCByZXQgPSAwO1xuLVx0Y29uc3QgaW50IHplcm8gPSAwO1xuLVx0c3RydWN0IGJwZl9zb2NrICpzaztcbi1cbi1cdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrX21hcCwgXHUwMDI2emVybyk7XG4tXHRpZiAoIXNrKVxuLVx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4tXG4tXHRyZXQgPSBicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNnNvY2tfbWFwLCBcdTAwMjZ6ZXJvLCBzaywgMCk7XG4tXHRicGZfc2tfcmVsZWFzZShzayk7XG4tXG4tXHRyZXR1cm4gcmV0ID09IDAgPyBUQ19BQ1RfT0sgOiBUQ19BQ1RfU0hPVDtcbi19XG4tXG4tY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfdXBkYXRlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX3VwZGF0ZS5jXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDZkNjRlYTUzNmUzZDgxLi4wMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF91cGRhdGUuY1xuKysrIC9kZXYvbnVsbFxuQEAgLTEsNDggKzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tLy8gQ29weXJpZ2h0IChjKSAyMDIwIENsb3VkZmxhcmVcbi0jaW5jbHVkZSBcInZtbGludXguaFwiXG4tI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2Vcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IHNyYyBTRUMoXCIubWFwc1wiKTtcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbi1cdF9fdWludChtYXhfZW50cmllcywgMSk7XG4tXHRfX3R5cGUoa2V5LCBfX3UzMik7XG4tXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcbi19IGRzdF9zb2NrX21hcCBTRUMoXCIubWFwc1wiKTtcbi1cbi1zdHJ1Y3Qge1xuLVx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLSEFTSCk7XG4tXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuLVx0X190eXBlKGtleSwgX191MzIpO1xuLVx0X190eXBlKHZhbHVlLCBfX3U2NCk7XG4tfSBkc3Rfc29ja19oYXNoIFNFQyhcIi5tYXBzXCIpO1xuLVxuLVNFQyhcInRjXCIpXG4taW50IGNvcHlfc29ja19tYXAodm9pZCAqY3R4KVxuLXtcbi1cdHN0cnVjdCBicGZfc29jayAqc2s7XG4tXHRib29sIGZhaWxlZCA9IGZhbHNlO1xuLVx0X191MzIga2V5ID0gMDtcbi1cbi1cdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzcmMsIFx1MDAyNmtleSk7XG4tXHRpZiAoIXNrKVxuLVx0XHRyZXR1cm4gU0tfRFJPUDtcbi1cbi1cdGlmIChicGZfbWFwX3VwZGF0ZV9lbGVtKFx1MDAyNmRzdF9zb2NrX21hcCwgXHUwMDI2a2V5LCBzaywgMCkpXG4tXHRcdGZhaWxlZCA9IHRydWU7XG4tXG4tXHRpZiAoYnBmX21hcF91cGRhdGVfZWxlbShcdTAwMjZkc3Rfc29ja19oYXNoLCBcdTAwMjZrZXksIHNrLCAwKSlcbi1cdFx0ZmFpbGVkID0gdHJ1ZTtcbi1cbi1cdGJwZl9za19yZWxlYXNlKHNrKTtcbi1cdHJldHVybiBmYWlsZWQgPyBTS19EUk9QIDogU0tfUEFTUztcbi19XG4tXG4tY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3NvY2ttYXBfbXV0YXRlLmNcbmluZGV4IGZlNGIxMjMxODdiODZlLi5iMTEwMjYxMjM2OTAzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zb2NrbWFwX211dGF0ZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc29ja21hcF9tdXRhdGUuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSh2b2lkKVxuIH1cbiBcbiBTRUMoXCJhY3Rpb25cIilcbi1fX3N1Y2Nlc3NcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3Rfc2NoZWRfYWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB7XG4gXHR0ZXN0X3NvY2ttYXBfbXV0YXRlKHNrYi1cdTAwM2Vzayk7XG5AQCAtODIsNyArODIsNyBAQCBpbnQgdGVzdF9zY2hlZF9hY3Qoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxuIH1cbiBcbiBTRUMoXCJjbGFzc2lmaWVyXCIpXG4tX19zdWNjZXNzXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwiKVxuIGludCB0ZXN0X3NjaGVkX2NscyhzdHJ1Y3QgX19za19idWZmICpza2IpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX211dGF0ZShza2ItXHUwMDNlc2spO1xuQEAgLTkwLDcgKzkwLDcgQEAgaW50IHRlc3Rfc2NoZWRfY2xzKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYilcbiB9XG4gXG4gU0VDKFwiZmxvd19kaXNzZWN0b3JcIilcbi1fX3N1Y2Nlc3NcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2RlbGV0ZSgpO1xuQEAgLTk4LDcgKzk4LDcgQEAgaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfZGVsZXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4gfVxuIFxuIFNFQyhcImZsb3dfZGlzc2VjdG9yXCIpXG4tX19mYWlsdXJlIF9fbXNnKFwicHJvZ3JhbSBvZiB0aGlzIHR5cGUgY2Fubm90IHVzZSBoZWxwZXIgYnBmX3NrX3JlbGVhc2VcIilcbitfX2ZhaWx1cmUgX19tc2coXCJjYW5ub3QgdXBkYXRlIHNvY2ttYXAgaW4gdGhpcyBjb250ZXh0XCIpXG4gaW50IHRlc3RfZmxvd19kaXNzZWN0b3JfdXBkYXRlKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiBfX2Fsd2F5c191bnVzZWQpXG4ge1xuIFx0dGVzdF9zb2NrbWFwX2xvb2t1cF9hbmRfdXBkYXRlKCk7IC8qIG5vIGFjY2VzcyB0byBza2ItXHUwMDNlc2sgKi9cbkBAIC0xNzksNyArMTc5LDcgQEAgaW50IHRlc3Rfc29ja29wc191cGRhdGVfZGVkaWNhdGVkKHN0cnVjdCBicGZfc29ja19vcHMgKmN0eClcbiB9XG4gXG4gU0VDKFwieGRwXCIpXG4tX19zdWNjZXNzXG4rX19mYWlsdXJlIF9fbXNnKFwiY2Fubm90IHVwZGF0ZSBzb2NrbWFwIGluIHRoaXMgY29udGV4dFwiKVxuIGludCB0ZXN0X3hkcChzdHJ1Y3QgeGRwX21kICpjdHggX19hbHdheXNfdW51c2VkKVxuIHtcbiBcdHRlc3Rfc29ja21hcF9sb29rdXBfYW5kX211dGF0ZSgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MTEuMzIwMjQwMTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3OTYzMDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBjb3JlIGNoYW5nZTogaXQncyBtb2RpZnlpbmcgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNwZWNpZmljYWxseSB0aGUgYG1heV91cGRhdGVfc29ja21hcGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZXkncmUgcmVtb3ZpbmcgY2VydGFpbiBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gbGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIGl0OlxuXG5gYGBjXG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUjpcbi1cdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUOlxuLVx0Y2FzZSBCUEZfUFJPR19UWVBFX1hEUDpcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9TS19SRVVTRVBPUlQ6XG4tXHRjYXNlIEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1I6XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfTE9PS1VQOlxuIFx0XHRyZXR1cm4gdHJ1ZTtcbmBgYFxuXG5SaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcGF0Y2ggaXMgc3RyaXBwaW5nIG91dCBgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNgLCBgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1RgLCBgQlBGX1BST0dfVFlQRV9YRFBgLCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyBldmFsdWF0ZSBhcyBgZmFsc2VgIG9yIHByb2JhYmx5IHJldHVybiBhbiBlcnJvciBmb3IgdGhvc2UgdHlwZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSB2ZXJpZmllcidzIGJlaGF2aW9yLiBJdCBsb29rcyBsaWtlIGl0IGltcGFjdHMgc29tZSBvZiB0aGUgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxNi40OTk4NzUzOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5OTM0Mzg0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXlfdXBkYXRlX3NvY2ttYXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTgyMjc9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0NjgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0Njk6c3RhdGljIGJvb2wgbWF5X3VwZGF0ZV9zb2NrbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDcwLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTA5PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODQtXFx0XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1ODU6XFx0XFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU4Ni1cXHRcXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTMtXFx0XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1OTQ6XFx0XFx0ICAgICFtYXlfdXBkYXRlX3NvY2ttYXAoZW52LCBmdW5jX2lkKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5NS1cXHRcXHRcXHRnb3RvIGVycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODoxOS42OTkyMzE2NTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQxMTEwMTMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gSXQgbG9va3MgbGlrZSB3ZSdyZSB0aWdodGVuaW5nIHRoZSByZXN0cmljdGlvbnMgb24gd2hpY2ggQlBGIHByb2dyYW0gdHlwZXMgY2FuIGFjdHVhbGx5IG1vZGlmeSBhIGBzb2NrbWFwYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlbW92aW5nIGBCUEZfUFJPR19UWVBFX1NDSEVEX0NMU2AsIGBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVGAsIGBCUEZfUFJPR19UWVBFX1hEUGAsIGFuZCBgQlBGX1BST0dfVFlQRV9GTE9XX0RJU1NFQ1RPUmAgZnJvbSB0aGUgbGlzdCBvZiBhbGxvd2VkIHByb2dyYW0gdHlwZXMuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBCUEYgdmVyaWZpZXIuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJTZWN1cml0eSBvciBjb3JyZWN0bmVzcyBmaXgsIHByZXZlbnRpbmcgc29tZSBraW5kIG9mIGNyYXNoIG9yIHN0YXRlIGNvcnJ1cHRpb24sIHByb2JhYmx5LlwiIFNvLCBpcyB0aGlzIGZ1enphYmxlPyBEZWZpbml0ZWx5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcmlmaWVyOyB0aGF0J3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cblRoZW4gSSBnZXQgYSBsaXR0bGUgc3VzcGljaW91czogXCJXb24ndCBmdXp6aW5nIGp1c3QgZW5kIHVwIHRyaWdnZXJpbmcgdmVyaWZpZXIgcmVqZWN0aW9ucyBiZWNhdXNlIHdlJ3JlIGp1c3QgKnJlc3RyaWN0aW5nKiBmdW5jdGlvbmFsaXR5P1wiIFRoYXQncyBhIHZhbGlkIGNvbmNlcm4uIEJ1dCBpdCdzIHN0aWxsIGEgY29yZSBrZXJuZWwgY2hhbmdlLCBhbmQgdGhlIGNoYW5nZSBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc28gaXQncyBhIGNyaXRpY2FsIGFyZWEuXG5cbkFscmlnaHQsIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IGNvZGUgaW4gYG1heV91cGRhdGVfc29ja21hcGAgdG8gYmUgc3VyZS4gR290dGEgc2VlICpleGFjdGx5KiB3aGF0J3MgY2hhbmdpbmcgdG8gcmVmaW5lIG15IGZ1enppbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MzIuMTEwMzM3NTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5NjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODQ2OSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiODQ2OTpcXHRzdGF0aWMgYm9vbCBtYXlfdXBkYXRlX3NvY2ttYXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGZ1bmNfaWQpXFxuODQ3MDpcXHR7XFxuODQ3MTpcXHRcXHRlbnVtIGJwZl9hdHRhY2hfdHlwZSBlYXR5cGUgPSBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlO1xcbjg0NzI6XFx0XFx0ZW51bSBicGZfcHJvZ190eXBlIHR5cGUgPSByZXNvbHZlX3Byb2dfdHlwZShlbnYtXFx1MDAzZXByb2cpO1xcbjg0NzM6XFx0XFxuODQ3NDpcXHRcXHRpZiAoZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfdXBkYXRlX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG44NDc1OlxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9kZWxldGVfZWxlbSlcXG44NDc2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG44NDc3OlxcdFxcbjg0Nzg6XFx0XFx0LyogSXQncyBub3QgcG9zc2libGUgdG8gZ2V0IGFjY2VzcyB0byBhIGxvY2tlZCBzdHJ1Y3Qgc29jayBpbiB0aGVzZVxcbjg0Nzk6XFx0XFx0ICogY29udGV4dHMsIHNvIHVwZGF0aW5nIGlzIHNhZmUuXFxuODQ4MDpcXHRcXHQgKi9cXG44NDgxOlxcdFxcdHN3aXRjaCAodHlwZSkge1xcbjg0ODI6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuODQ4MzpcXHRcXHRcXHRpZiAoZWF0eXBlID09IEJQRl9UUkFDRV9JVEVSKVxcbjg0ODQ6XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuODQ4NTpcXHRcXHRcXHRicmVhaztcXG44NDg2OlxcdFxcdGNhc2UgQlBGX1BST0dfVFlQRV9TT0NLX09QUzpcXG44NDg3OlxcdFxcdFxcdC8qIG1hcF91cGRhdGUgYWxsb3dlZCBvbmx5IHZpYSBkZWRpY2F0ZWQgaGVscGVycyB3aXRoIGV2ZW50IHR5cGUgY2hlY2tzICovXFxuODQ4ODpcXHRcXHRcXHRpZiAoZnVuY19pZCA9PSBCUEZfRlVOQ19tYXBfZGVsZXRlX2VsZW0pXFxuODQ4OTpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG44NDkwOlxcdFxcdFxcdGJyZWFrO1xcbjg0OTE6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XFxuODQ5MjpcXHRcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOlxcbjg0OTM6XFx0XFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NLX0xPT0tVUDpcXG44NDk0OlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjg0OTU6XFx0XFx0ZGVmYXVsdDpcXG44NDk2OlxcdFxcdFxcdGJyZWFrO1xcbjg0OTc6XFx0XFx0fVxcbjg0OTg6XFx0XFxuODQ5OTpcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCB1cGRhdGUgc29ja21hcCBpbiB0aGlzIGNvbnRleHRcXFxcblxcXCIpO1xcbjg1MDA6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjg1MDE6XFx0fVxcbjg1MDI6XFx0XFxuODUwMzpcXHRib29sIGJwZl9hbGxvd190YWlsX2NhbGxfaW5fc3VicHJvZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG44NTA0OlxcdHtcXG44NTA1OlxcdFxcdHJldHVybiBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWppdF9yZXF1ZXN0ZWQgXFx1MDAyNlxcdTAwMjZcXG44NTA2OlxcdFxcdCAgICAgICBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKCk7XFxuODUwNzpcXHR9XFxuODUwODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6MzIuMTE0MTQ0NTg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzNjI5MjUwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsaW1pdHMgaG93IGNlcnRhaW4gQlBGIHByb2dyYW0gdHlwZXMgY2FuIHVwZGF0ZSBzb2NrbWFwcy4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBcIklzIHRoaXMgZnV6ei13b3J0aHk/XCIgQW5kIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIFwiWWVzIVwiIEFueSB0aW1lIHdlIGFsdGVyIHZlcmlmaWVyIGJlaGF2aW9yLCB3ZSBuZWVkIHRvIHN0cmVzcy10ZXN0IGl0LiBUaGUgcG90ZW50aWFsIGZvciByZWdyZXNzaW9ucyBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBpcyBoaWdoLlxuXG5MZXQncyBob25lIGluIG9uIHRoZSBrZXkgc3ltYm9sczogYG1heV91cGRhdGVfc29ja21hcGAgYW5kIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YC4gV2FpdCBhIG1pbnV0ZSwgYXJlbid0IHRob3NlIHN0YXRpYyBmdW5jdGlvbnM/IEFoLCB5ZXMsIHRoZXkgYXJlLiBUaGF0IG1lYW5zIHdlIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIHRvIGJ1aWxkIGEgc29saWQgZnV6emVyIHRhcmdldC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcyBnb2luZyB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjM1Ljk1MDQ0MDE3OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTEyMTIyODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTg1MDM9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUwOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODUwOTpzdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODUxMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYnBmX21hcCAqbWFwLCBpbnQgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDE4Mj1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDYxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA2MTQ6XFx0ZXJyID0gY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eShlbnYsIG1ldGEubWFwLnB0ciwgZnVuY19pZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNjE1LVxcdGlmIChlcnIpXFxuLS1cXG5zY3JpcHRzL2JwZl9kb2MucHk9NjA3PUNvbXBhdGliaWxpdHkgYmV0d2VlbiBoZWxwZXIgZnVuY3Rpb25zIGFuZCBtYXAgdHlwZXMgY2FuIGJlIGZvdW5kIGluIHRoZVxcbnNjcmlwdHMvYnBmX2RvYy5weTo2MDg6KipjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KipcXFxcXFxcXCAoKSBmdW5jdGlvbiBpbiBmaWxlICprZXJuZWwvYnBmL3ZlcmlmaWVyLmMqLlxcbnNjcmlwdHMvYnBmX2RvYy5weS02MDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjM5LjQ2MjU3MTMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyNjEyNDgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFZlcmlmaWNhdGlvbiBhbmQgU29ja21hcCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgY29kZSBwYXRoLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQgaXMgYGNoZWNrX2hlbHBlcl9jYWxsYC4gVGhhdCdzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZzsgaXQncyB0aGUgYW5jaG9yIHBvaW50IGZvciB0aGlzIHNwZWNpZmljIGFzcGVjdCBvZiBCUEYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcywgYW5kIGBjaGVja19oZWxwZXJfY2FsbGAgaXMga2V5IGhlcmUuXG5cbk5vdywgd2hpbGUgaXQncyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIGluIHRoZSAqdHJhZGl0aW9uYWwqIHNlbnNlIG9mIHBhY2tldCBwcm9jZXNzaW5nLCBpdCdzIGRlZmluaXRlbHkgYSBmcmVxdWVudCBwb2ludCBvZiBleGVjdXRpb24gZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbi4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgd2hlbiB0aGlua2luZyBhYm91dCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgbGF0ZXIuIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCBzZWVtcyBsaWtlIGFub3RoZXIgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZXhhbWluZS4gVGhlbiBJIGFsc28gbmVlZCB0byBmb2N1cyBvbiBgbWF5X3VwZGF0ZV9zb2NrbWFwYC5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJQRiBzeXNjYWxscyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgc29ja21hcCBpdHNlbGYuLi4gdGhhdCBmZWVscyBsaWtlIGl0J3MgZGVwZW5kZW50IG9uIGBDT05GSUdfQlBGX1NZU0NBTExgICphbmQqIHBlcmhhcHMgYENPTkZJR19DR1JPVVBfQlBGYCBvciBldmVuIGBDT05GSUdfTkVUYC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBsb29rIGZvciBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHJlbGF0ZWQgdG8gdGhvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6NDQuNDg4Njk5ODA3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMyNjA2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTMxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01MTY9UG93ZXJQQywgQVJNLCBBUk02NCwgTUlQUywgUklTQy1WLCBzMzkwLCBhbmQgQVJDIGFuZCBjYW4gYmUgZW5hYmxlZCB0aHJvdWdoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTE3OkNPTkZJR19CUEZfSklULiBUaGUgSklUIGNvbXBpbGVyIGlzIHRyYW5zcGFyZW50bHkgaW52b2tlZCBmb3IgZWFjaFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUxOC1hdHRhY2hlZCBmaWx0ZXIgZnJvbSB1c2VyIHNwYWNlIG9yIGZvciBpbnRlcm5hbCBrZXJuZWwgdXNlcnMgaWYgaXQgaGFzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01Mjg9RXhhbXBsZSBvdXRwdXQgZnJvbSBkbWVzZzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdC01MzYtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTM3OldoZW4gQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OIGlzIGVuYWJsZWQsIGJwZl9qaXRfZW5hYmxlIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzOC1zZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbCByZXR1cm4gaW4gZmFpbHVyZS4gVGhpcyBpcyBldmVuIHRoZSBjYXNlIGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zNT1vcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIHRvIHVzZSBzY2hlZF9leHQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTM4LVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6Mzk6ICAgIENPTkZJR19CUEY9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDAtICAgIENPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDE6ICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MjogICAgQ09ORklHX0JQRl9KSVQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NDogICAgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ1OiAgICBDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mcHJvYmV0cmFjZS5yc3Q9ODQ9cGFyYW1ldGVycyBieSBpdHMgbmFtZSBpbnN0ZWFkIG9mIGBgJGFyZ05gYC4gVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBpZiB0aGVcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Zwcm9iZXRyYWNlLnJzdDo4NTprZXJuZWwgaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19CUEZfU1lTQ0FMTCBhbmQgQ09ORklHX0RFQlVHX0lORk9fQlRGLlxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnByb2JldHJhY2UucnN0LTg2LUlmIHVzZXIgb25seSBzcGVjaWZ5IHRoZSBCVEYgYXJndW1lbnQsIHRoZSBldmVudCdzIGFyZ3VtZW50IG5hbWUgaXMgYWxzb1xcbi0tXFxuTWFrZWZpbGU9MTU0Nz1lbmRpZlxcbk1ha2VmaWxlLTE1NDgtXFxuTWFrZWZpbGU6MTU0OTppZmRlZiBDT05GSUdfQlBGXFxuTWFrZWZpbGUtMTU1MC1pZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZcXG4tLVxcbmFyY2gvYXJjL25ldC9NYWtlZmlsZT0zPWlmZXEgKCQoQ09ORklHX0lTQV9BUkNWMikseSlcXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NDpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGU6NTpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9hcmN2Mi5vXFxuYXJjaC9hcmMvbmV0L01ha2VmaWxlLTYtZW5kaWZcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYtQ09ORklHX0lLQ09ORklHPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnLTUtQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnLTEtIyBDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE8gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14cnRfZGVmY29uZmlnOjI6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL2FybS9jb25maWdzL2lteHJ0X2RlZmNvbmZpZy0zLUNPTkZJR19TQ0hFRF9BVVRPR1JPVVA9eVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NwZWN0cmUuYz04PXN0YXRpYyBib29sIF91bnByaXZpbGVnZWRfZWJwZl9lbmFibGVkKHZvaWQpXFxuYXJjaC9hcm0va2VybmVsL3NwZWN0cmUuYy05LXtcXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jOjEwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5hcmNoL2FybS9rZXJuZWwvc3BlY3RyZS5jLTExLVxcdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XFxuLS1cXG5hcmNoL2FybS9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL2FybS9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF8zMi5vXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTU9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo2OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo3OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MzY9Ym9vbCBpbnNuX21heV9hY2Nlc3NfdXNlcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZXNyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zOS1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcdFxcdCAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDg6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYz0xMTE9c3RhdGljIGJvb2wgX3VucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQodm9pZClcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jLTExMi17XFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYzoxMTM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmMtMTE0LVxcdHJldHVybiAhc3lzY3RsX3VucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQ7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wcm90b24tcGFjay5jPTExNjg9dm9pZCBfX2luaXQgc3BlY3RyZV9iaGJfcGF0Y2hfY2xlYXJiaGIoc3RydWN0IGFsdF9pbnN0ciAqYWx0LFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTc5LVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb3Rvbi1wYWNrLmM6MTE4MDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvdG9uLXBhY2suYy0xMTgxLSNkZWZpbmUgRUJQRl9XQVJOIFxcXCJVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcXFxuXFxcIlxcbi0tXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9Nj1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0zNjU9Q09ORklHX0NHUk9VUF9ORVRfUFJJTz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzozNjY6Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTM2Ny1DT05GSUdfQlQ9bVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz02PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6NzpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzgxPUNPTkZJR19DR1JPVVBfTkVUX1BSSU89eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MzgyOkNPTkZJR19CUEZfU1RSRUFNX1BBUlNFUj15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0zODMtQ09ORklHX0JUPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctOS0jIENPTkZJR19TWVNGU19TWVNDQUxMIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc9Nz1DT05GSUdfRVhQRVJUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6MTA6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy0xMS0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz03PUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTktIyBDT05GSUdfU1lTRlNfU1lTQ0FMTCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTExLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnPTM9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNV9kZWZjb25maWctNS1DT05GSUdfVEFTS1NUQVRTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzo0OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTUtQ09ORklHX1RBU0tTVEFUUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZz0zPUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnOjQ6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZy01LUNPTkZJR19UQVNLU1RBVFM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWc9MTY9Q09ORklHX0JMS19ERVZfSU5JVFJEPXlcXG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzoxNzpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTE4LUNPTkZJR19VU0VSRkFVTFRGRD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTc9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtMi1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNC1cXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR182NEJJVCkseSlcXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6NjpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS03LWVsc2VcXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6ODpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS05LWVuZGlmXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvZnNwMl9kZWZjb25maWc9MTY9Q09ORklHX0tBTExTWU1TX0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnOjE3OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2ZzcDJfZGVmY29uZmlnLTE4LUNPTkZJR19FWFBFUlQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc9ND1DT05GSUdfSElHSF9SRVNfVElNRVJTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZy02LUNPTkZJR19WSVJUX0NQVV9BQ0NPVU5USU5HX05BVElWRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0yOD1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjI5OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz05ND1DT05GSUdfRE5TX1JFU09MVkVSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo5NTpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctOTYtIyBDT05GSUdfV0lSRUxFU1MgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTY9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjc6Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9MU009eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy0xMC1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZS00LSNcXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl9qaXRfY29tcCQoQklUUykub1xcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNi1cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlPTc9aWZkZWYgQ09ORklHX1BQQzY0XFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz00PUNPTkZJR19ISUdIX1JFU19USU1FUlM9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctNi1DT05GSUdfSUtDT05GSUc9eVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BUkNIX1JWNjRJKVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTItXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb3JlLm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6ODpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz04PUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6OTpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjExOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyOkNPTkZJR19CUEZfTFNNPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTMtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTc9Q09ORklHX1BPU0lYX0FVWF9DTE9DS1M9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0xTTT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyLUNPTkZJR19TQ0hFRF9DT1JFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZz0zPUNPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTPXlcXG5hcmNoL3MzOTAvY29uZmlncy96ZmNwZHVtcF9kZWZjb25maWc6NDpDT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL3pmY3BkdW1wX2RlZmNvbmZpZy01LSMgQ09ORklHX0NQVV9JU09MQVRJT04gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Mz1zdGF0aWMgaW5saW5lIHZvaWQgc3dhcF9leF9lbnRyeV9maXh1cChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICphLFxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Ni1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjU3OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTgtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD01OT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02MC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjYxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjItXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaD02Mz1zdGF0aWMgaW5saW5lIGJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjY4OiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjktXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19UUkFDRVBPSU5UUylcXHQrPSB0cmFjZS5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS04Mi1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQrPSBicGYub1xcbmFyY2gvczM5MC9rZXJuZWwvTWFrZWZpbGUtODQtXFxuLS1cXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTQtI1xcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX0hBVkVfUE5FVElEKSArPSBwbmV0Lm9cXG4tLVxcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTQtI1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcF8kKEJJVFMpLm9cXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZS02LWlmZXEgKCQoQklUUyksMzIpXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9hc21fMzIub1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTgtZW5kaWZcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD00Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19ub3JldHVybiBleF9oYW5kbGVyX21zcl9tY2Uoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGJvb2wgd3Jtc3IpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTItXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjUzOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19YODZfNjQpXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU0LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqeCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYz0yNjU9dm9pZCAqY2FsbHRodW5rc190cmFuc2xhdGVfY2FsbF9kZXN0KHZvaWQgKmRlc3QpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4MC1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jOjI4MTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4Mi1zdGF0aWMgYm9vbCBpc19jYWxsdGh1bmsodm9pZCAqYWRkcilcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTE2NTU9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpzcGVjdHJlX3YyX21vZHVsZV9zdHJpbmcodm9pZCkgeyByZXR1cm4gXFxcIlxcXCI7IH1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTE2NjItXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MTY2MzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMTY2NC12b2lkIHVucHJpdl9lYnBmX25vdGlmeShpbnQgbmV3X3N0YXRlKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg2LXtcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cXHRpZiAoYnBmX2hhc19mcmFtZV9wb2ludGVyKGlwKSlcXG4tLVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTgtZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5jcnlwdG8vTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0NSWVBUT19TS0NJUEhFUjIpICs9IGNyeXB0b19za2NpcGhlci5vXFxuY3J5cHRvL01ha2VmaWxlOjI1OmlmZXEgKCQoQ09ORklHX0JQRl9TWVNDQUxMKSx5KVxcbmNyeXB0by9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfQ1JZUFRPX1NLQ0lQSEVSMikgKz0gYnBmX2NyeXB0b19za2NpcGhlci5vXFxuLS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaD0xNjU9c3RhdGljIGlubGluZSB2b2lkIGRldmljZV9wbV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3MS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvcG93ZXIuaDoxNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmRyaXZlcnMvYmFzZS9wb3dlci9wb3dlci5oLTE3My1zdHJ1Y3QgYnBmX3dzX2xvY2sgeyB9O1xcbi0tXFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jPTExNjM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd2FrZXVwX3NvdXJjZXNfc3RhdHNfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYy0xMTcwLVxcbmRyaXZlcnMvYmFzZS9wb3dlci93YWtldXAuYzoxMTcxOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmMtMTE3Mi0jaW5jbHVkZSBcXHUwMDNjbGludXgvYnRmLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM9MTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX3NvdXJjZXNfYnBmX2luaXQodm9pZCkge31cXG5kcml2ZXJzL2Jhc2UvcG93ZXIvd2FrZXVwLmM6MTIzNDojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuZHJpdmVycy9iYXNlL3Bvd2VyL3dha2V1cC5jLTEyMzUtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTc9cmMtY29yZS0kKENPTkZJR19NRURJQV9DRUNfUkMpICs9IGtleW1hcHMvcmMtY2VjLm9cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjg6cmMtY29yZS0kKENPTkZJR19CUEZfTElSQ19NT0RFMikgKz0gYnBmLWxpcmMub1xcbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2Lmg9NDg9c3RydWN0IGlyX3Jhd19ldmVudF9jdHJsIHtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtNjItXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDo2MzojaWZkZWYgQ09ORklHX0JQRl9MSVJDX01PREUyXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaC02NC1cXHR1MzJcXHRcXHRcXHRcXHRicGZfc2FtcGxlO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaD0zMzc9c3RhdGljIGlubGluZSB2b2lkIGxpcmNfdW5yZWdpc3RlcihzdHJ1Y3QgcmNfZGV2ICpkZXYpIHsgfVxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaC0zNDItICovXFxuZHJpdmVycy9tZWRpYS9yYy9yYy1jb3JlLXByaXYuaDozNDM6I2lmZGVmIENPTkZJR19CUEZfTElSQ19NT0RFMlxcbmRyaXZlcnMvbWVkaWEvcmMvcmMtY29yZS1wcml2LmgtMzQ0LXZvaWQgbGlyY19icGZfZnJlZShzdHJ1Y3QgcmNfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZT02ND1lbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZTo2NjppZmVxICgkKENPTkZJR19CUEZfU1lTQ0FMTCkseSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTY3LW5mcC1vYmpzICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX2FwcC5jPTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZwX2FwcF90eXBlICphcHBzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMTktXFx0W05GUF9BUFBfQ09SRV9OSUNdXFx0PSBcXHUwMDI2YXBwX25pYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9hcHAuYzoyMDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfYXBwLmMtMjEtXFx0W05GUF9BUFBfQlBGX05JQ11cXHQ9IFxcdTAwMjZhcHBfYnBmLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlPTU9bmV0ZGV2c2ltLW9ianMgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjg6aWZlcSAoJChDT05GSUdfQlBGX1NZU0NBTEwpLHkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlLTktbmV0ZGV2c2ltLW9ianMgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTE3Nj12b2lkIG5zaW1fdWRwX3R1bm5lbHNfaW5mb19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3ODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3OS1pbnQgbnNpbV9icGZfZGV2X2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuLS1cXG5mcy9NYWtlZmlsZT0xMjk9b2JqLSQoQ09ORklHX1pPTkVGU19GUylcXHRcXHQrPSB6b25lZnMvXFxuZnMvTWFrZWZpbGU6MTMwOm9iai0kKENPTkZJR19CUEZfTFNNKVxcdFxcdCs9IGJwZl9mc19rZnVuY3Mub1xcbmZzL01ha2VmaWxlLTEzMS1vYmotJChDT05GSUdfUkVTQ1RSTF9GUylcXHQrPSByZXNjdHJsL1xcbi0tXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaD0xMDY9ZnN2ZXJpdHlfbXNnKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKmxldmVsLFxcbi0tXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaC0xMTUtXFxuZnMvdmVyaXR5L2ZzdmVyaXR5X3ByaXZhdGUuaDoxMTY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL3Zlcml0eS9mc3Zlcml0eV9wcml2YXRlLmgtMTE3LXZvaWQgX19pbml0IGZzdmVyaXR5X2luaXRfYnBmKHZvaWQpO1xcbi0tXFxuZnMvdmVyaXR5L21lYXN1cmUuYz0xMDU9RVhQT1JUX1NZTUJPTF9HUEwoZnN2ZXJpdHlfZ2V0X2RpZ2VzdCk7XFxuZnMvdmVyaXR5L21lYXN1cmUuYy0xMDYtXFxuZnMvdmVyaXR5L21lYXN1cmUuYzoxMDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTA4LVxcbi0tXFxuZnMvdmVyaXR5L21lYXN1cmUuYz0xODM9dm9pZCBfX2luaXQgZnN2ZXJpdHlfaW5pdF9icGYodm9pZClcXG4tLVxcbmZzL3Zlcml0eS9tZWFzdXJlLmMtMTg3LVxcbmZzL3Zlcml0eS9tZWFzdXJlLmM6MTg4OiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaC0yOTgtXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oOjI5OTojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG5pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgtMzAwLSNkZWZpbmUgQlBGX1JBV19UUCgpIFNUUlVDVF9BTElHTigpO1xcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmg9MTE9c3RydWN0IGJwZl9wcm9nX2FycmF5O1xcbmluY2x1ZGUvbGludXgvYnBmLWNncm91cC1kZWZzLmgtMTItXFxuaW5jbHVkZS9saW51eC9icGYtY2dyb3VwLWRlZnMuaDoxMzojaWZkZWYgQ09ORklHX0JQRl9MU01cXG5pbmNsdWRlL2xpbnV4L2JwZi1jZ3JvdXAtZGVmcy5oLTE0LS8qIE1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnRseSBhdHRhY2hhYmxlIHBlci1jZ3JvdXAgTFNNIGhvb2tzLiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xNTA5PXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MTE6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTEyLWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0yMTkzPXN0YXRpYyBpbmxpbmUgYm9vbCBpc190cmFjaW5nX211bHRpKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIxOTgtXFxuaW5jbHVkZS9saW51eC9icGYuaDoyMTk5OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMDAtLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIzNDg9aW50IGJwZl9wcm9nX2N0eF9hcmdfaW5mb19pbml0KHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjM1MC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIzNTE6I2lmIGRlZmluZWQoQ09ORklHX0NHUk9VUF9CUEYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9MU00pXFxuaW5jbHVkZS9saW51eC9icGYuaC0yMzUyLWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjU1MD1zdGF0aWMgaW5saW5lIHN0cnVjdCBicGZfcnVuX2N0eCAqYnBmX3NldF9ydW5fY3R4KHN0cnVjdCBicGZfcnVuX2N0eCAqbmV3X2N0eClcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1My1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI1NTQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU1NS1cXHRvbGRfY3R4ID0gY3VycmVudC1cXHUwMDNlYnBmX2N0eDtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjU2MT1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Jlc2V0X3J1bl9jdHgoc3RydWN0IGJwZl9ydW5fY3R4ICpvbGRfY3R4KVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjU2Mi17XFxuaW5jbHVkZS9saW51eC9icGYuaDoyNTYzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI1NjQtXFx0Y3VycmVudC1cXHUwMDNlYnBmX2N0eCA9IG9sZF9jdHg7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTI2NTQ9Ym9vbCBicGZfaml0X2J5cGFzc19zcGVjX3Y0KHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjU4LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjY1OTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjYwLURFQ0xBUkVfUEVSX0NQVShpbnQsIGJwZl9wcm9nX2FjdGl2ZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwNDc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipmcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDQ5LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzA1MDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzA1MS1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMyMjA9YnBmX3Byb2dfcnVuX2FycmF5X3NsZWVwYWJsZShjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfYXJyYXkgKmFycmF5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMjY4LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzI2OTojZWxzZSAvKiAhQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMjcwLXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19nZXQodTMyIHVmZClcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzU2Mj1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X2FyZW5hX3Zpb2xhdGlvbihib29sIHdyaXRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM1NjUtfVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzU2NjojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNTY3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNTc0PWJwZl9wcm9iZV9yZWFkX2tlcm5lbF9jb21tb24odm9pZCAqZHN0LCB1MzIgc2l6ZSwgY29uc3Qgdm9pZCAqdW5zYWZlX3B0cilcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3Ny1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM1Nzg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JQRl9FVkVOVFMpKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzU3OS1cXHRcXHRyZXQgPSBjb3B5X2Zyb21fa2VybmVsX25vZmF1bHQoZHN0LCB1bnNhZmVfcHRyLCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzYyND12b2lkIHVucHJpdl9lYnBmX25vdGlmeShpbnQgbmV3X3N0YXRlKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM2MjUtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNjI2OiNpZiBkZWZpbmVkKENPTkZJR19ORVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzYyNy1pbnQgYnBmX2Rldl9ib3VuZF9rZnVuY19jaGVjayhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzMxPXN0YXRpYyBpbmxpbmUgaW50IGJwZl9wcm9nX3Rlc3RfcnVuX3N5c2NhbGwoc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM3LVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MzczODojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuaW5jbHVkZS9saW51eC9icGYuaC0zNzM5LXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2dldF9mcm9tX2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzYzPXN0YXRpYyBpbmxpbmUgaW50IHNvY2tfbWFwX2xpbmtfY3JlYXRlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3NjYtfVxcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzc2NzojZW5kaWYgLyogQ09ORklHX0JQRl9TWVNDQUxMICovXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzY4OiNlbmRpZiAvKiBDT05GSUdfTkVUIFxcdTAwMjZcXHUwMDI2IENPTkZJR19CUEZfU1lTQ0FMTCAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzc2OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzc3MT1icGZfcHJvZ19pbmNfbWlzc2VzX2NvdW50ZXJzKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19hcnJheSAqYXJyYXkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3ODUtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzg2OiNpZiBkZWZpbmVkKENPTkZJR19JTkVUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3ODctdm9pZCBicGZfc2tfcmV1c2Vwb3J0X2RldGFjaChzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zNzkzPXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfc2tfcmV1c2Vwb3J0X2RldGFjaChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTYtXFxuaW5jbHVkZS9saW51eC9icGYuaDozNzk3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM3OTgtc3RhdGljIGlubGluZSBpbnQgYnBmX2ZkX3JldXNlcG9ydF9hcnJheV9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0zODA0PXN0YXRpYyBpbmxpbmUgaW50IGJwZl9mZF9yZXVzZXBvcnRfYXJyYXlfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgwOS19XFxuaW5jbHVkZS9saW51eC9icGYuaDozODEwOiNlbmRpZiAvKiBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4MTE6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0lORVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzgxMi1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzgxND1zdHJ1Y3QgYnBmX2tleSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MTktXFxuaW5jbHVkZS9saW51eC9icGYuaDozODIwOiNpZiBkZWZpbmVkKENPTkZJR19LRVlTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTM4MjEtc3RydWN0IGJwZl9rZXkgKmJwZl9sb29rdXBfdXNlcl9rZXkoczMyIHNlcmlhbCwgdTY0IGZsYWdzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg1ND1zdGF0aWMgaW5saW5lIHMzMiBicGZfa2V5X3NlcmlhbChjb25zdCBzdHJ1Y3QgYnBmX2tleSAqa2V5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0zODU3LX1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjM4NTg6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX0tFWVMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzg1OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9NDExMj1pbnQgYnBmX3N0cmVhbV9zdGFnZV9kdW1wX3N0YWNrKHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlICpzcyk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA4OjQ3LjQyMTMxODA5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODA2MTEwNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIENvZGUgQ2hhbmdlIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJQRiBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXRzZWxmIGlzIG5lc3RsZWQgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgYWNjb21wYW55aW5nIHRlc3QgaXMgbG9jYXRlZCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYSBnaXZlbiwgYSBmb3VuZGF0aW9uYWwgcmVxdWlyZW1lbnQuXG5cbk5vdywgYmVjYXVzZSBpdCdzIEJQRiByZWxhdGVkLCBJIG5lZWQgdG8gY29uc2lkZXIgd2hpY2ggb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgcmVsZXZhbnQuIEl0IGNvdWxkIGJlIHNvbWV0aGluZyBzdHJhaWdodGZvcndhcmQsIGxpa2UgYENPTkZJR19DR1JPVVBfQlBGYCwgb3IgcGVyaGFwcyBgQ09ORklHX05FVGAgb3IgYENPTkZJR19CUEZfSklUYC4gVXN1YWxseSwgYSB2ZXJpZmllciBjaGFuZ2Ugd291bGQganVzdCBuZWVkIGBDT05GSUdfQlBGX1NZU0NBTExgLCBidXQgYmVjYXVzZSB0aGlzIGlzIHNvY2ttYXAgcmVsYXRlZCwgaXQgbWlnaHQgYmUgbW9yZSBzcGVjaWZpYy4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSB3b25kZXJpbmcgaWYgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAgb3IgYENPTkZJR19ORVRfU09DS19NU0dgIGlzIGludm9sdmVkLlxuXG5MZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgTWFrZWZpbGVgcyB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgdGhlbiBtb3ZlIHRvIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gc2VlIGlmIEkgY2FuIHNwb3QgYW55IGRpcmVjdCByZWZlcmVuY2VzIHRvIHNvY2ttYXAgdGhhdCBjb3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gVGhhdCdzIHRoZSBiZXN0IHdheSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg3OSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowODo1NS4yMjc0MzMxNDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI5Njk3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDg6NTUuMzYxNzQ3NDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjQyMTU5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIE5ldHdvcmsgQ29yZSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgZm9yIHNvY2tldCBhbmQgQlBGLXJlbGF0ZWQgY29kZSBhcmUsIGxpa2VseSBpbiB0aGUgYnVpbGQgc3lzdGVtLiBNeSBndXQgdGVsbHMgbWUgaXQnbGwgYmUgaW4gdGhlIGBuZXQvY29yZS9gIGRpcmVjdG9yeSwgc28gdGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBsb29rIGF0IGlzIHRoZSBgTWFrZWZpbGVgIHRoZXJlLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyB0aGF0IHBhcnQgb2YgdGhlIGtlcm5lbCwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gb2Z0ZW4gY29udGFpbnMgY29uZGl0aW9uYWwgbG9naWMgb3IgbWFjcm9zIGZvciBkaWZmZXJlbnQgZmVhdHVyZXMuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgYE1ha2VmaWxlYCBsb29raW5nIGZvciBkaXJlY3RpdmVzLCBpbmNsdWRlcywgb3IgdmFyaWFibGVzIHRoYXQgcmVmZXJlbmNlIFwic29ja1wiIG9yIFwiYnBmXCIg4oCTIHRob3NlIGFyZSB0aGUga2V5d29yZHMgdGhhdCdsbCBwb2ludCBtZSB0byB0aGUgZmlsZXMgSSBuZWVkLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSBoZWFkZXJzIG9yIHNvdXJjZSBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzODYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTowMS4xMjU5NzE2OTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDY0NDQ5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0xXVFVOTkVMKSArPSBsd3R1bm5lbC5vXFxubmV0L2NvcmUvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0xXVFVOTkVMX0JQRikgKz0gbHd0X2JwZi5vXFxubmV0L2NvcmUvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0RTVF9DQUNIRSkgKz0gZHN0X2NhY2hlLm9cXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTQ1PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc29ja19tYXAub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX3NrX3N0b3JhZ2Uub1xcbm5ldC9jb3JlL01ha2VmaWxlLTQ3LW9iai0kKENPTkZJR19PRilcXHQrPSBvZl9uZXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTowMS41NzA2MjM5MjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2ODkyMzg4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2Ygc29ja19tYXAubyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYHNvY2tfbWFwLm9gIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgbmFtZS4gQnV0IGhhbmcgb24uLi4gYHNvY2tfbWFwLm9gIHJlc2lkZXMgaW4gYG5ldC9jb3JlL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYSBiaXQgYmV0dGVyLiBUaGlzIHVzdWFsbHkgbWVhbnMgaXQncyBhIGNvcmUgY29tcG9uZW50LiBMZXQgbWUgb3BlbiB1cCBgbmV0L2NvcmUvc29ja19tYXAuY2AgYW5kIHF1aWNrbHkgc2NhbiB0aGUgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVsYXRpb25zaGlwcyBhcmUgYXQgcGxheSBoZXJlLiBUaGlzIHdheSBJIGNhbiBkZXRlcm1pbmUgd2h5IHRoaXMgbW9kdWxlIGlzIGZvdW5kIGluIGEgY29yZSBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6MTUuMjU5ODY2NDg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMyNjEzNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9zb2NrX21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3NvY2tfbWFwLmM9MTQ3NT1zdGF0aWMgaW50IHNvY2tfbWFwX3Byb2dfbGlua19sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9wcm9nICoqKnBwcm9nLFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDkxLVxcdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOToxNS40MjMxNDAyODJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MzA0NTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFZlcmlmaWVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgdGhlIHByaW1hcnkgZW5hYmxlci4gTXkgaW5pdGlhbCBmb2N1cyBoYXMgdG8gYmUgb24gdGhhdC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyICpzcGVjaWZpYyogY29uZmlncyBpbiBwbGF5PyBJIG5lZWQgdG8gY2hlY2suIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgYWJvdXQgYW55IHByb2dyYW0gdHlwZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucywgbGlrZSBmb3IgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCBvciBgQlBGX1BST0dfVFlQRV9YRFBgLiBIbW0sIEkgd29uZGVyIGlmIGBDT05GSUdfTkVUX0NMU19CUEZgIGlzIGludm9sdmVkP1xuXG5XYWl0LCB0aGUgdmVyaWZpZXIgaGFuZGxlcyBhbGwgdHlwZXMgaWYgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWN0aXZlLCByaWdodD8gVGhvdWdoLCBJIHN1cHBvc2Ugc29tZSBvZiB0aG9zZSB0eXBlcyBtaWdodCBiZSB1bmF2YWlsYWJsZSBpZiBgQ09ORklHX05FVGAgaXMgZGlzYWJsZWQuIEhvd2V2ZXIsIHRoYXQncyBub3QgYSBsaWtlbHkgc2NlbmFyaW8uIGBDT05GSUdfTkVUYCBpcyBwcmFjdGljYWxseSBhbHdheXMgZW5hYmxlZC4gU3RpbGwsIHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBsb29rIGFyb3VuZCB0aGUgYG1heV91cGRhdGVfc29ja21hcGAgc2VjdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTGV0J3MgY29uZmlybSB0aGF0IGFyZWEgc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOToxOS45MDYxOTI1MzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njc1MDEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXlfdXBkYXRlX3NvY2ttYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz04MjI3PXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDY4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NDY5OnN0YXRpYyBib29sIG1heV91cGRhdGVfc29ja21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ3MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODUwOT1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTg0LVxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTg1OlxcdFxcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1ODYtXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NTkzLVxcdFxcdCAgICBmdW5jX2lkICE9IEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NTk0OlxcdFxcdCAgICAhbWF5X3VwZGF0ZV9zb2NrbWFwKGVudiwgZnVuY19pZCkpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OTUtXFx0XFx0XFx0Z290byBlcnJvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6MjAuMDcyOTUxMTU1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzM1MTk1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBUYXJnZXRzIGZvciBCUEYgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIGBtYXlfdXBkYXRlX3NvY2ttYXBgIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhpcyBmdW5jdGlvbiwgYXMgSSByZWNhbGwsIGlzIGNhbGxlZCBmcm9tIGBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5YCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5OiBgbWF5X3VwZGF0ZV9zb2NrbWFwYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBIb3dldmVyLCBib3RoIG9mIHRoZXNlIGFyZSBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0g4oCTIHRoZXkgbWlnaHQgYmUgaW5saW5lZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5MZXQncyBkbyBzb21lIHF1aWNrIGNoZWNrcy4gWWVzLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAgaXMgYWxzbyBzdGF0aWMsIHNvIG15IGluaXRpYWwgdGFyZ2V0IGlzIHByb2JhYmx5IG5vdCB0aGUgcmlnaHQgb25lLiBMZXQgbWUgY2hlY2sgYGNoZWNrX2hlbHBlcl9jYWxsYCBqdXN0IHRvIG1ha2Ugc3VyZSDigJMgYWgsIGFuZCB0aGF0J3MgYWxzbyBzdGF0aWMuIE9rYXksIGxldCdzIHNlZSwgd2hhdCBhYm91dCB0aGUgbWFpbiBlbnRyeSBwb2ludCwgYGJwZl9jaGVja2A/IFllcywgaXQncyBleHBvcnRlZCBhbmQgdGh1cyBhY2Nlc3NpYmxlIGJ1dCBpdOKAmXMgdG9vIGdlbmVyaWMuXG5cbkknbSBsZWFuaW5nIHRvd2FyZHMgcHJvdmlkaW5nIGJvdGggYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgIGFuZCBgbWF5X3VwZGF0ZV9zb2NrbWFwYC4gRnV6emVycyBjYW4gdXN1YWxseSBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucywgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBub3QgZnVsbHkgaW5saW5lZC4gSXQncyB3b3J0aCBhIHNob3QuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVycyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgdmlzaWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZ2AgZmlsZS4gSXQncyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluIEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTM0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjI1LjU0NjQ3NDg5OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRDT05GSUdfQkxLX0RFVl9MT09QPXlcXG4gICAyOlxcdENPTkZJR19CT09UUEFSQU1fSEFSRExPQ0tVUF9QQU5JQz15XFxuICAgMzpcXHRDT05GSUdfQk9PVFBBUkFNX1NPRlRMT0NLVVBfUEFOSUM9MVxcbiAgIDQ6XFx0Q09ORklHX0JQRj15XFxuICAgNTpcXHRDT05GSUdfQlBGX0VWRU5UUz15XFxuICAgNjpcXHRDT05GSUdfQlBGX0pJVD15XFxuICAgNzpcXHRDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERT15XFxuICAgODpcXHRDT05GSUdfQlBGX0xJUkNfTU9ERTI9eVxcbiAgIDk6XFx0Q09ORklHX0JQRl9MU009eVxcbiAgMTA6XFx0Q09ORklHX0JQRl9TVFJFQU1fUEFSU0VSPXlcXG4gIDExOlxcdENPTkZJR19CUEZfU1lTQ0FMTD15XFxuICAxMjpcXHQjIENPTkZJR19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGIGlzIG5vdCBzZXRcXG4gIDEzOlxcdENPTkZJR19DR1JPVVBfQlBGPXlcXG4gIDE0OlxcdENPTkZJR19DUllQVE9fSE1BQz15XFxuICAxNTpcXHRDT05GSUdfQ1JZUFRPX1NIQTI1Nj15XFxuICAxNjpcXHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJPXlcXG4gIDE3OlxcdENPTkZJR19DUllQVE9fVVNFUl9BUElfSEFTSD15XFxuICAxODpcXHRDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX1NLQ0lQSEVSPXlcXG4gIDE5OlxcdENPTkZJR19DUllQVE9fU0tDSVBIRVI9eVxcbiAgMjA6XFx0Q09ORklHX0NSWVBUT19FQ0I9eVxcbiAgMjE6XFx0Q09ORklHX0NSWVBUT19BRVM9eVxcbiAgMjI6XFx0Q09ORklHX0RFQlVHX0lORk89eVxcbiAgMjM6XFx0Q09ORklHX0RFQlVHX0lORk9fQlRGPXlcXG4gIDI0OlxcdENPTkZJR19ERUJVR19JTkZPX0RXQVJGND15XFxuICAyNTpcXHRDT05GSUdfRE1BQlVGX0hFQVBTPXlcXG4gIDI2OlxcdENPTkZJR19ETUFCVUZfSEVBUFNfU1lTVEVNPXlcXG4gIDI3OlxcdENPTkZJR19EVU1NWT15XFxuICAyODpcXHRDT05GSUdfRFlOQU1JQ19GVFJBQ0U9eVxcbiAgMjk6XFx0Q09ORklHX0ZQUk9CRT15XFxuICAzMDpcXHRDT05GSUdfRlRSQUNFX1NZU0NBTExTPXlcXG4gIDMxOlxcdENPTkZJR19GVU5DVElPTl9FUlJPUl9JTkpFQ1RJT049eVxcbiAgMzI6XFx0Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XFxuICAzMzpcXHRDT05GSUdfRlNfVkVSSVRZPXlcXG4gIDM0OlxcdENPTkZJR19HRU5FVkU9eVxcbiAgMzU6XFx0Q09ORklHX0lLQ09ORklHPXlcXG4gIDM2OlxcdENPTkZJR19JS0NPTkZJR19QUk9DPXlcXG4gIDM3OlxcdENPTkZJR19JTUE9eVxcbiAgMzg6XFx0Q09ORklHX0lNQV9SRUFEX1BPTElDWT15XFxuICAzOTpcXHRDT05GSUdfSU1BX1dSSVRFX1BPTElDWT15XFxuICA0MDpcXHRDT05GSUdfSU5FVF9FU1A9eVxcbiAgNDE6XFx0Q09ORklHX0lQX05GX0ZJTFRFUj15XFxuICA0MjpcXHRDT05GSUdfSVBfTkZfUkFXPXlcXG4gIDQzOlxcdENPTkZJR19JUF9ORl9UQVJHRVRfU1lOUFJPWFk9eVxcbiAgNDQ6XFx0Q09ORklHX0lQVjY9eVxcbiAgNDU6XFx0Q09ORklHX0lQVjZfRk9VPXlcXG4gIDQ2OlxcdENPTkZJR19JUFY2X0ZPVV9UVU5ORUw9eVxcbiAgNDc6XFx0Q09ORklHX0lQVjZfR1JFPXlcXG4gIDQ4OlxcdENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMPXlcXG4gIDQ5OlxcdENPTkZJR19JUFY2X1NFRzZfQlBGPXlcXG4gIDUwOlxcdENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eVxcbiAgNTE6XFx0Q09ORklHX0lQVjZfU0lUPXlcXG4gIDUyOlxcdENPTkZJR19JUFY2X1RVTk5FTD15XFxuICA1MzpcXHRDT05GSUdfS0VZUz15XFxuICA1NDpcXHRDT05GSUdfTElSQz15XFxuICA1NTpcXHRDT05GSUdfTElWRVBBVENIPXlcXG4gIDU2OlxcdENPTkZJR19MV1RVTk5FTD15XFxuICA1NzpcXHRDT05GSUdfTFdUVU5ORUxfQlBGPXlcXG4gIDU4OlxcdENPTkZJR19NT0RVTEVfU0lHPXlcXG4gIDU5OlxcdENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEw9eVxcbiAgNjA6XFx0Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxcbiAgNjE6XFx0Q09ORklHX01PRFVMRVM9eVxcbiAgNjI6XFx0Q09ORklHX01PRFZFUlNJT05TPXlcXG4gIDYzOlxcdENPTkZJR19NUExTPXlcXG4gIDY0OlxcdENPTkZJR19NUExTX0lQVFVOTkVMPXlcXG4gIDY1OlxcdENPTkZJR19NUExTX1JPVVRJTkc9eVxcbiAgNjY6XFx0Q09ORklHX01QVENQPXlcXG4gIDY3OlxcdENPTkZJR19ORVRfQUNUX0dBQ1Q9eVxcbiAgNjg6XFx0Q09ORklHX05FVF9BQ1RfTUlSUkVEPXlcXG4gIDY5OlxcdENPTkZJR19ORVRfQUNUX1NLQk1PRD15XFxuICA3MDpcXHRDT05GSUdfTkVUX0NMUz15XFxuICA3MTpcXHRDT05GSUdfTkVUX0NMU19BQ1Q9eVxcbiAgNzI6XFx0Q09ORklHX05FVF9DTFNfQlBGPXlcXG4gIDczOlxcdENPTkZJR19ORVRfQ0xTX0ZMT1dFUj15XFxuICA3NDpcXHRDT05GSUdfTkVUX0NMU19NQVRDSEFMTD15XFxuICA3NTpcXHRDT05GSUdfTkVUX0ZPVT15XFxuICA3NjpcXHRDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG4gIDc3OlxcdENPTkZJR19ORVRfSVBHUkU9eVxcbiAgNzg6XFx0Q09ORklHX05FVF9JUEdSRV9ERU1VWD15XFxuICA3OTpcXHRDT05GSUdfTkVUX0lQSVA9eVxcbiAgODA6XFx0Q09ORklHX05FVF9NUExTX0dTTz15XFxuICA4MTpcXHRDT05GSUdfTkVUX1NDSF9CUEY9eVxcbiAgODI6XFx0Q09ORklHX05FVF9TQ0hfRlE9eVxcbiAgODM6XFx0Q09ORklHX05FVF9TQ0hfSU5HUkVTUz15XFxuICA4NDpcXHRDT05GSUdfTkVUX1NDSF9IVEI9eVxcbiAgODU6XFx0Q09ORklHX05FVF9TQ0hFRD15XFxuICA4NjpcXHRDT05GSUdfTkVUREVWU0lNPXlcXG4gIDg3OlxcdENPTkZJR19ORVRGSUxURVI9eVxcbiAgODg6XFx0Q09ORklHX05FVEZJTFRFUl9BRFZBTkNFRD15XFxuICA4OTpcXHRDT05GSUdfTkVURklMVEVSX1NZTlBST1hZPXlcXG4gIDkwOlxcdENPTkZJR19ORVRGSUxURVJfWFRfQ09OTk1BUks9eVxcbiAgOTE6XFx0Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TVEFURT15XFxuICA5MjpcXHRDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DVD15XFxuICA5MzpcXHRDT05GSUdfTkVUS0lUPXlcXG4gIDk0OlxcdENPTkZJR19ORl9DT05OVFJBQ0s9eVxcbiAgOTU6XFx0Q09ORklHX05GX0NPTk5UUkFDS19NQVJLPXlcXG4gIDk2OlxcdENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVM9eVxcbiAgOTc6XFx0Q09ORklHX05GX0RFRlJBR19JUFY0PXlcXG4gIDk4OlxcdENPTkZJR19ORl9ERUZSQUdfSVBWNj15XFxuICA5OTpcXHRDT05GSUdfTkZfVEFCTEVTPXlcXG4gMTAwOlxcdENPTkZJR19ORl9UQUJMRVNfSU5FVD15XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjI1LjU0NjYzNDU1OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODM2NjQ5NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgU29ja21hcCBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciB0aGlzIHNvY2ttYXAgaW1wbGVtZW50YXRpb24uIEFic29sdXRlbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbm9uLW5lZ290aWFibGUgcHJlcmVxdWlzaXRlLiBXZSBjYW4ndCBkbyBhbnl0aGluZyBCUEYtcmVsYXRlZCB3aXRob3V0IGl0LiBOb3csIGdpdmVuIHRoZSBuYXR1cmUgb2Ygc29ja21hcCwgYW5kIGhvdyBkZWVwbHkgaXQgaW50ZXJmYWNlcyB3aXRoIG5ldHdvcmsgc3RyZWFtcywgSSdtIGxlYW5pbmcgdG93YXJkcyBhbHNvIG5lZWRpbmcgYENPTkZJR19CUEZfU1RSRUFNX1BBUlNFUmAuIFRoaXMgZmVlbHMgcmlnaHQsIGRvZXNuJ3QgaXQ/IEl0IGp1c3Qgc2VlbXMgaW5jcmVkaWJseSBsaWtlbHkgdGhhdCBzdHJlYW0gcGFyc2luZyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgbWFraW5nIGl0IGFsbCBzaW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgdGFrZSBhbm90aGVyIHF1aWNrIHBhc3Mgb3ZlciBgbmV0L2NvcmUvc29ja19tYXAuY2AuIEEgZnJlc2ggbG9vayBhbHdheXMgaGVscHMgY2xhcmlmeSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBnb3RjaGFzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLCBhbnkgc3VidGxlIGludGVycGxheS4gTmVlZCB0byBiZSBjZXJ0YWluIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjM0LjM4MzI4NzcxOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0OTU2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZfU1RSRUFNX1BBUlNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9zb2NrX21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3NvY2tfbWFwLmM9MTQ3NT1zdGF0aWMgaW50IHNvY2tfbWFwX3Byb2dfbGlua19sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9wcm9nICoqKnBwcm9nLFxcbi0tXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDg5LVxcdFxcdGJyZWFrO1xcbm5ldC9jb3JlL3NvY2tfbWFwLmM6MTQ5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfQlBGX1NUUkVBTV9QQVJTRVIpXFxubmV0L2NvcmUvc29ja19tYXAuYy0xNDkxLVxcdGNhc2UgQlBGX1NLX1NLQl9TVFJFQU1fUEFSU0VSOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxODowOTozNC41NDgyNTQ1NTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxNTA0MTI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBoYW5kbGVzIHRoZSB2ZXJpZmllcidzIG5lZWRzLCB3aGljaCBpcyBnb29kLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19ORVRgIGlzIGVzc2VudGlhbC4gQWgsIHllcywgYHNvY2ttYXBgIGlzIGRlZmluaXRlbHkgbmV0d29ya2luZy1yZWxhdGVkLiBUaGVyZWZvcmUsIHRoZSBjb3JlIHJlcXVpcmVtZW50cyBhcmUgZ29pbmcgdG8gYmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfTkVUYC4gSSBzaG91bGQgcmV0dXJuIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFzIGEgYmFzaWMgc2V0LlxuXG5XYWl0IGEgc2Vjb25kLCB0aGlzIHBhdGNoIHJlbW92ZXMgc29tZSBCUEYgcHJvZ3JhbSB0eXBlcyBmcm9tIHRoZSBhbGxvd2VkIGxpc3QuIFNwZWNpZmljYWxseSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCwgYEJQRl9QUk9HX1RZUEVfWERQYCwgYW5kIGBCUEZfUFJPR19UWVBFX0ZMT1dfRElTU0VDVE9SYC4gVG8gYWRlcXVhdGVseSB0ZXN0IHRoaXMsIEknbGwgbmVlZCB0byBiZSBhYmxlIHRvIGxvYWQgdGhlc2UgcHJvZ3JhbSB0eXBlcywgd2hpY2ggbWVhbnMgZW5hYmxpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkxldCdzIHNlZSwgYEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTYCByZXF1aXJlcyBgQ09ORklHX05FVF9DTFNfQlBGYC4gYEJQRl9QUk9HX1RZUEVfU0NIRURfQUNUYCBuZWVkcyBlaXRoZXIgYENPTkZJR19ORVRfQUNUX0JQRmAgb3IgYENPTkZJR19ORVRfQ0xTX0FDVGAuIEJvdGggYEJQRl9QUk9HX1RZUEVfWERQYCBhbmQgYEJQRl9QUk9HX1RZUEVfRkxPV19ESVNTRUNUT1JgIHJlcXVpcmUgYENPTkZJR19ORVRgLiBJdCdzIHN0YXJ0aW5nIHRvIGxvb2sgbGlrZSBgQ09ORklHX05FVF9DTFNfQlBGYCBhbmQgYENPTkZJR19ORVRfQUNUX0JQRmAgYXJlIHdpc2UgYWRkaXRpb25zIHRvIG15IGNvbmZpZ3VyYXRpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEkgdGhpbmsgSSdsbCBkaXZlIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlc2UgcHJvZ3JhbSB0eXBlcyBiZWZvcmUgbWFraW5nIGFueSBmaW5hbCBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjQwLjM2MzMwMDU2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE5ODE3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz00NjM2PXN0YXRpYyBib29sIG1heV9hY2Nlc3NfZGlyZWN0X3BrdF9kYXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY1NC1cXHQvKiBQcm9ncmFtIHR5cGVzIHdpdGggZGlyZWN0IHJlYWQgKyB3cml0ZSBhY2Nlc3MgZ28gaGVyZSEgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDY1NTpcXHRjYXNlIEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjU2LVxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1Q6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTYyODY9c3RhdGljIGJvb2wgbWF5X2FjY2Vzc19za2IoZW51bSBicGZfcHJvZ190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTYyODktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1NPQ0tFVF9GSUxURVI6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2MjkwOlxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFM6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2MjkxLVxcdGNhc2UgQlBGX1BST0dfVFlQRV9TQ0hFRF9BQ1Q6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE4OjA5OjQwLjQ1NTI4OTQ4NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODg2NjY2MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWw6IGV2ZW4gaWYgYSBzdWJzeXN0ZW0gZm9yIGEgc3BlY2lmaWMgQlBGIHByb2dyYW0gdHlwZSBpc24ndCBhY3RpdmUsIHRoZSB2ZXJpZmllciB3aWxsICpzdGlsbCogcnVuIGl0cyBjaGVja3Mgb24gdGhhdCBwcm9ncmFtIHR5cGUsIGFzIGxvbmcgYXMgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LiBUaGUgcHJvZ3JhbSB0eXBlcyB0aGVtc2VsdmVzIGFyZSBsYWlkIG91dCBpbiBgaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oYCwgYW5kIHRoZSB2ZXJpZmllciBkb2VzIGl0cyBqb2IgbG9va2luZyB0aGVtIG92ZXIgYXQgbG9hZCB0aW1lLiBTdXJlLCB5b3UgbmVlZCB0aGUgc3Vic3lzdGVtIHRvICphY3R1YWxseSogYXR0YWNoIHRoZSBwcm9ncmFtcywgYnV0IHRoZSB2ZXJpZmljYXRpb24gaGFwcGVucyB1cGZyb250LiBTbywgZW5hYmxpbmcgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUuXG5cblNvLCB0byByZWNhcCBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuXG4qICAgKipSZWFzb25pbmc6KiogVGhpcyBwYXRjaCBpcyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCByZXN0cmljdGluZyB3aGF0IEJQRiBwcm9ncmFtIHR5cGVzIGNhbiB0b3VjaCBhIHNvY2ttYXAuIFRoaXMgYWx0ZXJzIHRoZSB2ZXJpZmllcidzIGJlaGF2aW9yIHRvIGVuaGFuY2Ugc2FmZXR5LCBhbmQgdGh1cyBuZWVkcyB0YXJnZXRlZCBmdXp6aW5nLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBtYXlfdXBkYXRlX3NvY2ttYXBgLCBgY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eWAsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIGFyZSBrZXkgYXJlYXMuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBCUEZfU1lTQ0FMTGAgYW5kIGBORVRgIGFyZSBuZWNlc3NhcnkuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgdGFyZ2V0czogSSd2ZSBjaGVja2VkIGFuZCBjb25maXJtZWQgdGhhdCBgbWF5X3VwZGF0ZV9zb2NrbWFwYCwgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLCBhbmQgYGNoZWNrX2hlbHBlcl9jYWxsYCBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyBnb29kLCBpdCBuYXJyb3dzIHRoZSBzY29wZSBhIGJpdC4gVGhlIG1haW4gZW50cnkgcG9pbnQsIGBicGZfY2hlY2tgLCBpcyBhIGxpdHRsZSB0b28gYnJvYWQgZm9yIHRhcmdldGVkIGZ1enppbmcuXG5cbk15IGFwcHJvYWNoIHdpbGwgYmUgdG8gZm9jdXMgb24gYGNoZWNrX2hlbHBlcl9jYWxsYCBhbmQgYGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHlgLiBUaGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgdGhlIHZlcmlmaWVyIGNvcnJlY3RseSBlbmZvcmNlcyB0aGVzZSBuZXcgcmVzdHJpY3Rpb25zLlxuXG5MZXQncyBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU4MywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTg6MDk6NDguMzQxOTYwMTg3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzY3OTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfbWFwX2Z1bmNfY29tcGF0aWJpbGl0eVwiLFxuICAgIFwiY2hlY2tfaGVscGVyX2NhbGxcIixcbiAgICBcIm1heV91cGRhdGVfc29ja21hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyB0aGUgQlBGIHByb2dyYW0gdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byB1cGRhdGUgYSBzb2NrbWFwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHByZXZlbnRzIGNlcnRhaW4gcHJvZ3JhbSB0eXBlcyBmcm9tIHBlcmZvcm1pbmcgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlIHZlcmlmaWVyIHdpdGggdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZhbHVhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5XCIsXG4gICAgXCJjaGVja19oZWxwZXJfY2FsbFwiLFxuICAgIFwibWF5X3VwZGF0ZV9zb2NrbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVzdHJpY3RzIHRoZSBCUEYgcHJvZ3JhbSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBhIHNvY2ttYXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgcHJldmVudHMgY2VydGFpbiBwcm9ncmFtIHR5cGVzIGZyb20gcGVyZm9ybWluZyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucy4gRnV6emluZyB0aGUgdmVyaWZpZXIgd2l0aCB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmFsdWFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsrsgc[1] Phase: Succeeded StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 18:11:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 18:11:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2] Phase: Succeeded StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 18:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 18:11:33 +0000 UTC FinishedAt: 2026-06-29 18:11:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsrsgc/series-workflowsrsgc-convert-artifact-3026498668/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 18:14:47 +0000 UTC FinishedAt: 2026-06-29 18:49:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 18:14:47 +0000 UTC FinishedAt: 2026-06-29 18:49:28 +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:*f9fba688-2041-42f2-86b9-d8f47ebccf64,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-workflowsrsgc/series-workflowsrsgc-convert-artifact-3026498668/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": "b93a9dc9-ec8d-493f-85e5-827592fee913", "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-workflowsrsgc/series-workflowsrsgc-build-action-2223120026/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 18:14:47 +0000 UTC FinishedAt: 2026-06-29 18:49:18 +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:*f9fba688-2041-42f2-86b9-d8f47ebccf64,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-workflowsrsgc/series-workflowsrsgc-convert-artifact-3026498668/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": "b93a9dc9-ec8d-493f-85e5-827592fee913", "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-workflowsrsgc/series-workflowsrsgc-build-action-2223120026/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 18:49:28 +0000 UTC FinishedAt: 2026-06-29 18:49:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 18:49:28 +0000 UTC FinishedAt: 2026-06-29 18:49:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 18:49:28 +0000 UTC FinishedAt: 2026-06-29 18:49:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 18:49:28 +0000 UTC FinishedAt: 2026-06-29 18:49:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsrsgc/series-workflowsrsgc-convert-artifact-1105251115/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 18:49:39 +0000 UTC FinishedAt: 2026-06-29 18:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 18:49:39 +0000 UTC FinishedAt: 2026-06-29 18:51:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b93a9dc9-ec8d-493f-85e5-827592fee913,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-workflowsrsgc/series-workflowsrsgc-build-action-2223120026/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-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 18:51:47 +0000 UTC FinishedAt: 2026-06-29 18:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 18:51:47 +0000 UTC FinishedAt: 2026-06-29 18:51:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 18:51:47 +0000 UTC FinishedAt: 2026-06-29 19:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 18:51:47 +0000 UTC FinishedAt: 2026-06-29 19:27:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f9fba688-2041-42f2-86b9-d8f47ebccf64,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-workflowsrsgc/series-workflowsrsgc-convert-artifact-1105251115/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": "834f8e87-8477-48f7-bc4d-7397b3f815fb", "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-workflowsrsgc/series-workflowsrsgc-build-action-1657437007/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 18:51:47 +0000 UTC FinishedAt: 2026-06-29 19:27:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f9fba688-2041-42f2-86b9-d8f47ebccf64,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-workflowsrsgc/series-workflowsrsgc-convert-artifact-1105251115/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": "834f8e87-8477-48f7-bc4d-7397b3f815fb", "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-workflowsrsgc/series-workflowsrsgc-build-action-1657437007/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 19:27:46 +0000 UTC FinishedAt: 2026-06-29 19:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 19:27:46 +0000 UTC FinishedAt: 2026-06-29 19:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 19:27:46 +0000 UTC FinishedAt: 2026-06-29 19:29:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 19:27:46 +0000 UTC FinishedAt: 2026-06-29 19:29:41 +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:*834f8e87-8477-48f7-bc4d-7397b3f815fb,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-workflowsrsgc/series-workflowsrsgc-build-action-1657437007/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-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"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:*b93a9dc9-ec8d-493f-85e5-827592fee913,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*834f8e87-8477-48f7-bc4d-7397b3f815fb,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-workflowsrsgc/series-workflowsrsgc-build-action-2223120026/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-workflowsrsgc/series-workflowsrsgc-build-action-1657437007/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 19:30:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 19:29:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"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-workflowsrsgc/series-workflowsrsgc-convert-artifact-3468415300/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 19:29:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 19:29:50 +0000 UTC FinishedAt: 2026-06-29 19:29:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 19:29:51 +0000 UTC FinishedAt: 2026-06-29 19:29:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 19:30:01 +0000 UTC FinishedAt: 2026-06-29 22:37:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrsgc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["check_map_func_compatibility","check_helper_call","may_update_sockmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","NET"],"series_id":"d7a5d083-90d5-4a32-ac86-3dd2759b5e6d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 19:30:01 +0000 UTC FinishedAt: 2026-06-29 22:36:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b93a9dc9-ec8d-493f-85e5-827592fee913,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*834f8e87-8477-48f7-bc4d-7397b3f815fb,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-workflowsrsgc/series-workflowsrsgc-build-action-2223120026/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-workflowsrsgc/series-workflowsrsgc-build-action-1657437007/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-workflowsrsgc/series-workflowsrsgc-convert-artifact-3468415300/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,}